From de2bdf463045c3c8013bc016d63bab6dc073dab0 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Wed, 30 Dec 2020 01:18:39 +0100 Subject: [PATCH 001/166] Fix integration tests race condition. --- Content.IntegrationTests/ContentIntegrationTest.cs | 4 ++++ Content.Server/Database/ServerDbSqlite.cs | 14 ++++++++++++-- Content.Shared/CCVars.cs | 4 ++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Content.IntegrationTests/ContentIntegrationTest.cs b/Content.IntegrationTests/ContentIntegrationTest.cs index e1914cadc2..63c05143c7 100644 --- a/Content.IntegrationTests/ContentIntegrationTest.cs +++ b/Content.IntegrationTests/ContentIntegrationTest.cs @@ -4,6 +4,7 @@ using Content.Client; using Content.Client.Interfaces.Parallax; using Content.Server; using Content.Server.Interfaces.GameTicking; +using Content.Shared; using NUnit.Framework; using Robust.Server.Interfaces.Maps; using Robust.Server.Interfaces.Timing; @@ -76,6 +77,9 @@ namespace Content.IntegrationTests }); }; + // Avoid funny race conditions with the database. + options.CVarOverrides[CCVars.DatabaseSynchronous.Name] = "true"; + return base.StartServer(options); } diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index a51484a288..9e726240e0 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Net; @@ -7,7 +6,10 @@ using System.Threading; using System.Threading.Tasks; using Content.Server.Preferences; using Content.Server.Utility; +using Content.Shared; using Microsoft.EntityFrameworkCore; +using Robust.Shared.Interfaces.Configuration; +using Robust.Shared.IoC; using Robust.Shared.Network; #nullable enable @@ -32,7 +34,15 @@ namespace Content.Server.Database { _prefsCtx = new SqliteServerDbContext(options); - _dbReadyTask = Task.Run(() => _prefsCtx.Database.Migrate()); + if (IoCManager.Resolve().GetCVar(CCVars.DatabaseSynchronous)) + { + _prefsCtx.Database.Migrate(); + _dbReadyTask = Task.CompletedTask; + } + else + { + _dbReadyTask = Task.Run(() => _prefsCtx.Database.Migrate()); + } } public override async Task GetServerBanAsync(IPAddress? address, NetUserId? userId) diff --git a/Content.Shared/CCVars.cs b/Content.Shared/CCVars.cs index db9b5bc90c..a9b88f87e7 100644 --- a/Content.Shared/CCVars.cs +++ b/Content.Shared/CCVars.cs @@ -142,6 +142,10 @@ namespace Content.Shared public static readonly CVarDef DatabasePgPassword = CVarDef.Create("database.pg_password", "", CVar.SERVERONLY); + // Basically only exists for integration tests to avoid race conditions. + public static readonly CVarDef DatabaseSynchronous = + CVarDef.Create("database.sync", false, CVar.SERVERONLY); + /* * Outline From 23f3c89021b990041cc837da6c2ed5586228b443 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Thu, 31 Dec 2020 04:49:33 +0100 Subject: [PATCH 002/166] Update submodule to v0.2.12 --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 1f95fe6782..1baee3004c 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 1f95fe67823e3fa8bed0635c5eb597038763a7c9 +Subproject commit 1baee3004cfe77606136d3ca290d671eaf761706 From 8f1c4b79c6131ca66746f0231e34e03ff5ffa55c Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Fri, 1 Jan 2021 07:11:32 -0600 Subject: [PATCH 003/166] HV Cable sprite fix (#2872) Co-authored-by: py01 --- .../Power/hv_cable.rsi/hvcable_9.png | Bin 666 -> 2128 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Constructible/Power/hv_cable.rsi/hvcable_9.png b/Resources/Textures/Constructible/Power/hv_cable.rsi/hvcable_9.png index 516254c2a60bf0d9c766f2f58f5311ed1366f93a..a4e531b2b8ba197a3fb658e968fd42195bec81cd 100644 GIT binary patch delta 2050 zcmV+d2>th(1<(+XBYy`TdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U-|ucI_q% z{Ld=71Oy1dasY{Qx`QsiBkbIJlb5`{wEfl7>%`bt=0h_Y$-(~keTU!hOSQI8SX%A1 zM*K=IJq=v6c>S)HVmasYOZOw(zv~Z=2MJvnZN6@+-Sz|h{C|8w%H2QT_Xk<`IPD(j ze(*M6_L+UQ+pgUM<#hGaeINS$-Y75Ix&QY{=P}Rg(Z~BDaE3C*%PAzwlq1f?XUW(9 zKwrW+XMz#scCH0yU*V^|3y;eW&U;*a@Le2te}3ACnpJ4xdHb1f zQNzqiuuO!(9MK<+@LA{IIUWP;?bIcT?cpn|D>qq@!Ui@uSAf%!&y9D4j&0&}bwgSJ1m}t%X+UTItWp^Kk^))nUR)oJ+m7q<#4kH7VtQcE0v1Z-I2G@4pW%I6E zcH4cA2WmH}?@^-<$o(8Ox>0k)%CVCtYUmbu8-IdaPS`O6VyO@i7e@euPL5e@R7!H> z9JAOHf`SuJBX)3<95EnRj1q5pVE07sr?>?!-@+|@gx9vC^oR@_==7qtmE6|3p0Ev>qh z!9&%lrdq%*hcR{_M00h}s_uOfVGBukEST+@p&J`X5TR0Swl+KtdghIXM(2e>wc_1L zpyxikL^xco2?>-QHjy!tLAV2&_*x8vcog?sj*$B!4sz zbC|i;X3M0_uvB0-5vRI`&YI_p+|nLvXY^GB@gS=cj)E7!jix3!yx*}_CUF)t*$V|$ zfurV39u|37eR?v^)F$%#UKwRcH$fJGcqhb($3k-@WK*mP5TFK064e&`sAh-JzKS)j zOD`ZFZTQ&n_gc09J-5wl-bRBGV1JXzw#O`))uM0F+%o(z8smD?sE7zk&0}RaU3ypu zYm}T5He+{0`nfSVvfBs;7SlBMM_lZ7)=Ip3(bqANVi&JL_P&+DEgSwewhfBN;Mt@J1?U0_= z(^1BSS7gk!2XryS>_MT(gmWJDD?HMm5*`#&5G#6Og^;mCQB~~(`VOy6Z3%dcyy-F% z3`&GbwxW84Te=~IAy7Od^bi5gPYA+2kMbCV+47N;XkZ%@%T7Nkwxcr+*pa(7u6Leq z;GQ7DXGJUcw*%Mov!JFx1qpOH8aZs>rpTxs;hnA|k%6Q0Mqz1p70 zb~!9vP#4ryws&;b z3n(ldp>k%vE%{nTh#gfBX56ZmWYCMb3ktjGQ$XmWadO&0{6RsqbXPw!Ge&TtdeHUZ z%yR}EzmtEuxbsn?|An*vS^NJ${}1$^9S8x5Kn{NbUo9j>wDw_(0000sP)t-s0001! z#{n}Q6CGp900001bW%=J06^y0W&i*H0b)x>L;#2d9Y~X&0T_P=bV*G`2ju|)03`!{ zd+!+l003!8L_t(I%k9xS5`Z8K1keD6|Hu2ERfHv4gdfE delta 596 zcmV-a0;~Pd5Sj&$BYy#LX+uL$X=7sm04R}lkv&VpP!xvWrb7I1wl{*5eI*PUyGD@Zc}KH_Jo`B z@ZR$t?mZU}G8)tEo&=y9j+INN#MQ!@7axocHQp z*D(f)ip_vPAMqSBEr)oXIJ4!LocD-_Sy?I)pAg3^Iw0{a*JYpIIG23>;%wz}i-5p; zilsJ|+nALtop_o!s%tK5o`>HgtQafHl*egJz(x*fq##0ui%n>75T|U=%sTrL4c`(f z~?Mh5(OgW0GuLMC8k&^a# z@bXW>UC^BdAz-`#U!Kae#+U*6B1nt~!-3leBO}5Xe7`)wt#(0XN@1#3L?$JsdLac^ i+sypT9{e%*eZc|=iwkM)1Oj0I0000 Date: Fri, 1 Jan 2021 13:16:08 +0000 Subject: [PATCH 004/166] Satchel and Duffelbag of Holding. (#2866) * Duffel of Holding * Satchel of Holding * Added equipped sprites for both syn duffel variants * Moved syndie stuff to another PR --- .../Entities/Clothing/Back/backpacks.yml | 3 +- .../Entities/Clothing/Back/duffel.yml | 18 ++ .../Entities/Clothing/Back/satchel.yml | 18 ++ .../holding.rsi/holding-inhand-left.png | Bin 326 -> 0 bytes .../holding.rsi/holding-inhand-right.png | Bin 331 -> 0 bytes .../Backpacks/holding.rsi/inhand-left.png | Bin 0 -> 884 bytes .../Backpacks/holding.rsi/inhand-right.png | Bin 0 -> 870 bytes .../Back/Backpacks/holding.rsi/meta.json | 84 +++++++- .../holding.rsi/broken-inhand-left.png | Bin 0 -> 496 bytes .../holding.rsi/broken-inhand-right.png | Bin 0 -> 496 bytes .../Back/Duffels/holding.rsi/broken.png | Bin 0 -> 519 bytes .../Duffels/holding.rsi/equipped-BACKPACK.png | Bin 0 -> 2585 bytes .../Back/Duffels/holding.rsi/icon-unlit.png | Bin 0 -> 1228 bytes .../Back/Duffels/holding.rsi/icon.png | Bin 0 -> 671 bytes .../Back/Duffels/holding.rsi/inhand-left.png | Bin 0 -> 884 bytes .../Back/Duffels/holding.rsi/inhand-right.png | Bin 0 -> 870 bytes .../Back/Duffels/holding.rsi/meta.json | 175 +++++++++++++++++ .../holding.rsi/broken-inhand-left.png | Bin 0 -> 496 bytes .../holding.rsi/broken-inhand-right.png | Bin 0 -> 496 bytes .../Back/Satchels/holding.rsi/broken.png | Bin 0 -> 748 bytes .../holding.rsi/equipped-BACKPACK.png | Bin 0 -> 1318 bytes .../Back/Satchels/holding.rsi/icon-unlit.png | Bin 0 -> 1457 bytes .../Back/Satchels/holding.rsi/icon.png | Bin 0 -> 783 bytes .../Back/Satchels/holding.rsi/inhand-left.png | Bin 0 -> 884 bytes .../Satchels/holding.rsi/inhand-right.png | Bin 0 -> 870 bytes .../Back/Satchels/holding.rsi/meta.json | 179 ++++++++++++++++++ 26 files changed, 472 insertions(+), 5 deletions(-) delete mode 100644 Resources/Textures/Clothing/Back/Backpacks/holding.rsi/holding-inhand-left.png delete mode 100644 Resources/Textures/Clothing/Back/Backpacks/holding.rsi/holding-inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/holding.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/holding.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/broken-inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/broken-inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/broken.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/icon-unlit.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/holding.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/broken-inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/broken-inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/broken.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/icon-unlit.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/holding.rsi/meta.json diff --git a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml index be690e8ef3..a386ca2a7c 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml @@ -130,4 +130,5 @@ shader: unshaded - type: Clothing sprite: Clothing/Back/Backpacks/holding.rsi - HeldPrefix: holding + - type: Storage + capacity: 10000 diff --git a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml index b9a4cfee00..c1a85e11e0 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml @@ -81,3 +81,21 @@ sprite: Clothing/Back/Duffels/syndicate.rsi - type: Clothing sprite: Clothing/Back/Duffels/syndicate.rsi + +- type: entity + parent: ClothingBackpackDuffel + id: ClothingBackpackDuffelHolding + name: duffelbag of holding + description: A duffelbag that opens into a localized pocket of bluespace. + components: + - type: Sprite + sprite: Clothing/Back/Duffels/holding.rsi + state: icon + layers: + - state: icon + - state: icon-unlit + shader: unshaded + - type: Clothing + sprite: Clothing/Back/Duffels/holding.rsi + - type: Storage + capacity: 10000 diff --git a/Resources/Prototypes/Entities/Clothing/Back/satchel.yml b/Resources/Prototypes/Entities/Clothing/Back/satchel.yml index 25ee88fc3b..093a23f874 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/satchel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/satchel.yml @@ -92,3 +92,21 @@ sprite: Clothing/Back/Satchels/hydroponics.rsi - type: Clothing sprite: Clothing/Back/Satchels/hydroponics.rsi + +- type: entity + parent: ClothingBackpackSatchel + id: ClothingBackpackSatchelHolding + name: satchel of holding + description: A satchel that opens into a localized pocket of bluespace. + components: + - type: Sprite + sprite: Clothing/Back/Satchels/holding.rsi + state: icon + layers: + - state: icon + - state: icon-unlit + shader: unshaded + - type: Clothing + sprite: Clothing/Back/Satchels/holding.rsi + - type: Storage + capacity: 10000 diff --git a/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/holding-inhand-left.png b/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/holding-inhand-left.png deleted file mode 100644 index 79c90fc3cb94cc31140d9447c9d1c072b4a16029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e-2k5uS0K$W=dirIypocVS>$^Q z3ky3tJ5Nu~xVX5SoSaeyhKUm=?(z^jxSId);ln`+&dY%68B2ovf*Bm1-ADs+j(fT| zhIkxLPLN<-oUnj_y-Bhmlrh?gdCJkQP{%w!sgOD9Mk2GDHe^l=R$TL8=F*5Kk>b+& zyv-6DZ%C|WGB)3wF2GuKd4raLprLoWMu7L>RR=E3Zs6?ho$ly6qwOk7+liT%=Q%|b zM))Qq@bdCDY-Dn~d{slDZ$aaPCKEmzR-O$8JIi!Ll^-uCFbYmz^juD)Q6qVEK#6hy zOH=Tq&lf}&aIjcgC8rdMG(OOr{c$!!33HurMEbci&fi&AIb>+KMM`?5&0%0D@-;Sp T*4RH2=p_bES3j3^P6$^Q z3ky3tJ5Nu~xVX5SoSaeyhKUm=?(z^jxSId);ln`+&dY%68B2ovf*Bm1-ADs+&Um^w zhIkxLPLN<-oWS6~Y~~nd(cP@exVni!Lfc$jm!Z4q!b zO9nb_Ezy$BqBC~Rv^~7+zzNP(2V9Qm$j)XG7F@yPozJAEV-`29?>sNhMC0YQN1t`S zT)07illQ0?-jm4 diff --git a/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/inhand-left.png b/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a0dc8287712336ee04d4e654f9b6ba02daea21ab GIT binary patch literal 884 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/holding.rsi/icon-unlit.png b/Resources/Textures/Clothing/Back/Duffels/holding.rsi/icon-unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..363f156aede2fa4bace65f0cedbc1964b2acdf06 GIT binary patch literal 1228 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V43Xc;uumf=k45s-XeiA$Lobz zH8m#&I8JbS;CM)N&zdR?-j)d-FCKWl2#URHufYF}ea-PJ-r@X>g0U?8@xED^WOS>?fr9mO84)d3bYde8lDv9h;}{C z3wn62Jlyt$=KIrYpM+HV@B6cCy}$g5T4`x%6C)$1&!0bkNi4j$;_dI|W)l+=m$PTj zmJ}2?aC397>izn)w6vzOGBPtIa{q_-?Gvw6E=~`1?DP+RryqE7X{eoB$ei5rFA6s{ z?A+-oK6_S1PL2;R!{w`2pYl6R`*Qd7)5#uAKZz zv8wj>rqau2_BJwpEiOwtcE9}Vt*yzwM4u}xIN$s}XLlC&tJz8U4eqabw_j?JI=uOv z%8t)_K3YylcUgO0)n~uh5ia=%W4R>sN8y#;@eE06cmQ- zJ9h2ar+JNS#=ez_J3jxcu?zaWc=6(Y?*r5F!oJ9E-p=@Ky25qd_*|BBnR2@u3pHMN zHy$f7Sn^faJfWs$jvD*2j7N_x_Wt?W78g_b#$IjxWvScevMU5k4jw$Q>ED$rQvz>a zo38LK!J9wuU;aG3xBnK_+Q3>+jR6nJ<9*w{FjQH5XIyMO=sHT3TOEnB8k^#A((+uvrIXzj#)m9L$umK=#v zk(d1MG&t&8NA@N(H7M0J$hQQanzcB$Z6fR6@XMFk&i54Z-?)3%w(#)}v-vECXU-Z;Jd)||w&3T1ABgCuXkmC2XldEbQ{7-#lJm|8e z>m|SSk;z6|e>G%nWpo!lU1+I0e|-T&ZRr$PZKrVh=btUFg=LBY zJ(P_CA{2c6G8CUQ-)HZOg;P>FT!hVGlcd#Ob_R7=08mbl~ zzGi;a+O~p!MY@o=LYCf(H8UstP*3uF_W8Wf#{cyVerm;bo2T8sUmw;HD!)MZpv{k0 z(ns3o&U*Se(ZNM!(aT;39p*3P&o5t`VPT+FR@;z&sI;$3b@usum#iT92VbV7*9rZs fffo!WJT714PaWj8*xRmX2NLyk^>bP0l+XkK=0!ca literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/holding.rsi/icon.png b/Resources/Textures/Clothing/Back/Duffels/holding.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ede6d76675ef20b433917ddd0751cd0028342189 GIT binary patch literal 671 zcmV;Q0$}}#P)=Zi6rkg);{d$Ozfq|7B-0R5D27qPRb{`ADdRV|=((`b>>csZ^?) zdi&N3{rp4L2LKBX(N|%AfMKvOx?L7G$ohT&Z><}rX`Y=MtpyKqz5yHF!F%hb1vO98 zcxrINkMZgoSOacZt(%v$wQ#2fhrbmx{8-wb3Ov(b_ain)sqXUu#eytgp+jf{EHPCB z=o-fIHGcS&dvN#(&#!n7+D}QRZ_FC5&v6j+sUZI)l1vcvsluETR!N^KLRNz-!ai24 zRFlF7E&*4h{kCX2A?>Is<<^$sI zx=;IG@jl0II)xUV#}b|&eu||7yfJ|AJ|17~44&hEc7CYLXgVM0e4z7zN~Kb%1jX@v zfB*bLRvh1V_h;k2w?cWKjFOP%HO>S9N%{*Ji+$@8Ory6P+#*aGd}p54-o(W002ovPDHLk FV1fWfF9`qu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/holding.rsi/inhand-left.png b/Resources/Textures/Clothing/Back/Duffels/holding.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a0dc8287712336ee04d4e654f9b6ba02daea21ab GIT binary patch literal 884 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 eV~+C$5&Z>b5IfPl)DKet0000ssSzPBN zGDYWLl;W$34(_Bv5vYYpLFS{NgQgN%q#~s)Eog6{_tLV7hw~ush)KY-9lJFPU9p%Fkhvd|AJ}{L9g8`5G&7I+-7zLB7l%7uCFs8E z{%44%>u}Vx7dUZSp5%5pb#3g%duGo^D(}CS=aHr+))YJ2M36kEjlYuXZn==r!b(qT z`S`v>RN1ka@VY^F!4RC3xh$lz4I)eA8SJ`!f6FQ(;@2WIfsz}eF& zrDDF&iGx3(4!kq9+2;uk=aNc}A?-O{H8CVRGE0he9@+IP6???(CU?2 z0+5C!lk3;k1bOaYxYWMIt$V>-waKK!Ut949%RTm-F~C|{n5B54HakZKSz24S7S4GT z`8i><^T$DZ5gtqDk?pLmwDz7JvR+UF2?xOFXv&ZsLGrs`c+D(=G|KLP&>K#Pii)Zjp&AS<7EPnDeaO|oS1!5e9e14#|6~3&ZKY{TNt{YnVF_iAOI5P~RDV;DL zd3iYE2$x%3(3QZWqN;bV_}^BFs$#F#?d2ugK+aGw6sGC(QW9L)3uP=;({7D)C}rn4o>|l8#D08@ zkcVa9-l6|8)?VANLGy^XP>e3U1mF;x+t&pkitiP6D7Cu;1n^$y>p6H#159k`z)D$N zQ%<6gW04rj*jJ2F0b#BT^&>z^gMbn<0LVbS>v34$ukR`MpSo)3niY$6lAP3f2-2#= z3?M=|KF(BO$Q(|zE$oUT+#Vmft@G`hhlC@=#oja;E&c#-QN;XkSo8DbMBYn> zZnaNFGG-3DFaItZ^=qLAeOe6|XZuaD%Gg;e?U*dBOV1>aL+S@-9s{lS26=;k)=F)_ zH;jp?eX{1}eM8bOQ%=kTB(XFxolhBMXV0D`%j_+K^ym%oj+sb_fqP;`m$im00eyX| zf#POD)41a8Pi037G(}HqfnvMOg8#tmblx{q-R--YaLRqV#L(pMU(~0_F|j=wr@;g* z{#TWzJM{EQJ6W_nq)x=#smy1BE|7E%XpBa)tl2GfM~#~GMe&W(Hn!R+zLB)r2d${L z619WKvh?wHuP&<@TfdKJCqCoT6NFQ+8i#HHxPcr|sBT$0F!nIGRug9(yLbb3ZesnHZ)Yd`vgN)}{4?^*>HS_6_h`C@N@UHas`KaHC&%uNso$Pn@((X{ Bt1$oo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Satchels/holding.rsi/icon-unlit.png b/Resources/Textures/Clothing/Back/Satchels/holding.rsi/icon-unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4477c296ad3961be6ae382db323ebc36ef8202 GIT binary patch literal 1457 zcmZuxc`(}v82!bOsM0vMnjl*0uA|+MafUkUR&Ci@*S1|lEiIKGl8AA2sII$1235PR zrj*hOi7h=<6hTmnN{~`VLM0)wc4q(Cna;fLd-J}(zM1#t<@x)%E6T&<0RT|+^l%A0 zcD1jt zDp?C0%k(#t+hIqVa~sP)6%A_JO@&FxLJNjExBW|E47EGvM`5V}hSN_o{%8&Cz#1jJ z+;~CX`ud!31K-Z5oD!!;Xkc#4?J?5m*8Ce7n&WX9C#C-*I>ppiIBGN z5Mbj|hEg||yew>OkHX<_Mw(ZB5g+5{2gQjuBWJrEyVKz!ktiZ9ZN}*Q{I}9lbpgAJ zaH_Fdd@%f)yi8IDJf^HnyE}(K3S#SPJG;C6ELKIkkj<6>gTWDzk)Vl*$<@ov)_6Q# zI~jwiZEhZ%D%7HObwO;kY%d(FG|J}1c3P$n&|?0&1=6`S2{sI-?eUA|r0xcZXR$S} zq5{r9AdpSTP$lhjt3p|Q>UKbZh$(z-RqGc_nEEx72r>uEwtf4Q9~FD(&G*8s?Ft>F z1|veW(jAeoNtAs5gh5i=u{Gd+!mI0O-3Q)HoUcKdW3F{n>eVyMkl?Z}jTlXoybrf7 z`M%Dkls`%}8RK9@#B$!NW82z`(-ZtDi=new?c#L?)C&R8?nF$EgNavyL479>2KK9E zkM$ixnN|RD;bd=bZ_`$oK0PMlf%y-|FKGprhgox1y;vd?H)?O3-OSy~x)i-4+G(2E z`nI-*nL|w~na?9pmuR6a6p9T;-$1`=6q|EylLIAoRR%EUQg{Q!Wyeea)x|~R?kzWX zK(ne`@41H!bcvuX-sdvFE7W$fDPB;E%cZJrL!AdceDK!WIdg!J#)4YoB##zL#OCNT`Qgb zWTJZZMgM5u>tD!%*`B>Up&>U>P7P42-p7XK`I#XaGU1w0ByVma&Z*^G z4aL!soV;$Alu*RGJ>4x9cAK1V|2s3#=&7ixkxWKJ5HL%5LEx#Y$tx1v*(Kx5&7TuR z@*SSpWCR*KzUa(Zx7ZhU>rTZf9rFrD5JOpAwZO!eMgJEoJqK>dAOu!9o0zw_In&F<8me`LHiDs%Y=(xx0Mv9-1Y=F$8RZAB;9~eRSLOQP(V7;#>!BKw{mc41 zAxMP?tJqxbI@R_T8hxDws=*nhXTXFYIU(QH)@HhQ*d+HR9!*txw@-Zj@`YkS=%G*+ z>`H555>zDw!lxq}nZYUSi@yn0E#W{lX57)=T5dZ)H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Satchels/holding.rsi/icon.png b/Resources/Textures/Clothing/Back/Satchels/holding.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..138a6ab3d6b6651685d25f87dc83e664e7d397cc GIT binary patch literal 783 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 z)87LC00000 Date: Fri, 1 Jan 2021 14:20:23 +0100 Subject: [PATCH 005/166] You can now examine Node Containers to see their "connectors" (#2881) --- .../NodeContainer/NodeContainerComponent.cs | 37 ++++++++++++++++++- .../PowerReceiverComponent.cs | 1 + .../Power/particleAccelerator.yml | 1 + .../Constructible/Power/power_base.yml | 5 +++ .../Specific/Engines/AME/ame_controller.yml | 1 + .../Specific/Engines/Singularity/emitter.yml | 1 + Resources/Prototypes/Entities/singularity.yml | 1 + 7 files changed, 46 insertions(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs index 73d75455f6..67ca51083e 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs @@ -1,7 +1,11 @@ using System.Collections.Generic; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using Content.Shared.GameObjects.EntitySystems; using Robust.Shared.GameObjects; +using Robust.Shared.Localization; using Robust.Shared.Serialization; +using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.NodeContainer @@ -10,18 +14,20 @@ namespace Content.Server.GameObjects.Components.NodeContainer /// Creates and maintains a set of s. /// [RegisterComponent] - public class NodeContainerComponent : Component + public class NodeContainerComponent : Component, IExamine { public override string Name => "NodeContainer"; [ViewVariables] public IReadOnlyList Nodes => _nodes; private List _nodes = new(); + private bool _examinable; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); serializer.DataField(ref _nodes, "nodes", new List()); + serializer.DataField(ref _examinable, "examinable", false); } public override void Initialize() @@ -50,5 +56,34 @@ namespace Content.Server.GameObjects.Components.NodeContainer } base.OnRemove(); } + + public void Examine(FormattedMessage message, bool inDetailsRange) + { + if (!_examinable || !inDetailsRange) return; + + for (var i = 0; i < Nodes.Count; i++) + { + var node = Nodes[i]; + if (node == null) continue; + switch (node.NodeGroupID) + { + case NodeGroupID.HVPower: + message.AddMarkup( + Loc.GetString("It has a connector for [color=orange]HV cables[/color].")); + break; + case NodeGroupID.MVPower: + message.AddMarkup( + Loc.GetString("It has a connector for [color=yellow]MV cables[/color].")); + break; + case NodeGroupID.Apc: + message.AddMarkup( + Loc.GetString("It has a connector for [color=green]LV cables[/color].")); + break; + } + + if(i != Nodes.Count - 1) + message.AddMarkup("\n"); + } + } } } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs index c84c416a04..520de52709 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs @@ -1,5 +1,6 @@ #nullable enable using System; +using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Content.Shared.GameObjects.Components.Power; using Content.Shared.GameObjects.EntitySystems; diff --git a/Resources/Prototypes/Entities/Constructible/Power/particleAccelerator.yml b/Resources/Prototypes/Entities/Constructible/Power/particleAccelerator.yml index f2d66ba3e6..3398afd385 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/particleAccelerator.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/particleAccelerator.yml @@ -225,6 +225,7 @@ - type: PowerConsumer voltage: High - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: HVPower diff --git a/Resources/Prototypes/Entities/Constructible/Power/power_base.yml b/Resources/Prototypes/Entities/Constructible/Power/power_base.yml index cb671c9513..02680ecc4f 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/power_base.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/power_base.yml @@ -30,6 +30,7 @@ sprite: Constructible/Power/power.rsi state: generator - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: HVPower @@ -80,6 +81,7 @@ maxCharge: 1000 startingCharge: 1000 - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: HVPower @@ -131,6 +133,7 @@ maxCharge: 1000 startingCharge: 1000 - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: HVPower @@ -177,6 +180,7 @@ maxCharge: 10000 startingCharge: 10000 - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: MVPower @@ -226,6 +230,7 @@ sprite: Constructible/Power/solar_panel.rsi state: normal - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: HVPower diff --git a/Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_controller.yml b/Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_controller.yml index bcfbc3d1f9..c4c1442a6f 100644 --- a/Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_controller.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_controller.yml @@ -43,6 +43,7 @@ visuals: - type: AMEControllerVisualizer - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: AMEngine diff --git a/Resources/Prototypes/Entities/Constructible/Specific/Engines/Singularity/emitter.yml b/Resources/Prototypes/Entities/Constructible/Specific/Engines/Singularity/emitter.yml index 4edcccbceb..fa21ea3ee4 100644 --- a/Resources/Prototypes/Entities/Constructible/Specific/Engines/Singularity/emitter.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Engines/Singularity/emitter.yml @@ -38,6 +38,7 @@ - type: PowerConsumer voltage: Medium - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: MVPower diff --git a/Resources/Prototypes/Entities/singularity.yml b/Resources/Prototypes/Entities/singularity.yml index a466e02059..97cc72271b 100644 --- a/Resources/Prototypes/Entities/singularity.yml +++ b/Resources/Prototypes/Entities/singularity.yml @@ -51,6 +51,7 @@ visuals: - type: RadiationCollectorVisualizer - type: NodeContainer + examinable: true nodes: - !type:AdjacentNode nodeGroupID: HVPower From 633ae5bc90bf4bc160d5b057573341c879a567ee Mon Sep 17 00:00:00 2001 From: Daniel Castro Razo Date: Fri, 1 Jan 2021 07:26:42 -0600 Subject: [PATCH 006/166] Fixes Emergency Lights not charging (#2873) * Fixes Emergency Lights not charging * Removed extra imports --- .../EmergencyLightComponent.cs | 16 ++++++++++------ .../EntitySystems/EmergencyLightSystem.cs | 19 ++++++------------- .../Constructible/Walls/emergency_light.yml | 2 +- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs index d52173e7d2..eadd1d1bb2 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects; @@ -32,7 +32,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece } } - private EmergencyLightState _state = EmergencyLightState.Charging; + private EmergencyLightState _state = EmergencyLightState.Empty; [ViewVariables(VVAccess.ReadWrite)] private float _wattage; @@ -139,11 +139,15 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece public override void Initialize() { base.Initialize(); + } - Owner.EnsureComponentWarn(out PowerReceiverComponent receiver); - - receiver.OnPowerStateChanged += UpdateState; - State = EmergencyLightState.Charging; + public override void OnAdd() + { + base.OnAdd(); + if (Owner.TryGetComponent(out PowerReceiverComponent receiver)) + { + receiver.OnPowerStateChanged += UpdateState; + } } public override void OnRemove() diff --git a/Content.Server/GameObjects/EntitySystems/EmergencyLightSystem.cs b/Content.Server/GameObjects/EntitySystems/EmergencyLightSystem.cs index df30d568ed..0b9c65c9f0 100644 --- a/Content.Server/GameObjects/EntitySystems/EmergencyLightSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/EmergencyLightSystem.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerReceiverUsers; using JetBrains.Annotations; @@ -9,7 +9,7 @@ namespace Content.Server.GameObjects.EntitySystems [UsedImplicitly] internal sealed class EmergencyLightSystem : EntitySystem { - private readonly List _activeLights = new(); + private readonly HashSet _activeLights = new(); public override void Initialize() { @@ -21,19 +21,13 @@ namespace Content.Server.GameObjects.EntitySystems { switch (message.State) { + case EmergencyLightComponent.EmergencyLightState.On: case EmergencyLightComponent.EmergencyLightState.Charging: - if (_activeLights.Contains(message.Component)) - _activeLights.Add(message.Component); - + _activeLights.Add(message.Component); break; case EmergencyLightComponent.EmergencyLightState.Full: case EmergencyLightComponent.EmergencyLightState.Empty: _activeLights.Remove(message.Component); - break; - case EmergencyLightComponent.EmergencyLightState.On: - if (!_activeLights.Contains(message.Component)) - _activeLights.Add(message.Component); - break; default: throw new ArgumentOutOfRangeException(); @@ -42,10 +36,9 @@ namespace Content.Server.GameObjects.EntitySystems public override void Update(float frameTime) { - for (var i = _activeLights.Count - 1; i >= 0; i--) + foreach (var activeLight in _activeLights) { - var comp = _activeLights[i]; - comp.OnUpdate(frameTime); + activeLight.OnUpdate(frameTime); } } } diff --git a/Resources/Prototypes/Entities/Constructible/Walls/emergency_light.yml b/Resources/Prototypes/Entities/Constructible/Walls/emergency_light.yml index 843c3db87d..a97c19eea8 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/emergency_light.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/emergency_light.yml @@ -11,11 +11,11 @@ offset: "0.5, 0" color: "#FF4020" mask: /Textures/Effects/LightMasks/emergency_mask.png - - type: EmergencyLight - type: PowerReceiver - type: Battery maxCharge: 30000 startingCharge: 0 + - type: EmergencyLight - type: Sprite sprite: Constructible/Lighting/emergency_light.rsi state: emergency_light_off From f8d4d4b8d7795f7b8e377c4fcb5fe2a8bd121b23 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Fri, 1 Jan 2021 15:25:09 +0100 Subject: [PATCH 007/166] Fix bug where ghosts weren't being spawned for players after their attached entity was deleted. Turns out creating an entity timer for an entity that has been deleted is a bad idea! Who would have thought? --- Content.Server/GameObjects/Components/Mobs/MindComponent.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs index 027abe368e..72c6eab20b 100644 --- a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs @@ -17,6 +17,7 @@ using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Map; using Robust.Shared.Serialization; +using Robust.Shared.Timers; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; @@ -136,7 +137,8 @@ namespace Content.Server.GameObjects.Components.Mobs else { var spawnPosition = Owner.Transform.Coordinates; - Owner.SpawnTimer(0, () => + // Use a regular timer here because the entity has probably been deleted. + Timer.Spawn(0, () => { // Async this so that we don't throw if the grid we're on is being deleted. var mapMan = IoCManager.Resolve(); From b5fd2ffd6d506f0b59459e338eb0fcd736b85aa3 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Fri, 1 Jan 2021 15:28:58 +0100 Subject: [PATCH 008/166] Recycler improvements, add RecyclableComponent as a tag. --- .../Recycling/RecyclableComponent.cs | 51 +++++++++++++++++++ .../Components/Recycling/RecyclerComponent.cs | 34 ++++--------- .../Entities/Mobs/Species/human.yml | 2 + 3 files changed, 64 insertions(+), 23 deletions(-) create mode 100644 Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs diff --git a/Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs b/Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs new file mode 100644 index 0000000000..2a8617573f --- /dev/null +++ b/Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs @@ -0,0 +1,51 @@ +using System; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Recycling +{ + [RegisterComponent] + public class RecyclableComponent : Component + { + /// + /// The prototype that will be spawned on recycle. + /// + private string _prototype; + + /// + /// The amount of things that will be spawned on recycle. + /// + private int _amount; + + /// + /// Whether this is "safe" to recycle or not. + /// If this is false, the recycler's safety must be disabled to recycle it. + /// + private bool _safe; + public override string Name => "Recyclable"; + + public bool Safe => _safe; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _prototype, "prototype", string.Empty); + serializer.DataField(ref _safe, "safe", true); + serializer.DataField(ref _amount, "amount", 1); + } + + public void Recycle(float efficiency = 1f) + { + if(!string.IsNullOrEmpty(_prototype)) + { + for (var i = 0; i < Math.Max(_amount * efficiency, 1); i++) + { + Owner.EntityManager.SpawnEntity(_prototype, Owner.Transform.Coordinates); + } + + } + + Owner.Delete(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs b/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs index 64485491b5..e5f6943739 100644 --- a/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs +++ b/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs @@ -1,10 +1,8 @@ #nullable enable using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using Content.Server.GameObjects.Components.Conveyor; using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Power.ApcNetComponents; -using Content.Shared.Construction; using Content.Shared.GameObjects.Components.Body; using Content.Shared.GameObjects.Components.Recycling; using Content.Shared.Physics; @@ -31,14 +29,14 @@ namespace Content.Server.GameObjects.Components.Recycling /// /// Whether or not sentient beings will be recycled /// - [ViewVariables] + [ViewVariables(VVAccess.ReadWrite)] private bool _safe; /// /// The percentage of material that will be recovered /// - [ViewVariables] - private int _efficiency; // TODO + [ViewVariables(VVAccess.ReadWrite)] + private float _efficiency; private bool Powered => !Owner.TryGetComponent(out PowerReceiverComponent? receiver) || @@ -62,18 +60,10 @@ namespace Content.Server.GameObjects.Components.Recycling private bool CanGib(IEntity entity) { + // We suppose this entity has a Recyclable component. return entity.HasComponent() && !_safe && Powered; } - private bool CanRecycle(IEntity entity, [NotNullWhen(true)] out ConstructionPrototype? prototype) - { - prototype = null; - - // TODO CONSTRUCTION fix this - - return Powered; - } - private void Recycle(IEntity entity) { if (!_intersecting.Contains(entity)) @@ -82,6 +72,11 @@ namespace Content.Server.GameObjects.Components.Recycling } // TODO: Prevent collision with recycled items + + // Can only recycle things that are recyclable... And also check the safety of the thing to recycle. + if (!entity.TryGetComponent(out RecyclableComponent? recyclable) || !recyclable.Safe && _safe) return; + + // Mobs are a special case! if (CanGib(entity)) { entity.Delete(); // TODO: Gib @@ -89,14 +84,7 @@ namespace Content.Server.GameObjects.Components.Recycling return; } - if (!CanRecycle(entity, out var prototype)) - { - return; - } - - // TODO CONSTRUCTION fix this - - entity.Delete(); + recyclable.Recycle(_efficiency); } private bool CanRun() @@ -179,7 +167,7 @@ namespace Content.Server.GameObjects.Components.Recycling base.ExposeData(serializer); serializer.DataField(ref _safe, "safe", true); - serializer.DataField(ref _efficiency, "efficiency", 25); + serializer.DataField(ref _efficiency, "efficiency", 0.25f); } void ICollideBehavior.CollideWith(IEntity collidedWith) diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index e7920cd0a1..eea4b34452 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -200,6 +200,8 @@ - type: Puller - type: Butcherable meat: FoodMeat + - type: Recyclable + safe: false - type: entity save: false From d43ca2877a496507ede5b6c786a3aae167465f5d Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Fri, 1 Jan 2021 16:11:17 +0100 Subject: [PATCH 009/166] Ghost on mind shutdown fixes, no more ghost stacking at bar. Fixes #1701 --- .../Components/Mobs/MindComponent.cs | 24 ++++++++++++------- .../Prototypes/Entities/Mobs/Player/human.yml | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs index 72c6eab20b..76640dd2bf 100644 --- a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs @@ -1,6 +1,8 @@ #nullable enable +using Content.Server.Commands.Observer; using Content.Server.GameObjects.Components.Medical; using Content.Server.GameObjects.Components.Observer; +using Content.Server.GameTicking; using Content.Server.Interfaces.GameTicking; using Content.Server.Mobs; using Content.Server.Utility; @@ -29,7 +31,6 @@ namespace Content.Server.GameObjects.Components.Mobs [RegisterComponent] public class MindComponent : Component, IExamine { - private bool _showExamineInfo; /// public override string Name => "Mind"; @@ -50,11 +51,13 @@ namespace Content.Server.GameObjects.Components.Mobs /// Whether examining should show information about the mind or not. /// [ViewVariables(VVAccess.ReadWrite)] - public bool ShowExamineInfo - { - get => _showExamineInfo; - set => _showExamineInfo = value; - } + public bool ShowExamineInfo { get; set; } + + /// + /// Whether the mind will be put on a ghost after this component is shutdown. + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool GhostOnShutdown { get; set; } [ViewVariables] private BoundUserInterface? UserInterface => @@ -122,6 +125,10 @@ namespace Content.Server.GameObjects.Components.Mobs { base.Shutdown(); + // Let's not create ghosts if not in the middle of the round. + if (IoCManager.Resolve().RunLevel != GameRunLevel.InRound) + return; + if (HasMind) { var visiting = Mind?.VisitingEntity; @@ -134,7 +141,7 @@ namespace Content.Server.GameObjects.Components.Mobs Mind!.TransferTo(visiting); } - else + else if(GhostOnShutdown) { var spawnPosition = Owner.Transform.Coordinates; // Use a regular timer here because the entity has probably been deleted. @@ -166,7 +173,8 @@ namespace Content.Server.GameObjects.Components.Mobs public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(ref _showExamineInfo, "show_examine_info", false); + serializer.DataField(this, x => x.ShowExamineInfo, "showExamineInfo", false); + serializer.DataField(this, x => x.GhostOnShutdown, "ghostOnShutdown", true); } public void Examine(FormattedMessage message, bool inDetailsRange) diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index e692fa9830..84f57d23b0 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -7,7 +7,7 @@ drawdepth: Mobs components: - type: Mind - show_examine_info: true + showExamineInfo: true - type: Input context: "human" - type: Alerts From cf38e17b7ec165e6853e559748cab46d7eb9d5e1 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Fri, 1 Jan 2021 16:34:54 +0100 Subject: [PATCH 010/166] Shuttle called/recalled announcements and sounds. --- Content.Server/Chat/ChatManager.cs | 4 ++-- .../Command/CommunicationsConsoleComponent.cs | 1 + .../GameObjects/EntitySystems/RoundEndSystem.cs | 9 +++++++++ Content.Server/Interfaces/Chat/IChatManager.cs | 3 ++- Resources/Audio/Announcements/shuttlecalled.ogg | Bin 0 -> 25597 bytes Resources/Audio/Announcements/shuttledock.ogg | Bin 0 -> 25806 bytes .../Audio/Announcements/shuttlerecalled.ogg | Bin 0 -> 25943 bytes 7 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 Resources/Audio/Announcements/shuttlecalled.ogg create mode 100644 Resources/Audio/Announcements/shuttledock.ogg create mode 100644 Resources/Audio/Announcements/shuttlerecalled.ogg diff --git a/Content.Server/Chat/ChatManager.cs b/Content.Server/Chat/ChatManager.cs index 7e291f5cef..0add7b9891 100644 --- a/Content.Server/Chat/ChatManager.cs +++ b/Content.Server/Chat/ChatManager.cs @@ -71,12 +71,12 @@ namespace Content.Server.Chat _netManager.ServerSendToAll(msg); } - public void DispatchStationAnnouncement(string message) + public void DispatchStationAnnouncement(string message, string sender = "CentComm") { var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Radio; msg.Message = message; - msg.MessageWrap = "Centcom Announcement:\n{0}"; + msg.MessageWrap = $"{sender} Announcement:\n{{0}}"; _netManager.ServerSendToAll(msg); } diff --git a/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs b/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs index 2e3f6f6f48..858a10d3e3 100644 --- a/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs +++ b/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs @@ -9,6 +9,7 @@ using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Player; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.ViewVariables; diff --git a/Content.Server/GameObjects/EntitySystems/RoundEndSystem.cs b/Content.Server/GameObjects/EntitySystems/RoundEndSystem.cs index df1c5520db..69fecf41f2 100644 --- a/Content.Server/GameObjects/EntitySystems/RoundEndSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/RoundEndSystem.cs @@ -3,6 +3,7 @@ using System.Threading; using Content.Server.Interfaces.Chat; using Content.Server.Interfaces.GameTicking; using Content.Shared.GameTicking; +using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; @@ -48,6 +49,10 @@ namespace Content.Server.GameObjects.EntitySystems IsRoundEndCountdownStarted = true; + _chatManager.DispatchStationAnnouncement(Loc.GetString("An emergency shuttle has been sent. ETA: {0} minutes.", RoundEndCountdownTime.Minutes), Loc.GetString("Station")); + + Get().PlayGlobal("/Audio/Announcements/shuttlecalled.ogg"); + ExpectedCountdownEnd = _gameTiming.CurTime + RoundEndCountdownTime; Timer.Spawn(RoundEndCountdownTime, EndRound, _roundEndCancellationTokenSource.Token); OnRoundEndCountdownStarted?.Invoke(); @@ -60,6 +65,10 @@ namespace Content.Server.GameObjects.EntitySystems IsRoundEndCountdownStarted = false; + _chatManager.DispatchStationAnnouncement(Loc.GetString("The emergency shuttle has been recalled."), Loc.GetString("Station")); + + Get().PlayGlobal("/Audio/Announcements/shuttlerecalled.ogg"); + _roundEndCancellationTokenSource.Cancel(); _roundEndCancellationTokenSource = new CancellationTokenSource(); diff --git a/Content.Server/Interfaces/Chat/IChatManager.cs b/Content.Server/Interfaces/Chat/IChatManager.cs index 5dfcdbc458..ce5304d5c6 100644 --- a/Content.Server/Interfaces/Chat/IChatManager.cs +++ b/Content.Server/Interfaces/Chat/IChatManager.cs @@ -16,7 +16,8 @@ namespace Content.Server.Interfaces.Chat /// Station announcement to every player /// /// - void DispatchStationAnnouncement(string message); + /// + void DispatchStationAnnouncement(string message, string sender = "CentComm"); void DispatchServerMessage(IPlayerSession player, string message); diff --git a/Resources/Audio/Announcements/shuttlecalled.ogg b/Resources/Audio/Announcements/shuttlecalled.ogg new file mode 100644 index 0000000000000000000000000000000000000000..716bf824654f5dffdd2e1ec0265636d09e0a5b31 GIT binary patch literal 25597 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 T(Ggq}!9o$*ByANwE|Nk5tN@?E literal 0 HcmV?d00001 diff --git a/Resources/Audio/Announcements/shuttledock.ogg b/Resources/Audio/Announcements/shuttledock.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0f70bebc7518892d4d07da7eaf57d05c8ae67602 GIT binary patch literal 25806 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Announcements/shuttlerecalled.ogg b/Resources/Audio/Announcements/shuttlerecalled.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5f6db404b87aa14423a7b0573c0fe1dc492f0e23 GIT binary patch literal 25943 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 M=CZkL?!^od5eD^V$p8QV literal 0 HcmV?d00001 From 8007e3d03b6d5d9052b580f8f8801b4210647543 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Fri, 1 Jan 2021 18:17:38 +0100 Subject: [PATCH 011/166] nullableeeeeeeeeeee --- .../GameObjects/Components/Recycling/RecyclableComponent.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs b/Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs index 2a8617573f..ccd69fb4b6 100644 --- a/Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs +++ b/Content.Server/GameObjects/Components/Recycling/RecyclableComponent.cs @@ -1,3 +1,4 @@ +#nullable enable using System; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; @@ -10,7 +11,7 @@ namespace Content.Server.GameObjects.Components.Recycling /// /// The prototype that will be spawned on recycle. /// - private string _prototype; + private string? _prototype; /// /// The amount of things that will be spawned on recycle. @@ -29,7 +30,7 @@ namespace Content.Server.GameObjects.Components.Recycling public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(ref _prototype, "prototype", string.Empty); + serializer.DataField(ref _prototype, "prototype", null); serializer.DataField(ref _safe, "safe", true); serializer.DataField(ref _amount, "amount", 1); } From f1eb848db0644c0f7fa140104d2d191425f6ecbe Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Fri, 1 Jan 2021 18:18:31 +0100 Subject: [PATCH 012/166] a --- Content.Tests/Shared/Alert/AlertPrototypeTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Tests/Shared/Alert/AlertPrototypeTests.cs b/Content.Tests/Shared/Alert/AlertPrototypeTests.cs index 3427e7d375..038a72d6f5 100644 --- a/Content.Tests/Shared/Alert/AlertPrototypeTests.cs +++ b/Content.Tests/Shared/Alert/AlertPrototypeTests.cs @@ -47,7 +47,7 @@ namespace Content.Tests.Shared.Alert { alert.GetIcon(severity); } - catch (ArgumentException e) + catch (ArgumentException) { Assert.Pass(); } From 135a65f030fd8f998c11ffe0cd3f20eac1180365 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Fri, 1 Jan 2021 11:21:18 -0600 Subject: [PATCH 013/166] ApcNet code improvements (#2876) * Removes per-frame setting of PowerReceiverComponent.Powered * PowerReceiver.SetLoad Co-authored-by: py01 --- .../NodeGroups/ApcNetNodeGroup.cs | 120 ++++++++++++------ .../PowerProviderComponent.cs | 44 ++++++- .../PowerReceiverComponent.cs | 34 ++--- 3 files changed, 135 insertions(+), 63 deletions(-) diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs index 93da4c630c..d0441b55f4 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using Content.Server.GameObjects.Components.Power; @@ -9,6 +10,8 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups { public interface IApcNet { + bool Powered { get; } + void AddApc(ApcComponent apc); void RemoveApc(ApcComponent apc); @@ -17,7 +20,7 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups void RemovePowerProvider(PowerProviderComponent provider); - void UpdatePowerProviderReceivers(PowerProviderComponent provider); + void UpdatePowerProviderReceivers(PowerProviderComponent provider, int oldLoad, int newLoad); void Update(float frameTime); } @@ -29,11 +32,19 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups private readonly Dictionary _apcBatteries = new(); [ViewVariables] - private readonly Dictionary> _providerReceivers = new(); + private readonly List _providers = new(); + + [ViewVariables] + public bool Powered { get => _powered; private set => SetPowered(value); } + private bool _powered = false; //Debug property [ViewVariables] - private int TotalReceivers => _providerReceivers.SelectMany(kvp => kvp.Value).Count(); + private int TotalReceivers => _providers.SelectMany(provider => provider.LinkedReceivers).Count(); + + [ViewVariables] + private int TotalPowerReceiverLoad { get => _totalPowerReceiverLoad; set => SetTotalPowerReceiverLoad(value); } + private int _totalPowerReceiverLoad = 0; public static readonly IApcNet NullNet = new NullApcNet(); @@ -57,80 +68,107 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups public void RemoveApc(ApcComponent apc) { _apcBatteries.Remove(apc); - if (!_apcBatteries.Any()) - { - foreach (var receiver in _providerReceivers.SelectMany(kvp => kvp.Value)) - { - receiver.HasApcPower = false; - } - } } public void AddPowerProvider(PowerProviderComponent provider) { - _providerReceivers.Add(provider, provider.LinkedReceivers.ToList()); + _providers.Add(provider); + + foreach (var receiver in provider.LinkedReceivers) + { + TotalPowerReceiverLoad += receiver.Load; + } } public void RemovePowerProvider(PowerProviderComponent provider) { - _providerReceivers.Remove(provider); + _providers.Remove(provider); + + foreach (var receiver in provider.LinkedReceivers) + { + TotalPowerReceiverLoad -= receiver.Load; + } } - public void UpdatePowerProviderReceivers(PowerProviderComponent provider) + public void UpdatePowerProviderReceivers(PowerProviderComponent provider, int oldLoad, int newLoad) { - Debug.Assert(_providerReceivers.ContainsKey(provider)); - _providerReceivers[provider] = provider.LinkedReceivers.ToList(); - } + Debug.Assert(_providers.Contains(provider)); + TotalPowerReceiverLoad -= oldLoad; + TotalPowerReceiverLoad += newLoad; + } public void Update(float frameTime) { - var totalCharge = 0.0; - var totalMaxCharge = 0; - foreach (var (apc, battery) in _apcBatteries) + var remainingPowerNeeded = TotalPowerReceiverLoad * frameTime; + + foreach (var apcBatteryPair in _apcBatteries) { + var apc = apcBatteryPair.Key; + if (!apc.MainBreakerEnabled) continue; - totalCharge += battery.CurrentCharge; - totalMaxCharge += battery.MaxCharge; + var battery = apcBatteryPair.Value; + + if (battery.CurrentCharge < remainingPowerNeeded) + { + remainingPowerNeeded -= battery.CurrentCharge; + battery.CurrentCharge = 0; + } + else + { + battery.UseCharge(remainingPowerNeeded); + remainingPowerNeeded = 0; + } + + if (remainingPowerNeeded == 0) + break; } - foreach (var (_, receivers) in _providerReceivers) - { - foreach (var receiver in receivers) - { - if (!receiver.NeedsPower || receiver.PowerDisabled) - continue; + Powered = remainingPowerNeeded == 0; + } - receiver.HasApcPower = TryUsePower(receiver.Load * frameTime); + private void SetPowered(bool powered) + { + if (powered != Powered) + { + _powered = powered; + PoweredChanged(); + } + } + + private void PoweredChanged() + { + foreach (var provider in _providers) + { + foreach (var receiver in provider.LinkedReceivers) + { + receiver.ApcPowerChanged(); } } } - private bool TryUsePower(float neededCharge) + private void SetTotalPowerReceiverLoad(int totalPowerReceiverLoad) { - foreach (var (apc, battery) in _apcBatteries) - { - if (!apc.MainBreakerEnabled) - continue; + Debug.Assert(totalPowerReceiverLoad >= 0); + _totalPowerReceiverLoad = totalPowerReceiverLoad; - if (battery.TryUseCharge(neededCharge)) //simplification - all power needed must come from one battery - { - return true; - } - } - return false; } #endregion private class NullApcNet : IApcNet { + /// + /// It is important that this returns false, so s with a have no power. + /// + public bool Powered => false; + public void AddApc(ApcComponent apc) { } public void AddPowerProvider(PowerProviderComponent provider) { } public void RemoveApc(ApcComponent apc) { } public void RemovePowerProvider(PowerProviderComponent provider) { } - public void UpdatePowerProviderReceivers(PowerProviderComponent provider) { } + public void UpdatePowerProviderReceivers(PowerProviderComponent provider, int oldLoad, int newLoad) { } public void Update(float frameTime) { } } } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs index 3e3549fd10..570357c3bc 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; @@ -18,7 +18,11 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents void RemoveReceiver(PowerReceiverComponent receiver); + void UpdateReceiverLoad(int oldLoad, int newLoad); + public IEntity ProviderOwner { get; } + + public bool HasApcPower { get; } } [RegisterComponent] @@ -28,6 +32,9 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents public IEntity ProviderOwner => Owner; + [ViewVariables] + public bool HasApcPower => Net.Powered; + /// /// The max distance this can transmit power to s from. /// @@ -49,14 +56,23 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents public void AddReceiver(PowerReceiverComponent receiver) { + var oldLoad = GetTotalLoad(); _linkedReceivers.Add(receiver); - Net.UpdatePowerProviderReceivers(this); + var newLoad = oldLoad + receiver.Load; + Net.UpdatePowerProviderReceivers(this, oldLoad, newLoad); } public void RemoveReceiver(PowerReceiverComponent receiver) { + var oldLoad = GetTotalLoad(); _linkedReceivers.Remove(receiver); - Net.UpdatePowerProviderReceivers(this); + var newLoad = oldLoad - receiver.Load; + Net.UpdatePowerProviderReceivers(this, oldLoad, newLoad); + } + + public void UpdateReceiverLoad(int oldLoad, int newLoad) + { + Net.UpdatePowerProviderReceivers(this, oldLoad, newLoad); } public override void ExposeData(ObjectSerializer serializer) @@ -82,8 +98,6 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents { receiver.ClearProvider(); } - _linkedReceivers = new List(); - Net.UpdatePowerProviderReceivers(this); foreach (var receiver in receivers) { receiver.TryFindAndSetProvider(); @@ -115,19 +129,37 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents private void SetPowerTransferRange(int newPowerTransferRange) { + var oldLoad = GetTotalLoad(); foreach (var receiver in _linkedReceivers.ToArray()) { receiver.ClearProvider(); } _powerTransferRange = newPowerTransferRange; _linkedReceivers = FindAvailableReceivers(); - Net.UpdatePowerProviderReceivers(this); + var newLoad = GetTotalLoad(); + Net.UpdatePowerProviderReceivers(this, oldLoad, newLoad); + } + + private int GetTotalLoad() + { + var load = 0; + foreach (var receiver in _linkedReceivers) + { + load += receiver.Load; + } + return load; } private class NullPowerProvider : IPowerProvider { + /// + /// It is important that this returns false, so s with a have no power. + /// + public bool HasApcPower => false; + public void AddReceiver(PowerReceiverComponent receiver) { } public void RemoveReceiver(PowerReceiverComponent receiver) { } + public void UpdateReceiverLoad(int oldLoad, int newLoad) { } public IEntity ProviderOwner => default; } } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs index 520de52709..b05f03ef96 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; @@ -34,9 +34,11 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents [ViewVariables] public bool Powered => (HasApcPower || !NeedsPower) && !PowerDisabled; + /// + /// If this is being powered by an Apc. + /// [ViewVariables] - public bool HasApcPower { get => _hasApcPower; set => SetHasApcPower(value); } - private bool _hasApcPower; + public bool HasApcPower { get; private set; } /// /// The max distance from a that this can receive power from. @@ -103,7 +105,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents } } - public override void OnRemove() + public override void OnRemove() { if (_physicsComponent != null) { @@ -121,6 +123,14 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents } } + public void ApcPowerChanged() + { + var oldPowered = Powered; + HasApcPower = Provider.HasApcPower; + if (Powered != oldPowered) + OnNewPowerState(); + } + private bool TryFindAvailableProvider(out IPowerProvider foundProvider) { var nearbyEntities = _serverEntityManager @@ -152,7 +162,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents _provider.RemoveReceiver(this); _provider = PowerProviderComponent.NullProvider; NeedsProvider = true; - HasApcPower = false; + ApcPowerChanged(); } private void SetProvider(IPowerProvider newProvider) @@ -161,16 +171,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents _provider = newProvider; newProvider.AddReceiver(this); NeedsProvider = false; - } - - private void SetHasApcPower(bool newHasApcPower) - { - var oldPowered = Powered; - _hasApcPower = newHasApcPower; - if (oldPowered != Powered) - { - OnNewPowerState(); - } + ApcPowerChanged(); } private void SetPowerReceptionRange(int newPowerReceptionRange) @@ -182,6 +183,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents private void SetLoad(int newLoad) { + Provider.UpdateReceiverLoad(Load, newLoad); _load = newLoad; } @@ -228,10 +230,10 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents ClearProvider(); } } + /// ///Adds some markup to the examine text of whatever object is using this component to tell you if it's powered or not, even if it doesn't have an icon state to do this for you. /// - public void Examine(FormattedMessage message, bool inDetailsRange) { message.AddMarkup(Loc.GetString("It appears to be {0}.", Powered ? "[color=darkgreen]powered[/color]" : "[color=darkred]un-powered[/color]")); From 625d7aefa37149ebda198161bdda10499175863b Mon Sep 17 00:00:00 2001 From: DmitriyRubetskoy <75271456+DmitriyRubetskoy@users.noreply.github.com> Date: Fri, 1 Jan 2021 20:27:31 +0300 Subject: [PATCH 014/166] Animal flavor text (#2796) * Added flavortext to all animals currently in the game * intelligence * Different butterfly flavortext * Small corrections * Periouds * Goat changed to something of a biological fact * Misspellings fixed * Update Resources/Prototypes/Entities/Mobs/NPCs/animals.yml Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> * Update Resources/Prototypes/Entities/Mobs/NPCs/animals.yml Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: BlueberryShortcake Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 0a232cb063..3b8bc5a20a 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -5,7 +5,7 @@ save: false name: monkey id: MonkeyMob_Content - description: A description. + description: New church of neo-darwinists actually believe that EVERY animal evolved from a monkey. Tastes like pork, and killing them is both fun and relaxing. drawdepth: Mobs suffix: AI components: @@ -69,7 +69,7 @@ name: gorilla parent: MonkeyMob_Content id: GorillaMob_Content - description: + description: Smashes, roars, looks cool. Don't stand near one. drawdepth: Mobs suffix: AI components: @@ -104,7 +104,7 @@ name: chicken parent: MonkeyMob_Content id: ChickenMob_Content - description: + description: Comes before an egg, and IS a dinosaur! drawdepth: Mobs suffix: AI components: @@ -139,7 +139,7 @@ name: butterfly parent: MonkeyMob_Content id: ButterflyMob_Content - description: + description: Despite popular misconceptions, it's not actually made of butter. drawdepth: Mobs suffix: AI components: @@ -187,7 +187,7 @@ name: bat parent: MonkeyMob_Content id: BatMob_Content - description: + description: Some cultures find them terrifying, others crunchy on the teeth. drawdepth: Mobs suffix: AI components: @@ -225,7 +225,7 @@ name: bee parent: MonkeyMob_Content id: BeeMob_Content - description: + description: Nice to have, but you can't build a civilization on a foundation of honey alone. drawdepth: Mobs suffix: AI components: @@ -264,7 +264,7 @@ name: goat parent: MonkeyMob_Content id: GoatMob_Content - description: + description: His spine consists of long sharp segments, no wonder he is so grumpy. drawdepth: Mobs suffix: AI components: @@ -300,7 +300,7 @@ name: goose parent: MonkeyMob_Content id: GooseMob_Content - description: + description: Its stomach and mind are an enigma beyond human comprehension. drawdepth: Mobs suffix: AI components: @@ -336,7 +336,7 @@ name: parrot parent: MonkeyMob_Content id: ParrotMob_Content - description: + description: Infiltrates your domain, spies on you, and somehow still a cool pet. drawdepth: Mobs suffix: AI components: @@ -374,7 +374,7 @@ name: snake parent: MonkeyMob_Content id: SnakeMob_Content - description: + description: Hissss! Bites aren't poisonous. drawdepth: Mobs suffix: AI components: @@ -412,7 +412,7 @@ name: tarantula parent: MonkeyMob_Content id: GiantSpiderMob_Content - description: + description: Widely recognized to be the literal worst thing in existence. drawdepth: Mobs suffix: AI components: @@ -447,7 +447,7 @@ name: crab parent: MonkeyMob_Content id: CrabMob_Content - description: + description: A folk legend goes around that his claw snaps spacemen out of existance over distasteful remarks. Be polite and tolerant for your own safety. drawdepth: Mobs suffix: AI components: @@ -482,7 +482,7 @@ name: penguin parent: MonkeyMob_Content id: PenguinMob_Content - description: + description: Their lives are constant pain due to their inner-body knees. drawdepth: Mobs suffix: AI components: From 836e2d185a8a66e29412b41b8463068e450433f5 Mon Sep 17 00:00:00 2001 From: moonheart08 Date: Fri, 1 Jan 2021 13:32:29 -0600 Subject: [PATCH 015/166] LV Cables -> APC Cables (#2884) i used the github web editor sue me it's just a string --- .../Components/NodeContainer/NodeContainerComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs index 67ca51083e..30de8613cd 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs @@ -77,7 +77,7 @@ namespace Content.Server.GameObjects.Components.NodeContainer break; case NodeGroupID.Apc: message.AddMarkup( - Loc.GetString("It has a connector for [color=green]LV cables[/color].")); + Loc.GetString("It has a connector for [color=green]APC cables[/color].")); break; } From a87dda47e9daffbabf20313de155de96819a367c Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Fri, 1 Jan 2021 19:04:10 -0600 Subject: [PATCH 016/166] Removes some linq from power (#2875) * PowerProviderComponent Linq removal * AdjacentNode Linq removal * PipeNode Linq removal * Replaces HasFlag usage in PipeNode Co-authored-by: py01 --- .../NodeContainer/Nodes/AdjacentNode.cs | 29 +++++++++++------ .../NodeContainer/Nodes/PipeNode.cs | 31 +++++++++++++------ .../PowerProviderComponent.cs | 22 ++++++++----- .../Components/Atmos/SharedPipeComponent.cs | 7 ++++- 4 files changed, 62 insertions(+), 27 deletions(-) diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/AdjacentNode.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/AdjacentNode.cs index 3bb66265ea..3badc4fe7f 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/Nodes/AdjacentNode.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/AdjacentNode.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using Robust.Shared.GameObjects.Components.Transform; namespace Content.Server.GameObjects.Components.NodeContainer.Nodes @@ -11,13 +10,25 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes { protected override IEnumerable GetReachableNodes() { - return Owner.GetComponent() - .GetCardinalNeighborCells() - .SelectMany(sgc => sgc.GetLocal()) - .Select(entity => entity.TryGetComponent(out var container) ? container : null) - .Where(container => container != null) - .SelectMany(container => container.Nodes) - .Where(node => node != null && node != this); + var cells = Owner.GetComponent() + .GetCardinalNeighborCells(); + + foreach (var cell in cells) + { + foreach (var entity in cell.GetLocal()) + { + if (entity.TryGetComponent(out var container)) + { + foreach (var node in container.Nodes) + { + if (node != null && node != this) + { + yield return node; + } + } + } + } + } } } } diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs index 46ed4f00c4..cc4c25207d 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs @@ -1,6 +1,4 @@ -using System; using System.Collections.Generic; -using System.Linq; using Content.Server.Atmos; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Content.Server.Interfaces; @@ -107,17 +105,30 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes var ownNeededConnection = pipeDirection; var theirNeededConnection = ownNeededConnection.GetOpposite(); - if (!_pipeDirection.HasFlag(ownNeededConnection)) + if (!_pipeDirection.HasDirection(ownNeededConnection)) { continue; } - var pipeNodesInDirection = Owner.GetComponent() - .GetInDir(pipeDirection.ToDirection()) - .Select(entity => entity.TryGetComponent(out var container) ? container : null) - .Where(container => container != null) - .SelectMany(container => container.Nodes) - .OfType() - .Where(pipeNode => pipeNode._pipeDirection.HasFlag(theirNeededConnection)); + + var pipeNodesInDirection = new List(); + + var entities = Owner.GetComponent() + .GetInDir(pipeDirection.ToDirection()); + + foreach (var entity in entities) + { + if (entity.TryGetComponent(out var container)) + { + foreach (var node in container.Nodes) + { + if (node is PipeNode pipeNode && pipeNode._pipeDirection.HasDirection(theirNeededConnection)) + { + pipeNodesInDirection.Add(pipeNode); + } + } + } + } + foreach (var pipeNode in pipeNodesInDirection) { yield return pipeNode; diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs index 570357c3bc..2284963d5a 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; @@ -109,12 +108,21 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents { var nearbyEntities = Owner.EntityManager .GetEntitiesInRange(Owner, PowerTransferRange); - return nearbyEntities.Select(entity => entity.TryGetComponent(out var receiver) ? receiver : null) - .Where(receiver => receiver != null) - .Where(receiver => receiver.Connectable) - .Where(receiver => receiver.NeedsProvider) - .Where(receiver => receiver.Owner.Transform.Coordinates.TryDistance(Owner.EntityManager, Owner.Transform.Coordinates, out var distance) && distance < Math.Min(PowerTransferRange, receiver.PowerReceptionRange)) - .ToList(); + + var receivers = new List(); + + foreach (var entity in nearbyEntities) + { + if (entity.TryGetComponent(out var receiver) && + receiver.Connectable && + receiver.NeedsProvider && + receiver.Owner.Transform.Coordinates.TryDistance(Owner.EntityManager, Owner.Transform.Coordinates, out var distance) && + distance < Math.Min(PowerTransferRange, receiver.PowerReceptionRange)) + { + receivers.Add(receiver); + } + } + return receivers; } protected override void AddSelfToNet(IApcNet apcNet) diff --git a/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs b/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs index 25301171ab..b5c4f222a6 100644 --- a/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs +++ b/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs @@ -1,6 +1,6 @@ -using System; using Robust.Shared.Maths; using Robust.Shared.Serialization; +using System; namespace Content.Shared.GameObjects.Components.Atmos { @@ -76,6 +76,11 @@ namespace Content.Shared.GameObjects.Components.Atmos { public const int PipeDirections = 4; + public static bool HasDirection(this PipeDirection pipeDirection, PipeDirection other) + { + return (pipeDirection & other) == other; + } + public static Angle ToAngle(this PipeDirection pipeDirection) { return pipeDirection switch From a1113493512269d5ba6c589dbb59d2ba647c93d0 Mon Sep 17 00:00:00 2001 From: Swept Date: Sat, 2 Jan 2021 02:34:44 +0000 Subject: [PATCH 017/166] Organizes the reagents/reactions YAML. (#2885) * Fixes chemical IDs from being FUCKING FUCK GUVK * All done * Updated the chem dispenser --- .../Specific/Dispensers/chem_dispenser.yml | 40 +- Resources/Prototypes/Reagents/botany.yml | 82 ++++ Resources/Prototypes/Reagents/chemicals.yml | 370 ++++++------------ Resources/Prototypes/Reagents/cleaning.yml | 33 ++ Resources/Prototypes/Reagents/elements.yml | 210 +++++----- .../Prototypes/Recipes/Reactions/botany.yml | 43 ++ .../Recipes/Reactions/chemicals.yml | 138 ++----- .../Prototypes/Recipes/Reactions/cleaning.yml | 33 ++ 8 files changed, 472 insertions(+), 477 deletions(-) create mode 100644 Resources/Prototypes/Reagents/botany.yml create mode 100644 Resources/Prototypes/Reagents/cleaning.yml create mode 100644 Resources/Prototypes/Recipes/Reactions/botany.yml create mode 100644 Resources/Prototypes/Recipes/Reactions/cleaning.yml diff --git a/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/chem_dispenser.yml b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/chem_dispenser.yml index 9a014fb46f..f7de3d2bf4 100644 --- a/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/chem_dispenser.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/chem_dispenser.yml @@ -17,26 +17,26 @@ - type: reagentDispenserInventory id: ChemDispenserStandardInventory inventory: - - chem.H2SO4 - - chem.H2O + - chem.SulfuricAcid + - chem.Water - chem.Ethanol - chem.Glucose - - chem.H - - chem.O - - chem.S - - chem.C - - chem.Cu - - chem.N + - chem.Hydrogen + - chem.Oxygen + - chem.Sulfur + - chem.Carbon + - chem.Copper + - chem.Nitrogen - chem.Nutriment - - chem.Fe - - chem.F - - chem.Al - - chem.Si - - chem.Cl - - chem.Li - - chem.Hg - - chem.P - - chem.K - - chem.Ra - - chem.Na - - chem.U + - chem.Iron + - chem.Fluorine + - chem.Aluminium + - chem.Silicon + - chem.Chlorine + - chem.Lithium + - chem.Mercury + - chem.Phosphorus + - chem.Potassium + - chem.Radium + - chem.Sodium + - chem.Uranium diff --git a/Resources/Prototypes/Reagents/botany.yml b/Resources/Prototypes/Reagents/botany.yml new file mode 100644 index 0000000000..c1f6a3e321 --- /dev/null +++ b/Resources/Prototypes/Reagents/botany.yml @@ -0,0 +1,82 @@ +- type: reagent + id: chem.EZNutrient + name: EZ nutrient + desc: Give your plants some of those EZ nutrients! + color: "#664330" + physicalDesc: thick + plantMetabolism: + - !type:AdjustNutrition + amount: 1 + +- type: reagent + id: chem.Left4Zed + name: left-4-zed + desc: A cocktail of mutagenic compounds, which cause plant life to become highly unstable. + color: "#5b406c" + physicalDesc: heterogeneous + plantMetabolism: + - !type:AdjustNutrition + amount: 1 + - !type:AdjustHealth + amount: -0.5 + - !type:AdjustMutationMod + prob: 0.3 + amount: 0.2 + +- type: reagent + id: chem.PestKiller + name: pest killer + desc: A mixture that targets pests. + color: "#9e9886" + physicalDesc: bubbling + plantMetabolism: + - !type:AdjustToxins + amount: 4 + - !type:AdjustPests + amount: -6 + +- type: reagent + id: chem.PlantBGone + name: plant-B-gone + desc: A harmful toxic mixture to kill plantlife. Do not ingest! + color: "#49002E" + physicalDesc: bubbling + plantMetabolism: + - !type:AdjustToxins + amount: 6 + - !type:AdjustWeeds + amount: -8 + - !type:AdjustHealth + amount: -20 + - !type:AdjustMutationMod + amount: 0.1 + +- type: reagent + id: chem.RobustHarvest + name: robust harvest + desc: Plant-enhancing hormones, good for increasing potency. + color: "#3e901c" + physicalDesc: robust + customPlantMetabolism: 0.1 + plantMetabolism: + - !type:AdjustNutrition + amount: 0.05 + - !type:AdjustWeeds + prob: 0.025 + amount: 1 + - !type:AdjustPests + prob: 0.025 + amount: 1 + - !type:RobustHarvest {} + +- type: reagent + id: chem.WeedKiller + name: weed killer + desc: A mixture that targets weeds. + color: "#968395" + physicalDesc: bubbling + plantMetabolism: + - !type:AdjustToxins + amount: 4 + - !type:AdjustWeeds + amount: -6 diff --git a/Resources/Prototypes/Reagents/chemicals.yml b/Resources/Prototypes/Reagents/chemicals.yml index bd379b94b9..d7af2363f1 100644 --- a/Resources/Prototypes/Reagents/chemicals.yml +++ b/Resources/Prototypes/Reagents/chemicals.yml @@ -1,104 +1,3 @@ -- type: reagent - id: chem.Nutriment - name: nutriment - desc: All the vitamins, minerals, and carbohydrates the body needs in pure form. - physicalDesc: opaque - color: "#664330" - metabolism: - - !type:DefaultFood - rate: 1 - plantMetabolism: - - !type:AdjustNutrition - amount: 1 - - !type:AdjustHealth - amount: 0.5 - -- type: reagent - id: chem.H2SO4 - name: sulfuric acid - desc: A highly corrosive, oily, colorless liquid. - physicalDesc: oily - color: "#BF8C00" - boilingPoint: 337.0 - meltingPoint: 10.31 - plantMetabolism: - - !type:AdjustToxins - amount: 10 - - !type:AdjustWeeds - amount: -2 - - !type:AdjustHealth - amount: -4 - -- type: reagent - id: chem.H2O - name: water - desc: A colorless liquid that humans need in order to survive. - physicalDesc: translucent - color: "#c0e0ff20" - boilingPoint: 100.0 - meltingPoint: 0.0 - metabolism: - - !type:DefaultDrink - rate: 1 - tileReactions: - - !type:ExtinguishTileReaction {} - - !type:SpillIfPuddlePresentTileReaction {} - plantMetabolism: - - !type:AdjustWater - amount: 1 - -- type: reagent - id: chem.Ice - name: ice - desc: Frozen water. - physicalDesc: frosty - color: "#bed8e6" - meltingPoint: 0.0 - boilingPoint: 100.0 - plantMetabolism: - - !type:AdjustWater - amount: 1 - -- type: reagent - id: chem.Phoron - name: phoron - desc: Funky, space-magic pixie dust. You probably shouldn't eat this, but we both know you will anyways. - physicalDesc: gaseous - color: "#7e009e" - boilingPoint: -127.3 # Random values picked between the actual values for CO2 and O2 - meltingPoint: -186.4 - tileReactions: - - !type:FlammableTileReaction - temperatureMultiplier: 1.5 - -- type: reagent - id: chem.Ethanol - name: ethanol - desc: A simple alcohol, makes you drunk if consumed, flammable. - physicalDesc: strong-smelling - color: "#b05b3c" - boilingPoint: 78.2 - meltingPoint: -114.1 - tileReactions: - - !type:FlammableTileReaction - temperatureMultiplier: 1.35 - -- type: reagent - id: chem.Glucose - name: glucose - desc: A simple sugar found in many foods. - physicalDesc: syrupy - color: "#ffffff" - boilingPoint: 340282300000000000000000000000000000000 #Fun fact: Glucose can't boil. So let's just set it to the maximum float value. - meltingPoint: 146.0 - plantMetabolism: - - !type:AdjustNutrition - amount: 0.1 - - !type:AdjustWeeds - amount: 2 - - !type:AdjustPests - amount: 2 - - type: reagent id: chem.Ammonia name: ammonia @@ -113,15 +12,6 @@ - !type:AdjustHealth amount: 0.5 -- type: reagent - id: chem.Bleach - name: bleach - desc: Heavy duty cleaner that can clean tiles the same as Space Cleaner and also decontaminate clothes. Extremely toxic when ingested. - physicalDesc: strong-smelling - color: "#a1000b" - boilingPoint: 111.0 - meltingPoint: -5.0 - - type: reagent id: chem.Diethylamine name: diethylamine @@ -144,20 +34,86 @@ amount: 1 - !type:Diethylamine {} +- type: reagent + id: chem.Ethanol + name: ethanol + desc: A simple alcohol, makes you drunk if consumed, flammable. + physicalDesc: strong-smelling + color: "#b05b3c" + boilingPoint: 78.2 + meltingPoint: -114.1 + tileReactions: + - !type:FlammableTileReaction + temperatureMultiplier: 1.35 - type: reagent id: chem.FoamingAgent name: foaming agent - desc: Makes foam such as that required in metal foam grenades + desc: Makes foam such as that's required in metal foam grenades. physicalDesc: foamy color: "#215263" boilingPoint: 418.0 # I went with ammonium lauryl sulfate as the basis for this meltingPoint: 7.4 # I made this up +- type: reagent + id: chem.Glucose + name: glucose + desc: A simple sugar found in many foods. + physicalDesc: syrupy + color: "#ffffff" + boilingPoint: 340282300000000000000000000000000000000 #Fun fact: Glucose can't boil. So let's just set it to the maximum float value. + meltingPoint: 146.0 + plantMetabolism: + - !type:AdjustNutrition + amount: 0.1 + - !type:AdjustWeeds + amount: 2 + - !type:AdjustPests + amount: 2 + +- type: reagent + id: chem.Ice + name: ice + desc: Frozen water. + physicalDesc: frosty + color: "#bed8e6" + meltingPoint: 0.0 + boilingPoint: 100.0 + plantMetabolism: + - !type:AdjustWater + amount: 1 + +- type: reagent + id: chem.Nutriment + name: nutriment + desc: All the vitamins, minerals, and carbohydrates the body needs in pure form. + physicalDesc: opaque + color: "#664330" + metabolism: + - !type:DefaultFood + rate: 1 + plantMetabolism: + - !type:AdjustNutrition + amount: 1 + - !type:AdjustHealth + amount: 0.5 + +- type: reagent + id: chem.Phoron + name: phoron + desc: Funky, space-magic pixie dust. You probably shouldn't eat this, but we both know you will anyways. + physicalDesc: gaseous + color: "#7e009e" + boilingPoint: -127.3 # Random values picked between the actual values for CO2 and O2 + meltingPoint: -186.4 + tileReactions: + - !type:FlammableTileReaction + temperatureMultiplier: 1.5 + - type: reagent id: chem.PolytrinicAcid name: polytrinic acid - desc: An extremely corrosive chemical substance. The slightest touch of it will melt off most masks and headgear, and it deals extreme damage to anyone who comes directly into contact with it. Spraying it on other items will usually melt them too, which does make it useful if the clown has covered the entire hallway in banana peels. + desc: An extremely corrosive chemical substance. The slightest touch of it will melt off most masks and headgear, and it deals extreme damage to anyone who comes directly into contact with it. physicalDesc: strong-smelling color: "#a1000b" boilingPoint: 78.2 # This isn't a real chemical... @@ -170,31 +126,6 @@ - !type:AdjustHealth amount: -8 -- type: reagent - id: chem.SpaceCleaner - name: space cleaner - desc: This is able to clean almost all surfaces of almost anything that may dirty them. The janitor is likely to appreciate refills. - physicalDesc: lemony fresh - color: "#c8ff69" - boilingPoint: 147.0 # Made this up, loosely based on bleach - meltingPoint: -11.0 - tileReactions: - - !type:CleanTileReaction {} - -- type: reagent - id: chem.SpaceLube - name: space lube - desc: Space Lube is a high performance lubricant intended for maintenance of extremely complex mechanical equipment (and certainly not used to make people slip). - physicalDesc: shiny - color: "#77b58e" - boilingPoint: 290.0 # Glycerin - meltingPoint: 18.2 - tileReactions: - - !type:SpillTileReaction - paralyzeTime: 3 - launchForwardsMultiplier: 2 - requiredSlipSpeed: 1 - - type: reagent id: chem.TableSalt name: table salt @@ -229,6 +160,46 @@ - !type:FlammableTileReaction temperatureMultiplier: 1.35 +- type: reagent + id: chem.Toxin + name: toxin + desc: A Toxic chemical. + color: "#cf3600" + physicalDesc: opaque + plantMetabolism: + - !type:AdjustToxins + amount: 10 + +- type: reagent + id: chem.Sugar + name: sugar + desc: Sweet. + color: "#ffffff" + physicalDesc: opaque + plantMetabolism: + - !type:AdjustNutrition + amount: 0.1 + - !type:AdjustWeeds + amount: 2 + - !type:AdjustPests + amount: 2 + +- type: reagent + id: chem.SulfuricAcid + name: sulfuric acid + desc: A highly corrosive, oily, colorless liquid. + physicalDesc: oily + color: "#BF8C00" + boilingPoint: 337.0 + meltingPoint: 10.31 + plantMetabolism: + - !type:AdjustToxins + amount: 10 + - !type:AdjustWeeds + amount: -2 + - !type:AdjustHealth + amount: -4 + - type: reagent id: chem.UnstableMutagen name: unstable mutagen @@ -242,6 +213,24 @@ - !type:AdjustMutationLevel amount: 1 +- type: reagent + id: chem.Water + name: water + desc: A colorless liquid that humans need in order to survive. + physicalDesc: translucent + color: "#c0e0ff20" + boilingPoint: 100.0 + meltingPoint: 0.0 + metabolism: + - !type:DefaultDrink + rate: 1 + tileReactions: + - !type:ExtinguishTileReaction {} + - !type:SpillIfPuddlePresentTileReaction {} + plantMetabolism: + - !type:AdjustWater + amount: 1 + - type: reagent id: chem.WeldingFuel name: welding fuel @@ -252,110 +241,3 @@ meltingPoint: -80.7 tileReactions: - !type:FlammableTileReaction {} - -- type: reagent - id: chem.EZNutrient - name: EZ nutrient - desc: Give your plants some of those EZ nutrients! - color: "#664330" - physicalDesc: thick - plantMetabolism: - - !type:AdjustNutrition - amount: 1 - -- type: reagent - id: chem.Left4Zed - name: left-4-zed - desc: A cocktail of mutagenic compounds, which cause plant life to become highly unstable. - color: "#5b406c" - physicalDesc: heterogeneous - plantMetabolism: - - !type:AdjustNutrition - amount: 1 - - !type:AdjustHealth - amount: -0.5 - - !type:AdjustMutationMod - prob: 0.3 - amount: 0.2 - -- type: reagent - id: chem.RobustHarvest - name: robust harvest - desc: Plant-enhancing hormones, good for increasing potency. - color: "#3e901c" - physicalDesc: robust - customPlantMetabolism: 0.1 - plantMetabolism: - - !type:AdjustNutrition - amount: 0.05 - - !type:AdjustWeeds - prob: 0.025 - amount: 1 - - !type:AdjustPests - prob: 0.025 - amount: 1 - - !type:RobustHarvest {} - -- type: reagent - id: chem.PlantBGone - name: plant-B-gone - desc: A harmful toxic mixture to kill plantlife. Do not ingest! - color: "#49002E" - physicalDesc: bubbling - plantMetabolism: - - !type:AdjustToxins - amount: 6 - - !type:AdjustWeeds - amount: -8 - - !type:AdjustHealth - amount: -20 - - !type:AdjustMutationMod - amount: 0.1 - -- type: reagent - id: chem.WeedKiller - name: weed killer - desc: A mixture that targets weeds. - color: "#968395" - physicalDesc: bubbling - plantMetabolism: - - !type:AdjustToxins - amount: 4 - - !type:AdjustWeeds - amount: -6 - -- type: reagent - id: chem.PestKiller - name: pest killer - desc: A mixture that targets pests. - color: "#9e9886" - physicalDesc: bubbling - plantMetabolism: - - !type:AdjustToxins - amount: 4 - - !type:AdjustPests - amount: -6 - -- type: reagent - id: chem.Toxin - name: toxin - desc: A Toxic chemical. - color: "#cf3600" - physicalDesc: opaque - plantMetabolism: - - !type:AdjustToxins - amount: 10 - -- type: reagent - id: chem.Sugar - name: sugar - desc: Sickly sweet. - color: "#ffffff" - physicalDesc: opaque - plantMetabolism: - - !type:AdjustNutrition - amount: 0.1 - - !type:AdjustWeeds - amount: 2 - - !type:AdjustPests - amount: 2 diff --git a/Resources/Prototypes/Reagents/cleaning.yml b/Resources/Prototypes/Reagents/cleaning.yml new file mode 100644 index 0000000000..f789934922 --- /dev/null +++ b/Resources/Prototypes/Reagents/cleaning.yml @@ -0,0 +1,33 @@ +- type: reagent + id: chem.Bleach + name: bleach + desc: Heavy duty cleaner that can clean tiles the same as Space Cleaner and also decontaminate clothes. Extremely toxic when ingested. + physicalDesc: strong-smelling + color: "#a1000b" + boilingPoint: 111.0 + meltingPoint: -5.0 + +- type: reagent + id: chem.SpaceCleaner + name: space cleaner + desc: This is able to clean almost all surfaces of almost anything that may dirty them. The janitor is likely to appreciate refills. + physicalDesc: lemony fresh + color: "#c8ff69" + boilingPoint: 147.0 # Made this up, loosely based on bleach + meltingPoint: -11.0 + tileReactions: + - !type:CleanTileReaction {} + +- type: reagent + id: chem.SpaceLube + name: space lube + desc: Space Lube is a high performance lubricant intended for maintenance of extremely complex mechanical equipment (and certainly not used to make people slip). + physicalDesc: shiny + color: "#77b58e" + boilingPoint: 290.0 # Glycerin + meltingPoint: 18.2 + tileReactions: + - !type:SpillTileReaction + paralyzeTime: 3 + launchForwardsMultiplier: 2 + requiredSlipSpeed: 1 diff --git a/Resources/Prototypes/Reagents/elements.yml b/Resources/Prototypes/Reagents/elements.yml index 8fab1f0048..2011cd122f 100644 --- a/Resources/Prototypes/Reagents/elements.yml +++ b/Resources/Prototypes/Reagents/elements.yml @@ -1,32 +1,14 @@ - type: reagent - id: chem.H - name: hydrogen - desc: A light, flammable gas. - physicalDesc: gaseous - color: "#808080" - boilingPoint: -253.0 - meltingPoint: -259.2 + id: chem.Aluminium # We use real words here. + name: aluminium + desc: A silver, soft, non-magnetic, and ductile metal. + physicalDesc: metallic + color: "#848789" + boilingPoint: 2327.0 + meltingPoint: 660.0 - type: reagent - id: chem.O - name: oxygen - desc: An oxidizing, colorless gas. - physicalDesc: gaseous - color: "#808080" - boilingPoint: -183.0 - meltingPoint: -218.4 - -- type: reagent - id: chem.S - name: sulfur - desc: A yellow, crystalline solid. - physicalDesc: powdery - color: "#fff385" - boilingPoint: 445.0 - meltingPoint: 120.0 - -- type: reagent - id: chem.C + id: chem.Carbon name: carbon desc: A black, crystalline solid. physicalDesc: crystalline @@ -35,70 +17,7 @@ meltingPoint: 3550.0 - type: reagent - id: chem.Al - name: aluminum - desc: A silver, soft, non-magnetic, and ductile metal. - physicalDesc: metallic - color: "#848789" - boilingPoint: 2327.0 - meltingPoint: 660.0 - -- type: reagent - id: chem.Cu - name: copper - desc: A soft, malleable, and ductile metal with very high thermal and electrical conductivity. - physicalDesc: metallic - color: "#b05b3c" - boilingPoint: 2595.0 - meltingPoint: 1083.0 - -- type: reagent - id: chem.N - name: nitrogen - desc: A colorless, odorless unreactive gas. Highly stable. - physicalDesc: gaseous - color: "#808080" - boilingPoint: -195.8 - meltingPoint: -210.0 - -- type: reagent - id: chem.Fe - name: iron - desc: A silvery-grey metal which forms iron oxides (rust) with contact with air. Commonly alloyed with other elements to create alloys such as steel. - physicalDesc: metallic - color: "#434b4d" - boilingPoint: 2862.0 - meltingPoint: 1538.0 - -- type: reagent - id: chem.F - name: fluorine - desc: A highly toxic pale yellow gas. Extremely reactive. - physicalDesc: gaseous - color: "#808080" - boilingPoint: -188.11 - meltingPoint: -219.67 - plantMetabolism: - - !type:AdjustWater - amount: -0.5 - - !type:AdjustToxins - amount: 25 - - !type:AdjustWeeds - amount: -4 - - !type:AdjustHealth - amount: -2 - -- type: reagent - id: chem.Si - name: silicon - desc: A hard and brittle crystalline solid with a blue-grey color. - physicalDesc: crystalline - color: "#364266" - boilingPoint: 3265.0 - meltingPoint: 1414.0 - -- type: reagent - id: chem.Cl + id: chem.Chlorine name: chlorine desc: A yellow-green gas which is toxic to humans. physicalDesc: gaseous @@ -116,7 +35,52 @@ amount: -1 - type: reagent - id: chem.Li + id: chem.Copper + name: copper + desc: A soft, malleable, and ductile metal with very high thermal and electrical conductivity. + physicalDesc: metallic + color: "#b05b3c" + boilingPoint: 2595.0 + meltingPoint: 1083.0 + +- type: reagent + id: chem.Fluorine + name: fluorine + desc: A highly toxic pale yellow gas. Extremely reactive. + physicalDesc: gaseous + color: "#808080" + boilingPoint: -188.11 + meltingPoint: -219.67 + plantMetabolism: + - !type:AdjustWater + amount: -0.5 + - !type:AdjustToxins + amount: 25 + - !type:AdjustWeeds + amount: -4 + - !type:AdjustHealth + amount: -2 + +- type: reagent + id: chem.Hydrogen + name: hydrogen + desc: A light, flammable gas. + physicalDesc: gaseous + color: "#808080" + boilingPoint: -253.0 + meltingPoint: -259.2 + +- type: reagent + id: chem.Iron + name: iron + desc: A silvery-grey metal which forms iron oxides (rust) with contact with air. Commonly alloyed with other elements to create alloys such as steel. + physicalDesc: metallic + color: "#434b4d" + boilingPoint: 2862.0 + meltingPoint: 1538.0 + +- type: reagent + id: chem.Lithium name: lithium desc: A soft, silvery-white alkali metal. It is highly reactive, and ignites if it makes contact with water. physicalDesc: shiny @@ -125,7 +89,7 @@ boilingPoint: 1330.0 - type: reagent - id: chem.Hg + id: chem.Mercury name: mercury desc: A silver metal which is liquid at room temperature. It is highly toxic to humans. physicalDesc: shiny @@ -134,7 +98,34 @@ boilingPoint: 356.73 - type: reagent - id: chem.P + id: chem.Nitrogen + name: nitrogen + desc: A colorless, odorless unreactive gas. Highly stable. + physicalDesc: gaseous + color: "#808080" + boilingPoint: -195.8 + meltingPoint: -210.0 + +- type: reagent + id: chem.Oxygen + name: oxygen + desc: An oxidizing, colorless gas. + physicalDesc: gaseous + color: "#808080" + boilingPoint: -183.0 + meltingPoint: -218.4 + +- type: reagent + id: chem.Potassium + name: potassium + desc: A soft, shiny grey metal. Even more reactive than lithium. + physicalDesc: shiny + color: "#c6c8cc" + meltingPoint: 65.5 + boilingPoint: 759.0 + +- type: reagent + id: chem.Phosphorus name: phosphorus desc: A reactive metal used in pyrotechnics and weapons. physicalDesc: powdery @@ -150,16 +141,7 @@ amount: -2 - type: reagent - id: chem.K - name: potassium - desc: A soft, shiny grey metal. Even more reactive than lithium. - physicalDesc: shiny - color: "#c6c8cc" - meltingPoint: 65.5 - boilingPoint: 759.0 - -- type: reagent - id: chem.Ra + id: chem.Radium name: radium desc: A radioactive metal, silvery-white in it's pure form. It glows due to it's radioactivity and is highly toxic. physicalDesc: glowing @@ -179,7 +161,25 @@ amount: 0.1 - type: reagent - id: chem.Na + id: chem.Silicon + name: silicon + desc: A hard and brittle crystalline solid with a blue-grey color. + physicalDesc: crystalline + color: "#364266" + boilingPoint: 3265.0 + meltingPoint: 1414.0 + +- type: reagent + id: chem.Sulfur + name: sulfur + desc: A yellow, crystalline solid. + physicalDesc: powdery + color: "#fff385" + boilingPoint: 445.0 + meltingPoint: 120.0 + +- type: reagent + id: chem.Sodium name: sodium desc: A silvery-white alkali metal. Highly reactive in it's pure form. physicalDesc: metallic @@ -188,7 +188,7 @@ boilingPoint: 883.0 - type: reagent - id: chem.U + id: chem.Uranium name: uranium desc: A grey metallic chemical element in the actinide series, weakly radioactive. physicalDesc: metallic diff --git a/Resources/Prototypes/Recipes/Reactions/botany.yml b/Resources/Prototypes/Recipes/Reactions/botany.yml new file mode 100644 index 0000000000..6a992f5f7e --- /dev/null +++ b/Resources/Prototypes/Recipes/Reactions/botany.yml @@ -0,0 +1,43 @@ +- type: reaction + id: react.EZNutrient + reactants: + chem.Nitrogen: + amount: 1 + chem.Phosphorus: + amount: 1 + chem.Potassium: + amount: 1 + products: + chem.EZNutrient: 3 + +- type: reaction + id: react.RobustHarvest + reactants: + chem.EZNutrient: + amount: 1 + chem.SulfuricAcid: + amount: 1 + catalyst: true + products: + chem.RobustHarvest: 1 + +- type: reaction + id: react.Left4Zed + reactants: + chem.EZNutrient: + amount: 1 + chem.Radium: + amount: 1 + catalyst: true + products: + chem.Left4Zed: 1 + +- type: reaction + id: react.PlantBGone + reactants: + chem.Toxin: + amount: 1 + chem.Water: + amount: 4 + products: + chem.PlantBGone: 5 diff --git a/Resources/Prototypes/Recipes/Reactions/chemicals.yml b/Resources/Prototypes/Recipes/Reactions/chemicals.yml index 11ff5162c7..05045b484f 100644 --- a/Resources/Prototypes/Recipes/Reactions/chemicals.yml +++ b/Resources/Prototypes/Recipes/Reactions/chemicals.yml @@ -1,35 +1,13 @@ -- type: reaction - id: react.H2O - reactants: - chem.H: - amount: 1 - chem.O: - amount: 1 - products: - chem.H2O: 2 - - type: reaction id: react.Ammonia reactants: - chem.H: + chem.Hydrogen: amount: 3 - chem.N: + chem.Nitrogen: amount: 1 products: chem.Ammonia: 4 -- type: reaction - id: react.Bleach - reactants: - chem.TableSalt: - amount: 2 - chem.SpaceCleaner: - amount: 2 - chem.O: - amount: 1 - products: - chem.Bleach: 5 - - type: reaction id: react.Diethylamine reactants: @@ -43,9 +21,9 @@ - type: reaction id: react.FoamingAgent reactants: - chem.Li: + chem.Lithium: amount: 1 - chem.H: + chem.Hydrogen: amount: 1 products: chem.FoamingAgent: 2 @@ -53,77 +31,21 @@ - type: reaction id: react.PolytrinicAcid reactants: - chem.H2SO4: + chem.SulfuricAcid: amount: 1 - chem.Cl: + chem.Chlorine: amount: 1 - chem.K: + chem.Potassium: amount: 1 products: chem.PolytrinicAcid: 3 -- type: reaction - id: react.SpaceCleaner - reactants: - chem.Ammonia: - amount: 1 - chem.H2O: - amount: 1 - products: - chem.SpaceCleaner: 2 - -- type: reaction - id: react.SpaceLube - reactants: - chem.H2O: - amount: 1 - chem.Si: - amount: 1 - chem.O: - amount: 1 - products: - chem.SpaceLube: 3 - -- type: reaction - id: react.TableSalt - reactants: - chem.Cl: - amount: 1 - chem.Na: - amount: 1 - products: - chem.TableSalt: 2 - -- type: reaction - id: react.Thermite - reactants: - chem.Fe: - amount: 1 - chem.Al: - amount: 1 - chem.O: - amount: 1 - products: - chem.Thermite: 3 - -- type: reaction - id: react.UnstableMutagen - reactants: - chem.Ra: - amount: 1 - chem.P: - amount: 1 - chem.Cl: - amount: 1 - products: - chem.UnstableMutagen: 3 - - type: reaction id: react.PotassiumExplosion reactants: - chem.H2O: + chem.Water: amount: 1 - chem.K: + chem.Potassium: amount: 1 effects: - !type:ExplosionReactionEffect @@ -136,45 +58,45 @@ maxScale: 30 #Explosion strength stops scaling at 30 potassium + 30 water - type: reaction - id: react.EZNutrient + id: react.TableSalt reactants: - chem.N: + chem.Chlorine: amount: 1 - chem.P: - amount: 1 - chem.K: + chem.Sodium: amount: 1 products: - chem.EZNutrient: 3 + chem.TableSalt: 2 - type: reaction - id: react.RobustHarvest + id: react.Thermite reactants: - chem.EZNutrient: + chem.Iron: amount: 1 - chem.H2SO4: + chem.Aluminium: + amount: 1 + chem.Oxygen: amount: 1 - catalyst: true products: - chem.RobustHarvest: 1 + chem.Thermite: 3 - type: reaction - id: react.Left4Zed + id: react.UnstableMutagen reactants: - chem.EZNutrient: + chem.Radium: amount: 1 - chem.Ra: + chem.Phosphorus: + amount: 1 + chem.Chlorine: amount: 1 - catalyst: true products: - chem.Left4Zed: 1 + chem.UnstableMutagen: 3 - type: reaction - id: react.PlantBGone + id: react.Water reactants: - chem.Toxin: + chem.Hydrogen: + amount: 1 + chem.Oxygen: amount: 1 - chem.H2O: - amount: 4 products: - chem.PlantBGone: 5 + chem.Water: 2 diff --git a/Resources/Prototypes/Recipes/Reactions/cleaning.yml b/Resources/Prototypes/Recipes/Reactions/cleaning.yml new file mode 100644 index 0000000000..8b2257056f --- /dev/null +++ b/Resources/Prototypes/Recipes/Reactions/cleaning.yml @@ -0,0 +1,33 @@ +- type: reaction + id: react.Bleach + reactants: + chem.TableSalt: + amount: 2 + chem.SpaceCleaner: + amount: 2 + chem.Oxygen: + amount: 1 + products: + chem.Bleach: 5 + +- type: reaction + id: react.SpaceCleaner + reactants: + chem.Ammonia: + amount: 1 + chem.Water: + amount: 1 + products: + chem.SpaceCleaner: 2 + +- type: reaction + id: react.SpaceLube + reactants: + chem.Water: + amount: 1 + chem.Silicon: + amount: 1 + chem.Oxygen: + amount: 1 + products: + chem.SpaceLube: 3 From 63a7d2d43310ac79b9992d46a9eece8409fa01dc Mon Sep 17 00:00:00 2001 From: Swept Date: Sat, 2 Jan 2021 03:54:30 +0000 Subject: [PATCH 018/166] Fixes gar glasses. (#2869) * Initial * Fixes inhands * A * Oh yeah and they slice real good too --- .../Prototypes/Entities/Clothing/Eyes/glasses.yml | 9 ++++++++- .../Clothing/Eyes/Glasses/gar.rsi/meta.json | 8 -------- .../Eyes/Glasses/gar.rsi/super-inhand-left.png | Bin 209 -> 0 bytes .../Eyes/Glasses/gar.rsi/super-inhand-right.png | Bin 209 -> 0 bytes 4 files changed, 8 insertions(+), 9 deletions(-) delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/super-inhand-left.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/super-inhand-right.png diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml index f69ebf0b50..a0e5f0064f 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml @@ -19,6 +19,8 @@ sprite: Clothing/Eyes/Glasses/gar.rsi - type: Clothing sprite: Clothing/Eyes/Glasses/gar.rsi + - type: MeleeWeapon + damage: 10 - type: entity parent: ClothingEyesBase @@ -32,6 +34,9 @@ - type: Clothing sprite: Clothing/Eyes/Glasses/gar.rsi HeldPrefix: alt + ClothingPrefix: alt + - type: MeleeWeapon + damage: 10 - type: entity parent: ClothingEyesBase @@ -44,7 +49,9 @@ state: icon-super - type: Clothing sprite: Clothing/Eyes/Glasses/gar.rsi - HeldPrefix: super + ClothingPrefix: super + - type: MeleeWeapon + damage: 10 - type: entity parent: ClothingEyesBase diff --git a/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json index 8f22126d1c..db2e9f2a37 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json @@ -46,14 +46,6 @@ { "name": "alt-inhand-right", "directions": 4 - }, - { - "name": "super-inhand-left", - "directions": 4 - }, - { - "name": "super-inhand-right", - "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/super-inhand-left.png b/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/super-inhand-left.png deleted file mode 100644 index 3afeccddd0df5fc34518ae1c33a53dda10073a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Gdx`!Ln`LHy>*(GNl}2|!o_JC zhwU^@S#9CTKGdy#x1;4M$DVR!#T2^&DJ7tC2C?Fdn=wUN`s{P^ebfIqom^QX6<+*7 zb-B089HoE8KiA*h#dhXAII(NCdDVC2XD1jz+8GkWV;{c_{KviL zvZ-{9N_B12`qY&-Z}*%uvv0iFW$^WX!`-vjY8eu8%g?G92wf|m1=i&0>gTe~DWM4f D$6--@ diff --git a/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/super-inhand-right.png b/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/super-inhand-right.png deleted file mode 100644 index f7c8a4501be25d8f773084d1f6ed8f20cd19cf0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Gdx`!Ln`LHy>*)RkbwZJL;JLh zW-AS?+9f?#MAm6U{Mpl;V-$R#``gKnsj(n~4jlAZ%Xs_i9^004*~NKpttEFVHkPaE zT;3C>WYivF&D(yxT66iC57!>n2gYSF3Rc-W>Tl&S`11j%6$orO?{81H?JVy z{LQ3~8A%dl?V|Ii8QszUaK>Ey(R!{0JH#0pzTaiI?_nrp Date: Sat, 2 Jan 2021 07:05:32 +0000 Subject: [PATCH 019/166] Fixes remaining renamed chems (#2889) --- .../Components/Atmos/FlammableComponent.cs | 4 ++-- .../Components/Chemistry/RehydratableComponent.cs | 4 ++-- .../Components/Nutrition/CreamPiedComponent.cs | 4 ++-- .../Specific/Dispensers/soda_dispenser.yml | 2 +- .../Storage/StorageTanks/water_tank.yml | 2 +- .../Entities/Objects/Consumable/drinks_bottles.yml | 3 +-- .../Entities/Objects/Misc/fire_extinguisher.yml | 2 +- .../Prototypes/Entities/Objects/Specific/janitor.yml | 2 +- .../Prototypes/Recipes/Cooking/meal_recipes.yml | 12 ++++++------ 9 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs b/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs index c3b6f7bbb1..4fdca8dc5f 100644 --- a/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Server.Atmos; using Content.Server.GameObjects.Components.Mobs; @@ -218,7 +218,7 @@ namespace Content.Server.GameObjects.Components.Atmos { switch (reagent.ID) { - case "chem.H2O": + case "chem.Water": Extinguish(); AdjustFireStacks(-1.5f); return ReagentUnit.Zero; diff --git a/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs b/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs index 2dff3ccaf9..a6194d8efb 100644 --- a/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.GameObjects.EntitySystems; using Content.Server.Utility; using Content.Shared.Chemistry; @@ -31,7 +31,7 @@ namespace Content.Server.GameObjects.Components.Chemistry public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(ref _catalystPrototype, "catalyst", "chem.H2O"); + serializer.DataField(ref _catalystPrototype, "catalyst", "chem.Water"); serializer.DataField(ref _targetPrototype, "target", null); } diff --git a/Content.Server/GameObjects/Components/Nutrition/CreamPiedComponent.cs b/Content.Server/GameObjects/Components/Nutrition/CreamPiedComponent.cs index 1e1188efa9..4261cdbdb5 100644 --- a/Content.Server/GameObjects/Components/Nutrition/CreamPiedComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/CreamPiedComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.GameObjects.Components.Mobs; +using Content.Server.GameObjects.Components.Mobs; using Content.Server.Utility; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Nutrition; @@ -42,7 +42,7 @@ namespace Content.Server.GameObjects.Components.Nutrition switch (reagent.ID) { case "chem.SpaceCleaner": - case "chem.H2O": + case "chem.Water": Wash(); break; } diff --git a/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/soda_dispenser.yml b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/soda_dispenser.yml index a47eccd325..8e08cedbe8 100644 --- a/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/soda_dispenser.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/soda_dispenser.yml @@ -17,5 +17,5 @@ - chem.Coffee - chem.Tea - chem.Ice - - chem.H2O + - chem.Water - chem.Cream diff --git a/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/water_tank.yml b/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/water_tank.yml index b02d01d163..0ee94cbd70 100644 --- a/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/water_tank.yml +++ b/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/water_tank.yml @@ -19,5 +19,5 @@ - type: SolutionContainer contents: reagents: - - ReagentId: chem.H2O + - ReagentId: chem.Water Quantity: 1500 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml index 42bf6ba0aa..82619079a7 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml @@ -111,7 +111,7 @@ maxVol: 80 contents: reagents: - - ReagentId: chem.H2O + - ReagentId: chem.Water Quantity: 80 - type: Sprite sprite: Objects/Consumable/Drinks/kahluabottle.rsi @@ -218,4 +218,3 @@ Quantity: 80 - type: Sprite sprite: Objects/Consumable/Drinks/winebottle.rsi - diff --git a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml index ed5fc0166b..6eb6422959 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml @@ -17,7 +17,7 @@ caps: AddTo, RemoveFrom, NoExamine contents: reagents: - - ReagentId: chem.H2O + - ReagentId: chem.Water Quantity: 100 - type: ItemCooldown - type: Spray diff --git a/Resources/Prototypes/Entities/Objects/Specific/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/janitor.yml index c394e7e57c..2792c4b479 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/janitor.yml @@ -222,7 +222,7 @@ caps: AddTo, RemoveFrom contents: reagents: - - ReagentId: chem.H2O + - ReagentId: chem.Water Quantity: 100 - type: entity diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index 199de7734d..6274f75836 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -186,7 +186,7 @@ result: FoodSpaghettiBoiled time: 5 reagents: - chem.H2O: 5 + chem.Water: 5 solids: FoodSpaghetti: 1 @@ -196,7 +196,7 @@ result: FoodPastaTomato time: 10 reagents: - chem.H2O: 5 + chem.Water: 5 solids: FoodSpaghetti: 1 FoodTomato: 2 @@ -207,7 +207,7 @@ result: FoodMeatballSpaghetti time: 10 reagents: - chem.H2O: 5 + chem.Water: 5 solids: FoodSpaghetti: 1 FoodMeatball: 2 @@ -218,7 +218,7 @@ result: FoodCrabSpaghetti time: 10 reagents: - chem.H2O: 5 + chem.Water: 5 solids: FoodCrabMeat: 2 @@ -294,7 +294,7 @@ result: FoodMeatballSoup time: 10 reagents: - chem.H2O: 10 + chem.Water: 10 solids: FoodMeatball: 1 FoodCarrot: 1 @@ -306,7 +306,7 @@ result: FoodNettleSoup time: 10 reagents: - chem.H2O: 10 + chem.Water: 10 solids: FoodNettle: 1 FoodEgg: 1 From cc4669244da01d18cf4833ae6df65618353b9f13 Mon Sep 17 00:00:00 2001 From: Daniel Castro Razo Date: Sat, 2 Jan 2021 12:03:10 -0600 Subject: [PATCH 020/166] Fixes to explosionhelper (#2819) * Revert "Make handheld explosives affect tiles (#2806)" This reverts commit 005e142949e4c209c2e1ebbf27f0c674ed9b31c8. * Fixes tiles being destroyed under walls by an explosion * Extra imports removed * Handles explosion in space and different grids This handle explosions across different grids, and tiles are still protected if there is an entity airtight and currently blocking air on top of them that survived the explosion. * Some bug fixes - The way tiles were being protected was silly. - Big explosions cause a lot of objects to trigger multiple events and at the same time they are destroyed. - Explosions spawning inside containers like closets work now. * Range bug fixes * Explosive The explosion works even if the entity exploding is inside multiple 'layers' of containers like. bomb -> survival box -> tool box -> closet * Explosions are different now Explosion can't jump over walls now. Explosions work like rays now, if an explosion breaks a wall it can scatter inside the room. If entities are behind impassable entities that survive the blast they are left unscathed. * Little fix * Remove the extra lookup of tiles * Another small change * Restore the second lookup I thought this was extra, but this protects the tile under it if there is an Impassable entity on top. None wants anchored girders on top of lattice/space * Changing order of conditions IsBlockedTurf is cheaper to run than InRangeUnobstructed. * Yep --- Content.Server/Explosions/ExplosionHelper.cs | 336 +++++++++++++----- .../Explosion/ExplosiveComponent.cs | 23 +- .../Items/Storage/EntityStorageComponent.cs | 5 +- .../Projectiles/ThrownItemComponent.cs | 2 +- Content.Server/Throw/ThrowHelper.cs | 15 +- Content.Shared/Physics/CollisionGroup.cs | 3 +- .../Entities/Constructible/Walls/girder.yml | 1 + 7 files changed, 281 insertions(+), 104 deletions(-) diff --git a/Content.Server/Explosions/ExplosionHelper.cs b/Content.Server/Explosions/ExplosionHelper.cs index fd7abd3a90..5479db7b3a 100644 --- a/Content.Server/Explosions/ExplosionHelper.cs +++ b/Content.Server/Explosions/ExplosionHelper.cs @@ -1,20 +1,33 @@ -using System; +using System; +using System.Collections.Generic; using System.Linq; +using Content.Server.GameObjects.Components.Atmos; +using Content.Server.GameObjects.Components.Explosion; +using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Mobs; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Maps; +using Content.Shared.Physics; +using Content.Shared.Utility; +using Microsoft.Extensions.Logging; using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Player; +using Robust.Shared.Containers; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.EntitySystemMessages; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Map; using Robust.Shared.Interfaces.Random; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; +using Robust.Shared.Log; using Robust.Shared.Map; using Robust.Shared.Maths; +using Robust.Shared.Physics; using Robust.Shared.Random; +using Robust.Shared.Timing; namespace Content.Server.Explosions { @@ -26,129 +39,211 @@ namespace Content.Server.Explosions /// private static readonly Vector2 EpicenterDistance = (0.1f, 0.1f); - public static void SpawnExplosion(this EntityCoordinates coords, int devastationRange, int heavyImpactRange, int lightImpactRange, int flashRange) + /// + /// Chance of a tile breaking if the severity is Light and Heavy + /// + private static readonly float LightBreakChance = 0.3f; + private static readonly float HeavyBreakChance = 0.8f; + + private static bool IgnoreExplosivePassable(IEntity e) => (e.GetComponent().CollisionLayer & (int) CollisionGroup.ExplosivePassable) != 0; + + private static ExplosionSeverity CalculateSeverity(float distance, float devastationRange, float heaveyRange) { - var tileDefinitionManager = IoCManager.Resolve(); + if (distance < devastationRange) + { + return ExplosionSeverity.Destruction; + } + else if (distance < heaveyRange) + { + return ExplosionSeverity.Heavy; + } + else + { + return ExplosionSeverity.Light; + } + } + + /// + /// Damage entities inside the range. The damage depends on a discrete + /// damage bracket [light, heavy, devastation] and the distance from the epicenter + /// + /// + /// A dictionary of coordinates relative to the parents of every grid of entities that survived the explosion, + /// have an airtight component and are currently blocking air. Like a wall. + /// + private static void DamageEntitiesInRange(EntityCoordinates epicenter, Box2 boundingBox, + float devastationRange, + float heaveyRange, + float maxRange, + MapId mapId) + { + var entityManager = IoCManager.Resolve(); var serverEntityManager = IoCManager.Resolve(); var entitySystemManager = IoCManager.Resolve(); - var mapManager = IoCManager.Resolve(); - var robustRandom = IoCManager.Resolve(); - var entityManager = IoCManager.Resolve(); - var maxRange = MathHelper.Max(devastationRange, heavyImpactRange, lightImpactRange, 0f); - //Entity damage calculation - var entitiesAll = serverEntityManager.GetEntitiesInRange(coords, maxRange).ToList(); + var exAct = entitySystemManager.GetEntitySystem(); - foreach (var entity in entitiesAll) + var entitiesInRange = serverEntityManager.GetEntitiesInRange(mapId, boundingBox, 0).ToList(); + + var impassableEntities = new List>(); + var nonImpassableEntities = new List>(); + + // The entities are paired with their distance to the epicenter + // and splitted into two lists based on if they are Impassable or not + foreach (var entity in entitiesInRange) { - if (entity.Deleted) - continue; - if (!entity.Transform.IsMapTransform) - continue; - - if (!entity.Transform.Coordinates.TryDistance(entityManager, coords, out var distance)) + if (entity.Deleted || !entity.Transform.IsMapTransform) { continue; } - ExplosionSeverity severity; - if (distance < devastationRange) + if (!entity.Transform.Coordinates.TryDistance(entityManager, epicenter, out var distance) || distance > maxRange) { - severity = ExplosionSeverity.Destruction; + continue; } - else if (distance < heavyImpactRange) + + if (!entity.TryGetComponent(out IPhysicsComponent body) || body.PhysicsShapes.Count < 1) { - severity = ExplosionSeverity.Heavy; + continue; } - else if (distance < lightImpactRange) + + if ((body.CollisionLayer & (int) CollisionGroup.Impassable) != 0) { - severity = ExplosionSeverity.Light; + impassableEntities.Add(Tuple.Create(entity, distance)); } else + { + nonImpassableEntities.Add(Tuple.Create(entity, distance)); + } + } + + // The Impassable entities are sorted in descending order + // Entities closer to the epicenter are first + impassableEntities.Sort((x, y) => x.Item2.CompareTo(y.Item2)); + + // Impassable entities are handled first. If they are damaged enough, they are destroyed and they may + // be able to spawn a new entity. I.e Wall -> Girder. + // Girder has a layer ExplosivePassable, and the predicate make it so the entities with this layer are ignored + var epicenterMapPos = epicenter.ToMap(entityManager); + foreach (var (entity, distance) in impassableEntities) + { + if (!entity.InRangeUnobstructed(epicenterMapPos, maxRange, ignoreInsideBlocker: true, predicate: IgnoreExplosivePassable)) { continue; } - var exAct = entitySystemManager.GetEntitySystem(); - //exAct.HandleExplosion(Owner, entity, severity); - exAct.HandleExplosion(coords, entity, severity); + exAct.HandleExplosion(epicenter, entity, CalculateSeverity(distance, devastationRange, heaveyRange)); } - //Tile damage calculation mockup - //TODO: make it into some sort of actual damage component or whatever the boys think is appropriate - if (mapManager.TryGetGrid(coords.GetGridId(entityManager), out var mapGrid)) + // Impassable entities were handled first so NonImpassable entities have a bigger chance to get hit. As now + // there are probably more ExplosivePassable entities around + foreach (var (entity, distance) in nonImpassableEntities) { - var circle = new Circle(coords.ToMapPos(entityManager), maxRange); - var tiles = mapGrid?.GetTilesIntersecting(circle); - foreach (var tile in tiles) + if (!entity.InRangeUnobstructed(epicenterMapPos, maxRange, ignoreInsideBlocker: true, predicate: IgnoreExplosivePassable)) { - var tileLoc = mapGrid.GridTileToLocal(tile.GridIndices); - var tileDef = (ContentTileDefinition) tileDefinitionManager[tile.Tile.TypeId]; - var baseTurfs = tileDef.BaseTurfs; - if (baseTurfs.Count == 0) - { - continue; - } + continue; + } + exAct.HandleExplosion(epicenter, entity, CalculateSeverity(distance, devastationRange, heaveyRange)); + } + } - if (!tileLoc.TryDistance(entityManager, coords, out var distance)) - { - continue; - } + /// + /// Damage tiles inside the range. The type of tile can change depending on a discrete + /// damage bracket [light, heavy, devastation], the distance from the epicenter and + /// a probabilty bracket [, , 1.0]. + /// + /// + private static void DamageTilesInRange(EntityCoordinates epicenter, + GridId gridId, + Box2 boundingBox, + float devastationRange, + float heaveyRange, + float maxRange) + { + var mapManager = IoCManager.Resolve(); + if (!mapManager.TryGetGrid(gridId, out var mapGrid)) + { + return; + } - var zeroTile = new Tile(tileDefinitionManager[baseTurfs[0]].TileId); - var previousTile = new Tile(tileDefinitionManager[baseTurfs[^1]].TileId); + var entityManager = IoCManager.Resolve(); + if (!entityManager.TryGetEntity(mapGrid.GridEntityId, out var grid)) + { + return; + } - switch (distance) - { - case var d when d < devastationRange: - mapGrid.SetTile(tileLoc, zeroTile); - break; - case var d when d < heavyImpactRange - && !previousTile.IsEmpty - && robustRandom.Prob(0.8f): + var robustRandom = IoCManager.Resolve(); + var tileDefinitionManager = IoCManager.Resolve(); + + var tilesInGridAndCircle = mapGrid.GetTilesIntersecting(boundingBox); + + var epicenterMapPos = epicenter.ToMap(entityManager); + foreach (var tile in tilesInGridAndCircle) + { + var tileLoc = mapGrid.GridTileToLocal(tile.GridIndices); + if (!tileLoc.TryDistance(entityManager, epicenter, out var distance) || distance > maxRange) + { + continue; + } + + if (tile.IsBlockedTurf(false)) + { + continue; + } + + if (!tileLoc.ToMap(entityManager).InRangeUnobstructed(epicenterMapPos, maxRange, ignoreInsideBlocker: false, predicate: IgnoreExplosivePassable)) + { + continue; + } + + var tileDef = (ContentTileDefinition) tileDefinitionManager[tile.Tile.TypeId]; + var baseTurfs = tileDef.BaseTurfs; + if (baseTurfs.Count == 0) + { + continue; + } + + var zeroTile = new Tile(tileDefinitionManager[baseTurfs[0]].TileId); + var previousTile = new Tile(tileDefinitionManager[baseTurfs[^1]].TileId); + + var severity = CalculateSeverity(distance, devastationRange, heaveyRange); + + switch (severity) + { + case ExplosionSeverity.Light: + if (!previousTile.IsEmpty && robustRandom.Prob(LightBreakChance)) + { mapGrid.SetTile(tileLoc, previousTile); - break; - case var d when d < lightImpactRange - && !previousTile.IsEmpty - && robustRandom.Prob(0.5f): + } + break; + case ExplosionSeverity.Heavy: + if (!previousTile.IsEmpty && robustRandom.Prob(HeavyBreakChance)) + { mapGrid.SetTile(tileLoc, previousTile); - break; - } + } + break; + case ExplosionSeverity.Destruction: + mapGrid.SetTile(tileLoc, zeroTile); + break; } } + } - //Effects and sounds - var time = IoCManager.Resolve().CurTime; - var message = new EffectSystemMessage - { - EffectSprite = "Effects/explosion.rsi", - RsiState = "explosionfast", - Born = time, - DeathTime = time + TimeSpan.FromSeconds(5), - Size = new Vector2(flashRange / 2, flashRange / 2), - Coordinates = coords, - //Rotated from east facing - Rotation = 0f, - ColorDelta = new Vector4(0, 0, 0, -1500f), - Color = Vector4.Multiply(new Vector4(255, 255, 255, 750), 0.5f), - Shaded = false - }; - entitySystemManager.GetEntitySystem().CreateParticle(message); - entitySystemManager.GetEntitySystem().PlayAtCoords("/Audio/Effects/explosion.ogg", coords); - - // Knock back cameras of all players in the area. - + private static void CameraShakeInRange(EntityCoordinates epicenter, float maxRange) + { var playerManager = IoCManager.Resolve(); - foreach (var player in playerManager.GetAllPlayers()) + var players = playerManager.GetPlayersInRange(epicenter, (int) Math.Ceiling(maxRange)); + foreach (var player in players) { - if (player.AttachedEntity == null - || player.AttachedEntity.Transform.MapID != mapGrid.ParentMapId - || !player.AttachedEntity.TryGetComponent(out CameraRecoilComponent recoil)) + if (player.AttachedEntity == null || !player.AttachedEntity.TryGetComponent(out CameraRecoilComponent recoil)) { continue; } + var entityManager = IoCManager.Resolve(); + var playerPos = player.AttachedEntity.Transform.WorldPosition; - var delta = coords.ToMapPos(entityManager) - playerPos; + var delta = epicenter.ToMapPos(entityManager) - playerPos; + //Change if zero. Will result in a NaN later breaking camera shake if not changed if (delta.EqualsApprox((0.0f, 0.0f))) delta = EpicenterDistance; @@ -163,10 +258,75 @@ namespace Content.Server.Explosions } } - public static void SpawnExplosion(this IEntity entity, int devastationRange, int heavyImpactRange, - int lightImpactRange, int flashRange) + private static void FlashInRange(EntityCoordinates epicenter, float flashrange) { - entity.Transform.Coordinates.SpawnExplosion(devastationRange, heavyImpactRange, lightImpactRange, flashRange); + if (flashrange > 0) + { + var entitySystemManager = IoCManager.Resolve(); + var time = IoCManager.Resolve().CurTime; + var message = new EffectSystemMessage + { + EffectSprite = "Effects/explosion.rsi", + RsiState = "explosionfast", + Born = time, + DeathTime = time + TimeSpan.FromSeconds(5), + Size = new Vector2(flashrange / 2, flashrange / 2), + Coordinates = epicenter, + Rotation = 0f, + ColorDelta = new Vector4(0, 0, 0, -1500f), + Color = Vector4.Multiply(new Vector4(255, 255, 255, 750), 0.5f), + Shaded = false + }; + entitySystemManager.GetEntitySystem().CreateParticle(message); + } + } + + private static void Detonate(IEntity source, int devastationRange, int heavyImpactRange, int lightImpactRange, int flashRange) + { + var mapId = source.Transform.MapID; + if (mapId == MapId.Nullspace) + { + return; + } + + var maxRange = MathHelper.Max(devastationRange, heavyImpactRange, lightImpactRange, 0); + + while(source.TryGetContainer(out var cont)) + { + source = cont.Owner; + } + var epicenter = source.Transform.Coordinates; + + var entityManager = IoCManager.Resolve(); + var mapManager = IoCManager.Resolve(); + + var epicenterMapPos = epicenter.ToMapPos(entityManager); + var boundingBox = new Box2(epicenterMapPos - new Vector2(maxRange, maxRange), epicenterMapPos + new Vector2(maxRange, maxRange)); + + DamageEntitiesInRange(epicenter, boundingBox, devastationRange, heavyImpactRange, maxRange, mapId); + + var mapGridsNear = mapManager.FindGridsIntersecting(mapId, boundingBox); + + foreach (var gridId in mapGridsNear) + { + DamageTilesInRange(epicenter, gridId.Index, boundingBox, devastationRange, heavyImpactRange, maxRange); + } + + CameraShakeInRange(epicenter, maxRange); + FlashInRange(epicenter, flashRange); + } + + public static void SpawnExplosion(this IEntity entity, int devastationRange = 0, int heavyImpactRange = 0, int lightImpactRange = 0, int flashRange = 0) + { + // If you want to directly set off the explosive + if (!entity.Deleted && entity.TryGetComponent(out ExplosiveComponent explosive) && !explosive.Exploding) + { + explosive.Explosion(); + } + else + { + Detonate(entity, devastationRange, heavyImpactRange, lightImpactRange, flashRange); + } } } } diff --git a/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs b/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs index 69d0c14772..8b8ab5227a 100644 --- a/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs +++ b/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Explosions; +using Content.Server.Explosions; using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems; using Robust.Shared.GameObjects; @@ -16,7 +16,7 @@ namespace Content.Server.GameObjects.Components.Explosion public int LightImpactRange = 0; public int FlashRange = 0; - private bool _beingExploded = false; + public bool Exploding { get; private set; } = false; public override void ExposeData(ObjectSerializer serializer) { @@ -30,14 +30,17 @@ namespace Content.Server.GameObjects.Components.Explosion public bool Explosion() { - //Prevent adjacent explosives from infinitely blowing each other up. - if (_beingExploded) return true; - _beingExploded = true; - - Owner.SpawnExplosion(DevastationRange, HeavyImpactRange, LightImpactRange, FlashRange); - - Owner.Delete(); - return true; + if (Exploding) + { + return false; + } + else + { + Exploding = true; + Owner.SpawnExplosion(DevastationRange, HeavyImpactRange, LightImpactRange, FlashRange); + Owner.Delete(); + return true; + } } bool ITimerTrigger.Trigger(TimerTriggerEventArgs eventArgs) diff --git a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs index 632bfd4402..7d1bc4a495 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Linq; using System.Threading; @@ -470,7 +470,8 @@ namespace Content.Server.GameObjects.Components.Items.Storage return; } - foreach (var entity in Contents.ContainedEntities) + var containedEntities = Contents.ContainedEntities.ToList(); + foreach (var entity in containedEntities) { var exActs = entity.GetAllComponents().ToArray(); foreach (var exAct in exActs) diff --git a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs index 8caf6ca3c6..089a422711 100644 --- a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs +++ b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs @@ -34,7 +34,7 @@ namespace Content.Server.GameObjects.Components.Projectiles void ICollideBehavior.CollideWith(IEntity entity) { - if (!_shouldCollide) return; + if (!_shouldCollide || entity.Deleted) return; if (entity.TryGetComponent(out PhysicsComponent collid)) { if (!collid.Hard) // ignore non hard diff --git a/Content.Server/Throw/ThrowHelper.cs b/Content.Server/Throw/ThrowHelper.cs index 4d760383f7..a0ab566592 100644 --- a/Content.Server/Throw/ThrowHelper.cs +++ b/Content.Server/Throw/ThrowHelper.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Server.GameObjects.Components.Projectiles; using Content.Shared.GameObjects.Components.Movement; using Content.Shared.GameObjects.EntitySystems; @@ -43,10 +43,21 @@ namespace Content.Server.Throw /// public static void Throw(this IEntity thrownEnt, float throwForce, EntityCoordinates targetLoc, EntityCoordinates sourceLoc, bool spread = false, IEntity throwSourceEnt = null) { + if (thrownEnt.Deleted) + { + return; + } + if (!thrownEnt.TryGetComponent(out IPhysicsComponent colComp)) return; var entityManager = IoCManager.Resolve(); + var direction_vector = targetLoc.ToMapPos(entityManager) - sourceLoc.ToMapPos(entityManager); + + if (direction_vector.Length == 0) + { + return; + } colComp.CanCollide = true; // I can now collide with player, so that i can do damage. @@ -61,8 +72,8 @@ namespace Content.Server.Throw colComp.PhysicsShapes[0].CollisionMask |= (int) CollisionGroup.ThrownItem; colComp.Status = BodyStatus.InAir; } - var angle = new Angle(targetLoc.ToMapPos(entityManager) - sourceLoc.ToMapPos(entityManager)); + var angle = new Angle(direction_vector); if (spread) { var spreadRandom = IoCManager.Resolve(); diff --git a/Content.Shared/Physics/CollisionGroup.cs b/Content.Shared/Physics/CollisionGroup.cs index c5d2448076..5b676e8432 100644 --- a/Content.Shared/Physics/CollisionGroup.cs +++ b/Content.Shared/Physics/CollisionGroup.cs @@ -1,4 +1,4 @@ -using System; +using System; using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Serialization; @@ -23,6 +23,7 @@ namespace Content.Shared.Physics GhostImpassable = 1 << 6, // 64 Things impassible by ghosts/observers, ie blessed tiles or forcefields Underplating = 1 << 7, // 128 Things that are under plating Passable = 1 << 8, // 256 Things that are passable + ExplosivePassable = 1 << 9, // 512 Things that let the pressure of a explosion through MapGrid = MapGridHelpers.CollisionGroup, // Map grids, like shuttles. This is the actual grid itself, not the walls or other entities connected to the grid. MobMask = Impassable | MobImpassable | VaultImpassable | SmallImpassable, diff --git a/Resources/Prototypes/Entities/Constructible/Walls/girder.yml b/Resources/Prototypes/Entities/Constructible/Walls/girder.yml index 2bdd1fbaee..aafac7939d 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/girder.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/girder.yml @@ -24,6 +24,7 @@ - MobImpassable - VaultImpassable - SmallImpassable + - ExplosivePassable - type: Pullable - type: Damageable resistances: metallicResistances From 85add420b02c63f736ab0959ac15ff38bf2a360c Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Sat, 2 Jan 2021 20:06:00 +0100 Subject: [PATCH 021/166] Destructible spawning fix redux (#2892) * Fix SpawnEntitiesBehavior crash and add test * Fix comparer, add duplicated behavior Turns out this isn't Java * Threshold behaviors are now "linearly" executed * Fixes YAML threshold behaviors to be linear Co-authored-by: DrSmugleaf --- .../Tests/Destructible/DestructibleTests.cs | 135 ++++++++++++++++-- .../Thresholds/Behavior/IThresholdBehavior.cs | 8 ++ .../Destructible/Thresholds/Threshold.cs | 18 ++- .../Constructible/Furniture/bookshelf.yml | 5 +- .../Constructible/Furniture/storage.yml | 8 +- .../Constructible/Furniture/tables.yml | 40 +++--- .../Entities/Constructible/Power/wires.yml | 12 +- .../Constructible/Specific/chem_master.yml | 8 +- .../Entities/Constructible/Walls/girder.yml | 4 +- .../Entities/Constructible/Walls/walls.yml | 64 ++++----- .../Entities/Constructible/Walls/windows.yml | 12 +- .../Entities/Objects/Consumable/drinks.yml | 4 +- .../Entities/Objects/Misc/fluff_lights.yml | 8 +- 13 files changed, 223 insertions(+), 103 deletions(-) diff --git a/Content.IntegrationTests/Tests/Destructible/DestructibleTests.cs b/Content.IntegrationTests/Tests/Destructible/DestructibleTests.cs index eb8cc0d241..31c5e1f470 100644 --- a/Content.IntegrationTests/Tests/Destructible/DestructibleTests.cs +++ b/Content.IntegrationTests/Tests/Destructible/DestructibleTests.cs @@ -20,9 +20,15 @@ namespace Content.IntegrationTests.Tests.Destructible [TestOf(typeof(Threshold))] public class DestructibleTests : ContentIntegrationTest { + private static readonly string SpawnedEntityId = "DestructibleTestsSpawnedEntity"; private static readonly string DestructibleEntityId = "DestructibleTestsDestructibleEntity"; + private static readonly string DestructibleDestructionEntityId = "DestructibleTestsDestructibleDestructionEntity"; private static readonly string Prototypes = $@" +- type: entity + id: {SpawnedEntityId} + name: {SpawnedEntityId} + - type: entity id: {DestructibleEntityId} name: {DestructibleEntityId} @@ -35,15 +41,35 @@ namespace Content.IntegrationTests.Tests.Destructible 50: triggersOnce: false behaviors: - - !type:DoActsBehavior - acts: [""Breakage""] - !type:PlaySoundBehavior sound: /Audio/Effects/woodhit.ogg - !type:SpawnEntitiesBehavior spawn: - WoodPlank: + {SpawnedEntityId}: min: 1 max: 1 + - !type:DoActsBehavior + acts: [""Breakage""] + - type: TestThresholdListener + +- type: entity + id: {DestructibleDestructionEntityId} + name: {DestructibleDestructionEntityId} + components: + - type: Damageable + - type: Destructible + thresholds: + 50: + behaviors: + - !type:PlaySoundBehavior + sound: /Audio/Effects/woodhit.ogg + - !type:SpawnEntitiesBehavior + spawn: + {SpawnedEntityId}: + min: 1 + max: 1 + - !type:DoActsBehavior # This must come last as it destroys the entity. + acts: [""Destruction""] - type: TestThresholdListener "; @@ -147,15 +173,15 @@ namespace Content.IntegrationTests.Tests.Destructible // Check that it matches the YAML prototype Assert.That(threshold.Behaviors, Has.Count.EqualTo(3)); - var actsThreshold = (DoActsBehavior) threshold.Behaviors[0]; - var soundThreshold = (PlaySoundBehavior) threshold.Behaviors[1]; - var spawnThreshold = (SpawnEntitiesBehavior) threshold.Behaviors[2]; + var soundThreshold = (PlaySoundBehavior) threshold.Behaviors[0]; + var spawnThreshold = (SpawnEntitiesBehavior) threshold.Behaviors[1]; + var actsThreshold = (DoActsBehavior) threshold.Behaviors[2]; Assert.That(actsThreshold.Acts, Is.EqualTo(ThresholdActs.Breakage)); Assert.That(soundThreshold.Sound, Is.EqualTo("/Audio/Effects/woodhit.ogg")); Assert.That(spawnThreshold.Spawn, Is.Not.Null); Assert.That(spawnThreshold.Spawn.Count, Is.EqualTo(1)); - Assert.That(spawnThreshold.Spawn.Single().Key, Is.EqualTo("WoodPlank")); + Assert.That(spawnThreshold.Spawn.Single().Key, Is.EqualTo(SpawnedEntityId)); Assert.That(spawnThreshold.Spawn.Single().Value.Min, Is.EqualTo(1)); Assert.That(spawnThreshold.Spawn.Single().Value.Max, Is.EqualTo(1)); Assert.That(threshold.Triggered, Is.True); @@ -202,16 +228,16 @@ namespace Content.IntegrationTests.Tests.Destructible // Check that it matches the YAML prototype Assert.That(threshold.Behaviors, Has.Count.EqualTo(3)); - actsThreshold = (DoActsBehavior) threshold.Behaviors[0]; - soundThreshold = (PlaySoundBehavior) threshold.Behaviors[1]; - spawnThreshold = (SpawnEntitiesBehavior) threshold.Behaviors[2]; + soundThreshold = (PlaySoundBehavior) threshold.Behaviors[0]; + spawnThreshold = (SpawnEntitiesBehavior) threshold.Behaviors[1]; + actsThreshold = (DoActsBehavior) threshold.Behaviors[2]; // Check that it matches the YAML prototype Assert.That(actsThreshold.Acts, Is.EqualTo(ThresholdActs.Breakage)); Assert.That(soundThreshold.Sound, Is.EqualTo("/Audio/Effects/woodhit.ogg")); Assert.That(spawnThreshold.Spawn, Is.Not.Null); Assert.That(spawnThreshold.Spawn.Count, Is.EqualTo(1)); - Assert.That(spawnThreshold.Spawn.Single().Key, Is.EqualTo("WoodPlank")); + Assert.That(spawnThreshold.Spawn.Single().Key, Is.EqualTo(SpawnedEntityId)); Assert.That(spawnThreshold.Spawn.Single().Value.Min, Is.EqualTo(1)); Assert.That(spawnThreshold.Spawn.Single().Value.Max, Is.EqualTo(1)); Assert.That(threshold.Triggered, Is.True); @@ -254,16 +280,16 @@ namespace Content.IntegrationTests.Tests.Destructible Assert.That(threshold.Behaviors, Has.Count.EqualTo(3)); - actsThreshold = (DoActsBehavior) threshold.Behaviors[0]; - soundThreshold = (PlaySoundBehavior) threshold.Behaviors[1]; - spawnThreshold = (SpawnEntitiesBehavior) threshold.Behaviors[2]; + soundThreshold = (PlaySoundBehavior) threshold.Behaviors[0]; + spawnThreshold = (SpawnEntitiesBehavior) threshold.Behaviors[1]; + actsThreshold = (DoActsBehavior) threshold.Behaviors[2]; // Check that it matches the YAML prototype Assert.That(actsThreshold.Acts, Is.EqualTo(ThresholdActs.Breakage)); Assert.That(soundThreshold.Sound, Is.EqualTo("/Audio/Effects/woodhit.ogg")); Assert.That(spawnThreshold.Spawn, Is.Not.Null); Assert.That(spawnThreshold.Spawn.Count, Is.EqualTo(1)); - Assert.That(spawnThreshold.Spawn.Single().Key, Is.EqualTo("WoodPlank")); + Assert.That(spawnThreshold.Spawn.Single().Key, Is.EqualTo(SpawnedEntityId)); Assert.That(spawnThreshold.Spawn.Single().Value.Min, Is.EqualTo(1)); Assert.That(spawnThreshold.Spawn.Single().Value.Max, Is.EqualTo(1)); Assert.That(threshold.Triggered, Is.True); @@ -305,5 +331,84 @@ namespace Content.IntegrationTests.Tests.Destructible Assert.That(sThresholdListenerComponent.ThresholdsReached, Is.Empty); }); } + + [Test] + public async Task DestructibleDestructionTest() + { + var server = StartServerDummyTicker(new ServerContentIntegrationOption + { + ExtraPrototypes = Prototypes, + ContentBeforeIoC = () => + { + IoCManager.Resolve().Register(); + } + }); + + await server.WaitIdleAsync(); + + var sEntityManager = server.ResolveDependency(); + var sMapManager = server.ResolveDependency(); + + IEntity sDestructibleEntity = null; + IDamageableComponent sDamageableComponent = null; + DestructibleComponent sDestructibleComponent = null; + TestThresholdListenerComponent sThresholdListenerComponent = null; + + await server.WaitPost(() => + { + var mapId = new MapId(1); + var coordinates = new MapCoordinates(0, 0, mapId); + sMapManager.CreateMap(mapId); + + sDestructibleEntity = sEntityManager.SpawnEntity(DestructibleDestructionEntityId, coordinates); + sDamageableComponent = sDestructibleEntity.GetComponent(); + sDestructibleComponent = sDestructibleEntity.GetComponent(); + sThresholdListenerComponent = sDestructibleEntity.GetComponent(); + }); + + await server.WaitAssertion(() => + { + var coordinates = sDestructibleEntity.Transform.Coordinates; + + Assert.DoesNotThrow(() => + { + Assert.True(sDamageableComponent.ChangeDamage(DamageClass.Brute, 50, true)); + }); + + Assert.That(sThresholdListenerComponent.ThresholdsReached.Count, Is.EqualTo(1)); + + var threshold = sThresholdListenerComponent.ThresholdsReached[0].Threshold; + + Assert.That(threshold.Triggered, Is.True); + Assert.That(threshold.Behaviors.Count, Is.EqualTo(3)); + + var spawnEntitiesBehavior = (SpawnEntitiesBehavior) threshold.Behaviors.Single(b => b is SpawnEntitiesBehavior); + + Assert.That(spawnEntitiesBehavior.Spawn.Count, Is.EqualTo(1)); + Assert.That(spawnEntitiesBehavior.Spawn.Keys.Single(), Is.EqualTo(SpawnedEntityId)); + Assert.That(spawnEntitiesBehavior.Spawn.Values.Single(), Is.EqualTo(new MinMax {Min = 1, Max = 1})); + + var entitiesInRange = sEntityManager.GetEntitiesInRange(coordinates, 2); + var found = false; + + foreach (var entity in entitiesInRange) + { + if (entity.Prototype == null) + { + continue; + } + + if (entity.Prototype.Name != SpawnedEntityId) + { + continue; + } + + found = true; + break; + } + + Assert.That(found, Is.True); + }); + } } } diff --git a/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/IThresholdBehavior.cs b/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/IThresholdBehavior.cs index d857d45bbd..d4a6e86e56 100644 --- a/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/IThresholdBehavior.cs +++ b/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/IThresholdBehavior.cs @@ -6,6 +6,14 @@ namespace Content.Server.GameObjects.Components.Destructible.Thresholds.Behavior { public interface IThresholdBehavior : IExposeData { + /// + /// Triggers this behavior. + /// + /// The entity that owns this behavior. + /// + /// An instance of to pull dependencies + /// and other systems from. + /// void Trigger(IEntity owner, DestructibleSystem system); } } diff --git a/Content.Server/GameObjects/Components/Destructible/Thresholds/Threshold.cs b/Content.Server/GameObjects/Components/Destructible/Thresholds/Threshold.cs index 72bce9159e..e0e402f5df 100644 --- a/Content.Server/GameObjects/Components/Destructible/Thresholds/Threshold.cs +++ b/Content.Server/GameObjects/Components/Destructible/Thresholds/Threshold.cs @@ -11,10 +11,12 @@ namespace Content.Server.GameObjects.Components.Destructible.Thresholds { public class Threshold : IExposeData { + private List _behaviors = new(); + /// /// Whether or not this threshold has already been triggered. /// - [ViewVariables] public bool Triggered; + [ViewVariables] public bool Triggered { get; private set; } /// /// Whether or not this threshold only triggers once. @@ -22,18 +24,18 @@ namespace Content.Server.GameObjects.Components.Destructible.Thresholds /// and then damaged to reach this threshold once again. /// It will not repeatedly trigger as damage rises beyond that. /// - [ViewVariables] public bool TriggersOnce; + [ViewVariables] public bool TriggersOnce { get; set; } /// /// Behaviors to activate once this threshold is triggered. /// - [ViewVariables] public List Behaviors = new(); + [ViewVariables] public IReadOnlyList Behaviors => _behaviors; public void ExposeData(ObjectSerializer serializer) { - serializer.DataField(ref Triggered, "triggered", false); - serializer.DataField(ref TriggersOnce, "triggersOnce", false); - serializer.DataField(ref Behaviors, "behaviors", new List()); + serializer.DataField(this, x => x.Triggered, "triggered", false); + serializer.DataField(this, x => x.TriggersOnce, "triggersOnce", false); + serializer.DataField(ref _behaviors, "behaviors", new List()); } /// @@ -50,6 +52,10 @@ namespace Content.Server.GameObjects.Components.Destructible.Thresholds foreach (var behavior in Behaviors) { + // The owner has been deleted. We stop execution of behaviors here. + if (owner.Deleted) + return; + behavior.Trigger(owner, system); } } diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml b/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml index 713433842b..e151c5db20 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml @@ -25,8 +25,6 @@ thresholds: 30: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/woodhit.ogg - !type:SpawnEntitiesBehavior @@ -34,6 +32,9 @@ WoodPlank: min: 1 max: 1 + - !type:DoActsBehavior + acts: ["Destruction"] + - type: Occluder sizeX: 32 sizeY: 32 diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml b/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml index 2a25501675..6d960128fa 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml @@ -33,8 +33,6 @@ thresholds: 30: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -42,6 +40,8 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity id: Shelf @@ -78,8 +78,6 @@ thresholds: 30: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -87,3 +85,5 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml b/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml index e003cd0813..1b279f4080 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml @@ -41,8 +41,6 @@ thresholds: 15: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -50,6 +48,8 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity id: TableFrame @@ -67,8 +67,6 @@ thresholds: 1: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -76,6 +74,8 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Construction graph: Tables node: TableFrame @@ -96,8 +96,6 @@ thresholds: 1: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -105,6 +103,8 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity id: TableMetal @@ -122,8 +122,6 @@ thresholds: 15: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -131,6 +129,8 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Construction graph: Tables node: MetalTable @@ -151,8 +151,6 @@ thresholds: 75: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -160,6 +158,8 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Construction graph: Tables node: ReinforcedTable @@ -180,8 +180,6 @@ thresholds: 5: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/glass_break2.ogg - !type:SpawnEntitiesBehavior @@ -189,6 +187,8 @@ ShardGlass: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Construction graph: Tables node: GlassTable @@ -209,8 +209,6 @@ thresholds: 20: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/glass_break2.ogg - !type:SpawnEntitiesBehavior @@ -218,6 +216,8 @@ ShardGlass: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Construction graph: Tables node: RGlassTable @@ -238,8 +238,6 @@ thresholds: 15: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/woodhit.ogg - !type:SpawnEntitiesBehavior @@ -247,6 +245,8 @@ WoodPlank: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Construction graph: Tables node: WoodTable @@ -267,8 +267,6 @@ thresholds: 15: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/woodhit.ogg - !type:SpawnEntitiesBehavior @@ -276,6 +274,8 @@ WoodPlank: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Construction graph: Tables node: PokerTable @@ -296,10 +296,10 @@ thresholds: 50: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/picaxe2.ogg + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity id: TableDebug diff --git a/Resources/Prototypes/Entities/Constructible/Power/wires.yml b/Resources/Prototypes/Entities/Constructible/Power/wires.yml index 398712c0e1..eb7698f2e9 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/wires.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/wires.yml @@ -55,13 +55,13 @@ thresholds: 100: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: HVWireStack1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity parent: WireBase @@ -92,13 +92,13 @@ thresholds: 100: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: MVWireStack1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity parent: WireBase @@ -131,10 +131,10 @@ thresholds: 100: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: ApcExtensionCableStack1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] diff --git a/Resources/Prototypes/Entities/Constructible/Specific/chem_master.yml b/Resources/Prototypes/Entities/Constructible/Specific/chem_master.yml index 056608284e..df75f399ba 100644 --- a/Resources/Prototypes/Entities/Constructible/Specific/chem_master.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/chem_master.yml @@ -37,13 +37,13 @@ thresholds: 50: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: chem_master_broken: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: UserInterface interfaces: - key: enum.ChemMasterUiKey.Key @@ -86,13 +86,13 @@ thresholds: 25: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: UserInterface interfaces: - key: enum.ChemMasterUiKey.Key diff --git a/Resources/Prototypes/Entities/Constructible/Walls/girder.yml b/Resources/Prototypes/Entities/Constructible/Walls/girder.yml index aafac7939d..8960980e53 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/girder.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/girder.yml @@ -32,13 +32,13 @@ thresholds: 50: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: SnapGrid offset: Edge placement: diff --git a/Resources/Prototypes/Entities/Constructible/Walls/walls.yml b/Resources/Prototypes/Entities/Constructible/Walls/walls.yml index de9b9a5114..8f8b9cc644 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/walls.yml @@ -50,13 +50,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: brick @@ -76,13 +76,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: clock @@ -102,13 +102,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: clown @@ -129,13 +129,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: cult @@ -155,13 +155,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: debug @@ -181,13 +181,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: diamond @@ -208,13 +208,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: gold @@ -234,13 +234,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: ice @@ -260,13 +260,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: metal @@ -286,13 +286,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: plasma @@ -312,13 +312,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: plastic @@ -371,13 +371,13 @@ thresholds: 1000: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: riveted @@ -397,13 +397,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: sandstone @@ -423,13 +423,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: silver @@ -477,13 +477,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: uranium @@ -503,13 +503,13 @@ thresholds: 300: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:SpawnEntitiesBehavior spawn: Girder: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: IconSmooth key: walls base: wood diff --git a/Resources/Prototypes/Entities/Constructible/Walls/windows.yml b/Resources/Prototypes/Entities/Constructible/Walls/windows.yml index 865aff6339..8c75ec1e95 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/windows.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/windows.yml @@ -32,8 +32,6 @@ thresholds: 15: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundCollectionBehavior soundCollection: WindowBreak - !type:SpawnEntitiesBehavior @@ -41,6 +39,8 @@ ShardGlass: min: 1 max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: SnapGrid offset: Center - type: Airtight @@ -70,8 +70,6 @@ thresholds: 75: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundCollectionBehavior soundCollection: WindowBreak - !type:SpawnEntitiesBehavior @@ -79,6 +77,8 @@ ShardGlassReinforced: min: 1 max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Window base: rwindow maxDamage: 75 @@ -102,8 +102,6 @@ thresholds: 100: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundCollectionBehavior soundCollection: WindowBreak - !type:SpawnEntitiesBehavior @@ -111,6 +109,8 @@ ShardGlassPhoron: min: 1 max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] resistances: metallicResistances - type: Window base: pwindow diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml index 5b9eaa4c92..b9f5ee51a8 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml @@ -29,8 +29,6 @@ thresholds: 5: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundCollectionBehavior soundCollection: WindowBreak - !type:SpawnEntitiesBehavior @@ -38,6 +36,8 @@ ShardGlass: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: DamageOnLand amount: 5 - type: DamageOtherOnHit diff --git a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml index 54b10a78c9..f4c5420753 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml @@ -133,8 +133,6 @@ thresholds: 10: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/glass_break1.ogg - !type:SpawnEntitiesBehavior @@ -142,6 +140,8 @@ FloodlightBroken: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Appearance visuals: - type: FlashLightVisualizer @@ -162,8 +162,6 @@ thresholds: 20: behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - !type:PlaySoundBehavior sound: /Audio/Effects/metalbreak.ogg - !type:SpawnEntitiesBehavior @@ -171,6 +169,8 @@ SteelSheet1: min: 1 max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Physics shapes: - !type:PhysShapeAabb From 74fed841a3886925b27b41d9e8bd8b68c6583ef6 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sat, 2 Jan 2021 20:51:02 +0100 Subject: [PATCH 022/166] Fixes alert category being the same but alert type changing to one without severity Also adds alert type to the exceptions in AlertPrototype --- Content.Shared/Alert/AlertPrototype.cs | 10 +++++----- .../Components/Mobs/SharedAlertsComponent.cs | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Alert/AlertPrototype.cs b/Content.Shared/Alert/AlertPrototype.cs index 7c7ba74014..e2af7906b0 100644 --- a/Content.Shared/Alert/AlertPrototype.cs +++ b/Content.Shared/Alert/AlertPrototype.cs @@ -123,7 +123,7 @@ namespace Content.Shared.Alert { if (!SupportsSeverity && severity != null) { - throw new InvalidOperationException("This alert does not support severity"); + throw new InvalidOperationException($"This alert ({AlertKey}) does not support severity"); } if (!SupportsSeverity) @@ -131,24 +131,24 @@ namespace Content.Shared.Alert if (severity == null) { - throw new ArgumentException("No severity specified but this alert has severity.", nameof(severity)); + throw new ArgumentException($"No severity specified but this alert ({AlertKey}) has severity.", nameof(severity)); } if (severity < MinSeverity) { - throw new ArgumentOutOfRangeException(nameof(severity), "Severity below minimum severity."); + throw new ArgumentOutOfRangeException(nameof(severity), $"Severity below minimum severity in {AlertKey}."); } if (severity > MaxSeverity) { - throw new ArgumentOutOfRangeException(nameof(severity), "Severity above maximum severity."); + throw new ArgumentOutOfRangeException(nameof(severity), $"Severity above maximum severity in {AlertKey}."); } var severityText = severity.Value.ToString(CultureInfo.InvariantCulture); switch (Icon) { case SpriteSpecifier.EntityPrototype entityPrototype: - throw new InvalidOperationException("Severity not supported for EntityPrototype icon"); + throw new InvalidOperationException($"Severity not supported for EntityPrototype icon in {AlertKey}"); case SpriteSpecifier.Rsi rsi: return new SpriteSpecifier.Rsi(rsi.RsiPath, rsi.RsiState + severityText); case SpriteSpecifier.Texture texture: diff --git a/Content.Shared/GameObjects/Components/Mobs/SharedAlertsComponent.cs b/Content.Shared/GameObjects/Components/Mobs/SharedAlertsComponent.cs index 30b24fdb14..1adb20d45c 100644 --- a/Content.Shared/GameObjects/Components/Mobs/SharedAlertsComponent.cs +++ b/Content.Shared/GameObjects/Components/Mobs/SharedAlertsComponent.cs @@ -93,6 +93,9 @@ namespace Content.Shared.GameObjects.Components.Mobs return; } + // In the case we're changing the alert type but not the category, we need to remove it first. + _alerts.Remove(alert.AlertKey); + _alerts[alert.AlertKey] = new AlertState {Cooldown = cooldown, Severity = severity}; From 6d9d7f751e18adbde7b8a314ca00427a46f50e2a Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Sat, 2 Jan 2021 20:48:33 -0600 Subject: [PATCH 023/166] Fixes ApcNetTest (#2895) Co-authored-by: py01 --- .../ApcNetComponents/PowerProviderComponent.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs index 2284963d5a..f1c14043dd 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; @@ -137,15 +138,18 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents private void SetPowerTransferRange(int newPowerTransferRange) { - var oldLoad = GetTotalLoad(); - foreach (var receiver in _linkedReceivers.ToArray()) + var receivers = _linkedReceivers.ToArray(); + + foreach (var receiver in receivers) { receiver.ClearProvider(); } _powerTransferRange = newPowerTransferRange; - _linkedReceivers = FindAvailableReceivers(); - var newLoad = GetTotalLoad(); - Net.UpdatePowerProviderReceivers(this, oldLoad, newLoad); + + foreach (var receiver in receivers) + { + receiver.TryFindAndSetProvider(); + } } private int GetTotalLoad() From 318f82ab302a2a00bf875ca35b0ded2444c9e4b6 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sat, 2 Jan 2021 22:11:39 +0100 Subject: [PATCH 024/166] Fixes aghost spam creating many admin ghosts. - Also gives aghosts their character/player name --- .../Administration/Commands/AGhost.cs | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Content.Server/Administration/Commands/AGhost.cs b/Content.Server/Administration/Commands/AGhost.cs index 89c71d0346..eddc879dde 100644 --- a/Content.Server/Administration/Commands/AGhost.cs +++ b/Content.Server/Administration/Commands/AGhost.cs @@ -1,4 +1,6 @@ -using Content.Server.GameObjects.Components.Observer; +using Content.Server.Commands.Observer; +using Content.Server.GameObjects.Components.Observer; +using Content.Server.Interfaces.GameTicking; using Content.Server.Players; using Content.Shared.Administration; using Robust.Server.Interfaces.Console; @@ -23,14 +25,15 @@ namespace Content.Server.Administration.Commands return; } - var mind = player.ContentData().Mind; + var mind = player.ContentData()?.Mind; + if (mind == null) { shell.SendText(player, "You can't ghost here!"); return; } - if (mind.VisitingEntity != null && mind.VisitingEntity.Prototype.ID == "AdminObserver") + if (mind.VisitingEntity != null && mind.VisitingEntity.Prototype?.ID == "AdminObserver") { var visiting = mind.VisitingEntity; mind.UnVisit(); @@ -38,13 +41,22 @@ namespace Content.Server.Administration.Commands } else { - var canReturn = mind.CurrentEntity != null && !mind.CurrentEntity.HasComponent(); - var entityManager = IoCManager.Resolve(); - var ghost = entityManager.SpawnEntity("AdminObserver", player.AttachedEntity.Transform.MapPosition); - if(canReturn) + var canReturn = mind.CurrentEntity != null; + var ghost = IoCManager.Resolve() + .SpawnEntity("AdminObserver", player.AttachedEntity?.Transform.Coordinates + ?? IoCManager.Resolve().GetObserverSpawnPoint()); + + if (canReturn) + { + ghost.Name = mind.CharacterName; mind.Visit(ghost); + } else + { + ghost.Name = player.Name; mind.TransferTo(ghost); + } + ghost.GetComponent().CanReturnToBody = canReturn; } } From 914a214a19c06b73ba48b9a166b36e267d0b2fdb Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 3 Jan 2021 15:34:30 +0100 Subject: [PATCH 025/166] Fix setgamepreset command not updating status correctly. --- Content.Server/GameTicking/GameTicker.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index f219fc7c56..7c2568c1a4 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -211,6 +211,8 @@ namespace Content.Server.GameTicking } else { + Preset = null; + if (PlayerManager.PlayerCount == 0) _roundStartCountdownHasNotStartedYetDueToNoPlayers = true; else From 32f04fd7ca86efae34ed7b98f812e81f6de19dec Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Sun, 3 Jan 2021 09:13:01 -0600 Subject: [PATCH 026/166] Replaces PowerReceiver's C# event with a ComponentMessage (#2888) Co-authored-by: py01 --- .../Arcade/BlockGameArcadeComponent.cs | 22 +++++++++------ .../Arcade/SpaceVillainArcadeComponent.cs | 14 +++++++--- .../Components/BarSign/BarSignComponent.cs | 21 ++++++-------- .../Components/Cargo/CargoTelepadComponent.cs | 22 ++++++--------- .../Chemistry/ChemMasterComponent.cs | 20 ++++++++----- .../Chemistry/ReagentDispenserComponent.cs | 20 ++++++++----- .../Components/ComputerComponent.cs | 18 ++++++------ .../Components/Conveyor/ConveyorComponent.cs | 21 +++++--------- .../Disposal/DisposalMailingUnitComponent.cs | 18 ++++-------- .../Disposal/DisposalUnitComponent.cs | 18 ++++-------- .../Components/Doors/AirlockComponent.cs | 18 ++++++------ .../Kitchen/ReagentGrinderComponent.cs | 25 +++++++++-------- .../ParticleAcceleratorControlBoxComponent.cs | 18 +++++++++--- .../Power/AME/AMEControllerComponent.cs | 20 ++++++++----- .../PowerReceiverComponent.cs | 9 +++--- .../PowerReceiverUsers/BaseCharger.cs | 20 +++++++------ .../EmergencyLightComponent.cs | 28 ++++++------------- .../PoweredLightComponent.cs | 15 +++++----- .../VendingMachineComponent.cs | 16 +++++------ 19 files changed, 182 insertions(+), 181 deletions(-) diff --git a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs index 8045d71ffb..363fcd1faf 100644 --- a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs +++ b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -7,7 +7,6 @@ using Content.Server.GameObjects.EntitySystems; using Content.Server.Utility; using Content.Shared.Arcade; using Content.Shared.GameObjects; -using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Server.GameObjects.Components.UserInterface; @@ -16,6 +15,7 @@ using Robust.Server.Interfaces.Player; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; using Robust.Shared.Maths; @@ -42,6 +42,17 @@ namespace Content.Server.GameObjects.Components.Arcade private IPlayerSession? _player; private readonly List _spectators = new(); + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PowerChangedMessage powerChanged: + OnPowerStateChanged(powerChanged); + break; + } + } + public void Activate(ActivateEventArgs eventArgs) { if(!eventArgs.User.TryGetComponent(out IActorComponent? actor)) @@ -109,15 +120,10 @@ namespace Content.Server.GameObjects.Components.Arcade { UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; } - - if (_powerReceiverComponent != null) - { - _powerReceiverComponent.OnPowerStateChanged += OnPowerStateChanged; - } _game = new BlockGame(this); } - private void OnPowerStateChanged(object? sender, PowerStateEventArgs e) + private void OnPowerStateChanged(PowerChangedMessage e) { if (e.Powered) return; diff --git a/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs b/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs index 99c46516e8..ce09402f32 100644 --- a/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs +++ b/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.VendingMachines; @@ -100,14 +100,20 @@ namespace Content.Server.GameObjects.Components.Arcade { UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; } + } - if (_powerReceiverComponent != null) + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) { - _powerReceiverComponent.OnPowerStateChanged += OnOnPowerStateChanged; + case PowerChangedMessage powerChanged: + OnOnPowerStateChanged(powerChanged); + break; } } - private void OnOnPowerStateChanged(object? sender, PowerStateEventArgs e) + private void OnOnPowerStateChanged(PowerChangedMessage e) { if(e.Powered) return; diff --git a/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs b/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs index 16827c0dc6..bc18f218e0 100644 --- a/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs +++ b/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs @@ -1,9 +1,10 @@ -#nullable enable +#nullable enable using System.Linq; using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Robust.Server.GameObjects; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -81,25 +82,21 @@ namespace Content.Server.GameObjects.Components.BarSign { base.Initialize(); - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged += PowerOnOnPowerStateChanged; - } - UpdateSignInfo(); } - public override void OnRemove() + public override void HandleMessage(ComponentMessage message, IComponent? component) { - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged -= PowerOnOnPowerStateChanged; + case PowerChangedMessage powerChanged: + PowerOnOnPowerStateChanged(powerChanged); + break; } - - base.OnRemove(); } - private void PowerOnOnPowerStateChanged(object? sender, PowerStateEventArgs e) + private void PowerOnOnPowerStateChanged(PowerChangedMessage e) { UpdateSignInfo(); } diff --git a/Content.Server/GameObjects/Components/Cargo/CargoTelepadComponent.cs b/Content.Server/GameObjects/Components/Cargo/CargoTelepadComponent.cs index 83f20b12ee..a261a92626 100644 --- a/Content.Server/GameObjects/Components/Cargo/CargoTelepadComponent.cs +++ b/Content.Server/GameObjects/Components/Cargo/CargoTelepadComponent.cs @@ -8,6 +8,7 @@ using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; using System.Collections.Generic; namespace Content.Server.GameObjects.Components.Cargo @@ -25,22 +26,15 @@ namespace Content.Server.GameObjects.Components.Cargo private List _teleportQueue = new List(); private CargoTelepadState _currentState = CargoTelepadState.Unpowered; - - public override void OnAdd() + public override void HandleMessage(ComponentMessage message, IComponent? component) { - base.OnAdd(); - - var receiver = Owner.EnsureComponent(); - receiver.OnPowerStateChanged += PowerUpdate; - } - - public override void OnRemove() - { - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged -= PowerUpdate; + case PowerChangedMessage powerChanged: + PowerUpdate(powerChanged); + break; } - base.OnRemove(); } public void QueueTeleport(CargoProductPrototype product) @@ -49,7 +43,7 @@ namespace Content.Server.GameObjects.Components.Cargo TeleportLoop(); } - private void PowerUpdate(object? sender, PowerStateEventArgs args) + private void PowerUpdate(PowerChangedMessage args) { if (args.Powered && _currentState == CargoTelepadState.Unpowered) { _currentState = CargoTelepadState.Idle; diff --git a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs index 293b4fa0da..3de7bbd767 100644 --- a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -80,11 +80,6 @@ namespace Content.Server.GameObjects.Components.Chemistry _beakerContainer = ContainerManagerComponent.Ensure($"{Name}-reagentContainerContainer", Owner); - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged += OnPowerChanged; - } - //BufferSolution = Owner.BufferSolution BufferSolution.Solution = new Solution(); BufferSolution.MaxVolume = ReagentUnit.New(1000); @@ -92,7 +87,18 @@ namespace Content.Server.GameObjects.Components.Chemistry UpdateUserInterface(); } - private void OnPowerChanged(object? sender, PowerStateEventArgs e) + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PowerChangedMessage powerChanged: + OnPowerChanged(powerChanged); + break; + } + } + + private void OnPowerChanged(PowerChangedMessage e) { UpdateUserInterface(); } diff --git a/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs b/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs index e27612606c..51f2bdb46d 100644 --- a/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Linq; using System.Threading.Tasks; @@ -83,15 +83,21 @@ namespace Content.Server.GameObjects.Components.Chemistry _beakerContainer = ContainerManagerComponent.Ensure($"{Name}-reagentContainerContainer", Owner); - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged += OnPowerChanged; - } - InitializeFromPrototype(); UpdateUserInterface(); } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PowerChangedMessage powerChanged: + OnPowerChanged(powerChanged); + break; + } + } + /// /// Checks to see if the pack defined in this components yaml prototype /// exists. If so, it fills the reagent inventory list. @@ -111,7 +117,7 @@ namespace Content.Server.GameObjects.Components.Chemistry } } - private void OnPowerChanged(object? sender, PowerStateEventArgs e) + private void OnPowerChanged(PowerChangedMessage e) { UpdateUserInterface(); } diff --git a/Content.Server/GameObjects/Components/ComputerComponent.cs b/Content.Server/GameObjects/Components/ComputerComponent.cs index c1f3df3890..f22a6fc094 100644 --- a/Content.Server/GameObjects/Components/ComputerComponent.cs +++ b/Content.Server/GameObjects/Components/ComputerComponent.cs @@ -1,10 +1,11 @@ -using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Shared.GameObjects.Components; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Server.GameObjects.Components.Container; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Log; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -29,8 +30,6 @@ namespace Content.Server.GameObjects.Components if (Owner.TryGetComponent(out PowerReceiverComponent powerReceiver)) { - powerReceiver.OnPowerStateChanged += PowerReceiverOnOnPowerStateChanged; - if (Owner.TryGetComponent(out AppearanceComponent appearance)) { appearance.SetData(ComputerVisuals.Powered, powerReceiver.Powered); @@ -45,17 +44,18 @@ namespace Content.Server.GameObjects.Components CreateComputerBoard(); } - public override void OnRemove() + public override void HandleMessage(ComponentMessage message, IComponent component) { - if (Owner.TryGetComponent(out PowerReceiverComponent powerReceiver)) + base.HandleMessage(message, component); + switch (message) { - powerReceiver.OnPowerStateChanged -= PowerReceiverOnOnPowerStateChanged; + case PowerChangedMessage powerChanged: + PowerReceiverOnOnPowerStateChanged(powerChanged); + break; } - - base.OnRemove(); } - private void PowerReceiverOnOnPowerStateChanged(object sender, PowerStateEventArgs e) + private void PowerReceiverOnOnPowerStateChanged(PowerChangedMessage e) { if (Owner.TryGetComponent(out AppearanceComponent appearance)) { diff --git a/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs b/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs index d6441ae935..af7e06a591 100644 --- a/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs +++ b/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs @@ -57,25 +57,18 @@ namespace Content.Server.GameObjects.Components.Conveyor } } - public override void OnAdd() + public override void HandleMessage(ComponentMessage message, IComponent? component) { - base.OnAdd(); - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged += OnPowerChanged; + case PowerChangedMessage powerChanged: + OnPowerChanged(powerChanged); + break; } } - public override void OnRemove() - { - base.OnRemove(); - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged -= OnPowerChanged; - } - } - - private void OnPowerChanged(object? sender, PowerStateEventArgs e) + private void OnPowerChanged(PowerChangedMessage e) { UpdateAppearance(); } diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs index 83069957b0..365703861c 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -547,7 +547,7 @@ namespace Content.Server.GameObjects.Components.Disposal UpdateInterface(); } - private void PowerStateChanged(object? sender, PowerStateEventArgs args) + private void PowerStateChanged(PowerChangedMessage args) { if (!args.Powered) { @@ -619,11 +619,6 @@ namespace Content.Server.GameObjects.Components.Disposal physics.AnchoredChanged += UpdateVisualState; } - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged += PowerStateChanged; - } - UpdateTargetList(); UpdateVisualState(); } @@ -635,11 +630,6 @@ namespace Content.Server.GameObjects.Components.Disposal physics.AnchoredChanged -= UpdateVisualState; } - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged -= PowerStateChanged; - } - if (_container != null) { foreach (var entity in _container.ContainedEntities.ToArray()) @@ -680,6 +670,10 @@ namespace Content.Server.GameObjects.Components.Disposal _lastExitAttempt = _gameTiming.CurTime; Remove(msg.Entity); break; + + case PowerChangedMessage powerChanged: + PowerStateChanged(powerChanged); + break; } } diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs index f366eebe37..9811a4f021 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -504,7 +504,7 @@ namespace Content.Server.GameObjects.Components.Disposal UpdateInterface(); } - private void PowerStateChanged(object? sender, PowerStateEventArgs args) + private void PowerStateChanged(PowerChangedMessage args) { if (!args.Powered) { @@ -574,11 +574,6 @@ namespace Content.Server.GameObjects.Components.Disposal physics.AnchoredChanged += UpdateVisualState; } - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged += PowerStateChanged; - } - UpdateVisualState(); } @@ -589,11 +584,6 @@ namespace Content.Server.GameObjects.Components.Disposal physics.AnchoredChanged -= UpdateVisualState; } - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged -= PowerStateChanged; - } - foreach (var entity in _container.ContainedEntities.ToArray()) { _container.ForceRemove(entity); @@ -626,6 +616,10 @@ namespace Content.Server.GameObjects.Components.Disposal _lastExitAttempt = _gameTiming.CurTime; Remove(msg.Entity); break; + + case PowerChangedMessage powerChanged: + PowerStateChanged(powerChanged); + break; } } diff --git a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs index 6f77b8bee5..e0750db8fb 100644 --- a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Threading; using System.Threading.Tasks; @@ -15,6 +15,7 @@ using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; using Robust.Shared.Maths; using Robust.Shared.ViewVariables; @@ -191,8 +192,6 @@ namespace Content.Server.GameObjects.Components.Doors if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) { - receiver.OnPowerStateChanged += PowerDeviceOnOnPowerStateChanged; - if (Owner.TryGetComponent(out AppearanceComponent? appearance)) { @@ -201,17 +200,18 @@ namespace Content.Server.GameObjects.Components.Doors } } - public override void OnRemove() + public override void HandleMessage(ComponentMessage message, IComponent? component) { - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged -= PowerDeviceOnOnPowerStateChanged; + case PowerChangedMessage powerChanged: + PowerDeviceOnOnPowerStateChanged(powerChanged); + break; } - - base.OnRemove(); } - private void PowerDeviceOnOnPowerStateChanged(object? sender, PowerStateEventArgs e) + private void PowerDeviceOnOnPowerStateChanged(PowerChangedMessage e) { if (Owner.TryGetComponent(out AppearanceComponent? appearance)) { diff --git a/Content.Server/GameObjects/Components/Kitchen/ReagentGrinderComponent.cs b/Content.Server/GameObjects/Components/Kitchen/ReagentGrinderComponent.cs index c0b9cd6fc1..0205237afe 100644 --- a/Content.Server/GameObjects/Components/Kitchen/ReagentGrinderComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/ReagentGrinderComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Linq; using System.Threading.Tasks; @@ -95,14 +95,20 @@ namespace Content.Server.GameObjects.Components.Kitchen UserInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; } - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged += OnPowerStateChanged; - } - _audioSystem = EntitySystem.Get(); } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PowerChangedMessage powerChanged: + OnPowerStateChanged(powerChanged); + break; + } + } + public override void OnRemove() { base.OnRemove(); @@ -110,11 +116,6 @@ namespace Content.Server.GameObjects.Components.Kitchen { UserInterface.OnReceiveMessage -= UserInterfaceOnReceiveMessage; } - - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged -= OnPowerStateChanged; - } } private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message) @@ -166,7 +167,7 @@ namespace Content.Server.GameObjects.Components.Kitchen } } - private void OnPowerStateChanged(object? sender, PowerStateEventArgs e) + private void OnPowerStateChanged(PowerChangedMessage e) { _uiDirty = true; } diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorControlBoxComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorControlBoxComponent.cs index 542878fc98..d490417fa0 100644 --- a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorControlBoxComponent.cs +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorControlBoxComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Diagnostics; @@ -16,6 +16,7 @@ using Robust.Server.GameObjects; using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; using Robust.Shared.Log; using Robust.Shared.Maths; @@ -119,11 +120,20 @@ namespace Content.Server.GameObjects.Components.PA Logger.Error("ParticleAcceleratorControlBox was created without PowerReceiverComponent"); return; } - - _powerReceiverComponent.OnPowerStateChanged += OnPowerStateChanged; _powerReceiverComponent.Load = 250; } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PowerChangedMessage powerChanged: + OnPowerStateChanged(powerChanged); + break; + } + } + protected override void Startup() { base.Startup(); @@ -133,7 +143,7 @@ namespace Content.Server.GameObjects.Components.PA // This is the power state for the PA control box itself. // Keep in mind that the PA itself can keep firing as long as the HV cable under the power box has... power. - private void OnPowerStateChanged(object? sender, PowerStateEventArgs e) + private void OnPowerStateChanged(PowerChangedMessage e) { UpdateAppearance(); diff --git a/Content.Server/GameObjects/Components/Power/AME/AMEControllerComponent.cs b/Content.Server/GameObjects/Components/Power/AME/AMEControllerComponent.cs index eb6bf1e9fc..c42007437d 100644 --- a/Content.Server/GameObjects/Components/Power/AME/AMEControllerComponent.cs +++ b/Content.Server/GameObjects/Components/Power/AME/AMEControllerComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Linq; using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; @@ -59,11 +59,6 @@ namespace Content.Server.GameObjects.Components.Power.AME Owner.TryGetComponent(out _appearance); - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged += OnPowerChanged; - } - Owner.TryGetComponent(out _powerSupplier); _injecting = false; @@ -71,6 +66,17 @@ namespace Content.Server.GameObjects.Components.Power.AME _jarSlot = ContainerManagerComponent.Ensure($"{Name}-fuelJarContainer", Owner); } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PowerChangedMessage powerChanged: + OnPowerChanged(powerChanged); + break; + } + } + internal void OnUpdate(float frameTime) { if(!_injecting) @@ -127,7 +133,7 @@ namespace Content.Server.GameObjects.Components.Power.AME } } - private void OnPowerChanged(object? sender, PowerStateEventArgs e) + private void OnPowerChanged(PowerChangedMessage e) { UpdateUserInterface(); } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs index b05f03ef96..5b208920aa 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs @@ -29,8 +29,6 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents public override string Name => "PowerReceiver"; - public event EventHandler? OnPowerStateChanged; - [ViewVariables] public bool Powered => (HasApcPower || !NeedsPower) && !PowerDisabled; @@ -209,7 +207,8 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents private void OnNewPowerState() { - OnPowerStateChanged?.Invoke(this, new PowerStateEventArgs(Powered)); + SendMessage(new PowerChangedMessage(Powered)); + if (Owner.TryGetComponent(out var appearance)) { appearance.SetData(PowerDeviceVisuals.Powered, Powered); @@ -240,11 +239,11 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents } } - public class PowerStateEventArgs : EventArgs + public class PowerChangedMessage : ComponentMessage { public readonly bool Powered; - public PowerStateEventArgs(bool powered) + public PowerChangedMessage(bool powered) { Powered = powered; } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs index 9cc926434d..09d6046037 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; @@ -53,19 +53,21 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece Owner.EnsureComponent(); _container = ContainerManagerComponent.Ensure($"{Name}-powerCellContainer", Owner); // Default state in the visualizer is OFF, so when this gets powered on during initialization it will generally show empty - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + } + + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged += PowerUpdate; + case PowerChangedMessage powerChanged: + PowerUpdate(powerChanged); + break; } } public override void OnRemove() { - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) - { - receiver.OnPowerStateChanged -= PowerUpdate; - } - _heldBattery = null; base.OnRemove(); @@ -114,7 +116,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece UpdateStatus(); } - private void PowerUpdate(object? sender, PowerStateEventArgs eventArgs) + private void PowerUpdate(PowerChangedMessage eventArgs) { UpdateStatus(); } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs index eadd1d1bb2..bf3044366b 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/EmergencyLightComponent.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; using Robust.Shared.Serialization; using Robust.Shared.Utility; @@ -52,7 +53,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece /// /// For attaching UpdateState() to events. /// - public void UpdateState(object sender, EventArgs e) + public void UpdateState(PowerChangedMessage e) { UpdateState(); } @@ -136,30 +137,17 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece } } - public override void Initialize() + public override void HandleMessage(ComponentMessage message, IComponent component) { - base.Initialize(); - } - - public override void OnAdd() - { - base.OnAdd(); - if (Owner.TryGetComponent(out PowerReceiverComponent receiver)) + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged += UpdateState; + case PowerChangedMessage powerChanged: + UpdateState(powerChanged); + break; } } - public override void OnRemove() - { - if (Owner.TryGetComponent(out PowerReceiverComponent receiver)) - { - receiver.OnPowerStateChanged -= UpdateState; - } - - base.OnRemove(); - } - void IExamine.Examine(FormattedMessage message, bool inDetailsRange) { message.AddMarkup(Loc.GetString($"The battery indicator displays: {BatteryStateText[State]}.")); diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PoweredLightComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PoweredLightComponent.cs index 224e288001..48f167d4fa 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PoweredLightComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PoweredLightComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; @@ -209,19 +209,18 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece { base.Initialize(); - Owner.EnsureComponent().OnPowerStateChanged += UpdateLight; - _lightBulbContainer = ContainerManagerComponent.Ensure("light_bulb", Owner); } - public override void OnRemove() + public override void HandleMessage(ComponentMessage message, IComponent component) { - if (Owner.TryGetComponent(out PowerReceiverComponent receiver)) + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged -= UpdateLight; + case PowerChangedMessage: + UpdateLight(); + break; } - - base.OnRemove(); } void IMapInit.MapInit() diff --git a/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs b/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs index 64f2fea849..0f40ce414a 100644 --- a/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs +++ b/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -119,24 +119,24 @@ namespace Content.Server.GameObjects.Components.VendingMachines if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) { - receiver.OnPowerStateChanged += UpdatePower; TrySetVisualState(receiver.Powered ? VendingMachineVisualState.Normal : VendingMachineVisualState.Off); } InitializeFromPrototype(); } - public override void OnRemove() + public override void HandleMessage(ComponentMessage message, IComponent? component) { - if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + base.HandleMessage(message, component); + switch (message) { - receiver.OnPowerStateChanged -= UpdatePower; + case PowerChangedMessage powerChanged: + UpdatePower(powerChanged); + break; } - - base.OnRemove(); } - private void UpdatePower(object? sender, PowerStateEventArgs args) + private void UpdatePower(PowerChangedMessage args) { var state = args.Powered ? VendingMachineVisualState.Normal : VendingMachineVisualState.Off; TrySetVisualState(state); From 57b049d17336e3854611cc657852d2b17532c460 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 3 Jan 2021 12:13:31 -0300 Subject: [PATCH 027/166] Adds DSay command (#2901) * DSay command * Moves getting the clients from DeadChat and AdminDeadChat to a function --- .../Administration/Commands/DSay.cs | 40 +++++++++++++++++++ Content.Server/Chat/ChatManager.cs | 31 ++++++++++++-- .../Interfaces/Chat/IChatManager.cs | 3 +- 3 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 Content.Server/Administration/Commands/DSay.cs diff --git a/Content.Server/Administration/Commands/DSay.cs b/Content.Server/Administration/Commands/DSay.cs new file mode 100644 index 0000000000..40bf93b5b5 --- /dev/null +++ b/Content.Server/Administration/Commands/DSay.cs @@ -0,0 +1,40 @@ +using Content.Server.Interfaces.Chat; +using Content.Shared.Administration; +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.Player; +using Robust.Shared.IoC; +using Robust.Shared.Localization; + +namespace Content.Server.Administration.Commands +{ + [AdminCommand(AdminFlags.Admin)] + class DSay : IClientCommand + { + public string Command => "dsay"; + + public string Description => Loc.GetString("Sends a message to deadchat as an admin"); + + public string Help => Loc.GetString($"Usage: {Command} "); + + public void Execute(IConsoleShell shell, IPlayerSession player, string[] args) + { + if (player == null) + { + shell.SendText((IPlayerSession) null, "Only players can use this command"); + return; + } + + if (args.Length < 1) + return; + + var message = string.Join(" ", args).Trim(); + if (string.IsNullOrEmpty(message)) + return; + + var chat = IoCManager.Resolve(); + + chat.SendAdminDeadChat(player, message); + + } + } +} diff --git a/Content.Server/Chat/ChatManager.cs b/Content.Server/Chat/ChatManager.cs index 0add7b9891..72c2842b1e 100644 --- a/Content.Server/Chat/ChatManager.cs +++ b/Content.Server/Chat/ChatManager.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.Server.Administration; using Content.Server.GameObjects.Components.GUI; @@ -212,9 +212,7 @@ namespace Content.Server.Chat return; } - var clients = _playerManager - .GetPlayersBy(x => x.AttachedEntity != null && x.AttachedEntity.HasComponent()) - .Select(p => p.ConnectedClient); + var clients = GetDeadChatClients(); var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Dead; @@ -224,6 +222,31 @@ namespace Content.Server.Chat _netManager.ServerSendToMany(msg, clients.ToList()); } + public void SendAdminDeadChat(IPlayerSession player, string message) + { + // Check if message exceeds the character limit + if (message.Length > MaxMessageLength) + { + DispatchServerMessage(player, Loc.GetString(MaxLengthExceededMessage, MaxMessageLength)); + return; + } + + var clients = GetDeadChatClients(); + + var msg = _netManager.CreateNetMessage(); + msg.Channel = ChatChannel.Dead; + msg.Message = message; + msg.MessageWrap = $"{Loc.GetString("ADMIN")}:(${player.ConnectedClient.UserName}): {{0}}"; + _netManager.ServerSendToMany(msg, clients.ToList()); + } + + private IEnumerable GetDeadChatClients() + { + return _playerManager + .GetPlayersBy(x => x.AttachedEntity != null && x.AttachedEntity.HasComponent()) + .Select(p => p.ConnectedClient); + } + public void SendAdminChat(IPlayerSession player, string message) { // Check if message exceeds the character limit diff --git a/Content.Server/Interfaces/Chat/IChatManager.cs b/Content.Server/Interfaces/Chat/IChatManager.cs index ce5304d5c6..0edfff50cd 100644 --- a/Content.Server/Interfaces/Chat/IChatManager.cs +++ b/Content.Server/Interfaces/Chat/IChatManager.cs @@ -1,4 +1,4 @@ -using Robust.Server.Interfaces.Player; +using Robust.Server.Interfaces.Player; using Robust.Shared.Interfaces.GameObjects; namespace Content.Server.Interfaces.Chat @@ -27,6 +27,7 @@ namespace Content.Server.Interfaces.Chat void SendOOC(IPlayerSession player, string message); void SendAdminChat(IPlayerSession player, string message); void SendDeadChat(IPlayerSession player, string message); + void SendAdminDeadChat(IPlayerSession player, string message); void SendHookOOC(string sender, string message); From 81730e261252a02be05255dc5d7f43f818221afe Mon Sep 17 00:00:00 2001 From: Swept Date: Sun, 3 Jan 2021 15:22:14 +0000 Subject: [PATCH 028/166] Backpack preferences. (#2864) Co-authored-by: Pieter-Jan Briers --- .../UserInterface/HumanoidProfileEditor.cs | 42 +- ...10103151756_BackpackPreference.Designer.cs | 575 ++++++++++++++++++ .../20210103151756_BackpackPreference.cs | 24 + .../PostgresServerDbContextModelSnapshot.cs | 5 + ...10103151752_BackpackPreference.Designer.cs | 542 +++++++++++++++++ .../20210103151752_BackpackPreference.cs | 24 + .../SqliteServerDbContextModelSnapshot.cs | 5 + Content.Server.Database/Model.cs | 3 +- Content.Server/Database/ServerDbBase.cs | 8 +- .../Preferences/BackpackPreference.cs | 12 + .../Preferences/HumanoidCharacterProfile.cs | 31 +- Content.Shared/Roles/StartingGearPrototype.cs | 8 + .../Server/Preferences/ServerDbSqliteTests.cs | 1 + .../{ => Backpacks/Starter Gear}/backpack.yml | 0 .../Backpacks/Starter Gear/duffelbag.yml | 75 +++ .../Fills/Backpacks/Starter Gear/satchel.yml | 75 +++ .../{duffel.yml => Backpacks/duffelbag.yml} | 0 .../Roles/Jobs/Cargo/cargo_technician.yml | 3 +- .../Roles/Jobs/Cargo/quartermaster.yml | 3 +- .../Roles/Jobs/Civilian/assistant.yml | 3 +- .../Roles/Jobs/Civilian/bartender.yml | 3 +- .../Roles/Jobs/Civilian/botanist.yml | 3 +- .../Prototypes/Roles/Jobs/Civilian/chef.yml | 3 +- .../Prototypes/Roles/Jobs/Civilian/clown.yml | 1 + .../Roles/Jobs/Civilian/janitor.yml | 3 +- .../Prototypes/Roles/Jobs/Command/captain.yml | 2 + .../Roles/Jobs/Command/head_of_personnel.yml | 3 +- .../Roles/Jobs/Engineering/chief_engineer.yml | 3 +- .../Jobs/Engineering/station_engineer.yml | 3 +- .../Jobs/Medical/chief_medical_officer.yml | 3 +- .../Roles/Jobs/Medical/medical_doctor.yml | 3 +- .../Roles/Jobs/Science/research_director.yml | 2 +- .../Roles/Jobs/Science/scientist.yml | 2 +- .../Roles/Jobs/Security/head_of_security.yml | 3 +- .../Roles/Jobs/Security/security_officer.yml | 3 +- .../Prototypes/Roles/Jobs/Security/warden.yml | 3 +- 36 files changed, 1455 insertions(+), 27 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs create mode 100644 Content.Shared/Preferences/BackpackPreference.cs rename Resources/Prototypes/Catalog/Fills/{ => Backpacks/Starter Gear}/backpack.yml (100%) create mode 100644 Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml create mode 100644 Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml rename Resources/Prototypes/Catalog/Fills/{duffel.yml => Backpacks/duffelbag.yml} (100%) diff --git a/Content.Client/UserInterface/HumanoidProfileEditor.cs b/Content.Client/UserInterface/HumanoidProfileEditor.cs index 4c38b7cbee..7558832b0d 100644 --- a/Content.Client/UserInterface/HumanoidProfileEditor.cs +++ b/Content.Client/UserInterface/HumanoidProfileEditor.cs @@ -1,4 +1,4 @@ -using Content.Client.GameObjects.Components; +using Content.Client.GameObjects.Components; using Content.Client.GameObjects.Components.Mobs; using Content.Client.Interfaces; using Content.Shared.GameTicking; @@ -43,6 +43,7 @@ namespace Content.Client.UserInterface private readonly Button _sexMaleButton; private readonly OptionButton _genderButton; private readonly OptionButton _clothingButton; + private readonly OptionButton _backpackButton; private readonly HairStylePicker _hairPicker; private readonly FacialHairStylePicker _facialHairPicker; @@ -333,6 +334,33 @@ namespace Content.Client.UserInterface } #endregion Clothing + + #region Backpack + + { + var panel = HighlightedContainer(); + var hBox = new HBoxContainer(); + var backpackLabel = new Label { Text = Loc.GetString("Backpack:") }; + + _backpackButton = new OptionButton(); + + _backpackButton.AddItem(Loc.GetString("Backpack"), (int) BackpackPreference.Backpack); + _backpackButton.AddItem(Loc.GetString("Satchel"), (int) BackpackPreference.Satchel); + _backpackButton.AddItem(Loc.GetString("Duffelbag"), (int) BackpackPreference.Duffelbag); + + _backpackButton.OnItemSelected += args => + { + _backpackButton.SelectId(args.Id); + SetBackpack((BackpackPreference) args.Id); + }; + + hBox.AddChild(backpackLabel); + hBox.AddChild(_backpackButton); + panel.AddChild(hBox); + appearanceVBox.AddChild(panel); + } + + #endregion Clothing } #endregion @@ -669,6 +697,12 @@ namespace Content.Client.UserInterface IsDirty = true; } + private void SetBackpack(BackpackPreference newBackpack) + { + Profile = Profile?.WithBackpackPreference(newBackpack); + IsDirty = true; + } + public void Save() { IsDirty = false; @@ -723,6 +757,11 @@ namespace Content.Client.UserInterface _clothingButton.SelectId((int) Profile.Clothing); } + private void UpdateBackpackControls() + { + _backpackButton.SelectId((int) Profile.Backpack); + } + private void UpdateHairPickers() { _hairPicker.SetData( @@ -754,6 +793,7 @@ namespace Content.Client.UserInterface UpdateSexControls(); UpdateGenderControls(); UpdateClothingControls(); + UpdateBackpackControls(); UpdateAgeEdit(); UpdateHairPickers(); UpdateSaveButton(); diff --git a/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs new file mode 100644 index 0000000000..1a66e59863 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs @@ -0,0 +1,575 @@ +// +using System; +using System.Net; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20210103151756_BackpackPreference")] + partial class BackpackPreference + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseIdentityByDefaultColumns() + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "5.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId"); + + b.HasIndex("AdminRankId"); + + b.ToTable("admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id") + .UseIdentityByDefaultColumn(); + + b.Property("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id"); + + b.HasIndex("AdminId"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id") + .UseIdentityByDefaultColumn(); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("admin_rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id") + .UseIdentityByDefaultColumn(); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id") + .UseIdentityByDefaultColumn(); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag"); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id") + .UseIdentityByDefaultColumn(); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id") + .UseIdentityByDefaultColumn(); + + b.Property("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id"); + + b.HasIndex("ProfileId"); + + b.ToTable("job"); + }); + + modelBuilder.Entity("Content.Server.Database.PostgresConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id") + .UseIdentityByDefaultColumn(); + + b.Property("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log"); + + b.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + + modelBuilder.Entity("Content.Server.Database.PostgresPlayer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id") + .UseIdentityByDefaultColumn(); + + b.Property("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player"); + + b.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + + modelBuilder.Entity("Content.Server.Database.PostgresServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id") + .UseIdentityByDefaultColumn(); + + b.Property?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.HasIndex("Address"); + + b.HasIndex("UserId"); + + b.ToTable("server_ban"); + + b.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + b.HasCheckConstraint("HaveEitherAddressOrUserId", "address IS NOT NULL OR user_id IS NOT NULL"); + }); + + modelBuilder.Entity("Content.Server.Database.PostgresServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id") + .UseIdentityByDefaultColumn(); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id") + .UseIdentityByDefaultColumn(); + + b.Property("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id") + .UseIdentityByDefaultColumn(); + + b.Property("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("text") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("text") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.HasKey("Id"); + + b.HasIndex("PreferenceId"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.PostgresServerUnban", b => + { + b.HasOne("Content.Server.Database.PostgresServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.PostgresServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.PostgresServerBan", b => + { + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs new file mode 100644 index 0000000000..0c5a7356bb --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Content.Server.Database.Migrations.Postgres +{ + public partial class BackpackPreference : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "backpack", + table: "profile", + type: "text", + nullable: false, + defaultValue: ""); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "backpack", + table: "profile"); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index 589940e4a6..b7a48063b5 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -386,6 +386,11 @@ namespace Content.Server.Database.Migrations.Postgres .HasColumnType("integer") .HasColumnName("age"); + b.Property("Backpack") + .IsRequired() + .HasColumnType("text") + .HasColumnName("backpack"); + b.Property("CharacterName") .IsRequired() .HasColumnType("text") diff --git a/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs new file mode 100644 index 0000000000..661cfbc318 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs @@ -0,0 +1,542 @@ +// +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20210103151752_BackpackPreference")] + partial class BackpackPreference + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId"); + + b.HasIndex("AdminRankId"); + + b.ToTable("admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id"); + + b.HasIndex("AdminId"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("admin_rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag"); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id"); + + b.HasIndex("ProfileId"); + + b.ToTable("job"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.HasKey("Id"); + + b.HasIndex("PreferenceId"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile"); + }); + + modelBuilder.Entity("Content.Server.Database.SqliteConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id"); + + b.ToTable("connection_log"); + }); + + modelBuilder.Entity("Content.Server.Database.SqlitePlayer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.HasIndex("LastSeenUserName"); + + b.ToTable("player"); + }); + + modelBuilder.Entity("Content.Server.Database.SqliteServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.ToTable("ban"); + }); + + modelBuilder.Entity("Content.Server.Database.SqliteServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("unban"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.SqliteServerUnban", b => + { + b.HasOne("Content.Server.Database.SqliteServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.SqliteServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("Content.Server.Database.SqliteServerBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs new file mode 100644 index 0000000000..ff907ca1f2 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Content.Server.Database.Migrations.Sqlite +{ + public partial class BackpackPreference : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "backpack", + table: "profile", + type: "TEXT", + nullable: false, + defaultValue: ""); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "backpack", + table: "profile"); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index f6c1eb5e3a..8e93f4acbf 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -223,6 +223,11 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("age"); + b.Property("Backpack") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("backpack"); + b.Property("CharacterName") .IsRequired() .HasColumnType("TEXT") diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index e5d365b602..ed5c51e8c6 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -99,6 +99,7 @@ namespace Content.Server.Database [Column("eye_color")] public string EyeColor { get; set; } = null!; [Column("skin_color")] public string SkinColor { get; set; } = null!; [Column("clothing")] public string Clothing { get; set; } = null!; + [Column("backpack")] public string Backpack { get; set; } = null!; public List Jobs { get; } = new(); public List Antags { get; } = new(); diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index 929532fc21..0d95804350 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -140,6 +140,10 @@ namespace Content.Server.Database if (Enum.TryParse(profile.Clothing, true, out var clothingVal)) clothing = clothingVal; + var backpack = BackpackPreference.Backpack; + if (Enum.TryParse(profile.Backpack, true, out var backpackVal)) + backpack = backpackVal; + var gender = sex == Sex.Male ? Gender.Male : Gender.Female; if (Enum.TryParse(profile.Gender, true, out var genderVal)) gender = genderVal; @@ -159,6 +163,7 @@ namespace Content.Server.Database Color.FromHex(profile.SkinColor) ), clothing, + backpack, jobs, (PreferenceUnavailableMode) profile.PreferenceUnavailable, antags.ToList() @@ -182,6 +187,7 @@ namespace Content.Server.Database EyeColor = appearance.EyeColor.ToHex(), SkinColor = appearance.SkinColor.ToHex(), Clothing = humanoid.Clothing.ToString(), + Backpack = humanoid.Backpack.ToString(), Slot = slot, PreferenceUnavailable = (DbPreferenceUnavailableMode) humanoid.PreferenceUnavailable }; diff --git a/Content.Shared/Preferences/BackpackPreference.cs b/Content.Shared/Preferences/BackpackPreference.cs new file mode 100644 index 0000000000..da2c4b8fe8 --- /dev/null +++ b/Content.Shared/Preferences/BackpackPreference.cs @@ -0,0 +1,12 @@ +namespace Content.Shared.Preferences +{ + /// + /// The backpack preference for a profile. Stored in database! + /// + public enum BackpackPreference + { + Backpack, + Satchel, + Duffelbag + } +} diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index 53777695ea..6609591887 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -34,6 +34,7 @@ namespace Content.Shared.Preferences Gender gender, HumanoidCharacterAppearance appearance, ClothingPreference clothing, + BackpackPreference backpack, Dictionary jobPriorities, PreferenceUnavailableMode preferenceUnavailable, List antagPreferences) @@ -44,6 +45,7 @@ namespace Content.Shared.Preferences Gender = gender; Appearance = appearance; Clothing = clothing; + Backpack = backpack; _jobPriorities = jobPriorities; PreferenceUnavailable = preferenceUnavailable; _antagPreferences = antagPreferences; @@ -54,7 +56,7 @@ namespace Content.Shared.Preferences HumanoidCharacterProfile other, Dictionary jobPriorities, List antagPreferences) - : this(other.Name, other.Age, other.Sex, other.Gender, other.Appearance, other.Clothing, + : this(other.Name, other.Age, other.Sex, other.Gender, other.Appearance, other.Clothing, other.Backpack, jobPriorities, other.PreferenceUnavailable, antagPreferences) { } @@ -72,10 +74,11 @@ namespace Content.Shared.Preferences Gender gender, HumanoidCharacterAppearance appearance, ClothingPreference clothing, + BackpackPreference backpack, IReadOnlyDictionary jobPriorities, PreferenceUnavailableMode preferenceUnavailable, IReadOnlyList antagPreferences) - : this(name, age, sex, gender, appearance, clothing, new Dictionary(jobPriorities), + : this(name, age, sex, gender, appearance, clothing, backpack, new Dictionary(jobPriorities), preferenceUnavailable, new List(antagPreferences)) { } @@ -98,7 +101,7 @@ namespace Content.Shared.Preferences var name = $"{firstName} {lastName}"; var age = random.Next(MinimumAge, MaximumAge); - return new HumanoidCharacterProfile(name, age, sex, gender, HumanoidCharacterAppearance.Random(sex), ClothingPreference.Jumpsuit, + return new HumanoidCharacterProfile(name, age, sex, gender, HumanoidCharacterAppearance.Random(sex), ClothingPreference.Jumpsuit, BackpackPreference.Backpack, new Dictionary { {SharedGameTicker.OverflowJob, JobPriority.High} @@ -112,6 +115,7 @@ namespace Content.Shared.Preferences public ICharacterAppearance CharacterAppearance => Appearance; public HumanoidCharacterAppearance Appearance { get; private set; } public ClothingPreference Clothing { get; private set; } + public BackpackPreference Backpack { get; private set; } public IReadOnlyDictionary JobPriorities => _jobPriorities; public IReadOnlyList AntagPreferences => _antagPreferences; public PreferenceUnavailableMode PreferenceUnavailable { get; private set; } @@ -145,7 +149,10 @@ namespace Content.Shared.Preferences { return new(this) { Clothing = clothing }; } - + public HumanoidCharacterProfile WithBackpackPreference(BackpackPreference backpack) + { + return new(this) { Backpack = backpack }; + } public HumanoidCharacterProfile WithJobPriorities(IEnumerable> jobPriorities) { return new(this, new Dictionary(jobPriorities), _antagPreferences); @@ -254,6 +261,14 @@ namespace Content.Shared.Preferences _ => ClothingPreference.Jumpsuit // Invalid enum values. }; + var backpack = profile.Backpack switch + { + BackpackPreference.Backpack => BackpackPreference.Backpack, + BackpackPreference.Satchel => BackpackPreference.Satchel, + BackpackPreference.Duffelbag => BackpackPreference.Duffelbag, + _ => BackpackPreference.Backpack // Invalid enum values. + }; + var priorities = new Dictionary(profile.JobPriorities .Where(p => prototypeManager.HasIndex(p.Key) && p.Value switch { @@ -268,7 +283,7 @@ namespace Content.Shared.Preferences .Where(prototypeManager.HasIndex) .ToList(); - return new HumanoidCharacterProfile(name, age, sex, gender, appearance, clothing, priorities, prefsUnavailableMode, antags); + return new HumanoidCharacterProfile(name, age, sex, gender, appearance, clothing, backpack, priorities, prefsUnavailableMode, antags); } public string Summary => @@ -283,6 +298,7 @@ namespace Content.Shared.Preferences if (Gender != other.Gender) return false; if (PreferenceUnavailable != other.PreferenceUnavailable) return false; if (Clothing != other.Clothing) return false; + if (Backpack != other.Backpack) return false; if (!_jobPriorities.SequenceEqual(other._jobPriorities)) return false; if (!_antagPreferences.SequenceEqual(other._antagPreferences)) return false; return Appearance.MemberwiseEquals(other.Appearance); @@ -302,7 +318,8 @@ namespace Content.Shared.Preferences Sex, Gender, Appearance, - Clothing + Clothing, + Backpack ), PreferenceUnavailable, _jobPriorities, diff --git a/Content.Shared/Roles/StartingGearPrototype.cs b/Content.Shared/Roles/StartingGearPrototype.cs index ac27be7a56..567a66f181 100644 --- a/Content.Shared/Roles/StartingGearPrototype.cs +++ b/Content.Shared/Roles/StartingGearPrototype.cs @@ -21,6 +21,8 @@ namespace Content.Shared.Roles /// if empty, there is no skirt override - instead the uniform provided in equipment is added. /// private string _innerClothingSkirt = default!; + private string _satchel = default!; + private string _duffelbag = default!; public IReadOnlyDictionary Inhand => _inHand; /// @@ -51,6 +53,8 @@ namespace Content.Shared.Roles }, type => type.Value); serializer.DataField(ref _innerClothingSkirt, "innerclothingskirt", string.Empty); + serializer.DataField(ref _satchel, "satchel", string.Empty); + serializer.DataField(ref _duffelbag, "duffelbag", string.Empty); } public string GetGear(Slots slot, HumanoidCharacterProfile? profile) @@ -59,6 +63,10 @@ namespace Content.Shared.Roles { if ((slot == Slots.INNERCLOTHING) && (profile.Clothing == ClothingPreference.Jumpskirt) && (_innerClothingSkirt != "")) return _innerClothingSkirt; + if ((slot == Slots.BACKPACK) && (profile.Backpack == BackpackPreference.Satchel) && (_satchel != "")) + return _satchel; + if ((slot == Slots.BACKPACK) && (profile.Backpack == BackpackPreference.Duffelbag) && (_duffelbag != "")) + return _duffelbag; } if (_equipment.ContainsKey(slot)) diff --git a/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs b/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs index 2481c5cf88..b8a55e8792 100644 --- a/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs +++ b/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs @@ -36,6 +36,7 @@ namespace Content.Tests.Server.Preferences Color.Beige ), ClothingPreference.Jumpskirt, + BackpackPreference.Backpack, new Dictionary { {SharedGameTicker.OverflowJob, JobPriority.High} diff --git a/Resources/Prototypes/Catalog/Fills/backpack.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/backpack.yml similarity index 100% rename from Resources/Prototypes/Catalog/Fills/backpack.yml rename to Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/backpack.yml diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml new file mode 100644 index 0000000000..a359dfbd49 --- /dev/null +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml @@ -0,0 +1,75 @@ +- type: entity + abstract: true + parent: ClothingBackpackDuffel + id: ClothingBackpackDuffelFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +- type: entity + abstract: true + parent: ClothingBackpackDuffelClown + id: ClothingBackpackDuffelClownFilled + components: + - type: StorageFill + contents: + - name: BoxHug + +- type: entity + abstract: true + parent: ClothingBackpackDuffelSecurity + id: ClothingBackpackDuffelSecurityFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + - name: Stunbaton + - name: Flash + +- type: entity + abstract: true + parent: ClothingBackpackDuffelMedical + id: ClothingBackpackDuffelMedicalFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +- type: entity + abstract: true + parent: ClothingBackpackDuffelCaptain + id: ClothingBackpackDuffelCaptainFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + #- name: StationCharter + #- name: TelescopicBaton + +- type: entity + abstract: true + parent: ClothingBackpackDuffelEngineering + id: ClothingBackpackDuffelEngineeringFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +#- type: entity +# abstract: true +# parent: ClothingBackpackDuffelScience +# id: ClothingBackpackDuffelScienceFilled +# components: +# - type: StorageFill +# contents: +# - name: BoxSurvival + +#- type: entity +# abstract: true +# parent: ClothingBackpackDuffelChemistry +# id: ClothingBackpackDuffelChemistryFilled +# components: +# - type: StorageFill +# contents: +# - name: BoxSurvival diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml new file mode 100644 index 0000000000..a53b54fa07 --- /dev/null +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml @@ -0,0 +1,75 @@ +- type: entity + abstract: true + parent: ClothingBackpackSatchel + id: ClothingBackpackSatchelFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +#- type: entity +# abstract: true +# parent: ClothingBackpackSatchelClown +# id: ClothingBackpackSatchelClownFilled +# components: +# - type: StorageFill +# contents: +# - name: BoxHug + +- type: entity + abstract: true + parent: ClothingBackpackSatchelSecurity + id: ClothingBackpackSatchelSecurityFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + - name: Stunbaton + - name: Flash + +- type: entity + abstract: true + parent: ClothingBackpackSatchelMedical + id: ClothingBackpackSatchelMedicalFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +- type: entity + abstract: true + parent: ClothingBackpackSatchelCaptain + id: ClothingBackpackSatchelCaptainFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + #- name: StationCharter + #- name: TelescopicBaton + +- type: entity + abstract: true + parent: ClothingBackpackSatchelEngineering + id: ClothingBackpackSatchelEngineeringFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +- type: entity + abstract: true + parent: ClothingBackpackSatchelScience + id: ClothingBackpackSatchelScienceFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +- type: entity + abstract: true + parent: ClothingBackpackSatchelChemistry + id: ClothingBackpackSatchelChemistryFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival diff --git a/Resources/Prototypes/Catalog/Fills/duffel.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml similarity index 100% rename from Resources/Prototypes/Catalog/Fills/duffel.yml rename to Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml b/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml index cfaaf58949..767eee8a88 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml @@ -21,4 +21,5 @@ idcard: CargoPDA ears: ClothingHeadsetCargo innerclothingskirt: ClothingUniformJumpskirtCargo - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index e5dced21f9..3d9eabe13b 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -22,4 +22,5 @@ idcard: QuartermasterPDA ears: ClothingHeadsetCargo innerclothingskirt: ClothingUniformJumpskirtQM - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml b/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml index 6249154a98..be5e8f29ab 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml @@ -18,4 +18,5 @@ idcard: AssistantPDA ears: ClothingHeadsetService innerclothingskirt: ClothingUniformJumpskirtColorGrey - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml index 761e2f7ccd..c62541346d 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml @@ -22,4 +22,5 @@ idcard: BartenderPDA ears: ClothingHeadsetService innerclothingskirt: ClothingUniformJumpskirtBartender - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml index 59bdfd5db7..462bb1d2f2 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml @@ -22,4 +22,5 @@ ears: ClothingHeadsetService outerclothing: ClothingOuterApronBotanist innerclothingskirt: ClothingUniformJumpskirtHydroponics - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml index c4e0fb978b..a49a15e6ab 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml @@ -22,4 +22,5 @@ ears: ClothingHeadsetService outerclothing: ClothingOuterApronChef innerclothingskirt: ClothingUniformJumpskirtChef - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml index 15bdd058e8..46ef1db39b 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml @@ -21,3 +21,4 @@ pocket1: BikeHorn idcard: ClownPDA ears: ClothingHeadsetService + duffelbag: ClothingBackpackDuffelClownFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml b/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml index 5cd9cdabd6..b294e5e463 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml @@ -21,4 +21,5 @@ ears: ClothingHeadsetService belt: ClothingBeltJanitorFilled innerclothingskirt: ClothingUniformJumpskirtJanitor - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index 2000efb720..165ef640b9 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -48,3 +48,5 @@ outerclothing: ClothingOuterHardsuitCap idcard: CaptainPDA ears: ClothingHeadsetAltCommand + satchel: ClothingBackpackSatchelCaptainFilled + duffelbag: ClothingBackpackDuffelCaptainFilled diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 5558880f74..70dc494506 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -29,4 +29,5 @@ idcard: HoPPDA ears: ClothingHeadsetAltCommand innerclothingskirt: ClothingUniformJumpskirtHoP - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index d029293184..6bcff4639b 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -26,4 +26,5 @@ ears: ClothingHeadsetEngineering belt: ClothingBeltChiefEngineerFilled innerclothingskirt: ClothingUniformJumpskirtChiefEngineer - + satchel: ClothingBackpackSatchelEngineeringFilled + duffelbag: ClothingBackpackDuffelEngineeringFilled diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml index a7fa9b5d13..0b702ca6b6 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml @@ -24,4 +24,5 @@ belt: ClothingBeltUtilityFilled ears: ClothingHeadsetEngineering innerclothingskirt: ClothingUniformJumpskirtEngineering - + satchel: ClothingBackpackSatchelEngineeringFilled + duffelbag: ClothingBackpackDuffelEngineeringFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index c29a91a31c..4b06c0559a 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -27,4 +27,5 @@ ears: ClothingHeadsetAltMedical belt: ClothingBeltMedical innerclothingskirt: ClothingUniformJumpskirtCMO - + satchel: ClothingBackpackSatchelMedicalFilled + duffelbag: ClothingBackpackDuffelMedicalFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index 3e34d75574..81c9dd8ba0 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -22,4 +22,5 @@ ears: ClothingHeadsetMedical belt: ClothingBeltMedical innerclothingskirt: ClothingUniformJumpskirtMedicalDoctor - + satchel: ClothingBackpackSatchelMedicalFilled + duffelbag: ClothingBackpackDuffelMedicalFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 32202b4a79..7a89465e6d 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -23,4 +23,4 @@ idcard: RnDPDA ears: ClothingHeadsetScience innerclothingskirt: ClothingUniformJumpskirtResearchDirector - + satchel: ClothingBackpackSatchelScienceFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index 9d2c43eee9..e37628b019 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -21,4 +21,4 @@ idcard: SciencePDA ears: ClothingHeadsetScience innerclothingskirt: ClothingUniformJumpskirtScientist - + satchel: ClothingBackpackSatchelScienceFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 176222aa33..ffb90f4f16 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -30,4 +30,5 @@ ears: ClothingHeadsetAltSecurity belt: ClothingBeltSecurityFilled innerclothingskirt: ClothingUniformJumpskirtHoS - + satchel: ClothingBackpackSatchelSecurityFilled + duffelbag: ClothingBackpackDuffelSecurityFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index d9356cf6b3..07bc658f6a 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -25,4 +25,5 @@ ears: ClothingHeadsetSecurity belt: ClothingBeltSecurityFilled innerclothingskirt: ClothingUniformJumpskirtSec - + satchel: ClothingBackpackSatchelSecurityFilled + duffelbag: ClothingBackpackDuffelSecurityFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index c9d250f9e0..9051a5f796 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -26,4 +26,5 @@ ears: ClothingHeadsetSecurity belt: ClothingBeltSecurityFilled innerclothingskirt: ClothingUniformJumpskirtWarden - + satchel: ClothingBackpackSatchelSecurityFilled + duffelbag: ClothingBackpackDuffelSecurityFilled From c04a0270e13ba0e7a077bc1720c131de2c9a87b0 Mon Sep 17 00:00:00 2001 From: AJCM-git <60196617+AJCM-git@users.noreply.github.com> Date: Sun, 3 Jan 2021 11:23:50 -0400 Subject: [PATCH 029/166] Updates client IgnoredComponents list (#2859) --- Content.Client/IgnoredComponents.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index 676c7f33ca..9c2b038dec 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -228,7 +228,9 @@ namespace Content.Client "BiologicalSurgeryData", "CargoTelepad", "TraitorDeathMatchRedemption", - "GlassBeaker" + "GlassBeaker", + "DamageOtherOnHit", + "DamageOnLand" }; } } From 9c2aaef73a28a5a599e133cfb8739530a1478fa4 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Sun, 3 Jan 2021 17:20:17 +0100 Subject: [PATCH 030/166] Makes accept cloning message use Eui (#2910) --- .../AcceptCloningBoundUserInterface.cs | 45 ------------------- .../Components/Observer/AcceptCloningEui.cs | 41 +++++++++++++++++ .../{ => Observer}/AcceptCloningWindow.cs | 18 +++++--- .../Components/Medical/CloningPodComponent.cs | 19 +++----- .../Medical/MedicalScannerComponent.cs | 14 ++---- .../Components/Mobs/MindComponent.cs | 42 ----------------- .../Components/Observer/AcceptCloningEui.cs | 38 ++++++++++++++++ .../ChemMaster/SharedChemMasterComponent.cs | 4 +- .../Observer/AcceptCloningEuiMessage.cs | 24 ++++++++++ .../SharedAcceptCloningComponent.cs | 36 --------------- .../Entities/Mobs/Species/human.yml | 2 - 11 files changed, 129 insertions(+), 154 deletions(-) delete mode 100644 Content.Client/GameObjects/Components/AcceptCloningBoundUserInterface.cs create mode 100644 Content.Client/GameObjects/Components/Observer/AcceptCloningEui.cs rename Content.Client/GameObjects/Components/{ => Observer}/AcceptCloningWindow.cs (71%) create mode 100644 Content.Server/GameObjects/Components/Observer/AcceptCloningEui.cs create mode 100644 Content.Shared/GameObjects/Components/Observer/AcceptCloningEuiMessage.cs delete mode 100644 Content.Shared/GameObjects/Components/SharedAcceptCloningComponent.cs diff --git a/Content.Client/GameObjects/Components/AcceptCloningBoundUserInterface.cs b/Content.Client/GameObjects/Components/AcceptCloningBoundUserInterface.cs deleted file mode 100644 index 9b38059110..0000000000 --- a/Content.Client/GameObjects/Components/AcceptCloningBoundUserInterface.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Content.Shared.GameObjects.Components; -using JetBrains.Annotations; -using Robust.Client.GameObjects.Components.UserInterface; - -namespace Content.Client.GameObjects.Components -{ - [UsedImplicitly] - public class AcceptCloningBoundUserInterface : BoundUserInterface - { - - public AcceptCloningBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey) - { - } - - private AcceptCloningWindow _window; - - protected override void Open() - { - base.Open(); - - _window = new AcceptCloningWindow(); - _window.OnClose += Close; - _window.DenyButton.OnPressed += _ => _window.Close(); - _window.ConfirmButton.OnPressed += _ => - { - SendMessage( - new SharedAcceptCloningComponent.UiButtonPressedMessage( - SharedAcceptCloningComponent.UiButton.Accept)); - _window.Close(); - }; - _window.OpenCentered(); - } - - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - - if (disposing) - { - _window?.Dispose(); - } - } - - } -} diff --git a/Content.Client/GameObjects/Components/Observer/AcceptCloningEui.cs b/Content.Client/GameObjects/Components/Observer/AcceptCloningEui.cs new file mode 100644 index 0000000000..f274871f46 --- /dev/null +++ b/Content.Client/GameObjects/Components/Observer/AcceptCloningEui.cs @@ -0,0 +1,41 @@ +using Content.Client.Eui; +using Content.Shared.GameObjects.Components.Medical; +using Content.Shared.GameObjects.Components.Observer; +using JetBrains.Annotations; + +namespace Content.Client.GameObjects.Components.Observer +{ + [UsedImplicitly] + public class AcceptCloningEui : BaseEui + { + private readonly AcceptCloningWindow _window; + + public AcceptCloningEui() + { + _window = new AcceptCloningWindow(); + + _window.DenyButton.OnPressed += _ => + { + SendMessage(new AcceptCloningChoiceMessage(AcceptCloningUiButton.Deny)); + _window.Close(); + }; + + _window.AcceptButton.OnPressed += _ => + { + SendMessage(new AcceptCloningChoiceMessage(AcceptCloningUiButton.Accept)); + _window.Close(); + }; + } + + public override void Opened() + { + _window.OpenCentered(); + } + + public override void Closed() + { + _window.Close(); + } + + } +} diff --git a/Content.Client/GameObjects/Components/AcceptCloningWindow.cs b/Content.Client/GameObjects/Components/Observer/AcceptCloningWindow.cs similarity index 71% rename from Content.Client/GameObjects/Components/AcceptCloningWindow.cs rename to Content.Client/GameObjects/Components/Observer/AcceptCloningWindow.cs index 1731cc9676..ef1f39b881 100644 --- a/Content.Client/GameObjects/Components/AcceptCloningWindow.cs +++ b/Content.Client/GameObjects/Components/Observer/AcceptCloningWindow.cs @@ -1,14 +1,15 @@ #nullable enable +using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.Localization; -namespace Content.Client.GameObjects.Components +namespace Content.Client.GameObjects.Components.Observer { public sealed class AcceptCloningWindow : SS14Window { public readonly Button DenyButton; - public readonly Button ConfirmButton; + public readonly Button AcceptButton; public AcceptCloningWindow() { @@ -23,18 +24,25 @@ namespace Content.Client.GameObjects.Components { Children = { - (new Label + (new Label() { - Text = Loc.GetString("You are being cloned! Transfer your soul to the clone body?") + Text = Loc.GetString("You are being cloned!\nTransfer your soul to the clone body?") }), new HBoxContainer { + Align = BoxContainer.AlignMode.Center, Children = { - (ConfirmButton = new Button + (AcceptButton = new Button { Text = Loc.GetString("Yes"), }), + + (new Control() + { + CustomMinimumSize = (20, 0) + }), + (DenyButton = new Button { Text = Loc.GetString("No"), diff --git a/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs b/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs index eea9446d34..dc56625e60 100644 --- a/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs +++ b/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs @@ -1,5 +1,6 @@ #nullable enable using System; +using Content.Server.Eui; using Content.Server.GameObjects.Components.Mobs; using Content.Server.GameObjects.Components.Observer; using Content.Server.GameObjects.Components.Power.ApcNetComponents; @@ -35,6 +36,7 @@ namespace Content.Server.GameObjects.Components.Medical { [Dependency] private readonly IServerPreferencesManager _prefsManager = null!; [Dependency] private readonly IPlayerManager _playerManager = null!; + [Dependency] private readonly EuiManager _euiManager = null!; [ViewVariables] private bool Powered => !Owner.TryGetComponent(out PowerReceiverComponent? receiver) || receiver.Powered; @@ -179,9 +181,11 @@ namespace Content.Server.GameObjects.Components.Medical _bodyContainer.Insert(mob); _capturedMind = mind; - Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, - new CloningStartedMessage(_capturedMind)); _status = CloningPodStatus.NoMind; + + var acceptMessage = new AcceptCloningEui(mob); + _euiManager.OpenEui(acceptMessage, client); + UpdateAppearance(); break; @@ -201,17 +205,6 @@ namespace Content.Server.GameObjects.Components.Medical } } - public class CloningStartedMessage : EntitySystemMessage - { - public CloningStartedMessage(Mind capturedMind) - { - CapturedMind = capturedMind; - } - - public Mind CapturedMind { get; } - } - - private HumanoidCharacterProfile GetPlayerProfileAsync(NetUserId userId) { return (HumanoidCharacterProfile) _prefsManager.GetPreferences(userId).SelectedCharacter; diff --git a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs index 8013453635..b5c5f8d9ee 100644 --- a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs +++ b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs @@ -38,7 +38,6 @@ namespace Content.Server.GameObjects.Components.Medical public class MedicalScannerComponent : SharedMedicalScannerComponent, IActivate, IDragDropOn, IDestroyAct { [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly IPlayerManager _playerManager = null!; private static readonly TimeSpan InternalOpenAttemptDelay = TimeSpan.FromSeconds(0.5); private TimeSpan _lastInternalOpenAttempt; @@ -280,16 +279,11 @@ namespace Content.Server.GameObjects.Components.Medical { //TODO: Show a 'ERROR: Body is completely devoid of soul' if no Mind owns the entity. var cloningSystem = EntitySystem.Get(); - cloningSystem.AddToDnaScans(_playerManager - .GetPlayersBy(playerSession => - { - var mindOwnedMob = playerSession.ContentData()?.Mind?.OwnedEntity; - return mindOwnedMob != null && mindOwnedMob == - _bodyContainer.ContainedEntity; - }).Single() - .ContentData() - ?.Mind); + if (!_bodyContainer.ContainedEntity.TryGetComponent(out MindComponent? mind) || !mind.HasMind) + break; + + cloningSystem.AddToDnaScans(mind.Mind); } break; diff --git a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs index 76640dd2bf..649bee206f 100644 --- a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs @@ -59,48 +59,6 @@ namespace Content.Server.GameObjects.Components.Mobs [ViewVariables(VVAccess.ReadWrite)] public bool GhostOnShutdown { get; set; } - [ViewVariables] - private BoundUserInterface? UserInterface => - Owner.GetUIOrNull(SharedAcceptCloningComponent.AcceptCloningUiKey.Key); - - - public override void Initialize() - { - base.Initialize(); - Owner.EntityManager.EventBus.SubscribeEvent( - EventSource.Local, this, - HandleCloningStartedMessage); - - if (UserInterface != null) - { - UserInterface.OnReceiveMessage += OnUiAcceptCloningMessage; - } - } - - private void HandleCloningStartedMessage(CloningPodComponent.CloningStartedMessage ev) - { - if (ev.CapturedMind == Mind) - { - UserInterface?.Open(Mind.Session); - } - } - - private void OnUiAcceptCloningMessage(ServerBoundUserInterfaceMessage obj) - { - if (obj.Message is not SharedAcceptCloningComponent.UiButtonPressedMessage) return; - if (Mind != null) - { - Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, new GhostComponent.GhostReturnMessage(Mind)); - } - } - - public override void OnRemove() - { - base.OnRemove(); - Owner.EntityManager.EventBus.UnsubscribeEvent(EventSource.Local, this); - if (UserInterface != null) UserInterface.OnReceiveMessage -= OnUiAcceptCloningMessage; - } - /// /// Don't call this unless you know what the hell you're doing. /// Use instead. diff --git a/Content.Server/GameObjects/Components/Observer/AcceptCloningEui.cs b/Content.Server/GameObjects/Components/Observer/AcceptCloningEui.cs new file mode 100644 index 0000000000..fda157ed76 --- /dev/null +++ b/Content.Server/GameObjects/Components/Observer/AcceptCloningEui.cs @@ -0,0 +1,38 @@ +#nullable enable +using Content.Server.Eui; +using Content.Server.GameObjects.Components.Mobs; +using Content.Server.Players; +using Content.Shared.Eui; +using Content.Shared.GameObjects.Components.Observer; +using Robust.Server.Interfaces.Player; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Log; + +namespace Content.Server.GameObjects.Components.Observer +{ + public class AcceptCloningEui : BaseEui + { + private readonly IEntity _newMob; + + public AcceptCloningEui(IEntity newMob) + { + _newMob = newMob; + } + + public override void HandleMessage(EuiMessageBase msg) + { + base.HandleMessage(msg); + + if (msg is not AcceptCloningChoiceMessage choice + || choice.Button == AcceptCloningUiButton.Deny + || _newMob.Deleted) + { + Close(); + return; + } + + Player.ContentData()?.Mind?.TransferTo(_newMob); + Close(); + } + } +} diff --git a/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs b/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs index 43d1584381..8aed76f83b 100644 --- a/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs +++ b/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs @@ -2,6 +2,8 @@ using System; using System.Collections.Generic; using Content.Shared.Chemistry; +using Content.Shared.GameObjects.Components.Medical; +using Content.Shared.GameObjects.Components.Observer; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.UserInterface; using Robust.Shared.Serialization; @@ -102,7 +104,7 @@ namespace Content.Shared.GameObjects.Components.Chemistry.ChemMaster } /// - /// Used in to specify which button was pressed. + /// Used in to specify which button was pressed. /// public enum UiAction { diff --git a/Content.Shared/GameObjects/Components/Observer/AcceptCloningEuiMessage.cs b/Content.Shared/GameObjects/Components/Observer/AcceptCloningEuiMessage.cs new file mode 100644 index 0000000000..64bedec346 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Observer/AcceptCloningEuiMessage.cs @@ -0,0 +1,24 @@ +using System; +using Content.Shared.Eui; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Observer +{ + [Serializable, NetSerializable] + public enum AcceptCloningUiButton + { + Deny, + Accept, + } + + [Serializable, NetSerializable] + public class AcceptCloningChoiceMessage : EuiMessageBase + { + public readonly AcceptCloningUiButton Button; + + public AcceptCloningChoiceMessage(AcceptCloningUiButton button) + { + Button = button; + } + } +} diff --git a/Content.Shared/GameObjects/Components/SharedAcceptCloningComponent.cs b/Content.Shared/GameObjects/Components/SharedAcceptCloningComponent.cs deleted file mode 100644 index 94383004c5..0000000000 --- a/Content.Shared/GameObjects/Components/SharedAcceptCloningComponent.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Components.UserInterface; -using Robust.Shared.Serialization; - -namespace Content.Shared.GameObjects.Components -{ - public class SharedAcceptCloningComponent : Component - { - public override string Name => "AcceptCloning"; - - [Serializable, NetSerializable] - public enum AcceptCloningUiKey - { - Key - } - - [Serializable, NetSerializable] - public enum UiButton - { - Accept - } - - [Serializable, NetSerializable] - public class UiButtonPressedMessage : BoundUserInterfaceMessage - { - public readonly UiButton Button; - - public UiButtonPressedMessage(UiButton button) - { - Button = button; - } - } - - } -} diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index eea4b34452..1837d88b4c 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -195,8 +195,6 @@ interfaces: - key: enum.StrippingUiKey.Key type: StrippableBoundUserInterface - - key: enum.AcceptCloningUiKey.Key - type: AcceptCloningBoundUserInterface - type: Puller - type: Butcherable meat: FoodMeat From c1f53a430307cee640f3c13a8e951728d3d22613 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 4 Jan 2021 09:17:44 +0100 Subject: [PATCH 031/166] Clean up a ton of bugs with suspicion. --- .../Suspicion/SuspicionRoleComponent.cs | 79 +++------------ .../Components/Suspicion/TraitorOverlay.cs | 36 +++---- .../UserInterface/Suspicion/SuspicionGui.cs | 7 +- .../Suspicion/SuspicionRoleComponent.cs | 98 +++---------------- .../Suspicion/SharedSuspicionRoleComponent.cs | 49 +--------- 5 files changed, 47 insertions(+), 222 deletions(-) diff --git a/Content.Client/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs b/Content.Client/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs index 503aceaf2d..c3753d94bc 100644 --- a/Content.Client/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs +++ b/Content.Client/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs @@ -6,14 +6,11 @@ using Content.Shared.GameObjects.Components.Suspicion; using Robust.Client.GameObjects; using Robust.Client.Interfaces.Graphics.ClientEye; using Robust.Client.Interfaces.Graphics.Overlays; -using Robust.Client.Interfaces.Input; using Robust.Client.Interfaces.ResourceManagement; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Interfaces.Network; using Robust.Shared.IoC; -using Robust.Shared.Players; -using Robust.Shared.Prototypes; +using Robust.Shared.ViewVariables; namespace Content.Client.GameObjects.Components.Suspicion { @@ -28,6 +25,7 @@ namespace Content.Client.GameObjects.Components.Suspicion private SuspicionGui? _gui; private string? _role; private bool? _antagonist; + private bool _overlayActive; public string? Role { @@ -67,37 +65,8 @@ namespace Content.Client.GameObjects.Components.Suspicion } } - public HashSet Allies { get; } = new(); - - private bool AddAlly(EntityUid ally) - { - if (!Allies.Add(ally)) - { - return false; - } - - if (!_overlayManager.TryGetOverlay(nameof(TraitorOverlay), out var overlay)) - { - return false; - } - - return overlay.AddAlly(ally); - } - - private bool RemoveAlly(EntityUid ally) - { - if (!Allies.Remove(ally)) - { - return false; - } - - if (!_overlayManager.TryGetOverlay(nameof(TraitorOverlay), out var overlay)) - { - return false; - } - - return overlay.RemoveAlly(ally); - } + [ViewVariables] + public List<(string name, EntityUid uid)> Allies { get; } = new(); private void AddTraitorOverlay() { @@ -106,12 +75,18 @@ namespace Content.Client.GameObjects.Components.Suspicion return; } - var overlay = new TraitorOverlay(Owner, Owner.EntityManager, _resourceCache, _eyeManager); + _overlayActive = true; + var overlay = new TraitorOverlay(Owner.EntityManager, _resourceCache, _eyeManager); _overlayManager.AddOverlay(overlay); } private void RemoveTraitorOverlay() { + if (!_overlayActive) + { + return; + } + _overlayManager.RemoveOverlay(nameof(TraitorOverlay)); } @@ -126,6 +101,8 @@ namespace Content.Client.GameObjects.Components.Suspicion Role = state.Role; Antagonist = state.Antagonist; + Allies.Clear(); + Allies.AddRange(state.Allies); } public override void HandleMessage(ComponentMessage message, IComponent? component) @@ -160,36 +137,6 @@ namespace Content.Client.GameObjects.Components.Suspicion } } - public override void HandleNetworkMessage(ComponentMessage message, INetChannel netChannel, ICommonSession? session = null) - { - base.HandleNetworkMessage(message, netChannel, session); - - switch (message) - { - case SuspicionAlliesMessage msg: - { - Allies.Clear(); - - foreach (var uid in msg.Allies) - { - AddAlly(uid); - } - - break; - } - case SuspicionAllyAddedMessage msg: - { - AddAlly(msg.Ally); - break; - } - case SuspicionAllyRemovedMessage msg: - { - RemoveAlly(msg.Ally); - break; - } - } - } - public override void OnRemove() { base.OnRemove(); diff --git a/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs b/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs index 761d654b36..abf40e340c 100644 --- a/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs +++ b/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs @@ -1,14 +1,14 @@ -using System.Collections.Generic; -using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.GameObjects.EntitySystems; using Robust.Client.Graphics; using Robust.Client.Graphics.Drawing; using Robust.Client.Graphics.Overlays; using Robust.Client.Interfaces.Graphics.ClientEye; using Robust.Client.Interfaces.ResourceManagement; +using Robust.Client.Player; using Robust.Client.ResourceManagement; -using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; @@ -18,37 +18,25 @@ namespace Content.Client.GameObjects.Components.Suspicion { private readonly IEntityManager _entityManager; private readonly IEyeManager _eyeManager; + private readonly IPlayerManager _playerManager; public override OverlaySpace Space => OverlaySpace.ScreenSpace; private readonly Font _font; - private readonly IEntity _user; - private readonly HashSet _allies = new(); private readonly string _traitorText = Loc.GetString("Traitor"); public TraitorOverlay( - IEntity user, IEntityManager entityManager, IResourceCache resourceCache, IEyeManager eyeManager) : base(nameof(TraitorOverlay)) { + _playerManager = IoCManager.Resolve(); + _entityManager = entityManager; _eyeManager = eyeManager; _font = new VectorFont(resourceCache.GetResource("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); - - _user = user; - } - - public bool AddAlly(EntityUid ally) - { - return _allies.Add(ally); - } - - public bool RemoveAlly(EntityUid ally) - { - return _allies.Remove(ally); } protected override void Draw(DrawingHandleBase handle, OverlaySpace currentSpace) @@ -65,7 +53,13 @@ namespace Content.Client.GameObjects.Components.Suspicion { var viewport = _eyeManager.GetWorldViewport(); - foreach (var uid in _allies) + var ent = _playerManager.LocalPlayer?.ControlledEntity; + if (ent == null || ent.TryGetComponent(out SuspicionRoleComponent sus) != true) + { + return; + } + + foreach (var (_, uid) in sus.Allies) { // Otherwise the entity can not exist yet if (!_entityManager.TryGetEntity(uid, out var ally)) @@ -78,8 +72,8 @@ namespace Content.Client.GameObjects.Components.Suspicion return; } - if (!ExamineSystemShared.InRangeUnOccluded(_user.Transform.MapPosition, ally.Transform.MapPosition, 15, - entity => entity == _user || entity == ally)) + if (!ExamineSystemShared.InRangeUnOccluded(ent.Transform.MapPosition, ally.Transform.MapPosition, 15, + entity => entity == ent || entity == ally)) { return; } diff --git a/Content.Client/UserInterface/Suspicion/SuspicionGui.cs b/Content.Client/UserInterface/Suspicion/SuspicionGui.cs index d42d9337d3..01b88dce9c 100644 --- a/Content.Client/UserInterface/Suspicion/SuspicionGui.cs +++ b/Content.Client/UserInterface/Suspicion/SuspicionGui.cs @@ -58,14 +58,11 @@ namespace Content.Client.UserInterface.Suspicion return; } - var allies = string.Join(", ", - role.Allies.Select(uid => _entityManager.GetEntity(uid).Name)); + var allies = string.Join(", ", role.Allies.Select(tuple => tuple.name)); var message = role.Allies.Count switch { 0 => Loc.GetString("You have no allies"), - 1 => Loc.GetString("Your ally is {0}", allies), - var n when n > 2 => Loc.GetString("Your allies are {0}", allies), - _ => throw new ArgumentException($"Invalid number of allies: {role.Allies.Count}") + var n => Loc.GetPluralString("Your ally is {0}", "Your allies are {0}", n, allies), }; role.Owner.PopupMessage(message); diff --git a/Content.Server/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs b/Content.Server/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs index 06ea81e88e..641080e643 100644 --- a/Content.Server/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs +++ b/Content.Server/GameObjects/Components/Suspicion/SuspicionRoleComponent.cs @@ -1,4 +1,5 @@ #nullable enable +using System; using System.Collections.Generic; using System.Linq; using Content.Server.GameObjects.Components.Mobs; @@ -6,12 +7,10 @@ using Content.Server.GameObjects.EntitySystems; using Content.Server.Mobs; using Content.Server.Mobs.Roles; using Content.Server.Mobs.Roles.Suspicion; -using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.Components.Mobs.State; using Content.Shared.GameObjects.Components.Suspicion; using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects; -using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; @@ -25,6 +24,7 @@ namespace Content.Server.GameObjects.Components.Suspicion public class SuspicionRoleComponent : SharedSuspicionRoleComponent, IExamine { private Role? _role; + [ViewVariables] private readonly HashSet _allies = new(); [ViewVariables] @@ -67,16 +67,12 @@ namespace Content.Server.GameObjects.Components.Suspicion public bool IsInnocent() { - return Owner.TryGetComponent(out MindComponent? mind) && - mind.HasMind && - mind.Mind!.HasRole(); + return !IsTraitor(); } public bool IsTraitor() { - return Owner.TryGetComponent(out MindComponent? mind) && - mind.HasMind && - mind.Mind!.HasRole(); + return Role?.Antagonist ?? false; } public void SyncRoles() @@ -98,36 +94,13 @@ namespace Content.Server.GameObjects.Components.Suspicion } _allies.Add(ally); - - if (KnowsAllies && Owner.TryGetComponent(out IActorComponent? actor)) - { - var channel = actor.playerSession.ConnectedClient; - DebugTools.AssertNotNull(channel); - - var message = new SuspicionAllyAddedMessage(ally.Owner.Uid); - - SendNetworkMessage(message, channel); - } } public bool RemoveAlly(SuspicionRoleComponent ally) { - if (ally == this) - { - return false; - } - if (_allies.Remove(ally)) { - if (KnowsAllies && Owner.TryGetComponent(out IActorComponent? actor)) - { - var channel = actor.playerSession.ConnectedClient; - DebugTools.AssertNotNull(channel); - - var message = new SuspicionAllyRemovedMessage(ally.Owner.Uid); - - SendNetworkMessage(message, channel); - } + Dirty(); return true; } @@ -139,46 +112,16 @@ namespace Content.Server.GameObjects.Components.Suspicion { _allies.Clear(); - foreach (var ally in allies) - { - if (ally == this) - { - continue; - } + _allies.UnionWith(allies.Where(a => a != this)); - _allies.Add(ally); - } - - if (!KnowsAllies || - !Owner.TryGetComponent(out IActorComponent? actor)) - { - return; - } - - var channel = actor.playerSession.ConnectedClient; - DebugTools.AssertNotNull(channel); - - var message = new SuspicionAlliesMessage(_allies.Select(role => role.Owner.Uid)); - - SendNetworkMessage(message, channel); + Dirty(); } public void ClearAllies() { _allies.Clear(); - if (!KnowsAllies || - !Owner.TryGetComponent(out IActorComponent? actor)) - { - return; - } - - var channel = actor.playerSession.ConnectedClient; - DebugTools.AssertNotNull(channel); - - var message = new SuspicionAlliesClearedMessage(); - - SendNetworkMessage(message, channel); + Dirty(); } void IExamine.Examine(FormattedMessage message, bool inDetailsRange) @@ -199,39 +142,28 @@ namespace Content.Server.GameObjects.Components.Suspicion message.AddMarkup(tooltip); } - public override void OnRemove() - { - Role = null; - base.OnRemove(); - } - public override ComponentState GetComponentState() { return Role == null - ? new SuspicionRoleComponentState(null, null) - : new SuspicionRoleComponentState(Role?.Name, Role?.Antagonist); + ? new SuspicionRoleComponentState(null, null, Array.Empty<(string, EntityUid)>()) + : new SuspicionRoleComponentState(Role?.Name, Role?.Antagonist, + _allies.Select(a => (a.Role!.Mind.CharacterName, a.Owner.Uid)).ToArray()); } public override void HandleMessage(ComponentMessage message, IComponent? component) { base.HandleMessage(message, component); - if (message is not RoleMessage msg || - msg.Role is not SuspicionRole role) - { - return; - } - switch (message) { - case PlayerAttachedMsg _: - case PlayerDetachedMsg _: + case PlayerAttachedMsg: + case PlayerDetachedMsg: SyncRoles(); break; - case RoleAddedMessage _: + case RoleAddedMessage {Role: SuspicionRole role}: Role = role; break; - case RoleRemovedMessage _: + case RoleRemovedMessage {Role: SuspicionRole}: Role = null; break; } diff --git a/Content.Shared/GameObjects/Components/Suspicion/SharedSuspicionRoleComponent.cs b/Content.Shared/GameObjects/Components/Suspicion/SharedSuspicionRoleComponent.cs index c31e2e7cce..7bee76b3e2 100644 --- a/Content.Shared/GameObjects/Components/Suspicion/SharedSuspicionRoleComponent.cs +++ b/Content.Shared/GameObjects/Components/Suspicion/SharedSuspicionRoleComponent.cs @@ -18,58 +18,13 @@ namespace Content.Shared.GameObjects.Components.Suspicion { public readonly string? Role; public readonly bool? Antagonist; + public readonly (string name, EntityUid)[] Allies; - public SuspicionRoleComponentState(string? role, bool? antagonist) : base(ContentNetIDs.SUSPICION_ROLE) + public SuspicionRoleComponentState(string? role, bool? antagonist, (string name, EntityUid)[] allies) : base(ContentNetIDs.SUSPICION_ROLE) { Role = role; Antagonist = antagonist; - } - } - - [Serializable, NetSerializable] - public class SuspicionAlliesMessage : ComponentMessage - { - public readonly HashSet Allies; - - public SuspicionAlliesMessage(HashSet allies) - { - Directed = true; Allies = allies; } - - public SuspicionAlliesMessage(IEnumerable allies) : this(allies.ToHashSet()) { } - } - - [Serializable, NetSerializable] - public class SuspicionAllyAddedMessage : ComponentMessage - { - public readonly EntityUid Ally; - - public SuspicionAllyAddedMessage(EntityUid ally) - { - Directed = true; - Ally = ally; - } - } - - [Serializable, NetSerializable] - public class SuspicionAllyRemovedMessage : ComponentMessage - { - public readonly EntityUid Ally; - - public SuspicionAllyRemovedMessage(EntityUid ally) - { - Directed = true; - Ally = ally; - } - } - - [Serializable, NetSerializable] - public class SuspicionAlliesClearedMessage : ComponentMessage - { - public SuspicionAlliesClearedMessage() - { - Directed = true; - } } } From 447f0af6c2b68f5decbe5bc937fd5a4ac409dfe4 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 4 Jan 2021 05:25:33 -0300 Subject: [PATCH 032/166] Allows admins to see deadchat and adds a toggle for deadchat for admins and ghosts (#2904) --- Content.Client/Chat/ChatBox.cs | 11 ++++ Content.Client/Chat/ChatManager.cs | 51 +++++++++++++------ .../Components/Observer/GhostComponent.cs | 4 ++ .../Interfaces/Chat/IChatManager.cs | 2 + Content.Server/Chat/ChatManager.cs | 7 +-- 5 files changed, 57 insertions(+), 18 deletions(-) diff --git a/Content.Client/Chat/ChatBox.cs b/Content.Client/Chat/ChatBox.cs index 75e65ff87f..60fcab57c2 100644 --- a/Content.Client/Chat/ChatBox.cs +++ b/Content.Client/Chat/ChatBox.cs @@ -23,6 +23,7 @@ namespace Content.Client.Chat public Button LocalButton { get; } public Button OOCButton { get; } public Button AdminButton { get; } + public Button DeadButton { get; } /// /// Default formatting string for the ClientChatConsole. @@ -103,13 +104,23 @@ namespace Content.Client.Chat Visible = false }; + DeadButton = new Button + { + Text = Loc.GetString("Dead"), + Name = "Dead", + ToggleMode = true, + Visible = false + }; + AllButton.OnToggled += OnFilterToggled; LocalButton.OnToggled += OnFilterToggled; OOCButton.OnToggled += OnFilterToggled; AdminButton.OnToggled += OnFilterToggled; + DeadButton.OnToggled += OnFilterToggled; hBox.AddChild(AllButton); hBox.AddChild(LocalButton); + hBox.AddChild(DeadButton); hBox.AddChild(OOCButton); hBox.AddChild(AdminButton); diff --git a/Content.Client/Chat/ChatManager.cs b/Content.Client/Chat/ChatManager.cs index fbbc634249..07431434ab 100644 --- a/Content.Client/Chat/ChatManager.cs +++ b/Content.Client/Chat/ChatManager.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Client.Administration; using Content.Client.Interfaces.Chat; using Content.Shared.Administration; @@ -61,13 +61,14 @@ namespace Content.Client.Chat private const char MeAlias = '@'; private const char AdminChatAlias = ']'; - private readonly List filteredHistory = new(); + private readonly List _filteredHistory = new(); // Filter Button States private bool _allState; private bool _localState; private bool _oocState; private bool _adminState; + private bool _deadState; // Flag Enums for holding filtered channels private ChatChannel _filteredChannels; @@ -98,8 +99,8 @@ namespace Content.Client.Chat public void Initialize() { - _netManager.RegisterNetMessage(MsgChatMessage.NAME, _onChatMessage); - _netManager.RegisterNetMessage(ChatMaxMsgLengthMessage.NAME, _onMaxLengthReceived); + _netManager.RegisterNetMessage(MsgChatMessage.NAME, OnChatMessage); + _netManager.RegisterNetMessage(ChatMaxMsgLengthMessage.NAME, OnMaxLengthReceived); _speechBubbleRoot = new LayoutContainer(); LayoutContainer.SetAnchorPreset(_speechBubbleRoot, LayoutContainer.LayoutPreset.Wide); @@ -152,24 +153,25 @@ namespace Content.Client.Chat { if (_currentChatBox != null) { - _currentChatBox.TextSubmitted -= _onChatBoxTextSubmitted; - _currentChatBox.FilterToggled -= _onFilterButtonToggled; + _currentChatBox.TextSubmitted -= OnChatBoxTextSubmitted; + _currentChatBox.FilterToggled -= OnFilterButtonToggled; } _currentChatBox = chatBox; if (_currentChatBox != null) { - _currentChatBox.TextSubmitted += _onChatBoxTextSubmitted; - _currentChatBox.FilterToggled += _onFilterButtonToggled; + _currentChatBox.TextSubmitted += OnChatBoxTextSubmitted; + _currentChatBox.FilterToggled += OnFilterButtonToggled; _currentChatBox.AllButton.Pressed = !_allState; _currentChatBox.LocalButton.Pressed = !_localState; _currentChatBox.OOCButton.Pressed = !_oocState; _currentChatBox.AdminButton.Pressed = !_adminState; + _currentChatBox.DeadButton.Pressed = !_deadState; AdminStatusUpdated(); } - RepopulateChat(filteredHistory); + RepopulateChat(_filteredHistory); } public void RemoveSpeechBubble(EntityUid entityUid, SpeechBubble bubble) @@ -224,7 +226,7 @@ namespace Content.Client.Chat _currentChatBox?.AddLine(messageText, message.Channel, color); } - private void _onChatBoxTextSubmitted(ChatBox chatBox, string text) + private void OnChatBoxTextSubmitted(ChatBox chatBox, string text) { DebugTools.Assert(chatBox == _currentChatBox); @@ -295,7 +297,7 @@ namespace Content.Client.Chat } } - private void _onFilterButtonToggled(ChatBox chatBox, BaseButton.ButtonToggledEventArgs e) + private void OnFilterButtonToggled(ChatBox chatBox, BaseButton.ButtonToggledEventArgs e) { switch (e.Button.Name) { @@ -336,6 +338,13 @@ namespace Content.Client.Chat _filteredChannels &= ~ChatChannel.AdminChat; break; } + case "Dead": + _deadState = !_deadState; + if (_deadState) + _filteredChannels |= ChatChannel.Dead; + else + _filteredChannels &= ~ChatChannel.Dead; + break; case "ALL": chatBox.LocalButton.Pressed ^= true; @@ -346,7 +355,7 @@ namespace Content.Client.Chat break; } - RepopulateChat(filteredHistory); + RepopulateChat(_filteredHistory); } private void RepopulateChat(IEnumerable filteredMessages) @@ -364,11 +373,11 @@ namespace Content.Client.Chat } } - private void _onChatMessage(MsgChatMessage msg) + private void OnChatMessage(MsgChatMessage msg) { // Log all incoming chat to repopulate when filter is un-toggled var storedMessage = new StoredChatMessage(msg); - filteredHistory.Add(storedMessage); + _filteredHistory.Add(storedMessage); WriteChatMessage(storedMessage); // Local messages that have an entity attached get a speech bubble. @@ -388,7 +397,7 @@ namespace Content.Client.Chat } } - private void _onMaxLengthReceived(ChatMaxMsgLengthMessage msg) + private void OnMaxLengthReceived(ChatMaxMsgLengthMessage msg) { _maxMessageLength = msg.MaxMessageLength; } @@ -522,6 +531,18 @@ namespace Content.Client.Chat if (_currentChatBox != null) { _currentChatBox.AdminButton.Visible = _adminMgr.HasFlag(AdminFlags.Admin); + _currentChatBox.DeadButton.Visible = _adminMgr.HasFlag(AdminFlags.Admin); + } + } + + public void ToggleDeadChatButtonVisibility(bool visibility) + { + if (_currentChatBox != null) + { + // If the user is an admin and returned to body, don't set the flag as null + if (!visibility && _adminMgr.HasFlag(AdminFlags.Admin)) + return; + _currentChatBox.DeadButton.Visible = visibility; } } diff --git a/Content.Client/GameObjects/Components/Observer/GhostComponent.cs b/Content.Client/GameObjects/Components/Observer/GhostComponent.cs index 956dbe6e89..8af023096f 100644 --- a/Content.Client/GameObjects/Components/Observer/GhostComponent.cs +++ b/Content.Client/GameObjects/Components/Observer/GhostComponent.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Content.Client.Interfaces.Chat; using Content.Client.UserInterface; using Content.Shared.GameObjects.Components.Observer; using Robust.Client.GameObjects; @@ -19,6 +20,7 @@ namespace Content.Client.GameObjects.Components.Observer [Dependency] private readonly IGameHud _gameHud = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IComponentManager _componentManager = default!; + [Dependency] private readonly IChatManager _chatManager = default!; public List WarpNames = new(); public Dictionary PlayerNames = new(); @@ -83,6 +85,7 @@ namespace Content.Client.GameObjects.Components.Observer _gameHud.HandsContainer.AddChild(_gui); SetGhostVisibility(true); _isAttached = true; + _chatManager.ToggleDeadChatButtonVisibility(true); break; @@ -90,6 +93,7 @@ namespace Content.Client.GameObjects.Components.Observer _gui!.Parent?.RemoveChild(_gui); SetGhostVisibility(false); _isAttached = false; + _chatManager.ToggleDeadChatButtonVisibility(false); break; } } diff --git a/Content.Client/Interfaces/Chat/IChatManager.cs b/Content.Client/Interfaces/Chat/IChatManager.cs index 814fc18b75..1036189093 100644 --- a/Content.Client/Interfaces/Chat/IChatManager.cs +++ b/Content.Client/Interfaces/Chat/IChatManager.cs @@ -13,5 +13,7 @@ namespace Content.Client.Interfaces.Chat void SetChatBox(ChatBox chatBox); void RemoveSpeechBubble(EntityUid entityUid, SpeechBubble bubble); + + void ToggleDeadChatButtonVisibility(bool visibility); } } diff --git a/Content.Server/Chat/ChatManager.cs b/Content.Server/Chat/ChatManager.cs index 72c2842b1e..e1b614f017 100644 --- a/Content.Server/Chat/ChatManager.cs +++ b/Content.Server/Chat/ChatManager.cs @@ -52,7 +52,7 @@ namespace Content.Server.Chat public void Initialize() { _netManager.RegisterNetMessage(MsgChatMessage.NAME); - _netManager.RegisterNetMessage(ChatMaxMsgLengthMessage.NAME, _onMaxLengthRequest); + _netManager.RegisterNetMessage(ChatMaxMsgLengthMessage.NAME, OnMaxLengthRequest); // Tell all the connected players the chat's character limit var msg = _netManager.CreateNetMessage(); @@ -244,7 +244,8 @@ namespace Content.Server.Chat { return _playerManager .GetPlayersBy(x => x.AttachedEntity != null && x.AttachedEntity.HasComponent()) - .Select(p => p.ConnectedClient); + .Select(p => p.ConnectedClient) + .Union(_adminManager.ActiveAdmins.Select(p => p.ConnectedClient)); } public void SendAdminChat(IPlayerSession player, string message) @@ -288,7 +289,7 @@ namespace Content.Server.Chat _netManager.ServerSendToAll(msg); } - private void _onMaxLengthRequest(ChatMaxMsgLengthMessage msg) + private void OnMaxLengthRequest(ChatMaxMsgLengthMessage msg) { var response = _netManager.CreateNetMessage(); response.MaxMessageLength = MaxMessageLength; From 350f7313be2678957e4a57f7be14bc16e51d4484 Mon Sep 17 00:00:00 2001 From: Swept Date: Tue, 5 Jan 2021 01:10:24 +0000 Subject: [PATCH 033/166] Replaces medical scanner sprite. (#2870) * Initial * Let's go * Updates the pods meta.json cause I can --- .../MedicalScannerVisualizer.cs | 24 ++--- .../Medical}/cloning_machine.yml | 2 +- .../Medical}/medical_scanner.yml | 7 +- .../Power/medical_scanner.rsi/meta.json | 1 - .../medical_scanner.rsi/scanner_death.png | Bin 1483 -> 0 bytes .../medical_scanner.rsi/scanner_green.png | Bin 2079 -> 0 bytes .../medical_scanner.rsi/scanner_icon.png | Bin 904 -> 0 bytes .../Power/medical_scanner.rsi/scanner_off.png | Bin 867 -> 0 bytes .../medical_scanner.rsi/scanner_open.png | Bin 1037 -> 0 bytes .../Power/medical_scanner.rsi/scanner_red.png | Bin 2055 -> 0 bytes .../scanner_terminal_blue.png | Bin 1368 -> 0 bytes .../scanner_terminal_dead.png | Bin 1363 -> 0 bytes .../scanner_terminal_green.png | Bin 1481 -> 0 bytes .../scanner_terminal_off.png | Bin 883 -> 0 bytes .../scanner_terminal_red.png | Bin 1473 -> 0 bytes .../medical_scanner.rsi/scanner_yellow.png | Bin 2092 -> 0 bytes .../Specific/Medical/cloning.rsi/meta.json | 51 ++++++++++ .../Specific/Medical/cloning.rsi}/pod_0.png | Bin .../Specific/Medical/cloning.rsi/pod_1.png | Bin .../Specific/Medical/cloning.rsi/pod_e.png | Bin .../Specific/Medical/cloning.rsi/pod_g.png | Bin .../Specific/Medical/scanner.rsi/closed.png | Bin 0 -> 1708 bytes .../Medical/scanner.rsi/closed_unpowered.png} | Bin .../Medical/scanner.rsi/idle_unlit.png | Bin 0 -> 338 bytes .../Medical/scanner.rsi/maint_unlit.png | Bin 0 -> 142 bytes .../Specific/Medical/scanner.rsi/meta.json | 77 +++++++++++++++ .../Medical/scanner.rsi/occupied.png} | Bin .../Medical/scanner.rsi/occupied_unlit.png | Bin 0 -> 88 bytes .../Medical/scanner.rsi/off_unlit.png | Bin 0 -> 112 bytes .../Specific/Medical/scanner.rsi/open.png | Bin 0 -> 1670 bytes .../Medical/scanner.rsi/open_unpowered.png} | Bin .../Medical/scanner.rsi/red_unlit.png | Bin 0 -> 160 bytes .../Medical/BodyScanner.rsi/meta.json | 88 ------------------ .../Medical/BodyScanner.rsi/scanner.png | Bin 1938 -> 0 bytes .../BodyScanner.rsi/scanner_maintenance.png | Bin 1782 -> 0 bytes .../Medical/BodyScanner.rsi/scanner_open.png | Bin 1910 -> 0 bytes .../scanner_open_maintenance.png | Bin 1750 -> 0 bytes .../Specific/Medical/cloning.rsi/meta.json | 56 ----------- .../Specific/Medical/cloning.rsi/pod_0.png | Bin 1319 -> 0 bytes 39 files changed, 144 insertions(+), 162 deletions(-) rename Resources/Prototypes/Entities/Constructible/{Power => Specific/Medical}/cloning_machine.yml (95%) rename Resources/Prototypes/Entities/Constructible/{Power => Specific/Medical}/medical_scanner.yml (87%) delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/meta.json delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_death.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_green.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_icon.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_off.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_open.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_red.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_blue.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_dead.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_green.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_off.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_red.png delete mode 100644 Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_yellow.png create mode 100644 Resources/Textures/Constructible/Specific/Medical/cloning.rsi/meta.json rename Resources/Textures/{Objects/Specific/Medical/BodyScanner.rsi => Constructible/Specific/Medical/cloning.rsi}/pod_0.png (100%) rename Resources/Textures/{Objects => Constructible}/Specific/Medical/cloning.rsi/pod_1.png (100%) rename Resources/Textures/{Objects => Constructible}/Specific/Medical/cloning.rsi/pod_e.png (100%) rename Resources/Textures/{Objects => Constructible}/Specific/Medical/cloning.rsi/pod_g.png (100%) create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/closed.png rename Resources/Textures/{Objects/Specific/Medical/BodyScanner.rsi/scanner_unpowered.png => Constructible/Specific/Medical/scanner.rsi/closed_unpowered.png} (100%) create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/idle_unlit.png create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/maint_unlit.png create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/meta.json rename Resources/Textures/{Objects/Specific/Medical/BodyScanner.rsi/scanner_occupied.png => Constructible/Specific/Medical/scanner.rsi/occupied.png} (100%) create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/occupied_unlit.png create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/off_unlit.png create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/open.png rename Resources/Textures/{Objects/Specific/Medical/BodyScanner.rsi/scanner_open_unpowered.png => Constructible/Specific/Medical/scanner.rsi/open_unpowered.png} (100%) create mode 100644 Resources/Textures/Constructible/Specific/Medical/scanner.rsi/red_unlit.png delete mode 100644 Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/meta.json delete mode 100644 Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner.png delete mode 100644 Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_maintenance.png delete mode 100644 Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_open.png delete mode 100644 Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_open_maintenance.png delete mode 100644 Resources/Textures/Objects/Specific/Medical/cloning.rsi/meta.json delete mode 100644 Resources/Textures/Objects/Specific/Medical/cloning.rsi/pod_0.png diff --git a/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerVisualizer.cs b/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerVisualizer.cs index 9d0305dbd0..2f3bf92fda 100644 --- a/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerVisualizer.cs +++ b/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerVisualizer.cs @@ -24,12 +24,12 @@ namespace Content.Client.GameObjects.Components.MedicalScanner { switch (status) { - case Off: return "scanner_off"; - case Open: return "scanner_open"; - case Red: return "scanner_red"; - case Death: return "scanner_death"; - case Green: return "scanner_green"; - case Yellow: return "scanner_yellow"; + case Off: return "closed"; + case Open: return "open"; + case Red: return "closed"; + case Death: return "closed"; + case Green: return "occupied"; + case Yellow: return "closed"; default: throw new ArgumentOutOfRangeException(nameof(status), status, "unknown MedicalScannerStatus"); } @@ -39,12 +39,12 @@ namespace Content.Client.GameObjects.Components.MedicalScanner { switch (status) { - case Off: return "scanner_terminal_off"; - case Open: return "scanner_terminal_blue"; - case Red: return "scanner_terminal_red"; - case Death: return "scanner_terminal_dead"; - case Green: return "scanner_terminal_green"; - case Yellow: return "scanner_terminal_blue"; + case Off: return "off_unlit"; + case Open: return "idle_unlit"; + case Red: return "red_unlit"; + case Death: return "red_unlit"; + case Green: return "idle_unlit"; + case Yellow: return "maint_unlit"; default: throw new ArgumentOutOfRangeException(nameof(status), status, "unknown MedicalScannerStatus"); } diff --git a/Resources/Prototypes/Entities/Constructible/Power/cloning_machine.yml b/Resources/Prototypes/Entities/Constructible/Specific/Medical/cloning_machine.yml similarity index 95% rename from Resources/Prototypes/Entities/Constructible/Power/cloning_machine.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Medical/cloning_machine.yml index c340c99681..f58464d996 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/cloning_machine.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Medical/cloning_machine.yml @@ -7,7 +7,7 @@ components: - type: Sprite netsync: false - sprite: Objects/Specific/Medical/cloning.rsi + sprite: Constructible/Specific/Medical/cloning.rsi layers: - state: pod_0 map: ["enum.CloningPodVisualLayers.Machine"] diff --git a/Resources/Prototypes/Entities/Constructible/Power/medical_scanner.yml b/Resources/Prototypes/Entities/Constructible/Specific/Medical/medical_scanner.yml similarity index 87% rename from Resources/Prototypes/Entities/Constructible/Power/medical_scanner.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Medical/medical_scanner.yml index fce14c14e7..1c0b3988c3 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/medical_scanner.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Medical/medical_scanner.yml @@ -7,11 +7,11 @@ components: - type: Sprite netsync: false - sprite: Constructible/Power/medical_scanner.rsi + sprite: Constructible/Specific/Medical/scanner.rsi layers: - - state: scanner_open + - state: open map: ["enum.MedicalScannerVisualLayers.Machine"] - - state: scanner_terminal_blue + - state: idle_unlit map: ["enum.MedicalScannerVisualLayers.Terminal"] - type: PowerReceiver - type: Anchorable @@ -22,7 +22,6 @@ anchored: true shapes: - !type:PhysShapeAabb - bounds: "-0.5,0,0.5,1" layer: - Opaque - Impassable diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/meta.json b/Resources/Textures/Constructible/Power/medical_scanner.rsi/meta.json deleted file mode 100644 index 45f3c3c55d..0000000000 --- a/Resources/Textures/Constructible/Power/medical_scanner.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 64, "y": 32}, "states": [{"name": "scanner_death", "directions": 1, "delays": [[0.3, 0.3, 0.3, 0.3]]}, {"name": "scanner_green", "directions": 1, "delays": [[0.3, 0.3, 0.3, 0.3, 0.3, 0.3]]}, {"name": "scanner_off", "directions": 1, "delays": [[1.0]]}, {"name": "scanner_open", "directions": 1, "delays": [[1.0]]}, {"name": "scanner_red", "directions": 1, "delays": [[0.3, 0.3, 0.3, 0.3, 0.3, 0.3]]}, {"name": "scanner_terminal_blue", "directions": 1, "delays": [[0.3, 0.3, 0.3, 0.3]]}, {"name": "scanner_terminal_dead", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.2]]}, {"name": "scanner_terminal_green", "directions": 1, "delays": [[0.3, 0.3, 0.3, 0.3]]}, {"name": "scanner_terminal_off", "directions": 1, "delays": [[1.0]]}, {"name": "scanner_terminal_red", "directions": 1, "delays": [[0.3, 0.3, 0.3, 0.3]]}, {"name": "scanner_yellow", "directions": 1, "delays": [[0.3, 0.3, 0.3, 0.3, 0.3, 0.3]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_death.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_death.png deleted file mode 100644 index 7abe8dde27202df615c4ad82ddbd6b5d9c088005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1483 zcmZ9Mdo5wv(;x32&*%F*|2*gW$M<}b9qg^ezzSdh0L0KXC`Z2H`Ex>8 zh|e$Ia5wd@)k0p3Hyp*Hbt2M8pU zqv>=X8aGyZg7Rx_i@ASvE@rMr;-FMAN;Sjgw@4Avl{oe>xNhT^pV?d(x0;NtID}Jv zM8@s|8q98vu~LE&X$E&Yf~=^+BDCIN`FrQp3^jd`iQda*M6Dr>QDPm9G$&g6Zx3!`1^^ei;Er& zD3#w4nQacLEpZNQX^ArWjIR33z{p8%V+w#8GhB(9n7F-d6Vlz@G)s3+!SG>U2Mg5l z0LbwiPQU{ZCs?Mvo+!q-*XVxn)kqU6y2cj)tHn)AQ{VT1Al;E)t-?o?kQd64W?{#- z7t3s*Hr3OtXujy3uOB)o2nK z z%N@PpYhAvnfXr4em?zC7hrwo`tTtAv^iV~u)!sT==1{w{kR4%El5kq9{q{>ITLKlr zVw?BNGs&nKB(A9(kmHh^rRK}>j#4WZOR)I z^60?OL-na3CCpUn0vxR3p>c;7a26QmgiO|Uxb*yZo8KLcPze4NSQ1?wp`AFcvW-Rd z(QhTOHk;$-sb$LpS(N8H8H9Hd>GvC4eS!!XLGfrevIS=7g|Dc*_V=$Ekh8K;t5!Dd zTH_v*fN^1^*LapmCev}zb)(xTi7ARCS@&=T+*m{gG#6k7Z)RCQR|Yl}H`QD6vfnts z$}~sR2mkU7`y2dN-J_ixB)%8|>b_N))3IXWDiQJ1scXq#oXsX-J68t29ML5bc|{^2 z`Z<%`1lG)8;39&vJaD*$eNs8S0WsP+D@YP=xsqmdq3}?%-Uq}bugG_ldft+~+(u=Q zqnYXk0Zv8rOhl>*h){Tob#h$<*SL1`b=F{@uG#q}T3y@lRHSEp3izQV3P;Z`@aE^2 zF?TQ`EZA@H33S{E+v4&o7xRi#zfi%0^@F>gOq9j{j&ac${Je6(VL9Y+6?JWGMOW+A zVWVE%&Z(ZYtf4mrOYSDIN zODFDW1`1XaM;D0A7g+wt6A$n!k-O< zTIS!oB+lz_KzoSOyTqMY2Nbjk_sL!(Ic>;j>3>sKD%z0RL6ywO#A-t*D26K#pO2@R zhKj>!5)o!6J~0NTnP_4K4i!hceo+9?14 diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_green.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_green.png deleted file mode 100644 index b413cbe1bb9712d1e020d2b7755c1cb233f6d244..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2079 zcmY*adpHwp8z1X6@n)pb0aFSkmNStdLI-?u5z%rSSw#*_n{AFAon9rwln$y(@|siD z*ig!0$Z1Fp<1=EIwRSMuxA*J)uJ`MY=ee)v{{5ckzVF|CUH5a_%foex(rzUH0I`y$+ z986@76jZtmcb%*lG6qq@cp?4;vzPpOxs6dqFj#UemhuM^Lw)RJuuUn$sq7y^qzjd+ z-r+F(dbFf<@rr)$_kqxVNhBOAfJh-5xXPDOrhkBW^+--IJ7@>7szCFu(E-#9pMO0< zl;SJ!i>o}LFJLSNY@rJGFs_boni6Fdhs7m#)34MbIc>@AbHgmdY&4?2*jKnRM`m;< z4&0Jr1NlXxSANIyhCqO@Yn8%jSRyJT^rr951;Pgs_b@`i-veAQjzE_~BHO9ji~zF@ zhbBoDdHAnOD_OOK$c`u1>5A7wb0Cer09Jspc2~E76kbzNEI+@wV6!+55@QD_$jl??i~%A;GNm z2DR+$%VaGUoL;xvaTPiWC?JA#YD$mKr@BozfR$IV0gLiqGhD4|f=iwNm!H1dm6==YeYqz(CM`w7ramQHNwnf9J zbW2r~^aZ5X%o53AzNi`TZ|P1`G>d-16la@KumTpvG&;8O!i$l;2E9GmTFToNd4*D!Rm5G9lbL<)@eh zu{BlV-)aR(bBvStF{ZwS-3ruuUo7qaRBk#?zWo5I3a8@@kNi&T=xX8TRHeT)jmquK z6n2FJ%WS5KwzJ@jI+|e5zd;_vV=Zv5)n54it2^BEwT&>LGgD&pez5Ju+ zde9x0KfC39n`y((Q(95CO8jZv0p|+nuWIz|qo~OPFQsi~Q%ApaY{fAW)STi=a7_QK z3@HI!`cwH=(QyC_U%z+BZUiP?GmT7*aSNTEI3CDw8ThSed>gSddJ!Sp zUH2FZnI9Vdu-gc%p8lZj+47;`u)%qTZOzx(P8eq!#ys3t^HJ%bZ4b_haY^u%I;#|e zjC{*f8OXo81u7W}<5@7aj%G6K++>k1lOz^t%hclNrf5;esc>u*w`n;>=l`T%Q?= zWF)mP@%+E>9wnnmPQC~|3>OIK zgj-7QP=6b{aW=lM_Lxej)qU!?|1%Nx@_P8PNl%ueVRV9+^^pac?R$%d_KO5>JhCn=D?Ir7U SjmtiMfV+!_^Bbp&ss8~H20vH; diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_icon.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_icon.png deleted file mode 100644 index e47411e0fd24a8aa1da15f46340738381e29b532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 904 zcmV;319$w1P)@>CVT5?}P&ZFrB)oX=C>=Z$R*ViM z%S#=)2u0Z31Sb+K+zMB^Ip%b8{^Gs%Uhlo%n{I372gdjJ-tYVSem?K}zVFZAsG(u` z?H6w;A6`xzs-(;Jh9L6sHRaWb4v)virh8m2Xm4+?8fh>Xgc-k|H2c_hoPbPX4FGJc zb5+2``@>O00E=piC%Zf!s=w+mNp-Uq^oGhniu z!49YGZQwBH$C=S$!ndEJ4@)Iw;XH2|=X*>LiXVH#a_YV;gzy8g0MI1FQ5@#{GiD@; z?uaz(fvSp+a&utd?~B%>^h2 zXaFkC-Yd_Et9!(r+SWq3<+e*aBy%C>~=dR>>v;# z^xfp-B=u&Op;Q1`HV%h_D?-$+)-sGnqf{IffUZdBP(XI#$+RjM+6R`FmcVASalsA( zBEzG->s5K8%rHySW=SsI>g0!SBlZ;SK ze45oao>Q`kRnY78*a7W&wY9bXL@Z)wX9w?&P}pzu#%8F=ZTuBbRkjjA1rQ)1U9C1S zpY1#p!uZz!%!i|xm_Q`}S;I*)7>pKqlnO!qkf3?LcEd#lscyLcV>-}{hzKhAid{_{ eRn4gZ0KWlpAGJ-#KN1!I0000xCdK zn+siaOWLJE6m3m*5{+YCW@Jt;vYBR@ErOF|LYp7tV#wk7pXYy`d7hbp0RsjM7%<@f z%af$+&GX51(MJO2j&j^p%9xTzU8s`a9m2J{Od1Fo;H zKM%m}?kSZ21{6Xl?=RY0r$;?C~f!Al3@Q=8ynsF1VfDcnMZ3|wXokbFO zSIjq;l}Ir=iK<=|czO7W>Q#Z8iN|dV#!`ZrzjFaXA;AI9=&%JfPUi$&w^mE9vGJ~sVOfAMIB z3m0RY3}NropnJFA)D)E7{`A$PGd*JxUuX8yV6MzRHWFgG6bmu3?PB93rHwHBQZoM%9sJRPFVu#(xGG2 zAp%Mx3F!2q#b0K)orbhqJwgObFHlbf}>N{ek*mJ>?&^QieD?qsvi#Y)0 zpsz1j%0XYz#ajEOv74)_eN*`KINqAQqD) z<0k*=``efG;~(xmK$ai!@*D4=YJPp=V_S`J0r-PY127_t6A3h~9URkEz<0moKI|m< z99lshIrM$Mo@0lVg}@+J+0@@4_GY z*qM_MZqc+2LlG=xHzDwRkoKac=igR>dd#d)YUh@+n~VtKonNuV7z}vr#R-1?y?$Qp zSMwPzUKqQl8}g`%Z#wx~$-8HVL+4sGESo^LxByDUKLJ=+SO6dt3TXqz&R;Z4;5bzC z8SZY}()#&)9)S1Ls|7_sw0fsSi$DQy2}|5sr>2Su^h^xWkCc})HR2KmQ2quLfj00000NkvXX Hu0mjf0#f(X diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_red.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_red.png deleted file mode 100644 index e45f895d4666ffc8484e9785299d7a25aa519634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2055 zcmYjSXsoRFBp`J!J#rl#c*AQD7_Mjx(fzGrsiw(BrKJ-~&a zp#Q3@GUU*X+cQBOc+FQJ=rNL?qoR5p_gEMHqD?v2X8+WUkD-SW$`s;i5Nuf3y!i0K z++p|2&|Dp9QnvmB=(`C-e(n`wtxF6G{8NHHTez07Wkh_*Qqld92-D6)e1~#!l$d>m zZ-tYPg02W=z}H0Jsiv18uO_YogMd`~^BFAe93lmcp+Wl(m(*lM@470D^4ePf*=)jXV>VUpHNVWAGO_P4C_0t`t*fC7l9Guo} ztw`D>`QCx_0nC1{R)*tlM^!Cq#Hh6N$C_t51-iW_yfZiO4&$p zUsa3kCShmZJ-Z&Y@Sc0_B7TH|&O^z3Yl1Qa$2x*Lejb5HdJ*) z5#_>Jb)h9x>axT?ibokku~AxYV@9f?u7NyY?lV@?)xh?$*0;vj z#DU98&Yp;{9C#PM2R%s;&E`AB4qiP~ zN3B*olJ>^TPK^>1vT{_f2qPVCR69+tP>r%6guV$bqtR;S(pD+Hu4$CT<1;zokA29} zyhw)InS5vW-&I|&r(9R-%6C5YWTbgLxZ-oEoaHV{Lraera{H&zUP!c8;qy*Z?3KDp z-q>psn^e!##S--||2Sih5u5@g$!8C4WDf+L`@D4k>@nB7E$2SR!%44_+}4P6X_FER zW(tm5bM*V$8e6%7=CFO7=YUn)N_^$h{=u{L8npW-ha1k1{JwSPz&MgxZKx_gQXMy6 zcV}<#q@%oiS46!}Vl{UOX)&;#YWR}t|7yLS<4%^G%e3}b>A%SLcIC7V4z8pz+OezQnY2+?{ngxT#Oy*D#KAzuQgaoH_(eoP}| zFuu>&mv=n{Qpv~r+AKQ+t}oFQy1ptMD;)}zpkCZ)eI$6!2*fk=xfUY5T zDdI*Bv1uT_a=fRrWo+ ZWxxXUuG~%%67eyc+TMwoe~`f}4hqPD4yX1?bk51Dn3F zpoLdAn`0RpJ4el1dBvTW23V-|B6;3z|_70q$cOhxfJi; z&MU&TuE6;eV1A?um&fJ3A9UE~Rck}!qsL{+v~>j3S}!USUH7JWKk+g$j9!eYL*T;1 zFL&4A;~6}`w7@pE|=&4CC01m8;jO1Uft3II;MQ%pN$GrXY}`?#q; zp7DC;n9{rPzs_A=-wv8JejrVwI;4}jJ_qWl0Rgit$lK|ipb?b0^bl@$(|XxV>4`P# zln)saf8j6RCHH>j|Nx`O8goE=hVo=d^CqO)F-!>!I ze8kr=p9hkTE7>D_;xZk1SnOUhq%6qx?(L{0Cw7+7BD@=mHP+tHF~0~J{vvbpv@Qpf zSC`w9Cew$SAX=|%H?@|ji9r48vJ)@%&)h9J?*W3+gFmqtW9?~9v~oS9>`5%By&}t$ z>x2-_0tjdOHkI%G_|c%^XoHi|zk((dNaN1&G026M$k+C_f32b{RLCvuWWw+dT^`WQXwH-pk;g}A)?zqowx zkW#bT;FN3fHzrEHGto4rR97N<9Y#-7v4f!2{;hf=3xMb@2$p9pZREhQwKD zH4n__e&craGo0S5(hhOj0Beci8zeDEvz&sFG(b8CYbtcq26(%ymx8`nysXI~I3i46 Z0!(DvJaiMXQe_`J$OY~Wt98B<_g|w@D_H;l diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_blue.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_blue.png deleted file mode 100644 index 0f4a4b33fe8a0bd805a6e830dd2711864beb993f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1368 zcmZuxdo5|py2A_ zcp7?XP+(-FAsif{QUQ?CadouAlM5FMJ>B;b_P%O)JR!4t|C`*Lv}(IrM5A8$`|F9q z64%25TDP55zVNhSXZAhi!DA>TtWtm+V!kvJ%f+3t%4cQT zP)wPrpoI3`C1T$F(PVxsrMPDd-7?X{ADa|4*PA5-(sX66>B^v0xf3ujx438?5)uMH zczC$xzJ2`*-g>6BFTJ)*jbC&q2*~4eb8{FsH+et|3WAm5y4OBEBH)_^iWby$SaI{J zVIk?0ph4)`>bE5y(Ndz;K{AD-%E;?|D>4?&D%qXn_)2!JR|`WHXW$+Ai`I5DiQ43i zg)xB=fEXGo3yu6bGSW|sKOlA9Iu&ntM?(_SM+8VRv@-_KVxRXjv`3UBbz)rH(7V|U z=dS35&*t4{Wyj|u`MkLD;v@-j%9tHP+wwLh1MYL~+%wyuSnV#f-$>8Te*VKNB+XP? ze=z+79wDrck2_!e=bQS(6l~%KpQKIx8V`i4bE&$cW6R2Q!7(x?%W2Q z2_i!IJm;hfmi!2pOcV7IAL*pV-lG?1Qaz8L{xX{ltLno}zG|*Ydnm5w!tbrKgVk7p z8FD2CS&KClp(8zWYnFGy&9Ob%FxrAce6(PY<}1x{?=xaj59Mf>AvjEODY{-_H>)^F z3P(`C=>jjPur(XfDq|Tw*(H?hR&;DBm%yhNC;)QdV9lmT2lMdI*n^i-AO3h{CeA}2 zo3zfN=ow;at_tJe7d+|F!6iDw=}QGwk?g|=z;*OjC^&!(5jB0JQ}mD+0)ZENg?FOA zj>Y=1%V|Ef;Z5TB-s{h-TWR)IC>B%>1%VMjS z6mHO6z=G6`_9Gd`JKc>d6Hxp#~k~%=yzmY7n7CM7^U`STu!($yBh~1 zFU%GJ4}Dcxp1AqO{ga~>H(ic*)!d5zvikN$9!AIJoKqLm#LpK}8)T8vX<}Z*-Q@dN@4SXf%tAlZG{Fs(&6kS>ux}f5ABnhY&&gk|Y`IqN<`+?o zjX#U{FP?Xr)CpToO}44Fd$lObGK}&$m(n}g2PvJxTUi`o;%m_vMe_V?fW>2nK4<^q zXQOO-);Pk(XTg(lkz#v1sPkJjq6~W~!|jwE*HuUw*l%E339}7RU|o`d#@I2?Py%$R z;0uBw#GAARqW^(M$y*~2#;7)=XlJi*(7<}n4>8|Gl~FH~dTmg1ZdBU1R~uyoLHs7e zi(>LOVbJ*}FDkW$P?rSD_9_(;YT4!@&f04ons!e8_bE`rWx;JU?X5mUvev6p;sOby zk@U71cWD0)svWj9>Q3a8mO*O&>)0;M{HnA(Y}}!`V}h9EvE#*H$JBtf&FU7SDeoO& Uc6GWR`Z0m4lZWFId*Zc!0rHEB1^@s6 diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_dead.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_dead.png deleted file mode 100644 index a79cb10c678785fcaaf63aa47b19fdee919f53b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|^NGEv^&!k2om?sT93kIQ7y3IgO_miZZ5pTeQSwaW2%@RMk=RLbX7_)+JZP zqD6pj>MgIgOOFRAItKq+cId6w8=1x00rhlBDp1tqm zZ1cylXW0c<90gb&y05AzXJBAsW9#|(vy#CfJzf3Sv144nLVbGHe7I77rdz+zSx3xx z*Y4dH@7?2Lh=_}GGmtPb+xJ)M{ocs#c)8riYtQd*3HH$un{3Bf@w)!#Tk$E)875sG zu?)|f*DD8!JD5m4y}Pt4$n&q0n#0DJy@rV({NWwD{+4}R3Vv#XMKQyA0sU%RV* z#k_nzk0I_snLx_%vnm2gjA3D6IsK)v?rGN>=G{HLbyu9gVTqUTSry7v3l{HRy_{e9 z?_Sl{;z|4r47=7%7csW5OI2fJxHE6ZfFM2cJFGQ|j;A3crPLgtxU9)P7m_^Vj6FTeTQ0E=KfkD_DJVUrxos_!BGv zp`yPw+pd^-H)i#!zQTvg81zbH%-J74TAFzKcMjVOV@DyamGgfK9kB3u^8e_c+BMAG z#or4TKDKBO$n(GBxFU)@`mLYIHRj*O3=hL>Dt0_9-EP}Fy-rcPVOgff+x(`W-?J6e z>-K)LOwiws2?HwEWQvuGQIFx>mKQ@ug>V}(q#|91iZ^x|BbcM`|F?wu_6vyNk` z{ZPQ1x%gI2>cUCCT5qyUJM?B!)8^$)+ssxzNt^QN_V>^O?U(LKSaHR@5LaRp>TH?$ zw9|zNh-O>wX4tf|?Ekyzrfr71m(0iwiaY`erZPp9l{!ooKjL+?Y`zxD&zLq%Z1K*W zH^1Hb^{dKpPVgDOueVpM%x7W*9^ zR*#07gE_I*I%(Sfte=I2rUXT&zK>P~CG?wXxVK66F7&wgQRlJoO5M!U`$X^kYF)vQ zv;9^0pLO#UIGPkXPAMPJoArnBgnR>tc);+9U7@~VkwQI?!Qk+Z;R(OO%asWY`|I9u zJ`gKY^LwUJz-%q{Ji4Bt%qZfS*8{izXTB_{G`leUAH&b(O@E*9ANV79<6*%4pUgac z{y%TYH=Oso|VYw&Jk`FWO9Xde{Tj~U| z5o|3sBB34RMu%O}&hCwW7-1?HfI_FBfd%%&fp2rbehC13D$c6nRXyLYyVoX~oa}Q3 P7M2X2u6{1-oD!M<$QyqQ diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_green.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_green.png deleted file mode 100644 index 13befd59340034f87004921afe8498eedabdd306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1481 zcmV;)1vdJLP)4F52(1UpBMLlQ_ zLWM+7qlZFUXrc6|MToVDCKk6{a7NN>*NL0#xU-X;9^#C%*@YA07s4-v2NeK4ZzNwJ2`jmTv@*=i3uwr^{=VNm(;@0 z(2%u%|9-Y_-wwdNd-sUNV%DWgm)Npp3yPx9-`|f{%+SzK=#yYM{l7l?hIc<~Vf>dl zK6v{p-}Jv$>lgSzB9R~(jndxUPBa=Nkw}Q{(yEe3B-q>)p?mL}Z0?Hqsy~nkP$?%) zk60&8k65DnA&PqF7rq1lOifJ@i^WPFo2E%VpT{&!GMP+S48Vo+CxOL*`1;GwL%SS! z={M#r<}(Wz^Omprg;#*_@$s5IH!wWPh4Uu~YbB^ve@|~;P5Ol=Ks~5+5W-F^lOPZY zFgZC{@>tU}Ow+_L3{2BR)3mY}n==Ow0O76#UiuB)BBvEGbnAusdwTmgbMQdb`U9~C z0MIn8s+fV{Q6~uiE{iI}O?0hTk^ZF>uu}cP zD}bUX#N%;PRefo!J4R6yjt?FK76;;(s{*W#by@)bWi%fA^*6+~Ew(h*x%ahGH~mLH zbKYBt{yi0w{`tVHo6c zISj)v+ z)6K-#4fb`f13I`ka+!{14STiQ*cydrGl2Lu?%aP=?{3!(QThW}0aR5jsQ}BZkH1~} zmabiU_~FlaXC}A_YXwkM6@B*ECUCastNuVFfcpZ+au-CrV#cPFvO#bYmOX$-{lXK# zE^Df)zH}$-j!_ha){ZVxPopJ+;3fyCPCsa}FN9=L6TtKT z#X-eO|C8wjnkevOdVxv&(=U8rwr<^OwYRsIy!Pxbw{ld%U`dFvc z+R;^Uyq)p->`Z9Oz8lf{15p9&-D;!K==voRi9{litUiI*MN5AG=?@_N0i-{`bEH3j z^arR2=?@_N0RZU_ApHSCdMX&i>ldB?wPK%%3v&|Gf_*HmVf_K@lfhxG1hx1B+`N9p zIUCrJ{s2o)1vi>MfbEZ99}aCee}IAE(T4U1uxJ0$S0i-{G^alW>KR_sdd=Rfc5KDmc2ax^%CC{Zlfb<7g j7U>Tl{Q+J%MC$(^KE>8sP>{lf00000NkvXXu0mjf1j^3y diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_off.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_off.png deleted file mode 100644 index 46f8d61efdd8add19037dd736c81785ed11734ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmV-(1C0EMP)F|9LGOaOG-+kkqf!Flz1?a3_5h}5>(Qqn_Yq~d5BI6A|XqM=qetpLy(6RM7jhO zbm|x(Xyv~(+!}Bu%xN20-EscFbkH4loUv@jn34Qk-pugb_vU@)`+M_d;eZ1U_@Ai? z`vw4ddV1{1$w>e@J3AQ~8uHxNZZwr}WG^}iLOPwcySln)Yik2wc6OF{JZ_JSjL_87 zgd|CHcX#8bNvG3+O*j;^gMUFPl|m2%5{U$YAdpI>{@GZOG+?*%4`l5Afs7rbkI+j1 zAe+q+kH=ldmSv&qI+kUT&*wcFfTxci0vkp=xOcOnatJ*EQ&UrcfA{q9Ln=)|=mzW+ zm6{L<1Lo%DT*s=aVp$f3VPIJns;YW4epF&YB-Q``RaN&yGn^Uyt8pWdfG~+n0`{64 zx9-~Q=P$ahO;5bz`LjXS+aeMP5Jk~-EXy*cX;Lf}F-;R$mOUDPM}uSBzSHO1=lG0B zQ&NdU;Qj4aE))s|}{N#cHAFTTn;k#RL{{>cP|m(s1A@E-8j|gZ>w?RK za`sIEwv)@{&~=?cp@6RI&z$q!0)L$U#+qI2w0=Zp5v+vq8IcQTldd)| zZX`;4|Dp=6|M9~p5(X%W;yh(VQBV{GP169-G|lWx3+mmlKHulve97_yy&c>8^1_l{NqX002ov JPDHLkV1j**pP~Q& diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_red.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_terminal_red.png deleted file mode 100644 index 8f02d3cdd377a43109b9d62125a259eca73b2d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1473 zcmZ`(c{JNu6n>J}YmzA?j7luEtED}v2(e@kt=eW#WejE1QdCQ7ODK+|S_ZMD6jfA* zv}&1Js_hUe9BQYh)|M0d5+o(&r)U11bKd>l{o}rSzxUnuZmPYVm6(W(2mnCL#@f;m z+9{CXg#;k{I7%i1z@K7cY359#taHZOPStJlibnRolmxf3IeETAM`Bd0U;^@r<|If76!x zw+dd3ZYX5O_@G25z%;eAq~+4fgxsiEJ=d|ldX^5%R0rvmRoKi5(d(&cLnS_Ew|+Hz zrztYRhu&1 zuOcJ1*OC=qT;^A$zWsdmuM;fJe*H3W>45M)aQocD&7~H32G3o`;t?mH#<42S-I?O5 z=||EOf+^XU>lGv_*`N^eDgxjp68BGT4g9L~@VPdW#bIC(>CPg(LBo$rxPf_BOA8hq zAisi1J}Zgl_qs2SK4FeZliOQxt>qiRsM>3%bz1BCL9ns`q6=+#7o*vb7u;I~HSh7CR~ELt zc_t%ioB~Gkrzjcxv1nL(HFJ;E{^7gv_oOLa;>E@u8h4s(1+)(vpMwM}S{>ic-W;=< z#@^;B#O?c76$wYtu0rp$_ZhjZfTYL&-L1;NsPkCIOoU4$j;|Jd7KH6AkU0x%cX zx(32jlj7W!@WyguFOB6MDncul$Ojy&b0YR^G39z~sG&*AAUXGCjZ>_oOvvk)J@Rhx zeoBswL{f6T>(g;wUtc}$&Gg13ixpr;b7S88GF7!T3a2Qy$KbS(t?Y0NUFNs?xvb*S z*RN#&y{%2G$EisC4@oC>mz(q5<fpBRH0 zi)&?1mBFf7ercMEIQ%{yXvU4>gltp5foC3rtT_)XAnj2LNIVaKZVcssPc}*&JyTZ_ z4Ra;n#1|Ko=m}Ap{S7?8>hV%>fobr7Q}+Di1m1-Um&Ki0(IG} zgICobEp2X?AO97}*xlu@Y*R|qdCw9=?Y5vnTG0U?Q<;wg@9^aT0;`Dt#cT;;$>4uM z@jJ5zExNa5yD<<|h~@$k9Mk0dC)oGXI>su;NxDUk@6}-|c;)a2el~M-1g)wt42@=B ML$I@~HTO#R7dG3g?f?J) diff --git a/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_yellow.png b/Resources/Textures/Constructible/Power/medical_scanner.rsi/scanner_yellow.png deleted file mode 100644 index fe31a166e44351a6e4d9fa116a2dd4b73898be02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2092 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/maint_unlit.png b/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/maint_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..1726aa5d1021b6b44b543605b8a3cd5acabef113 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQlXwMjv*P1Z!Z`MIT#4AUMOIV zih5Ts6%}>PVX~Tsy3~79>&?-Beo6zC0>QsURj+pX-WAM0nbY=k^Y%Bz^Ha7zj#62E n?oIyF?j`9lr;l?USnb52{(iFH3s$*WeUKhcS3j3^P6g3@c*) jPhr`(7AVzly=oJ?5C>yGy2}k;AfLh0)z4*}Q$iB}F^?60 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/off_unlit.png b/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/off_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..445ddaae70666150c445aad740310f405eb0c227 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzb59q?kcif|mlpCeCUOJEP@}s`GB$vp00i_ I>zopr09P&{cK`qY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/open.png b/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/open.png new file mode 100644 index 0000000000000000000000000000000000000000..c028a08d3165ade6e09c64e8809ed3c3e0b50252 GIT binary patch literal 1670 zcmV;126_33P)WV5^3*?E?GH#6DUoy6(~mpk{)+Qp|1P1dvXrA!oDJl%{J4-@J^PrsYs&4T>s5n^uGf*T;ro_~tuqXLrH0@YkLX zfa5rDBA`m3J;AY)1GM)~EW+wF8|bsDs!$XehNeMQ6>E<6iULE|VA{>*iR$majc{m? zDNUK}4iVBE=ZSI4khiTst8pUul zhOH}G(RDwB9f!ZbP%I9X=jr>)BVowtG*l^rFMn>w>nm5y80O>`;x|oofpN`!NIY&g z&h-uA{Ow*GcyT=yex~aVQo4o-S+%}f{n!Fr9*ZE9OrzOv-@{eRfCfb&ekK0Pu|Rq? zZ$lHE;W7N(KZK^bc~tnt!FzyVW{wR} z$P6wM*>oDosSG5KfGZAB3K32eQVW!bNm;OoI1FDE8cRjA zwY7m^bBB$YK0$`6V%N@{h{y^QRi$x|kD?eb888K7IxdJp^d#hgP&%mr1LIM&9XVnN zW;nZD-yAwKJz`xfZKj;|dGoU*NC8(;dGhW@e6{&O@imE_8AA(j_i;nv}^!+^KEH=kV zO${ba{AQi1$D3NH7?O_XEXO49WaSnD!js^gjt)Dn(G_3mA03M{~>ZEro8f&T+9&soALYlA~z_!*kXGjT~i z=82+hY$@<4cfB&6L#5XXf#tvq55uPbC6PF!$pn&#IDIAo$w#AD?5n10YTb6yU8ZpJ zo_FSA996zb$41@}EDSzDl`Rnjctrt={k1gMB0P|E=WJ4B2~)l*j6;D|Ur*-*mZcY$ zd~l}l{q5VWX;aW_Shwya{BimOM2`nN=LSDbtE-^_=<7qN0*I(Ugt#FX1e2Tu&$6f$ zMTmm^QbYM5!k=24OFmcb8rZ+->mt!dPaZ;WVJ@?^U-$}sETVxWaxT<}f)#88gnkNN z6%9;+3XVlti3b92cY)(6`26@DN85ua&X8_Fu-zRA$||a8Kb1EpxZM!lv*dxd*M3MX zCyjuxQP@m&NL%ZFnT~aqTvSE$j7IR;p4~PEEEWJ9Jn$)QgvT6>qN=Bo32biNLF@nV z8{ay9NEItvpR+8TtLcPJV!h6DxEoKPZQov?-+m*yQ>LSPECQbAq3C)MTTK4(BX@mL z@lJLBP$c}hz(!0a5*WVMYt3!mvKXDVRSkkx@*{lSww;ZX|B*wxch{q#nUjB5^%1kDS z(8xU`Cu69rtbuMYFpON0BXhP?JT;Y~eM{>aTTlLgO3NzgGwWjLZy2>s%3V0CeYLa? zhe(mJx5Pv)7|SbsRCpn55kWK}h(^M;p7@?*wsbNVVArol9XXndJx2ie4}0=1TkYms Qd;kCd07*qoM6N<$f_=&dvj6}9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_open_unpowered.png b/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/open_unpowered.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_open_unpowered.png rename to Resources/Textures/Constructible/Specific/Medical/scanner.rsi/open_unpowered.png diff --git a/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/red_unlit.png b/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/red_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..16ca86aa362aa2bb5daacadf6c8104e766ef2e32 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQt6&9jv*P1Z!Z{fH5l-;J`8u< ze$Pdn|LIJdDU?6C~HM^LaY{JqdCT(pDg&G5jptVq{LMyE`5Y#9>P>f&v zprRkF2!5z2HAN`6R7#~%iERi}X`0YB4>xJjytA3v_wGFJ+`vCC$B2p>>6_Cqh@rp&X zQdQ-(Qb?sRrt;hC|Nh7A;O{8EdH^<2e}oqxm&@T7i{&h(6{!;1qm~rW zN};E&V!H0Swca(DUuk|z@GpOM0LO7~T#z0(Zut3ymo5U(yD-T19lHRKQW69{Mk#z5 zl=A>&5MZ>TH175?)P)Q0Rhxek_*Du#`ne%yCTDS?4vur(K%9t!>&6&+^&*@?^!5#! z%_Cd+>))Sew&2kjcX{pfS$wVe^ACO&*7^F^NW@~a$6b0lI@sLT%l_TpuHE@2@vB@w zN{P}MTUT153?#U*io72^`wRfbl9ODWo#Tmnw=h1DWY06d)e|{(96G;w?pCPLi3%)Fu z+y1eBj!eyv%;Xs9t=nY7`PPk%N~s6}Ne~2>rCBiAAeS{*l9Q<^-nej?;kDh2Pb4{f z=?Yk)0uJ!@M2ZLQ>ScCuk%I5n?Np=r)h-Z7w9+V{Q1be+5d=XwxRj)r%aO?!@ZvF! zUQ6-6nRz^|m@aq#bjMv>%SH%+l#=OemfX^}6$hZf{3;6oFvg&bL1~TBnji=&lqtz< z!DGtv2t1DyscAeVnabucQetG7_LRiaiu2Pm6tp3AlL2TnzlIA)gb-+@!!=ZeGog(^ z-k`*sSHxbN#|VM16;ru9MoRob0l!cPmB{DGESX&(CCN;#Zs!}#uNef5F$f`0QeiuG z87zZJ6P(UwNh`QGJBwd zZ+@0(B)_H$2vNQM)>3No$@2hAuU-Yl;6|d@SS;o;2q4kghKV=?#^7tiz<=MtzsWM# zXnx%opjViQ)oa$8haY)@Y%WJ21LUD3+&6+JeN?eXRD_0=Ef%mv3_IGw!i%qN6)`gZQx+9D3aZj`(G)*>)CmW^!;+Gv!~*v8=4 z4nhdlcdY@SCtBO+n#H$D@X|fofy48x?&_%d95_4=z`CK02B0MtBe8Tw?{00yI1acj zmg_<^3N0-d$DupX3P8-Z>5NxfKr{JH3BGUt?s8@cw30mZ&=>gEt1sfl<3yY&5!WT| zROF>JtC7Q%6eI}swbO^@s1#wss0n$33r_U+%zw)LT(96e{)_vr7cpwGVa z8-~^;0oecMZ|P-_7RSbQEIQp7LI`?VTA0e^DQ&%k5cIURAcSC*W7F0WCl;x8foAe+ zI^-|LzE^YPhp1k;qOll`yjxUxkKihZgLQ2WYr~gu=q!e zD->AUyN=1!<(hDSuC6|cev!LBv58{QBavt)n@uy7y2kwc3?uj4Usb12$dJ5tg-m*m zj*d>W5f~F5ax&?;3QK4PzhWz#&u0M`-Lj+Ny?JCSt!*6u*p|R7{de=d0sw2edH_fz zFIPQ_3*nmHzN!mt>fiG>gI^I5GU+)0W@l0r@ATp#f$x#aECBHCyR$VrP;d5bMVi6? YKME-2{eM@NKL7v#07*qoM6N<$f+N+!;s5{u diff --git a/Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_maintenance.png b/Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_maintenance.png deleted file mode 100644 index b659cb7f35c244a5481737196924d6888fced1a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1782 zcmV6~}*f=FaY{y>^`V5xX{VL`&*KR;`e>v>~cgLM0Fqk4jY$Qj16-Qp8gNR7Ci~ z2SD(F@-?6WK}eN|imD>2qR^s9fSSf?n+JB9H19aOetX}uGxx!V@oqfXb=veuS9AA1 z&iUW}IrrSNf;*JKp;3FMdu}K4!)*HYcMk#(hIN$EL^`5UDihS}7_D2@8?8}VV{LNo z^?&}Y4S?<3{)8(~sZQu;`?ciym}d?5radccE|WG{`}WJu~-Y}&G@`__B^36JpcWl z#CyK_6|(6x-5H;Oo*s4#4RUz@x0=SGO$;cd(8l1Jq$gCQz)vT}et76P08Zv+xxTo> z(+})qY9_~l=YG!BrDa^t1K`AsJYl7R3Tph~FNgW^0}tIi*sTB{_M27?!V&GJo03VT zc>UrPj=lRHKmF`pre<;+ojOO^XjVeiT(|op!N)gs-gtb}>qFSZ2N_(Ufxl$#eqiqmcYY{@A zmBy8B)3Az?E|@QuDQdVpzsO82K-U8-0#&QtToi_wNI`cO0Hs^p*wzJNO?qfYeM5?2 zoOp~K5x8#?$ zE)b&i{<~MEtYw^7lE)IoC2?1m~yRe=lvX;W8c zy)I8O=BK!4XfpzfbX;6(G1j21!L=6YN`w&H-M0yVfmD)or(wKN=N&!1%*MW+w(aQg zWdOEpz1ISCq|;Ub*Y;2npj;~O}RKN;4BS zojN!)YPXF|prWYd#cD`UtFW+;W82sS6B9ehbY`1>$tK_Y4I|MEzIVxwlxmW*Ed8xtaH!Dwo|VMWV79r%SGn$H&|X?VEn#M zwCt(XO5|=_qf}g?r>7TV1=hxoT&cK}OvTk|8GwnMdlKIrH)xY1a|d*Ul`N? z*wi-wKt6Z1r4?4Bd~={ zsZhkMRFFah-j_n)2!ZR?{`T&_-@Fz4ZRH0Yuz|)No`zDXgjK2dMM4Tvr;gIye;1A= zupJ9A+Yu=Qa$*cOcE`<)uF3q`@SBBy^$Q6!O+z!lF+nrDpI?1_1c3PTDz45@B)Fpr^BwjlFU9@A_{2 z!MBJXSOSjYAf!ZbSjIg>i`_R zmclBPaLh8l`TKspcK2rjV{a9|t_VsY5Kags)L5XS;V|!Byv(7G&hy-tb})1`$$_DB z6s2I=a{TwUeQE_qC(u7jw~ePS0x;RN1T8bgz>0N56gVuI^Cz&ROX9!Bv2L&pHk;ot0%RR1 zK-bdc?gI}#O0iVJc5IwONyPFVPFx)ZU>TmrtAE?w-AupsmappT`v(Brg|5QQw~}k?&^0>S+lijzz{_@OGinrAz3I7?Tov+i@?a29}-eRsM5ZIKA=Muau-9^6ENv<`)^=TqA4v#+W-D< ziL;6}O~uecbQ=+0Yyb+m*#X45P&7}DmS`#+ZBZh6a0#@MUw1+NYVhfL#q<%}xx$f1 zP3{h$V@VePGxN$K;V?$H@j1YVMgX&^{1Cvm?)?eJF1Q@K;OWrd!4QK7Lu_56uyu{X z;6ZO)Ro}Tc{uKbEs$m!g!{cdw`SfnT(LydeHw(bt=YGM-)Wm`VukznJ?cLR@+^;{- z$31sy{PC^1=(yc{4WL-a@$lv+kU}tc@=xsjw&#c+|5@?B18nWs0l-YjyHiJWFLNt( zjSJZv`<{IUE=|_}&UHx6PNdOw9b3x4Y}MmG_6K<72P)gYbD81Y@bd2eA77cj{cPL5 z6UT9Q_LGrmAV^_}mWe-2Hi`Dn8Po(&;4Y`v({p*i3X$yZ`qT&XZ`kCQNg+5hbduAj-fua-rUT34D;ZCX)`bJaV!c$X3TxMGpi(huZ(mHY zm}eq&jchi}rn~M5)G3z>B(Gheke{Nnvm5CuxUP4}DdeYWBB2%hnxpW{Oc8*A&D(1} zH*VU(qK-}g)R2NZo2#=-FX6Z})&oE)IU0C!)1DYDUJ^sPjr07i;MXWZA@5~WGU-&! wXFiw1woFQeX#hU_FjIE`jb`s=tQGwK0eA#*E6!n-IRF3v07*qoM6N<$g0pJA4FCWD diff --git a/Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_open_maintenance.png b/Resources/Textures/Objects/Specific/Medical/BodyScanner.rsi/scanner_open_maintenance.png deleted file mode 100644 index 513eb24d71fac5d24083355b81a86f45d1b3965f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1750 zcmV;{1}XW8P)`BYZSQ)$U*6f7d++dLykn1d zosu4Dw7d7tz3+S8d(OFMHSW@q-96sjuDO#LA7{~bzjq7($EhKN#FZ|UQW?8eLrK~2 zzLF9lC7u_ad-tDzZ9-r#clK}*DwPUOtriSPCCOa5Kxf~*2uI=y2f0i{Nr{@9!b{xK zbUUpX_}4z4!Y~XB3xo}ZD-Yzx7p6 zw{Cq%COx4w5P0MZy<}%|7*PYmSP{rD4J<3h>9@yW1TER!ZoUwYRgcJISe|-wD8>Nel=fkV>Je@JR?)fE5dk{ov%w z09;DXGL>84@%#5PJe}srmw&D#)6;psHzCT>GS3xNZ?Kb_$-_aw;`3RE2@G}m|p zu0TnJ)Fe`@q>bykL2%WrR;f^0s$$1u49#TFO_QnIVpFw*5X_g$RI2u!2>^JWhw?n6 zQb7Gk8uL3>wVAVRcH1_?xkYxh#@W>x5504vTm@ikK1)@3WIl?35CTopP*Md&MGA@X zJj5Cj3w8~?kjG1OuzQ2Wi4!N#bU)d&& zr1CRimCcvS6eWz$=Q#1oD*>=(g#G%>OUHxnr8URclz_IXJT#NOZbip0JZgEJ$(ZJUM4-E-SIkBQms2TJbVcN zyJoXgDx&R3q4oCSjgO;4Z~=L#6fEQz8NQ5em<{_h4Z^w#tDn`DUzpXdU%M25r;a>^ z7Fh|rW??(7EH`sj-83k0CYveqDSiB^*-;+xjY?-_NLF7b9n%^_kPj? zXoUv-g2g7XfY#fKRw`oZI$f596$>{t2EegXN4amOUwnpc zdK`P?*A1X2-+YPQ?S5rD_1>>Y(nE`(V;K=TtymCj0HwmR1Bnha!w<(zhE7{coR}Ft zf~HyU^V82Z^}LtH3K@;XLcJqE+olcxmR60$qEW2qI(6WQ2Y<-WO^>0QejJ`0fuRxb zM&QWc3mh4I0U&ti!Q__#P`ZI-S&YtR`PsA2gcJx=0FJ--Q!Z!bnmT0wluHF3-Tx#? zN={$?Z7})7w|(GOe|MbU?}hu?4*8x{{5w5n`kk{f4Q}QOoOu2@xV0DpxZb9?HkZXT zO?=1wL&(VW>4P$0|WbsZ)gqv zk`0~z51%^lK*JixakzTrefswH2V+V~MusnQ^~!r%h``q5c4jk^O~C;YiEe66ja|F< zQmfgtwr-?cE;5&yA)n9EfA6Oo)>Nw{(lfUy6&Gl4??ibTp66e3rQ$-k6fZ560T|dn z82a4Te}D~b?EvTz4R5(ubZo!j+??nFAd{YKcnXVtFmBwGKzWT>6pDya(eG$-*-YrO sSSa8+HkHyM03UpiYpT$l)LYN~2ddpSeQimav;Y7A07*qoM6N<$f_lVGJpcdz diff --git a/Resources/Textures/Objects/Specific/Medical/cloning.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/cloning.rsi/meta.json deleted file mode 100644 index ac8957b3fe..0000000000 --- a/Resources/Textures/Objects/Specific/Medical/cloning.rsi/meta.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC BY-SA 3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation at commit 9bebd81ae0b0a7f952b59886a765c681205de31f", - "states": [ - { - "name": "pod_0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] - }, - { - "name": "pod_1", - "directions": 1, - "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2 - ] - ] - }, - { - "name": "pod_e", - "directions": 1, - "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2 - ] - ] - }, - { - "name": "pod_g", - "directions": 1, - "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2 - ] - ] - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Medical/cloning.rsi/pod_0.png b/Resources/Textures/Objects/Specific/Medical/cloning.rsi/pod_0.png deleted file mode 100644 index 13d289fd6cc923117d0ff7e9e6e78dc6fa29f990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1319 zcmV+?1=#wDP)kdTld!5zkG*y4t*8g!ux zT_8I#0gVD7DMZ>LrBCqz0)37%(|O#PxsUIDF79+{Tj*SpCVGk6Wg2o13a!jt69B7h7E z5eQ)K{=@R8b6+re?-4sY+W>G}!L`02as`u6C`7y=%9fV(#Ofj(J#r*4L`{G>@mphm zup!Z05qEj6B|&Rq4Oe?75T3{Qw95E&isv`C(iCstVYwm@Kp+Q-Wt+)ln(G6jtZj_*=feqpywO)_I29KgMfIIF%_8ZXi4fij z0+cKOhR1&6L4Aw|6O-igd88)+fsh`WZXl(^c5HG56IZOL17-52iGd(rFiFkka2!N!Ln_N<2ZPpBosF06Qpmq^dwSBJkO(S+kpTAmB14&CEN8EXeyor+j1)6AW;yGi>4V> z7lKA02a1-BW7~+z86aG@Dh}Xzz5|M)peP!`leliMDF_5mFiTjjTRDV$F;!J7-3OZP zm&0#LpQ=zS1_B6F0@wBJ)-?@04>8yMYK31>7UjE?=Ss8^0CvSrR|s6s!?qoN3IIjb z0MHEGcLfFM3CiWt$^nFQ6&m7fNHn7BI+kr$#6U_9JrqJy^-2RuK*21pumjOZn1I{|7rn>!=^$YX5l=o4!!0$Jp#urgy+wSTq^Tt~T*tC8vr+N zjj5rYW%m!%vah_hk1dI32pI;c%q-J?r|G?MV_whD+0?d`STu$ntw&1G41>bdy_$PJ z7GUF!SEXh7Z?j}FMKYP9dCwknO=EmINj6tlvc|DW5RKt^0_jN}j12(ulN1hz_^bcQ zl5#8nm`i@|=t)M$Mwp(S;^6)_u^pGwpPZ@YHLYvKFbpD*NW}qz#&xYc{B>x4uexUe z$e8!p*t!`ZG_1=0|L%(gM2T&?<*5@Na{KlzCMPE;ni&8rtH6PSN3pCj;c$e{&z}Y0 zH7PM%n-t|~hIa0~$3vM80ZD0-OY#OJyST+d9tmav^MK}~DpU)8rhp{b-4IBMGFn50+#Eq?5VEYpR9v5>^AH37erAyz@ z)%7|TFJ7R%y_3<=VcOd}863JpJRWDDzlYB4I~X49Cs&z-T4Naa^JTF+Pm1Q|Mv}>N dP2vAd`~xa+a~}W~hi(7>002ovPDHLkV1hLkWOV=l From 1032576a20eed2280000877403004719692ec967 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Mon, 4 Jan 2021 22:32:59 -0600 Subject: [PATCH 034/166] Replaces AnchoredChanged C# event with ComponentMessage (#2905) * Replaces AnchoredChanged C# event with ComponentMessage * Removes unneeded fields Co-authored-by: py01 --- .../Components/Atmos/GasCanisterComponent.cs | 18 +++++--- .../Disposal/DisposalMailingUnitComponent.cs | 14 ++----- .../Disposal/DisposalTubeComponent.cs | 13 +++--- .../Disposal/DisposalUnitComponent.cs | 14 ++----- .../NodeContainer/NodeContainerComponent.cs | 23 ++++++++++- .../Components/NodeContainer/Nodes/Node.cs | 41 ++++++++----------- .../PA/ParticleAcceleratorPartComponent.cs | 23 ++++++----- .../PowerReceiverComponent.cs | 18 +++++--- .../RadiationCollectorComponent.cs | 13 +++++- .../ContainmentFieldGeneratorComponent.cs | 11 ++++- .../Singularity/EmitterComponent.cs | 25 ++++++----- 11 files changed, 126 insertions(+), 87 deletions(-) diff --git a/Content.Server/GameObjects/Components/Atmos/GasCanisterComponent.cs b/Content.Server/GameObjects/Components/Atmos/GasCanisterComponent.cs index 348ba46956..215d33fa1f 100644 --- a/Content.Server/GameObjects/Components/Atmos/GasCanisterComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/GasCanisterComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using Content.Server.Atmos; using Content.Server.GameObjects.Components.Atmos.Piping; @@ -92,7 +92,6 @@ namespace Content.Server.GameObjects.Components.Atmos if (Owner.TryGetComponent(out var physics)) { AnchorUpdate(); - physics.AnchoredChanged += AnchorUpdate; } if (UserInterface != null) { @@ -107,15 +106,22 @@ namespace Content.Server.GameObjects.Components.Atmos UpdateAppearance(); } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case AnchoredChangedMessage: + AnchorUpdate(); + break; + } + } + #region Connector port methods public override void OnRemove() { base.OnRemove(); - if (Owner.TryGetComponent(out var physics)) - { - physics.AnchoredChanged -= AnchorUpdate; - } if (UserInterface != null) { UserInterface.OnReceiveMessage -= OnUiReceiveMessage; diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs index 365703861c..0bc3be51b7 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs @@ -614,22 +614,12 @@ namespace Content.Server.GameObjects.Components.Disposal Logger.WarningS("VitalComponentMissing", $"Disposal unit {Owner.Uid} is missing an anchorable component"); } - if (Owner.TryGetComponent(out IPhysicsComponent? physics)) - { - physics.AnchoredChanged += UpdateVisualState; - } - UpdateTargetList(); UpdateVisualState(); } public override void OnRemove() { - if (Owner.TryGetComponent(out IPhysicsComponent? physics)) - { - physics.AnchoredChanged -= UpdateVisualState; - } - if (_container != null) { foreach (var entity in _container.ContainedEntities.ToArray()) @@ -671,6 +661,10 @@ namespace Content.Server.GameObjects.Components.Disposal Remove(msg.Entity); break; + case AnchoredChangedMessage: + UpdateVisualState(); + break; + case PowerChangedMessage powerChanged: PowerStateChanged(powerChanged); break; diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalTubeComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalTubeComponent.cs index 03342d9db9..853d4bab77 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalTubeComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalTubeComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Linq; using Content.Shared.GameObjects.Components.Disposal; @@ -231,10 +231,6 @@ namespace Content.Server.GameObjects.Components.Disposal Contents = ContainerManagerComponent.Ensure(Name, Owner); Owner.EnsureComponent(); - - var physics = Owner.EnsureComponent(); - - physics.AnchoredChanged += AnchoredChanged; } protected override void Startup() @@ -254,9 +250,6 @@ namespace Content.Server.GameObjects.Components.Disposal { base.OnRemove(); - var physics = Owner.EnsureComponent(); - physics.AnchoredChanged -= AnchoredChanged; - Disconnect(); } @@ -275,6 +268,10 @@ namespace Content.Server.GameObjects.Components.Disposal _lastClang = _gameTiming.CurTime; EntitySystem.Get().PlayAtCoords(_clangSound, Owner.Transform.Coordinates); break; + + case AnchoredChangedMessage: + AnchoredChanged(); + break; } } diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs index 9811a4f021..b1abeb9455 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs @@ -569,21 +569,11 @@ namespace Content.Server.GameObjects.Components.Disposal Logger.WarningS("VitalComponentMissing", $"Disposal unit {Owner.Uid} is missing an anchorable component"); } - if (Owner.TryGetComponent(out IPhysicsComponent? physics)) - { - physics.AnchoredChanged += UpdateVisualState; - } - UpdateVisualState(); } public override void OnRemove() { - if (Owner.TryGetComponent(out IPhysicsComponent? physics)) - { - physics.AnchoredChanged -= UpdateVisualState; - } - foreach (var entity in _container.ContainedEntities.ToArray()) { _container.ForceRemove(entity); @@ -617,6 +607,10 @@ namespace Content.Server.GameObjects.Components.Disposal Remove(msg.Entity); break; + case AnchoredChangedMessage: + UpdateVisualState(); + break; + case PowerChangedMessage powerChanged: PowerStateChanged(powerChanged); break; diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs index 30de8613cd..adf31160cf 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs @@ -1,8 +1,10 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Content.Server.GameObjects.Components.NodeContainer.Nodes; using Content.Shared.GameObjects.EntitySystems; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; using Robust.Shared.Serialization; using Robust.Shared.Utility; @@ -48,6 +50,17 @@ namespace Content.Server.GameObjects.Components.NodeContainer } } + public override void HandleMessage(ComponentMessage message, IComponent component) + { + base.HandleMessage(message, component); + switch (message) + { + case AnchoredChangedMessage: + AnchorUpdate(); + break; + } + } + public override void OnRemove() { foreach (var node in _nodes) @@ -57,6 +70,14 @@ namespace Content.Server.GameObjects.Components.NodeContainer base.OnRemove(); } + private void AnchorUpdate() + { + foreach (var node in Nodes) + { + node.AnchorUpdate(); + } + } + public void Examine(FormattedMessage message, bool inDetailsRange) { if (!_examinable || !inDetailsRange) return; diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/Node.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/Node.cs index 6e2420da7a..09c45000df 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/Nodes/Node.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/Node.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; @@ -66,17 +66,29 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes if (Owner.TryGetComponent(out var physics)) { AnchorUpdate(); - physics.AnchoredChanged += AnchorUpdate; + } + } + + public void AnchorUpdate() + { + if (Anchored) + { + if (_needsGroup) + { + TryAssignGroupIfNeeded(); + CombineGroupWithReachable(); + } + } + else + { + NodeGroup.RemoveNode(this); + ClearNodeGroup(); } } public void OnContainerRemove() { _deleting = true; - if (Owner.TryGetComponent(out var physics)) - { - physics.AnchoredChanged -= AnchorUpdate; - } NodeGroup.RemoveNode(this); } @@ -153,22 +165,5 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes { return _nodeGroupFactory.MakeNodeGroup(this); } - - private void AnchorUpdate() - { - if (Anchored) - { - if (_needsGroup) - { - TryAssignGroupIfNeeded(); - CombineGroupWithReachable(); - } - } - else - { - NodeGroup.RemoveNode(this); - ClearNodeGroup(); - } - } } } diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPartComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPartComponent.cs index 3f078cd71f..6c549c050b 100644 --- a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPartComponent.cs +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPartComponent.cs @@ -1,8 +1,9 @@ -#nullable enable +#nullable enable using Content.Server.Utility; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Components.Transform; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Log; using Robust.Shared.ViewVariables; @@ -10,7 +11,6 @@ namespace Content.Server.GameObjects.Components.PA { public abstract class ParticleAcceleratorPartComponent : Component { - [ViewVariables] private PhysicsComponent? _collidableComponent; [ViewVariables] public ParticleAcceleratorControlBoxComponent? Master; [ViewVariables] protected SnapGridComponent? SnapGrid; @@ -18,14 +18,6 @@ namespace Content.Server.GameObjects.Components.PA { base.Initialize(); // FIXME: this has to be an entity system, full stop. - if (!Owner.TryGetComponent(out _collidableComponent)) - { - Logger.Error("ParticleAcceleratorPartComponent created with no CollidableComponent"); - } - else - { - _collidableComponent.AnchoredChanged += OnAnchorChanged; - } if (!Owner.TryGetComponent(out SnapGrid)) { @@ -33,6 +25,17 @@ namespace Content.Server.GameObjects.Components.PA } } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case AnchoredChangedMessage: + OnAnchorChanged(); + break; + } + } + public void OnAnchorChanged() { RescanIfPossible(); diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs index 5b208920aa..c20495e5b1 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs @@ -1,6 +1,5 @@ #nullable enable using System; -using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Content.Shared.GameObjects.Components.Power; using Content.Shared.GameObjects.EntitySystems; @@ -9,6 +8,7 @@ using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Serialization; @@ -99,16 +99,11 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents if (_physicsComponent != null) { AnchorUpdate(); - _physicsComponent.AnchoredChanged += AnchorUpdate; } } public override void OnRemove() { - if (_physicsComponent != null) - { - _physicsComponent.AnchoredChanged -= AnchorUpdate; - } _provider.RemoveReceiver(this); base.OnRemove(); } @@ -121,6 +116,17 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents } } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case AnchoredChangedMessage: + AnchorUpdate(); + break; + } + } + public void ApcPowerChanged() { var oldPowered = Powered; diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/RadiationCollectorComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/RadiationCollectorComponent.cs index 51d378b5d0..b6b63ffc2c 100644 --- a/Content.Server/GameObjects/Components/Power/PowerNetComponents/RadiationCollectorComponent.cs +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/RadiationCollectorComponent.cs @@ -9,6 +9,7 @@ using Content.Shared.Interfaces.GameObjects.Components; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -36,7 +37,17 @@ namespace Content.Server.GameObjects.Components.Power.PowerNetComponents Logger.Error("RadiationCollectorComponent created with no CollidableComponent"); return; } - _collidableComponent.AnchoredChanged += OnAnchoredChanged; + } + + public override void HandleMessage(ComponentMessage message, IComponent component) + { + base.HandleMessage(message, component); + switch (message) + { + case AnchoredChangedMessage: + OnAnchoredChanged(); + break; + } } private void OnAnchoredChanged() diff --git a/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs index 62423d18bc..ba5e54100a 100644 --- a/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs +++ b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs @@ -79,9 +79,18 @@ namespace Content.Server.GameObjects.Components.Singularity Logger.Error("ContainmentFieldGeneratorComponent created with no CollidableComponent"); return; } - _collidableComponent.AnchoredChanged += OnAnchoredChanged; } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case AnchoredChangedMessage: + OnAnchoredChanged(); + break; + } + } private void OnAnchoredChanged() { diff --git a/Content.Server/GameObjects/Components/Singularity/EmitterComponent.cs b/Content.Server/GameObjects/Components/Singularity/EmitterComponent.cs index c396bb74a5..1707e94086 100644 --- a/Content.Server/GameObjects/Components/Singularity/EmitterComponent.cs +++ b/Content.Server/GameObjects/Components/Singularity/EmitterComponent.cs @@ -16,6 +16,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -43,7 +44,6 @@ namespace Content.Server.GameObjects.Components.Singularity private CancellationTokenSource? _timerCancel; - private PhysicsComponent _collidableComponent = default!; private PowerConsumerComponent _powerConsumer = default!; // whether the power switch is in "on" @@ -79,19 +79,11 @@ namespace Content.Server.GameObjects.Components.Singularity { base.Initialize(); - if (!Owner.TryGetComponent(out _collidableComponent!)) - { - Logger.Error($"EmitterComponent {Owner} created with no CollidableComponent"); - return; - } - if (!Owner.TryGetComponent(out _powerConsumer!)) { Logger.Error($"EmitterComponent {Owner} created with no PowerConsumerComponent"); return; } - - _collidableComponent.AnchoredChanged += OnAnchoredChanged; _powerConsumer.OnReceivedPowerChanged += OnReceivedPowerChanged; } @@ -112,9 +104,20 @@ namespace Content.Server.GameObjects.Components.Singularity } } - private void OnAnchoredChanged() + public override void HandleMessage(ComponentMessage message, IComponent? component) { - if (_collidableComponent.Anchored) + base.HandleMessage(message, component); + switch (message) + { + case AnchoredChangedMessage anchoredChanged: + OnAnchoredChanged(anchoredChanged); + break; + } + } + + private void OnAnchoredChanged(AnchoredChangedMessage anchoredChanged) + { + if (anchoredChanged.Anchored) Owner.SnapToGrid(); } From e7eb23a9b0911aa504901024cb77cfe11ac8c431 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 5 Jan 2021 05:36:25 +0100 Subject: [PATCH 035/166] Fix some of the build (#2894) * THIS TIME FOR REAL * Fix build * Bring back old power code * Remove debugger break Co-authored-by: AJCM --- .../NodeContainer/NodeGroups/ApcNetNodeGroup.cs | 8 ++++---- Content.Tests/Server/Preferences/ServerDbSqliteTests.cs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs index d0441b55f4..703f159162 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Linq; using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups @@ -92,10 +93,10 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups public void UpdatePowerProviderReceivers(PowerProviderComponent provider, int oldLoad, int newLoad) { - Debug.Assert(_providers.Contains(provider)); + DebugTools.Assert(_providers.Contains(provider)); TotalPowerReceiverLoad -= oldLoad; TotalPowerReceiverLoad += newLoad; - } + } public void Update(float frameTime) { @@ -150,9 +151,8 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups private void SetTotalPowerReceiverLoad(int totalPowerReceiverLoad) { - Debug.Assert(totalPowerReceiverLoad >= 0); + DebugTools.Assert(totalPowerReceiverLoad >= 0, $"Expected load equal to or greater than 0, was {totalPowerReceiverLoad}"); _totalPowerReceiverLoad = totalPowerReceiverLoad; - } #endregion diff --git a/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs b/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs index b8a55e8792..2df929a3b6 100644 --- a/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs +++ b/Content.Tests/Server/Preferences/ServerDbSqliteTests.cs @@ -18,7 +18,7 @@ using Robust.Shared.Localization.Macros; namespace Content.Tests.Server.Preferences { [TestFixture] - public class ServerDbSqliteTests : RobustUnitTest + public class ServerDbSqliteTests : ContentUnitTest { private static HumanoidCharacterProfile CharlieCharlieson() { From 3afc298d4fac649e076a56642066f6501a974bf2 Mon Sep 17 00:00:00 2001 From: Metal Gear Sloth Date: Tue, 5 Jan 2021 15:55:29 +1100 Subject: [PATCH 036/166] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 1baee3004c..62cf778958 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 1baee3004cfe77606136d3ca290d671eaf761706 +Subproject commit 62cf7789580396471147ca16230217fc356a3f7f From a2b498d802d27b5bcccf8bf59eeecc520171dfe0 Mon Sep 17 00:00:00 2001 From: Metal Gear Sloth Date: Tue, 5 Jan 2021 16:20:19 +1100 Subject: [PATCH 037/166] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 62cf778958..86e34ea27b 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 62cf7789580396471147ca16230217fc356a3f7f +Subproject commit 86e34ea27b6ec9827220656727d1de6e82b70fe5 From 4430164073fe90975c9d53e605f10195cb16e0f0 Mon Sep 17 00:00:00 2001 From: Swept Date: Tue, 5 Jan 2021 05:22:31 +0000 Subject: [PATCH 038/166] Adds unique equips for syndie duffels. (#2867) * Initial * Woops c/p slipup Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Entities/Clothing/Back/duffel.yml | 24 ++++++++++++++++++ .../syndicate.rsi/ammo-equipped-BACKPACK.png | Bin 0 -> 516 bytes .../syndicate.rsi/med-equipped-BACKPACK.png | Bin 0 -> 511 bytes .../Back/Duffels/syndicate.rsi/meta.json | 8 ++++++ 4 files changed, 32 insertions(+) create mode 100644 Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/ammo-equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/med-equipped-BACKPACK.png diff --git a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml index c1a85e11e0..8aba363413 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml @@ -82,6 +82,30 @@ - type: Clothing sprite: Clothing/Back/Duffels/syndicate.rsi +- type: entity + parent: ClothingBackpackDuffelSyndicate + id: ClothingBackpackDuffelSyndicateAmmo + name: syndicate duffel bag + components: + - type: Sprite + sprite: Clothing/Back/Duffels/syndicate.rsi + state: icon-ammo + - type: Clothing + sprite: Clothing/Back/Duffels/syndicate.rsi + ClothingPrefix: ammo + +- type: entity + parent: ClothingBackpackDuffelSyndicate + id: ClothingBackpackDuffelSyndicateMedical + name: syndicate duffel bag + components: + - type: Sprite + sprite: Clothing/Back/Duffels/syndicate.rsi + state: icon-med + - type: Clothing + sprite: Clothing/Back/Duffels/syndicate.rsi + ClothingPrefix: med + - type: entity parent: ClothingBackpackDuffel id: ClothingBackpackDuffelHolding diff --git a/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/ammo-equipped-BACKPACK.png b/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/ammo-equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf9381558adcc5eed2d0fcdc4d22dac2972de64 GIT binary patch literal 516 zcmV+f0{i`mP)2^Dk>_?&CP!S0iFQ?-_rmgAtA)N0EYkoI2}WW00001bW%=J06^y0W&i*H zc6wA;bVOxyV{&P5bZKvH004NLQ&w#mPh33n*~GqpSUyN`mNK4d}P3uGgydlYmdVI7fZX@*t4J!+=NRyZ~l|qAhgX%mD~>b!r2; znQ5GPaJ6v(EtUQI{HzGg&Q zB-13!4+%mMhg3hiCR_z8*P&kwLgzGq`=wYrr-AWUwa6PmFd{eM!9R@v00002^Dk>_?&CP!S0iFQ?^z`&0At40lD#!o;00DGTPE!Ct=GbNc004D*R9JLG zWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TB zGg33tGfE(w;*!LYR3K9+r8F%qHAlC&GA|`FH8(XyiHkEOv#1!PpNliCC^0t`#5Uwo zR&e!m0owootGOO?U;B9*0003FNklH;HE*%3m@+hR-kV_&Q=v}3->clXnMb{rqTsQ(n}Wl(rIwx&R)-kt%9yKzDt zw335B^qYTq0QFe?+;@J4w8%Cw0sI!Ii;pvLOU|!}U?4{v;ITE6uS)@HWU4#1x1@Z93o`7-?bRX$xR(s-+K@$INz(htS_4 z;6*q8zPOwLCZ30V?6Xr1ARZ4PAUbkh1Ga B(v|=K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json index 32bf2ce77e..dfc3a3dff4 100644 --- a/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json @@ -23,6 +23,14 @@ "name": "equipped-BACKPACK", "directions": 4 }, + { + "name": "ammo-equipped-BACKPACK", + "directions": 4 + }, + { + "name": "med-equipped-BACKPACK", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 From 196e6d2f45864b1006a3cb14b1e6f5119c22b5af Mon Sep 17 00:00:00 2001 From: Swept Date: Tue, 5 Jan 2021 05:34:53 +0000 Subject: [PATCH 039/166] Plays rustle sound when inserting or opening a backpack. (#2890) * SoundCollection * Works * Applied review * Waah * Working * e * Adjust sound collection serialization Co-authored-by: Metal Gear Sloth --- .../Components/Interactable/ToolComponent.cs | 2 +- .../Items/Storage/ServerStorageComponent.cs | 26 +++++++++++++++++- Resources/Audio/Effects/rustle1.ogg | Bin 0 -> 21007 bytes Resources/Audio/Effects/rustle2.ogg | Bin 0 -> 15400 bytes Resources/Audio/Effects/rustle3.ogg | Bin 0 -> 14929 bytes Resources/Audio/Effects/rustle4.ogg | Bin 0 -> 15580 bytes Resources/Audio/Effects/rustle5.ogg | Bin 0 -> 15281 bytes .../Entities/Clothing/Back/backpacks.yml | 1 + .../Entities/Clothing/Back/duffel.yml | 3 +- .../Entities/Clothing/Back/satchel.yml | 3 +- .../SoundCollections/storage_rustle.yml | 8 ++++++ 11 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 Resources/Audio/Effects/rustle1.ogg create mode 100644 Resources/Audio/Effects/rustle2.ogg create mode 100644 Resources/Audio/Effects/rustle3.ogg create mode 100644 Resources/Audio/Effects/rustle4.ogg create mode 100644 Resources/Audio/Effects/rustle5.ogg create mode 100644 Resources/Prototypes/SoundCollections/storage_rustle.yml diff --git a/Content.Server/GameObjects/Components/Interactable/ToolComponent.cs b/Content.Server/GameObjects/Components/Interactable/ToolComponent.cs index 19e16ae678..49047e4897 100644 --- a/Content.Server/GameObjects/Components/Interactable/ToolComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/ToolComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.GameObjects.EntitySystems.DoAfter; diff --git a/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs index 3a6d29b0a4..6397edfc50 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs @@ -1,10 +1,11 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; using Content.Server.Interfaces.GameObjects.Components.Items; +using Content.Shared.Audio; using Content.Shared.GameObjects.Components.Storage; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces; @@ -13,16 +14,22 @@ using Content.Shared.Utility; using Robust.Server.GameObjects; using Robust.Server.GameObjects.Components.Container; using Robust.Server.GameObjects.EntitySystemMessages; +using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.Player; using Robust.Server.Player; +using Robust.Shared.Audio; using Robust.Shared.Enums; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Map; using Robust.Shared.Interfaces.Network; +using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.Players; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -46,6 +53,8 @@ namespace Content.Server.GameObjects.Components.Items.Storage private int _storageCapacityMax; public readonly HashSet SubscribedSessions = new(); + public string? StorageSoundCollection { get; set; } + [ViewVariables] public override IReadOnlyList? StoredEntities => _storage?.ContainedEntities; @@ -135,6 +144,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage return; } + PlaySoundCollection(StorageSoundCollection); EnsureInitialCalculated(); Logger.DebugS(LoggerName, $"Storage (UID {Owner.Uid}) had entity (UID {message.Entity.Uid}) inserted into it."); @@ -207,6 +217,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage /// The entity to open the UI for public void OpenStorageUI(IEntity entity) { + PlaySoundCollection(StorageSoundCollection); EnsureInitialCalculated(); var userSession = entity.GetComponent().playerSession; @@ -331,6 +342,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage serializer.DataField(ref _storageCapacityMax, "capacity", 10000); serializer.DataField(ref _occludesLight, "occludesLight", true); + serializer.DataField(this, x => x.StorageSoundCollection, "storageSoundCollection", string.Empty); //serializer.DataField(ref StorageUsed, "used", 0); } @@ -494,5 +506,17 @@ namespace Content.Server.GameObjects.Components.Items.Storage } } } + + protected void PlaySoundCollection(string? name) + { + if (string.IsNullOrEmpty(name)) + { + return; + } + + var file = AudioHelpers.GetRandomFileFromSoundCollection(name); + EntitySystem.Get() + .PlayFromEntity(file, Owner, AudioParams.Default); + } } } diff --git a/Resources/Audio/Effects/rustle1.ogg b/Resources/Audio/Effects/rustle1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..365fb5d85f309c7221eb51086e9e66cb1b627259 GIT binary patch literal 21007 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 E2YS4-{r~^~ literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/rustle4.ogg b/Resources/Audio/Effects/rustle4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1401fca0c72f946f85545c26df7dee90a14603e1 GIT binary patch literal 15580 zcmaib1z1&0x9}Xgy9ETvgCN}~r6S!OBHf*eaOg%_I;4@5M#Q5C(jYA$93%w^MH=DX z==yJ4 zyH)=@;tTuJXoaa?jr_0cYUCBfKDSnaMDp_gy86)nBDx8|4eZ_QZmE0NGCA2>=>0*@ zq{t+|$1lJqz$eJWsqXAz@8)6cY3?G*K4-5&+Cu z;Y2Amitv)uLQemT)CX6sZocS@)aY&+%Q*g?e^pFER+Io>00bv)LeZL{!?3t54M&1U zfw;YzSQ!&`j3!DP_x%C8rAujJsiVsjblnG{F8c?HE*y?13ZVt*K_`< zaR01>37U%>7OfSD9L^Q`D0pdx2ZZYHvX}q@S|(6PqEM`-7^tTo`oyaKlUtKq_>rz=<+tz_pzS#@t*d1YM2pj-1^k8HQab6-1I2?5lzHD<@o91(N+1gbS4-mU=dGW zhQGK$_u{Mg3-qvvDl}kq#S$jm< zfqho#|5I!X)2;vaB4gLf1!N#zesrh*=+1gii}j-iH})S6_X0?!GFsf-9zqJ9LLWV) zprYV)w=Y#?=$8udzl3llb^v7f>AT(O`yg&;@r-*2>wDgw_EepQSaHRX|M?33qc6}x zm~(B?9S}HziI4uU1p%R@Da4T{_)7_TAgXYMDQh%qe@L7tYqg+)B76K@v`#ihTSZ3p z9|<}Q(=J1@g!gB57i5lRc@8TQWR?7F`IBX1S67TdeYER2L_M^Rpy%wzval;Y8$e?X zN3+(-+bEz`bZRz7Q=86TeE+CLg;~zih5NBLm6p z(F{#bZV1!U1S|^*=2GSqMz3c?DFyt!@M6aJg!@Vrp&DAW93@^Me^$-}Kp4p%E&f;a zN0t9-adC1CS3hUNpuhn4RaMnBEU{JBMIukY4{0&CFr>xtO>23cHR2B(OPZ#PZkD8K zDZxwrS`;KyCaXkQEZRRt5|QE24=;nP;y(qq$2vmF@aaFw$Pao=GB&7u65!DmysfLF ztMB7%_}qK0CERqzdvW^d;&l8&>WKfYSpQ`?05Y1eKQ@_a5y$^ACsa)i_pgBeWjXE? zACu_&l30~rv8s-75B(HU-xvBseos?KRh!cE6Q%b!m9@5r>A0}hQK>h^7|Lq?Yic7LTsZ?f=bMZZ*faoW z0bqfI97Yo3ktpYK+W?1ujTN&{9INmHO;{O;Ab~jH4X;F5j@zxt;#~y$C@oIPyDFja zY@!KFgzrmD6j#M?Ah(ABGyy>H_ws+B@fcR@E4Vw%kDHs?E6!1pGNuUUNv9Envz3xr zF6R`DDfSho(kRE|7L!>B9zPS93x~WjO(0Lc*Y*9H)@gJwU<%P;RUvDMHE= zY|7;KMkuVO$yKM*gocEKHFb0c$aN=mbmyp4b(`5#$yHT<>FAQ*)1}lMPgm7#avl+~ z{;Z?>g-Um_*?NvDP(R&!QBc(ox}Acc-qYz%A5J-&X8eOnmEsR75#8x#VNEYxOv+m~uXWjItOJ2IB`qrP1bPcHjjiecrS9=XW2WvD6h=otgNi4Y<8}!sWyJGQTd{>|CMcJO;!J^+Ltv>TM)FS zyz&)yWhM8^S5;?~+*{4%mF?C2uj;aEUT!t-;&*XxwYyc;)VzH4{R-M%z18Es)y@}C z3Lhwax!GRP-tMy1?mpP;OkY&F*~vBVzOMh(?p8Z*qc^jruJ@Nz(`9{V9nKGZ^Nf$e zUpY&@tv>6A5R4s*kGRseLBkqcu0ef0`!}T@i6xZSW?jgoTlzm z(=_WvQBy-|mqpP8U~X>q{prwwa2ll&=%uK*CL^@3s|Ii-?f3S}i8y+KHki^gOhR1}kGD^@f?s7i{dl$H3K zDU4nCr|6*(#bm~c@E!_nXP%xcmL4VuRo@lyKQvY|QXy2Cp~*^0)oICEgE=Wzs6rEz z6yeRuN-EH-l$7ejwTztjr*gEMgrQkMsFIbOczTSCRhqm>jPU==s=7(f(V@BrBF2Rp%o7SES=v>W1(OEFe_LT5-?_W2d&#bO#8Kr4`$>HtXpmd^llL zbwxuNdP8_VYdg?`ybb~#$RKd73$9$qmD$QhX$>pdlXwh@bK%MjigQ$WsK~+Lx`VPf zY)!-BaCrBWI1XD0l`@;g|xB{ZR< zG{qE_BsWTEAi0!KSVFv|@g$PtqO}~B<%EZ6C~?8VNt6`XN}vE2j~cinB=dptp4o%{83AQTctcKev`n{{-n7 ze{cUIX8(8e{y(*h9jhUg`_Br<|~;gI@37M*IOlVe&sqQjFfmF+}La-Q(6uX6$zY@#)&IZ zGqMlhB~wPRJdnvLLAMrh!Vy}~Bi%C=Rs6+cT9AFxSXMy>WaJ1<-H`|0G-VOj1o0p8 z5K|Vh!c#{00OjHa5D)6yBhrc+-hV>rl0h{7gmFDxX0fr)u9Hi95NzA+YmLjZ|sI`7RC#)QEf)eWOa zM1+#N_5@|A73VAA|z5t+L2x5R> z#f*xIvPmfFT1IERYZX@fVFiQj5BRFW!TGyY!T8huyFr#w`U}3=AYYN$h^vKPgO7dU zfOFpDl|9chi+?MpyFRBZpG_q}p;;WN*v z=r~_@b>4v3%h`c^Fl)^k9QzY{L-yylCkeO7p3r}UF%kNX*C?Z7GcZI3ase1G^G^Z>n@Q1|MY3~FDSk;Gs0G@3=lRT28#antJWaSlp4sh(75AQttm`x!bO5(|aEh%_broZmPakGzYTM@i2h2S>9RO z9Ulx(UfxG@ZEQJzn;W;3k@URxaq2~22OgMjAw~;Z`W$Ye54mc5$)~ezs-FiE2b^*2 zDcTTr<1e0J#O0FL(n_d$=Fp;Mo|Jj-xiTd@6&ZY^xn35M-dJBZ%#yLdZz4;=(<;HR zFp-Gy6C3#4@4SY{KuDeZw1o*^7zlmu`9W)|eQ(CDe9X7+Y3lqA(&FSNl^Ec~EWZtu zaKIi9_=;~*3j-ernZXPWXH?mR5n2NJYfA^=Har3L5+9e!Tbg0lBfOjp!ybRF0KX{t zv65%yxgV6Z)e4wkPGb*!=3dkKrIapW6=|kOo{kDc3tYJaqpetVG28WfH5os`rz8l!_&fZV1_J85iOZbI zS8i?kxy};+>AR3I3V1G4YX;wYWQ5UO+MbP_pYx+{zRlS1?@#&d;(Qg0G z9|07kLmh+c4KTGkmiVXAJyXteJstp`TT%wU=SOnf&1*7o3gdY=!7uOqYC%J23x=^asCFSunQsKdwdbKdf z!}Bh{{DCem*Y9l7&X)rC;6Yz8Z4d&V0agwGto&QwJ}zpXaFbmc5IM>NV!+(HTpcwM{*D8!0PEt82B^m6*Yd zQiUvO{*Q06r7W}lY${o3RU7%VAfI`vlFuW=l|yNUz{|N+TKbL+O-opokka|w0MSy; zDC?m$v162Y%l*?z9@?ib^N*Vvea)4UV5Ma@)$o~$xaLYeA{8JPr;fv8bwTd;6_B%S zA#I_|Phh5(4E7x)9yj%4s~a3|9JKu{-k<|=@E{2O?QnUhFnHcUdiyMx;D$1p3<$V( zUWaM%Qu#SI!h0(ykZ|kPO&bj~bpn64?l6gYJg$1Wh+UmVZ(*WV`~JNPtit;}B?UPo z!=e72aQCDFyzRl9m7g}=bkyqwP3IR_72%oT2P16g!lIV9@ea#%N_KQQo-y@+VZ@fsU`uI>vc!>d;e-psN~lBX;DxJQ1hH>%?-A)1PwC$18K zb?d<`R1LxI05Rs60UJkY>I95^1_soFOkWMxo1cA~d|s_O#&s&SYu|ZuEAY$V9ui06 zEdu~8=v|C6G}r^r{SgWFAB7u{!o9aTT4T`$N0W*coJd)^mOX3C){YVg$bw>2Yy8%8 zcw<*Y^cfme=jpSG7~qcL3u#6VSXver*!Wv+onbPs^03&wtoovLb2D~4!xg8L`m@J! zye2){3~7UHII3tpkyTW&nN-X~u^Lw{a*k30nIc2FN7O0yL5+e1-vDt<^kxxmN z>nsg}2zU~L4C~It_SJ6m&=G78^|&+p>ROY$l;^wo+L<3xTU%~1p#z{~o*c&Yn|HMU zH|m?Vk$@+*GrO1Ek2DRDc8}+mjJ`=TUw(@V)Sl%KPChG{8Zl;WNtp?pbXHo&>LTl9 zUB016uW^5b5RMk2~6p1E!K=_^s({Hd2Y>WVScP$DY7Rb1ph6eXqH&>2w!p>zR?TI5a0r}nq8n~lqWroFWj(KZTgNK%{S(vV^1Bo~R zh@c2+!LcgdqbIe+#LpZ1sxM2<6>aWFwT#WbIXE7ZfM+Nnm(8)ta1i^ar%T#JD^}T! z1%bcuwv0OyV|GGyj8|F8mh&SjFI;3r$pU3P^KiIyaeuBSak8k|Fv%%vIW#+8CNFCS zh|_8g;;ECkRQ0ouv6z0J?2IA}$S9L=lc*i@@NxK3{qee`V5XM9&|N(uBA8lGwE=Cj z&P#$i5{K~O9V;vZ9UH>%5)bwTfKE;f8SHwd516Sn{U#5d;qp~9YN@lomX$>Vm)B=} zE?*7VqhbTbiG##HKJE@w$-HbzN~z%S*WW(k$=)mTsl%K9jgMs5r!qr+P}w1IUilJ! zKP;r~ZDL?M?ZDKM#S4*E@9*(x@e_1*{SG7R16uv3I=`y5-b9BiQ$=CLRS`>U1nv(p z?7ztSnP?=YWz9WY-^r2!FEfPBn@y?5;R60Ls5 zZJ#H+NU$$;TDhs_wc{iCF~R`REZIwiQ)>rT-y9J=hwbBa{pQ%m!KX&)@`^{4n?G+S zK2(qHgO`uJf0frp_ceelK=F)Rqa(h7&2z|wBz{SKF0TERz^}CfUQC=oYnFm3ZVR5v z110Z%j<20N85t`Xw)ReCEg$=5w-~RM+!N$gM}!Q??ifUyaYa4*QjFsoresFe0fvj!M4wyQVXcZ1_`L<(O>VqseN{A-UBz zA)BW!#>jp@nhm~wl$do^sM|SB7DAPBkT>GR+spOTlJqoUVf&^@=WVcT> z0QGa;wxZ!|zsq?}ni_lO?M2uAD;jjlVD!VPp~CMw;MZYDXClkSV3hf(eD=dp#lDR- zhpqKbigT6;UK+oaMs_K}-lUV&8;mk;4V6zM5j0=M4x22z-r(tOsH+@q>MXg&M)>;0 zFRr#+4F@xYW$H&(nLlwdN-JgWrF?Nj9XxbXYBDEvRT3AsUGUbELGrE!i*wFx=2;EN zUw1(n(=4=q#Rh8F0Cdp*XrkKTh189epC`#$W{0`ti`=ns)rUsxWrJ$CxHzDv_bN~U z$nBHrdczB8vGaZVxr5fHyw=JKlhwr0E`^!Y^xOc`74;a~4bv}O9e`GIb$Od!G?2m? z@zyjZk}`_&@~srZ6xtFUf97^QlI2rO?!q-5e2ROUdOII**_WSgJx@D5LM*+fe{jw# zact+36Jofs|3|8W7zvypIiQq!74$jz+bDRY+3@ogNRbJE`FERQ@TG4eavybhm3HXp0 zz~u6$?3Vr1`%tGRvo?ZR=Vm%PZaVQm)#2xiCzo1CrSpYc4r^FjJ%+-s_Avug z(bt@O6JfjGuMFDozuW8S1x#*cBL{RS_=!u%E)Pkbdyg=_U1x!Rr8yoi$BCSt8qVWI zpvl3cY`D0@!xeY$&O{UvpT%@_Nop2WV}{evxY{Nq@A?Op9aP&hRG+rIq98 zu6d9`n&(Qr(S6s8-g$#1QX~kE$7VT+p(E@(mq&DSCYY?xr_z}NJsvAK@!CN^Y{d2T zr-X}g6MS%kItHm#X5!~9u)M7(A|OA+j{<7pQZPG^xQO(9rwIbZSV^cegba`bue*g% zdVInB)%IH}Uf>-wJDwLOLRaZp%JS(z=FsQ$>>dBNZerf%z&) zq##b3M0jqNBGrq5<ouLETShXo$(!eh1Wi${nw(5U1q{0eDa&Q&XGHnYN~KRfvP zo&Tq5uJ(t-v57X_Iw9`oI`>;-euccEXt%dm)&4%hn@h_*>G*Qlf8qN51qs`s zNtJaxEMrih!~E@Z&LZ~t^$5Pa0mZeWI%;v=5jCm|$c zf>J@9VytZVc}$a(gKlLJgLJGtin{muz92#*ixr`;w3IQ&P~iHy+IsuYkm|w@5w)Yw zPo7=(xhyeT@LIBnI};BF?-w(obT$FEmI>ON7md@JhPqNt30|2!)NL(z8b^`yGPgUS&JG$+@i z_V%=mPw5SASsL9Df{3>mYRl`@YKJB{TNV~`dv9;NFhzcg5|0nbQ;Se~vf4oXwKV`s z3bqGFq!`@q#6p}yLE1k#hpd0+9H34hV#pXu(L45Lws)g%;N#5j!q|WQ}^{Y#EGyKY`L6 z!H92Y__jaiv?6Z@LDCnqY3r)0+PXF{pK`!0q!1R7eCxsH*h3WF!$$6BS-j#0xRa^gCYW(3J3ZsU{7YC z1o}X<=NIoCI;%m=>0*AgkCdmo2IjH|E+g^mh@Ic3lIlJvze}l#OCM5vz1sF9GQ_59 zS1-k{DECaIlKjX0$L?caRUc_crXg+Z_RL=HY&6|&*6Q=6(ZhFcB5q*xBqP7qFxG~a z!M>V0FtRepbZ+>0w*vbw@>4{7;*_6 zI$7ZDJ5q&h7w=;X{lmeN!@bW9@8r}fC4(;11Oe)e;J37@j=?b>neRl54vOamtT*o zKt0{_R^N5k=j39|c3ir4+sTGej4z}4OJ|%4Fz4`_Ion;zerxQxIbHD?Ajf-p#TPPc zod*x|6-Znl<41Y;-u)Eh7-Bq)$9{HFmL%>&DNCSM`pTVBuW6k$Q>EYgM)byV{QQKdu;N4w-Uw3)w+aE#J`F@dyDDw&b0Jy MN?6qkv+(%A} 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 E4}e9z?*IS* literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/rustle5.ogg b/Resources/Audio/Effects/rustle5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ac10981b80800d52b1253536b9be9b9a16f89397 GIT binary patch literal 15281 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 Date: Tue, 5 Jan 2021 02:47:42 -0300 Subject: [PATCH 040/166] Add property to text keybinds (#2862) Co-authored-by: Radrark --- Resources/keybinds.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 1a3b1ff275..3aaffbde79 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -164,11 +164,13 @@ binds: key: Left mod1: Control canRepeat: true + allowSubCombs: true - function: TextCursorWordRight type: State key: Right mod1: Control canRepeat: true + allowSubCombs: true - function: TextCursorBegin type: State key: Home @@ -181,32 +183,38 @@ binds: key: Left mod1: Shift canRepeat: true + allowSubCombs: true - function: TextCursorSelectRight type: State key: Right mod1: Shift canRepeat: true + allowSubCombs: true - function: TextCursorSelectWordLeft type: State key: Left mod1: Shift mod2: Control canRepeat: true + allowSubCombs: true - function: TextCursorSelectWordRight type: State key: Right mod1: Shift mod2: Control canRepeat: true + allowSubCombs: true - function: TextCursorSelectBegin type: State mod1: Shift key: Home + allowSubCombs: true - function: TextCursorSelectEnd type: State mod1: Shift key: End canRepeat: true + allowSubCombs: true - function: TextBackspace type: State key: BackSpace @@ -221,18 +229,22 @@ binds: type: State key: A mod1: Control + allowSubCombs: true - function: TextCopy type: State key: C mod1: Control + allowSubCombs: true - function: TextCut type: State key: X mod1: Control + allowSubCombs: true - function: TextPaste type: State key: V mod1: Control + allowSubCombs: true - function: TextHistoryPrev type: State key: Up From 18fd5a6e4121f020b0467fbd90365fc6b86f342e Mon Sep 17 00:00:00 2001 From: Swept Date: Tue, 5 Jan 2021 10:32:37 +0000 Subject: [PATCH 041/166] Fixes multitool sprite. (#2921) * Sprites * YAML --- .../Entities/Objects/Tools/tools.yml | 5 +- .../Tools/multitool.rsi/green-inhand-left.png | Bin 0 -> 209 bytes .../multitool.rsi/green-inhand-right.png | Bin 0 -> 221 bytes .../Tools/multitool.rsi/green-unlit.png | Bin 0 -> 123 bytes .../Objects/Tools/multitool.rsi/icon.png | Bin 0 -> 359 bytes .../Objects/Tools/multitool.rsi/meta.json | 99 ++++++++---------- .../Objects/Tools/multitool.rsi/multitool.png | Bin 197 -> 0 bytes .../Tools/multitool.rsi/red-inhand-left.png | Bin 0 -> 195 bytes .../Tools/multitool.rsi/red-inhand-right.png | Bin 0 -> 204 bytes .../Objects/Tools/multitool.rsi/red-unlit.png | Bin 0 -> 117 bytes .../multitool.rsi/yellow-inhand-left.png | Bin 0 -> 196 bytes .../multitool.rsi/yellow-inhand-right.png | Bin 0 -> 205 bytes .../Tools/multitool.rsi/yellow-unlit.png | Bin 0 -> 121 bytes 13 files changed, 49 insertions(+), 55 deletions(-) create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/green-inhand-left.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/green-inhand-right.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/green-unlit.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/icon.png delete mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/multitool.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/red-inhand-left.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/red-inhand-right.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/red-unlit.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/yellow-inhand-left.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/yellow-inhand-right.png create mode 100644 Resources/Textures/Objects/Tools/multitool.rsi/yellow-unlit.png diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index 6c65076cb0..a91d8bbbae 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -123,7 +123,10 @@ components: - type: Sprite sprite: Objects/Tools/multitool.rsi - state: multitool + layers: + - state: icon + - state: green-unlit + shader: unshaded - type: Clothing size: 10 sprite: Objects/Tools/multitool.rsi diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/green-inhand-left.png b/Resources/Textures/Objects/Tools/multitool.rsi/green-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7bad24cbcf94fa4e7af90bab23de9462c3d404e3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Gdx`!Ln`LHy|t0|kOL2E0Qbd! z3mce|SfixGJkN5?)HgP8wK}CBK2amksl~5u{rBrH-<;zE>SL&T@}b7(a6#v~+qzt5 zcC9%-XW#w&YtvHK|337(rswucyR|1z{5q2vR92ArJ-zstMO^Y}%?ziX{t?!`Al(d4 zr-sK>KAn1fOU%@%cSY;&@vS+VRrdJCm$yK<1M#j$r0@~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/green-inhand-right.png b/Resources/Textures/Objects/Tools/multitool.rsi/green-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f84f65f5562c4ba72a4b1c2a5dded9c2960226 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=OFUg1Ln`LHy=lmG$U(s2qT;QH z8x?IG;TyJoRJsQRIhH;ugPcO=FC?+zx6$RZnD>kdR1h0Id z*coIwVB^O33=^l^VPMEnfs29oAaR;IKwf?(BPb!>xB+zp6oB~m@84u_a5%uoz(9wB zh+2Sb2WV(OvSN0DK9~ma$pI9F!0ZLf8B!A>!8EymA_u@M2hrpLva=y5(Q$C3GvsD~ zcn276+#t`Kp;-`tvf|B~=_oZHA`6a!Q7{UI5@29p003vgZzB!p@Xi1L002ovPDHLk FV1lB@i^Tu{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/meta.json b/Resources/Textures/Objects/Tools/multitool.rsi/meta.json index 2b499a45c1..8de591c17e 100644 --- a/Resources/Textures/Objects/Tools/multitool.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/multitool.rsi/meta.json @@ -1,72 +1,63 @@ { "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/94f27c7b25bbde39c1412e24fb32bf6470fcc394", "size": { "x": 32, "y": 32 }, "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "green-unlit", + "directions": 1 + }, + { + "name": "yellow-unlit", + "directions": 1 + }, + { + "name": "red-unlit", + "directions": 1 + }, { "name": "inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 + }, + { + "name": "green-inhand-left", + "directions": 4 + }, + { + "name": "green-inhand-right", + "directions": 4 + }, + { + "name": "yellow-inhand-left", + "directions": 4 + }, + { + "name": "yellow-inhand-right", + "directions": 4 + }, + { + "name": "red-inhand-left", + "directions": 4 + }, + { + "name": "red-inhand-right", + "directions": 4 }, { "name": "equipped-BELT", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "multitool", - "directions": 1, - "delays": [ - [ - 1 - ] - ] + "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/multitool.png b/Resources/Textures/Objects/Tools/multitool.rsi/multitool.png deleted file mode 100644 index 0a89791312e3228b0b8b5876f21350a432196450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iW*8>L*EL^A_osizy>G0u$ zMMDDvP$WJk=EMnghW}N9m-AK~N!J7_W-JNv3ubV5b|VeQ3G#Gt4AGdFoUlMDA;e8s zAkfeu^nui?9<2wD9(Ao!-fN@G;JTnFjgzr)Rp<()rgu;KG?;pH_15zIV7+rC;O@Z} qQ=WJ^xVpP**Ds(Ih*f3iTyAFDemm@ZwB4cMz&Js+gn)78&qol`;+0JIxWwEzGB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/red-inhand-right.png b/Resources/Textures/Objects/Tools/multitool.rsi/red-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..91f633ea38fb3f1fd282da3853a439800c777a74 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=lRaG=Ln`LHy}6O|uz>*Ug~KN` zgTe~DWM4fG#pTx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/red-unlit.png b/Resources/Textures/Objects/Tools/multitool.rsi/red-unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..a141fec4bf9b5deaf39c994e771dbe07e8da5698 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz8&4Okwu`UYN$olMW~C&q#- OVDNPHb6Mw<&;$S$oha}C literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/yellow-inhand-left.png b/Resources/Textures/Objects/Tools/multitool.rsi/yellow-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..62c6be8d208ff2e00dfb17e224df082870ac1b40 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=-JULvAr*7p-ZJDmY{0`B5LmTX zXRrUeiN@(CA_5FeE^NHPd-TQLoBt%dXNv%pGyL&*Hfg5!n%8T!H{8ws9(``xU43ou z`>*#E$eb_JU{C%u*LZ%|!F#XfpX;fuKQcAep!L&ygIm5JoeWQ>hR0Ptooc?-OiSBZ r`_CO&iL>%K9@!%7U zdkVhq9^39&6uxl-PtFX1gXfaM6Cc{%@VfAR!(A4j76$gEdp=F6tSd8}_U7!nH}=MJ zZ1it`+qrn>&ie9|RqsuB_itYJ{>4+Vl=N@!-k$wp(DL`W{>746;;)tpgLE@A?6%F? zKmGTP!k&m}yIgao_f`LhD=)fw)%V*6pzIwDrF~9|OeW5+_g@B5?dj_0vd$@?2>{+@ BS!ngI0)z4*}Q$iB}kKQRu literal 0 HcmV?d00001 From 21a2ea86e448d164713b3e05d90d94cc46c95c23 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Tue, 5 Jan 2021 13:20:49 +0100 Subject: [PATCH 042/166] Update engine to v0.2.13 (properly) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 86e34ea27b..9b92bcf911 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 86e34ea27b6ec9827220656727d1de6e82b70fe5 +Subproject commit 9b92bcf91191d33074b790489c6440f084ce8433 From 38f5185bdb3df2cf5d9e6ffb7c3543df6b90ff65 Mon Sep 17 00:00:00 2001 From: SweptWasTaken Date: Tue, 5 Jan 2021 12:44:03 -0800 Subject: [PATCH 043/166] Nukes Pathfinding maps --- Resources/Maps/Test/Pathfinding/simple.yml | 277 --------------------- 1 file changed, 277 deletions(-) delete mode 100644 Resources/Maps/Test/Pathfinding/simple.yml diff --git a/Resources/Maps/Test/Pathfinding/simple.yml b/Resources/Maps/Test/Pathfinding/simple.yml deleted file mode 100644 index a9ad2d797c..0000000000 --- a/Resources/Maps/Test/Pathfinding/simple.yml +++ /dev/null @@ -1,277 +0,0 @@ -meta: - format: 2 - name: DemoStation - author: Space-Wizards - postmapinit: true -tilemap: - 0: space - 1: floor_asteroid_coarse_sand0 - 2: floor_asteroid_coarse_sand1 - 3: floor_asteroid_coarse_sand2 - 4: floor_asteroid_coarse_sand_dug - 5: floor_asteroid_sand - 6: floor_asteroid_tile - 7: floor_carpet - 8: floor_dark - 9: floor_elevator_shaft - 10: floor_freezer - 11: floor_green_circuit - 12: floor_hull_center0 - 13: floor_hull_center1 - 14: floor_hull_center10 - 15: floor_hull_center11 - 16: floor_hull_center12 - 17: floor_hull_center13 - 18: floor_hull_center14 - 19: floor_hull_center15 - 20: floor_hull_center16 - 21: floor_hull_center17 - 22: floor_hull_center18 - 23: floor_hull_center19 - 24: floor_hull_center2 - 25: floor_hull_center20 - 26: floor_hull_center21 - 27: floor_hull_center22 - 28: floor_hull_center23 - 29: floor_hull_center24 - 30: floor_hull_center25 - 31: floor_hull_center26 - 32: floor_hull_center27 - 33: floor_hull_center28 - 34: floor_hull_center29 - 35: floor_hull_center3 - 36: floor_hull_center30 - 37: floor_hull_center31 - 38: floor_hull_center32 - 39: floor_hull_center33 - 40: floor_hull_center34 - 41: floor_hull_center35 - 42: floor_hull_center4 - 43: floor_hull_center5 - 44: floor_hull_center6 - 45: floor_hull_center7 - 46: floor_hull_center8 - 47: floor_hull_center9 - 48: floor_hydro - 49: floor_lino - 50: floor_mono - 51: floor_reinforced - 52: floor_rock_vault - 53: floor_showroom - 54: floor_steel - 55: floor_steel_dirty - 56: floor_techmaint - 57: floor_white - 58: plating - 59: underplating -grids: -- settings: - chunksize: 16 - tilesize: 1 - snapsize: 1 - chunks: - - ind: "-1,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAA== - - ind: "-1,0" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - - ind: "0,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAA== - - ind: "0,0" - tiles: NgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - - ind: "1,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - - ind: "1,0" - tiles: NgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== -entities: -- uid: 0 - components: - - parent: null - pos: 0.8203125,-0.4765625 - type: Transform - - index: 0 - type: MapGrid - - shapes: - - !type:PhysShapeGrid - grid: 0 - type: Physics -- uid: 1 - type: wall_light - components: - - parent: 0 - pos: 24.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 2 - type: wall_light - components: - - parent: 0 - pos: -0.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 3 - type: wall_light - components: - - parent: 0 - pos: 24.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 4 - type: wall_light - components: - - parent: 0 - pos: 24.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 5 - type: wall_light - components: - - parent: 0 - pos: 4.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 6 - type: wall_light - components: - - parent: 0 - pos: 9.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 7 - type: wall_light - components: - - parent: 0 - pos: 14.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 8 - type: wall_light - components: - - parent: 0 - pos: 19.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 9 - type: wall_light - components: - - parent: 0 - pos: 19.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 10 - type: wall_light - components: - - parent: 0 - pos: 19.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 11 - type: wall_light - components: - - parent: 0 - pos: 14.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 12 - type: wall_light - components: - - parent: 0 - pos: 14.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 13 - type: wall_light - components: - - parent: 0 - pos: 9.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 14 - type: wall_light - components: - - parent: 0 - pos: 9.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 15 - type: wall_light - components: - - parent: 0 - pos: 4.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 16 - type: wall_light - components: - - parent: 0 - pos: 4.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 17 - type: wall_light - components: - - parent: 0 - pos: -0.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -- uid: 18 - type: wall_light - components: - - parent: 0 - pos: -0.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Physics -... From ba6fa3b1b4d5fe960052feec64b54e8df8b1adf6 Mon Sep 17 00:00:00 2001 From: SweptWasTaken Date: Tue, 5 Jan 2021 13:00:12 -0800 Subject: [PATCH 044/166] Done --- Content.Shared/CCVars.cs | 2 +- .../Maps/Test/Breathing/3by3-20oxy-80nit.yml | 130 ++++++++++-------- 2 files changed, 72 insertions(+), 60 deletions(-) diff --git a/Content.Shared/CCVars.cs b/Content.Shared/CCVars.cs index a9b88f87e7..7fe2d2eac9 100644 --- a/Content.Shared/CCVars.cs +++ b/Content.Shared/CCVars.cs @@ -1,4 +1,4 @@ -using Robust.Shared; +using Robust.Shared; using Robust.Shared.Configuration; namespace Content.Shared diff --git a/Resources/Maps/Test/Breathing/3by3-20oxy-80nit.yml b/Resources/Maps/Test/Breathing/3by3-20oxy-80nit.yml index c45f45edb6..3263d26e64 100644 --- a/Resources/Maps/Test/Breathing/3by3-20oxy-80nit.yml +++ b/Resources/Maps/Test/Breathing/3by3-20oxy-80nit.yml @@ -2,7 +2,7 @@ meta: format: 2 name: DemoStation author: Space-Wizards - postmapinit: true + postmapinit: false tilemap: 0: space 1: floor_asteroid_coarse_sand0 @@ -11,62 +11,26 @@ tilemap: 4: floor_asteroid_coarse_sand_dug 5: floor_asteroid_sand 6: floor_asteroid_tile - 7: floor_carpet - 8: floor_dark - 9: floor_elevator_shaft - 10: floor_freezer - 11: floor_gold - 12: floor_green_circuit - 13: floor_hull_center0 - 14: floor_hull_center1 - 15: floor_hull_center10 - 16: floor_hull_center11 - 17: floor_hull_center12 - 18: floor_hull_center13 - 19: floor_hull_center14 - 20: floor_hull_center15 - 21: floor_hull_center16 - 22: floor_hull_center17 - 23: floor_hull_center18 - 24: floor_hull_center19 - 25: floor_hull_center2 - 26: floor_hull_center20 - 27: floor_hull_center21 - 28: floor_hull_center22 - 29: floor_hull_center23 - 30: floor_hull_center24 - 31: floor_hull_center25 - 32: floor_hull_center26 - 33: floor_hull_center27 - 34: floor_hull_center28 - 35: floor_hull_center29 - 36: floor_hull_center3 - 37: floor_hull_center30 - 38: floor_hull_center31 - 39: floor_hull_center32 - 40: floor_hull_center33 - 41: floor_hull_center34 - 42: floor_hull_center35 - 43: floor_hull_center4 - 44: floor_hull_center5 - 45: floor_hull_center6 - 46: floor_hull_center7 - 47: floor_hull_center8 - 48: floor_hull_center9 - 49: floor_hydro - 50: floor_lino - 51: floor_mono - 52: floor_reinforced - 53: floor_rock_vault - 54: floor_showroom - 55: floor_snow - 56: floor_steel - 57: floor_steel_dirty - 58: floor_techmaint - 59: floor_white - 60: floor_wood - 61: plating - 62: underplating + 7: floor_dark + 8: floor_elevator_shaft + 9: floor_freezer + 10: floor_gold + 11: floor_green_circuit + 12: floor_hydro + 13: floor_lino + 14: floor_mono + 15: floor_reinforced + 16: floor_rock_vault + 17: floor_showroom + 18: floor_snow + 19: floor_steel + 20: floor_steel_dirty + 21: floor_techmaint + 22: floor_white + 23: floor_wood + 24: lattice + 25: plating + 26: underplating grids: - settings: chunksize: 16 @@ -74,9 +38,9 @@ grids: snapsize: 1 chunks: - ind: "-1,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAA== - ind: "0,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "-1,0" tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "0,0" @@ -102,6 +66,8 @@ entities: - 0 - 0 - 0 + - 0 + - 0 molesArchived: - 20 - 80 @@ -109,11 +75,57 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + temperature: 293.15 + - volume: 2500 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + molesArchived: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 temperature: 293.15 tiles: ? X: 0 Y: -2 : 0 + ? X: -1 + Y: -3 + : 1 + ? X: -1 + Y: -2 + : 1 + ? X: -1 + Y: -1 + : 1 + ? X: 0 + Y: -3 + : 1 + ? X: 0 + Y: -1 + : 1 + ? X: 1 + Y: -3 + : 1 + ? X: 1 + Y: -2 + : 1 + ? X: 1 + Y: -1 + : 1 type: GridAtmosphere - uid: 1 type: reinforced_wall From 1f333c45fd78cc39e7c505da92a6eade016b3175 Mon Sep 17 00:00:00 2001 From: SweptWasTaken Date: Tue, 5 Jan 2021 13:33:33 -0800 Subject: [PATCH 045/166] Initial --- .../{Constructible/Items => Objects/Misc}/metal_rod.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) rename Resources/Prototypes/Entities/{Constructible/Items => Objects/Misc}/metal_rod.yml (87%) diff --git a/Resources/Prototypes/Entities/Constructible/Items/metal_rod.yml b/Resources/Prototypes/Entities/Objects/Misc/metal_rod.yml similarity index 87% rename from Resources/Prototypes/Entities/Constructible/Items/metal_rod.yml rename to Resources/Prototypes/Entities/Objects/Misc/metal_rod.yml index 07933633d2..504f771f09 100644 --- a/Resources/Prototypes/Entities/Constructible/Items/metal_rod.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/metal_rod.yml @@ -10,9 +10,8 @@ - type: Item size: 24 icon: - sprite: /Textures/Constructible/Structures/Walls/materials.rsi + sprite: Objects/Materials/materials.rsi state: rods - prefix: inhand - type: Construction graph: metalRod node: MetalRod From e99d497b5445bdc3f870f389aee8befe01b05cdb Mon Sep 17 00:00:00 2001 From: Swept Date: Wed, 6 Jan 2021 01:58:56 +0000 Subject: [PATCH 046/166] Increase PDA box capacity (#2924) --- Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml b/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml index 25ef56b8d8..6231772b38 100644 --- a/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml +++ b/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml @@ -64,7 +64,7 @@ - state: pda - type: Item - type: Storage - capacity: 3 + capacity: 30 - type: entity name: meson box From 78ee111fbbf4e52fe9bc33e988b20cd76f03938c Mon Sep 17 00:00:00 2001 From: Swept Date: Wed, 6 Jan 2021 02:00:04 +0000 Subject: [PATCH 047/166] Update syndie bag IDs (#2925) --- .../Catalog/Fills/Backpacks/duffelbag.yml | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 4a6180c7c9..7872dd02a7 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -16,13 +16,11 @@ capacity: 30 - type: entity - parent: ClothingBackpackDuffelSyndicate + parent: ClothingBackpackDuffelSyndicateMedical id: ClothingBackpackDuffelSyndicateFilledMedical name: syndicate surgical duffelbag description: "A large duffel bag for holding extra medical supplies - this one seems to be designed for holding surgical tools." components: - - type: Sprite - state: icon-med - type: StorageFill contents: - name: Hemostat @@ -35,13 +33,11 @@ capacity: 30 - type: entity - parent: ClothingBackpackDuffelSyndicate + parent: ClothingBackpackDuffelSyndicateAmmo id: ClothingBackpackDuffelSyndicateFilledShotgun name: Bojevic bundle description: "Lean and mean: Contains the popular Bojevic Shotgun, a 12g beanbag drum and 2 12g buckshot drums." #, and a pair of Thermal Imaging Goggles. components: - - type: Sprite - state: icon-ammo - type: StorageFill contents: - name: ShotgunBojevic @@ -52,13 +48,11 @@ capacity: 100 - type: entity - parent: ClothingBackpackDuffelSyndicate + parent: ClothingBackpackDuffelSyndicateAmmo id: ClothingBackpackDuffelSyndicateFilledSMG name: C-20r bundle description: "Old faithful: The classic C-20r Submachine Gun, bundled with three magazines." #, and a Suppressor. components: - - type: Sprite - state: icon-ammo - type: StorageFill contents: - name: SmgC20r @@ -69,13 +63,11 @@ capacity: 100 - type: entity - parent: ClothingBackpackDuffelSyndicate + parent: ClothingBackpackDuffelSyndicateAmmo id: ClothingBackpackDuffelSyndicateFilledLMG name: L6 Saw bundle description: "More dakka: The iconic L6 lightmachinegun, bundled with 2 box magazines." components: - - type: Sprite - state: icon-ammo - type: StorageFill contents: - name: LMGL6 @@ -84,13 +76,11 @@ capacity: 100 - type: entity - parent: ClothingBackpackDuffelSyndicate + parent: ClothingBackpackDuffelSyndicateAmmo id: ClothingBackpackDuffelSyndicateFilledGrenadeLauncher name: China-Lake bundle description: "An old China-Lake grenade launcher bundled with 9 rounds of various destruction capability." components: - - type: Sprite - state: icon-ammo - type: StorageFill contents: - name: LauncherChinaLake From 6a56d86862f8a4c666fc6f60537dee0073051937 Mon Sep 17 00:00:00 2001 From: Clyybber Date: Wed, 6 Jan 2021 03:05:06 +0100 Subject: [PATCH 048/166] Enable FocusOOC and FocusAdminChat keybinds in lobby screen (#2917) --- Content.Client/State/LobbyState.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Content.Client/State/LobbyState.cs b/Content.Client/State/LobbyState.cs index 7fcb82826c..d2e4f90ec8 100644 --- a/Content.Client/State/LobbyState.cs +++ b/Content.Client/State/LobbyState.cs @@ -70,6 +70,12 @@ namespace Content.Client.State _inputManager.SetInputCommand(ContentKeyFunctions.FocusChat, InputCmdHandler.FromDelegate(s => GameScreen.FocusChat(_lobby.Chat))); + _inputManager.SetInputCommand(ContentKeyFunctions.FocusOOC, + InputCmdHandler.FromDelegate(s => GameScreen.FocusOOC(_lobby.Chat))); + + _inputManager.SetInputCommand(ContentKeyFunctions.FocusAdminChat, + InputCmdHandler.FromDelegate(s => GameScreen.FocusAdminChat(_lobby.Chat))); + UpdateLobbyUi(); _lobby.CharacterPreview.CharacterSetupButton.OnPressed += args => From 258ae554419fe5feff7be3ef23c7465471d4cfd2 Mon Sep 17 00:00:00 2001 From: cyclowns Date: Tue, 5 Jan 2021 19:06:09 -0700 Subject: [PATCH 049/166] mobmask -> passable (#2916) Co-authored-by: cyclowns --- Resources/Prototypes/Entities/Constructible/Furniture/seats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml b/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml index 858df8f07e..fae372caf0 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml @@ -119,7 +119,7 @@ shapes: - !type:PhysShapeAabb bounds: "-0.45, -0.3, 0.35, 0.3" - layer: [ MobMask ] + layer: [ Passable ] - type: entity name: wooden chair From 2bd4bf12a40b7232904d0bb68ea0cda1c480b305 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 6 Jan 2021 22:49:19 +1100 Subject: [PATCH 050/166] Utensils changes (#2929) * Utensils changes * Burn it all Co-authored-by: Metal Gear Sloth --- .../Components/Nutrition/FoodComponent.cs | 3 -- .../Components/Utensil/UtensilComponent.cs | 42 +++++++++++-------- .../Utensil/SharedUtensilComponent.cs | 21 ---------- 3 files changed, 24 insertions(+), 42 deletions(-) delete mode 100644 Content.Shared/GameObjects/Components/Utensil/SharedUtensilComponent.cs diff --git a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs index bea683e309..1b07a6bdce 100644 --- a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs @@ -10,9 +10,6 @@ using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Utensil; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Body; -using Content.Shared.GameObjects.Components.Body.Behavior; -using Content.Shared.GameObjects.Components.Body.Mechanism; -using Content.Shared.GameObjects.Components.Utensil; using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; using Content.Shared.Utility; diff --git a/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs b/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs index 870931026e..b3dfe87c6b 100644 --- a/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs +++ b/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs @@ -1,13 +1,14 @@ -using System; +#nullable enable +using System; using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.GameObjects.Components.Nutrition; -using Content.Shared.GameObjects.Components.Utensil; using Content.Shared.Interfaces.GameObjects.Components; using Content.Shared.Utility; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; @@ -18,21 +19,22 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Utensil { [RegisterComponent] - public class UtensilComponent : SharedUtensilComponent, IAfterInteract + public class UtensilComponent : Component, IAfterInteract { - [Dependency] private readonly IEntitySystemManager _entitySystem = default!; - [Dependency] private readonly IRobustRandom _random = default!; + public override string Name => "Utensil"; - protected UtensilType _types = UtensilType.None; + private UtensilType _types = UtensilType.None; [ViewVariables] - public override UtensilType Types + public UtensilType Types { get => _types; set { + if (_types.Equals(value)) + return; + _types = value; - Dirty(); } } @@ -47,7 +49,7 @@ namespace Content.Server.GameObjects.Components.Utensil /// The sound to be played if the utensil breaks. /// [ViewVariables] - private string _breakSound; + private string? _breakSound; public void AddType(UtensilType type) { @@ -61,7 +63,7 @@ namespace Content.Server.GameObjects.Components.Utensil public bool HasType(UtensilType type) { - return _types.HasFlag(type); + return (_types & type) != 0; } public void RemoveType(UtensilType type) @@ -71,9 +73,9 @@ namespace Content.Server.GameObjects.Components.Utensil internal void TryBreak(IEntity user) { - if (_random.Prob(_breakChance)) + if (_breakSound != null && IoCManager.Resolve().Prob(_breakChance)) { - _entitySystem.GetEntitySystem() + EntitySystem.Get() .PlayFromEntity(_breakSound, user, AudioParams.Default.WithVolume(-2f)); Owner.Delete(); } @@ -112,12 +114,7 @@ namespace Content.Server.GameObjects.Components.Utensil private void TryUseUtensil(IEntity user, IEntity target) { - if (user == null || target == null) - { - return; - } - - if (!target.TryGetComponent(out FoodComponent food)) + if (!target.TryGetComponent(out FoodComponent? food)) { return; } @@ -130,4 +127,13 @@ namespace Content.Server.GameObjects.Components.Utensil food.TryUseFood(user, null, this); } } + + [Flags] + public enum UtensilType : byte + { + None = 0, + Fork = 1, + Spoon = 1 << 1, + Knife = 1 << 2 + } } diff --git a/Content.Shared/GameObjects/Components/Utensil/SharedUtensilComponent.cs b/Content.Shared/GameObjects/Components/Utensil/SharedUtensilComponent.cs deleted file mode 100644 index faccf1287d..0000000000 --- a/Content.Shared/GameObjects/Components/Utensil/SharedUtensilComponent.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using Robust.Shared.GameObjects; - -namespace Content.Shared.GameObjects.Components.Utensil -{ - [Flags] - public enum UtensilType : byte - { - None = 0, - Fork = 1, - Spoon = 1 << 1, - Knife = 1 << 2 - } - - public class SharedUtensilComponent : Component - { - public override string Name => "Utensil"; - - public virtual UtensilType Types { get; set; } - } -} From 482106e82704c5e8b1be2ff919d68326ac46deba Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 6 Jan 2021 22:50:49 +1100 Subject: [PATCH 051/166] Optimise handheld lights (#2927) * Optimise handheld lights * Woops also these * Might as well do shutdown too * Also these Co-authored-by: Metal Gear Sloth --- .../Interactable/HandheldLightComponent.cs | 28 +++++++++++++++ .../EntitySystems/HandHeldLightSystem.cs | 36 +++++++++++++++++-- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs index 430d0e785d..7c3862ccd5 100644 --- a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs @@ -80,6 +80,12 @@ namespace Content.Server.GameObjects.Components.Interactable Dirty(); } + public override void OnRemove() + { + base.OnRemove(); + Owner.EntityManager.EventBus.QueueEvent(EventSource.Local, new DeactivateHandheldLightMessage(this)); + } + async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) { if (!ActionBlockerSystem.CanInteract(eventArgs.User)) return false; @@ -125,6 +131,7 @@ namespace Content.Server.GameObjects.Components.Interactable SetState(false); Activated = false; UpdateLightAction(); + Owner.EntityManager.EventBus.QueueEvent(EventSource.Local, new DeactivateHandheldLightMessage(this)); if (makeNoise) { @@ -163,6 +170,7 @@ namespace Content.Server.GameObjects.Components.Interactable Activated = true; UpdateLightAction(); SetState(true); + Owner.EntityManager.EventBus.QueueEvent(EventSource.Local, new ActivateHandheldLightMessage(this)); if (TurnOnSound != null) EntitySystem.Get().PlayFromEntity(TurnOnSound, Owner); return true; @@ -283,4 +291,24 @@ namespace Content.Server.GameObjects.Components.Interactable return lightComponent.ToggleStatus(args.Performer); } } + + internal sealed class ActivateHandheldLightMessage : EntitySystemMessage + { + public HandheldLightComponent Component { get; } + + public ActivateHandheldLightMessage(HandheldLightComponent component) + { + Component = component; + } + } + + internal sealed class DeactivateHandheldLightMessage : EntitySystemMessage + { + public HandheldLightComponent Component { get; } + + public DeactivateHandheldLightMessage(HandheldLightComponent component) + { + Component = component; + } + } } diff --git a/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs b/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs index 3947f882a7..6ccfa9d180 100644 --- a/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; +using System.Linq; using Content.Server.GameObjects.Components.Interactable; using JetBrains.Annotations; using Robust.Shared.GameObjects.Systems; @@ -7,11 +9,41 @@ namespace Content.Server.GameObjects.EntitySystems [UsedImplicitly] internal sealed class HandHeldLightSystem : EntitySystem { + // TODO: Ideally you'd be able to subscribe to power stuff to get events at certain percentages.. or something? + // But for now this will be better anyway. + private HashSet _activeLights = new(); + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(HandleActivate); + SubscribeLocalEvent(HandleDeactivate); + } + + public override void Shutdown() + { + base.Shutdown(); + _activeLights.Clear(); + UnsubscribeLocalEvent(); + UnsubscribeLocalEvent(); + } + + private void HandleActivate(ActivateHandheldLightMessage message) + { + _activeLights.Add(message.Component); + } + + private void HandleDeactivate(DeactivateHandheldLightMessage message) + { + _activeLights.Remove(message.Component); + } + public override void Update(float frameTime) { - foreach (var comp in ComponentManager.EntityQuery(false)) + foreach (var handheld in _activeLights.ToArray()) { - comp.OnUpdate(frameTime); + if (handheld.Deleted || handheld.Paused) continue; + handheld.OnUpdate(frameTime); } } } From 2d1fe31bce321796918973992aeee6dcce79bcf0 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Wed, 6 Jan 2021 06:31:41 -0600 Subject: [PATCH 052/166] SolutionContainerComponent refactors (#2746) * Moves ContainsReagent from SolutionContainer to Solution * GetMajorReagentId from SOlutionContainer to Solution * Makes capability checks use HasFlag * Moves Solution Color calculation from SolutionContainer to Solution * Replaces SolutionContainerCaps.NoExamine with CanExamine * Misc SolutionContainer.Capabilities yaml cleanup * Removes HasFlag usage in SolutionContainerComponent Co-authored-by: py01 --- .../Chemistry/SolutionContainerComponent.cs | 64 ++++-------------- Content.Shared/Chemistry/Solution.cs | 65 ++++++++++++++++++- Content.Shared/Chemistry/SolutionCaps.cs | 12 +++- .../Constructible/Specific/hydroponics.yml | 2 +- .../Entities/Mobs/Species/human.yml | 2 +- .../Entities/Objects/Consumable/botany.yml | 10 +-- .../Entities/Objects/Consumable/drinks.yml | 4 +- .../Objects/Consumable/drinks_bottles.yml | 1 - .../Objects/Consumable/drinks_cups.yml | 1 - .../Entities/Objects/Consumable/food.yml | 2 +- .../Consumable/kitchen_reagent_containers.yml | 1 - .../Objects/Consumable/trash_drinks.yml | 3 +- .../Objects/Misc/fire_extinguisher.yml | 2 +- .../Entities/Objects/Specific/chemistry.yml | 9 +-- .../Entities/Objects/Specific/janitor.yml | 7 +- .../Entities/Objects/Specific/seeds.yml | 4 +- .../Entities/Objects/Tools/botany_tools.yml | 8 +-- .../Entities/Objects/Tools/cowtools.yml | 4 +- .../Entities/Objects/Tools/welders.yml | 6 +- .../Entities/Objects/Weapons/Melee/spear.yml | 3 +- Resources/Prototypes/Entities/puddle.yml | 1 - 21 files changed, 112 insertions(+), 99 deletions(-) diff --git a/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs b/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs index d2d72ac1fd..0cfb06bcdc 100644 --- a/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.Server.Chemistry; using Content.Server.GameObjects.Components.GUI; @@ -51,10 +51,10 @@ namespace Content.Server.GameObjects.Components.Chemistry public ReagentUnit EmptyVolume => MaxVolume - CurrentVolume; public IReadOnlyList ReagentList => Solution.Contents; - public bool CanExamineContents => (Capabilities & SolutionContainerCaps.NoExamine) == 0; - public bool CanUseWithChemDispenser => (Capabilities & SolutionContainerCaps.FitsInDispenser) != 0; - public bool CanAddSolutions => (Capabilities & SolutionContainerCaps.AddTo) != 0; - public bool CanRemoveSolutions => (Capabilities & SolutionContainerCaps.RemoveFrom) != 0; + public bool CanExamineContents => Capabilities.HasCap(SolutionContainerCaps.CanExamine); + public bool CanUseWithChemDispenser => Capabilities.HasCap(SolutionContainerCaps.FitsInDispenser); + public bool CanAddSolutions => Capabilities.HasCap(SolutionContainerCaps.AddTo); + public bool CanRemoveSolutions => Capabilities.HasCap(SolutionContainerCaps.RemoveFrom); /// public override void ExposeData(ObjectSerializer serializer) @@ -63,7 +63,7 @@ namespace Content.Server.GameObjects.Components.Chemistry serializer.DataField(this, x => x.MaxVolume, "maxVol", ReagentUnit.New(0)); serializer.DataField(this, x => x.Solution, "contents", new Solution()); - serializer.DataField(this, x => x.Capabilities, "caps", SolutionContainerCaps.AddTo | SolutionContainerCaps.RemoveFrom); + serializer.DataField(this, x => x.Capabilities, "caps", SolutionContainerCaps.AddTo | SolutionContainerCaps.RemoveFrom | SolutionContainerCaps.CanExamine); serializer.DataField(ref _fillInitState, "fillingState", string.Empty); serializer.DataField(ref _fillInitSteps, "fillingSteps", 7); } @@ -134,35 +134,7 @@ namespace Content.Server.GameObjects.Components.Chemistry protected void RecalculateColor() { - if (Solution.TotalVolume == 0) - { - SubstanceColor = Color.Transparent; - return; - } - - Color mixColor = default; - var runningTotalQuantity = ReagentUnit.New(0); - - foreach (var reagent in Solution) - { - runningTotalQuantity += reagent.Quantity; - - if (!_prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype proto)) - { - continue; - } - - if (mixColor == default) - { - mixColor = proto.SubstanceColor; - continue; - } - - var interpolateValue = (1 / runningTotalQuantity.Float()) * reagent.Quantity.Float(); - mixColor = Color.InterpolateBetween(mixColor, proto.SubstanceColor, interpolateValue); - } - - SubstanceColor = mixColor; + SubstanceColor = Solution.Color; } /// [ViewVariables] public ReagentUnit EmptyVolume => MaxVolume - CurrentVolume; - public IReadOnlyList ReagentList => Solution.Contents; public bool CanExamineContents => Capabilities.HasCap(SolutionContainerCaps.CanExamine); public bool CanUseWithChemDispenser => Capabilities.HasCap(SolutionContainerCaps.FitsInDispenser); @@ -74,6 +75,7 @@ namespace Content.Server.GameObjects.Components.Chemistry _audioSystem = EntitySystem.Get(); _chemistrySystem = _entitySystemManager.GetEntitySystem(); _reactions = _prototypeManager.EnumeratePrototypes(); + _reactionSystem = _entitySystemManager.GetEntitySystem(); } protected override void Startup() @@ -98,7 +100,7 @@ namespace Content.Server.GameObjects.Components.Chemistry public override bool TryRemoveReagent(string reagentId, ReagentUnit quantity) { - if (!ContainsReagent(reagentId, out var currentQuantity)) + if (!Solution.ContainsReagent(reagentId, out var currentQuantity)) { return false; } @@ -289,29 +291,7 @@ namespace Content.Server.GameObjects.Components.Chemistry private void CheckForReaction() { - bool checkForNewReaction = false; - while (true) - { - //TODO: make a hashmap at startup and then look up reagents in the contents for a reaction - //Check the solution for every reaction - foreach (var reaction in _reactions) - { - if (SolutionValidReaction(reaction, out var unitReactions)) - { - PerformReaction(reaction, unitReactions); - checkForNewReaction = true; - break; - } - } - - //Check for a new reaction if a reaction occurs, run loop again. - if (checkForNewReaction) - { - checkForNewReaction = false; - continue; - } - return; - } + _reactionSystem.FullyReactSolution(Solution, Owner, MaxVolume); } public bool TryAddReagent(string reagentId, ReagentUnit quantity, out ReagentUnit acceptedQuantity, bool skipReactionCheck = false, bool skipColor = false) @@ -357,91 +337,6 @@ namespace Content.Server.GameObjects.Components.Chemistry return true; } - /// - /// Checks if a solution has the reactants required to cause a specified reaction. - /// - /// The solution to check for reaction conditions. - /// The reaction whose reactants will be checked for in the solution. - /// The number of times the reaction can occur with the given solution. - /// - private bool SolutionValidReaction(ReactionPrototype reaction, out ReagentUnit unitReactions) - { - unitReactions = ReagentUnit.MaxValue; //Set to some impossibly large number initially - foreach (var reactant in reaction.Reactants) - { - if (!ContainsReagent(reactant.Key, out ReagentUnit reagentQuantity)) - { - return false; - } - var currentUnitReactions = reagentQuantity / reactant.Value.Amount; - if (currentUnitReactions < unitReactions) - { - unitReactions = currentUnitReactions; - } - } - - if (unitReactions == 0) - { - return false; - } - else - { - return true; - } - } - - /// - /// Perform a reaction on a solution. This assumes all reaction criteria have already been checked and are met. - /// - /// Solution to be reacted. - /// Reaction to occur. - /// The number of times to cause this reaction. - private void PerformReaction(ReactionPrototype reaction, ReagentUnit unitReactions) - { - //Remove non-catalysts - foreach (var reactant in reaction.Reactants) - { - if (!reactant.Value.Catalyst) - { - var amountToRemove = unitReactions * reactant.Value.Amount; - TryRemoveReagent(reactant.Key, amountToRemove); - } - } - - // Add products - foreach (var product in reaction.Products) - { - TryAddReagent(product.Key, product.Value * unitReactions, out var acceptedQuantity, true); - } - - // Trigger reaction effects - foreach (var effect in reaction.Effects) - { - effect.React(Owner, unitReactions.Double()); - } - - // Play reaction sound client-side - _audioSystem.PlayAtCoords("/Audio/Effects/Chemistry/bubbles.ogg", Owner.Transform.Coordinates); - } - - /// - /// Check if the solution contains the specified reagent. - /// - /// The reagent to check for. - /// Output the quantity of the reagent if it is contained, 0 if it isn't. - /// Return true if the solution contains the reagent. - public bool ContainsReagent(string reagentId, out ReagentUnit quantity) - { - var containsReagent = Solution.ContainsReagent(reagentId, out var quantityFound); - quantity = quantityFound; - return containsReagent; - } - - public string GetMajorReagentId() - { - return Solution.GetPrimaryReagentId(); - } - protected void UpdateFillIcon() { if (string.IsNullOrEmpty(_fillInitState)) diff --git a/Content.Server/GameObjects/Components/Chemistry/TransformableContainerComponent.cs b/Content.Server/GameObjects/Components/Chemistry/TransformableContainerComponent.cs index 1eff6c49b2..5fad172db7 100644 --- a/Content.Server/GameObjects/Components/Chemistry/TransformableContainerComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/TransformableContainerComponent.cs @@ -1,6 +1,6 @@ -#nullable enable -using Content.Server.GameObjects.EntitySystems; +#nullable enable using Content.Shared.Chemistry; +using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.IoC; @@ -71,7 +71,7 @@ namespace Content.Server.GameObjects.Components.Chemistry } //the biggest reagent in the solution decides the appearance - var reagentId = solution.GetMajorReagentId(); + var reagentId = solution.Solution.GetPrimaryReagentId(); //If biggest reagent didn't changed - don't change anything at all if (_currentReagent != null && _currentReagent.ID == reagentId) diff --git a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs index 2baf98a183..60aca373e1 100644 --- a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -7,7 +7,6 @@ using Content.Server.GameObjects.Components.Chemistry; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Power.ApcNetComponents; -using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces.Chat; using Content.Server.Interfaces.GameObjects; using Content.Server.Utility; @@ -15,6 +14,7 @@ using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Body; using Content.Shared.GameObjects.Components.Body.Part; using Content.Shared.GameObjects.Components.Power; +using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; using Content.Shared.Kitchen; @@ -32,7 +32,6 @@ using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Serialization; -using Robust.Shared.Timers; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Kitchen @@ -441,7 +440,7 @@ namespace Content.Server.GameObjects.Components.Kitchen foreach (var reagent in recipe.IngredientsReagents) { - if (!solution.ContainsReagent(reagent.Key, out var amount)) + if (!solution.Solution.ContainsReagent(reagent.Key, out var amount)) { return MicrowaveSuccessState.RecipeFail; } diff --git a/Content.Server/Chemistry/ReactionPrototype.cs b/Content.Shared/Chemistry/ReactionPrototype.cs similarity index 79% rename from Content.Server/Chemistry/ReactionPrototype.cs rename to Content.Shared/Chemistry/ReactionPrototype.cs index 3cfef8c4d9..1c0911da95 100644 --- a/Content.Server/Chemistry/ReactionPrototype.cs +++ b/Content.Shared/Chemistry/ReactionPrototype.cs @@ -1,12 +1,13 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Server.Interfaces.Chemistry; -using Content.Shared.Chemistry; +using Content.Shared.Interfaces; using Robust.Shared.Interfaces.Serialization; +using Robust.Shared.IoC; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using YamlDotNet.RepresentationModel; -namespace Content.Server.Chemistry +namespace Content.Shared.Chemistry { /// /// Prototype for chemical reaction definitions @@ -35,6 +36,8 @@ namespace Content.Server.Chemistry /// public IReadOnlyList Effects => _effects; + [Dependency] private readonly IModuleManager _moduleManager = default!; + public void LoadFrom(YamlMappingNode mapping) { var serializer = YamlObjectSerializer.NewReader(mapping); @@ -43,7 +46,13 @@ namespace Content.Server.Chemistry serializer.DataField(ref _name, "name", string.Empty); serializer.DataField(ref _reactants, "reactants", new Dictionary()); serializer.DataField(ref _products, "products", new Dictionary()); - serializer.DataField(ref _effects, "effects", new List()); + + if (_moduleManager.IsServerModule) + { + //TODO: Don't have a check for if this is the server + //Some implementations of IReactionEffect can't currently be moved to shared, so this is here to prevent the client from breaking when reading server-only IReactionEffects. + serializer.DataField(ref _effects, "effects", new List()); + } } } diff --git a/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs b/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs new file mode 100644 index 0000000000..0c43fff0d9 --- /dev/null +++ b/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs @@ -0,0 +1,150 @@ +using Content.Shared.Chemistry; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Prototypes; +using System.Collections.Generic; + +namespace Content.Shared.GameObjects.EntitySystems +{ + public class ChemicalReactionSystem : EntitySystem + { + private IEnumerable _reactions; + + private const int MaxReactionIterations = 20; + + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + + public override void Initialize() + { + base.Initialize(); + _reactions = _prototypeManager.EnumeratePrototypes(); + } + + /// + /// Checks if a solution can undergo a specified reaction. + /// + /// The solution to check. + /// The reaction to check. + /// How many times this reaction can occur. + /// + private static bool CanReact(Solution solution, ReactionPrototype reaction, out ReagentUnit lowestUnitReactions) + { + lowestUnitReactions = ReagentUnit.MaxValue; + + foreach (var reactantData in reaction.Reactants) + { + var reactantName = reactantData.Key; + var reactantCoefficient = reactantData.Value.Amount; + + if (!solution.ContainsReagent(reactantName, out var reactantQuantity)) + return false; + + var unitReactions = reactantQuantity / reactantCoefficient; + + if (unitReactions < lowestUnitReactions) + { + lowestUnitReactions = unitReactions; + } + } + return true; + } + + /// + /// Perform a reaction on a solution. This assumes all reaction criteria are met. + /// Removes the reactants from the solution, then returns a solution with all products. + /// + private static Solution PerformReaction(Solution solution, IEntity owner, ReactionPrototype reaction, ReagentUnit unitReactions) + { + //Remove reactants + foreach (var reactant in reaction.Reactants) + { + if (!reactant.Value.Catalyst) + { + var amountToRemove = unitReactions * reactant.Value.Amount; + solution.RemoveReagent(reactant.Key, amountToRemove); + } + } + + //Create products + var products = new Solution(); + foreach (var product in reaction.Products) + { + products.AddReagent(product.Key, product.Value * unitReactions); + } + + // Trigger reaction effects + foreach (var effect in reaction.Effects) + { + effect.React(owner, unitReactions.Double()); + } + + return products; + } + + /// + /// Performs all chemical reactions that can be run on a solution. + /// Removes the reactants from the solution, then returns a solution with all products. + /// WARNING: Does not trigger reactions between solution and new products. + /// + private Solution ProcessReactions(Solution solution, IEntity owner) + { + //TODO: make a hashmap at startup and then look up reagents in the contents for a reaction + var overallProducts = new Solution(); + foreach (var reaction in _reactions) + { + if (CanReact(solution, reaction, out var unitReactions)) + { + var reactionProducts = PerformReaction(solution, owner, reaction, unitReactions); + overallProducts.AddSolution(reactionProducts); + break; + } + } + return overallProducts; + } + + /// + /// Continually react a solution until no more reactions occur. + /// + public void FullyReactSolution(Solution solution, IEntity owner) + { + for (var i = 0; i < MaxReactionIterations; i++) + { + var products = ProcessReactions(solution, owner); + + if (products.TotalVolume <= 0) + return; + + solution.AddSolution(products); + } + Logger.Error($"{nameof(Solution)} on {owner} (Uid: {owner.Uid}) could not finish reacting in under {MaxReactionIterations} loops."); + } + + /// + /// Continually react a solution until no more reactions occur, with a volume constraint. + /// If a reaction's products would exceed the max volume, some product is deleted. + /// + public void FullyReactSolution(Solution solution, IEntity owner, ReagentUnit maxVolume) + { + for (var i = 0; i < MaxReactionIterations; i++) + { + var products = ProcessReactions(solution, owner); + + if (products.TotalVolume <= 0) + return; + + var totalVolume = solution.TotalVolume + products.TotalVolume; + var excessVolume = totalVolume - maxVolume; + + if (excessVolume > 0) + { + products.RemoveSolution(excessVolume); //excess product is deleted to fit under volume limit + } + + solution.AddSolution(products); + } + Logger.Error($"{nameof(Solution)} on {owner} (Uid: {owner.Uid}) could not finish reacting in under {MaxReactionIterations} loops."); + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/ChemistrySystem.cs b/Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs similarity index 94% rename from Content.Server/GameObjects/EntitySystems/ChemistrySystem.cs rename to Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs index 69bd555460..9c414cd6f8 100644 --- a/Content.Server/GameObjects/EntitySystems/ChemistrySystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs @@ -1,10 +1,10 @@ -using System; +using System; using System.Linq; using JetBrains.Annotations; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; -namespace Content.Server.GameObjects.EntitySystems +namespace Content.Shared.GameObjects.EntitySystems { /// /// This interface gives components behavior on whether entities solution (implying SolutionComponent is in place) is changed diff --git a/Content.Server/Interfaces/Chemistry/IReactionEffect.cs b/Content.Shared/Interfaces/Chemistry/IReactionEffect.cs similarity index 87% rename from Content.Server/Interfaces/Chemistry/IReactionEffect.cs rename to Content.Shared/Interfaces/Chemistry/IReactionEffect.cs index 36209aef3c..21a4ea91f9 100644 --- a/Content.Server/Interfaces/Chemistry/IReactionEffect.cs +++ b/Content.Shared/Interfaces/Chemistry/IReactionEffect.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Serialization; namespace Content.Server.Interfaces.Chemistry From 8fa8de36edfc569a32ec806f9168b5ef72bd3028 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Thu, 7 Jan 2021 00:37:17 -0600 Subject: [PATCH 059/166] PipeNetDeviceComponent refactor (#2912) * Removes inheritance of PipeNetDeviceComponent * Enables nullable in piping * Piping error messages report the prototype * Moves PipeNetDevice updating to ComponentMessage * Build fix * Review fixes * review fix 2 Co-authored-by: py01 --- .../Atmos/Piping/GasCanisterPortComponent.cs | 75 ++++++++++++------- .../Atmos/Piping/PipeNetDeviceComponent.cs | 22 +++++- .../Atmos/Piping/Pumps/BasePumpComponent.cs | 72 +++++++++--------- .../Piping/Scrubbers/BaseSiphonComponent.cs | 60 +++++++++------ .../Atmos/Piping/Vents/BaseVentComponent.cs | 60 +++++++++------ 5 files changed, 180 insertions(+), 109 deletions(-) diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/GasCanisterPortComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/GasCanisterPortComponent.cs index 39e0289d47..cdc701d36d 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/GasCanisterPortComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/GasCanisterPortComponent.cs @@ -1,7 +1,9 @@ -using Content.Server.GameObjects.Components.NodeContainer; +#nullable enable +using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.Nodes; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.Transform; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Log; using Robust.Shared.ViewVariables; using System.Linq; @@ -9,46 +11,34 @@ using System.Linq; namespace Content.Server.GameObjects.Components.Atmos.Piping { [RegisterComponent] - public class GasCanisterPortComponent : PipeNetDeviceComponent + public class GasCanisterPortComponent : Component { public override string Name => "GasCanisterPort"; [ViewVariables] - public GasCanisterComponent ConnectedCanister { get; private set; } + public GasCanisterComponent? ConnectedCanister { get; private set; } [ViewVariables] public bool ConnectedToCanister => ConnectedCanister != null; [ViewVariables] - private PipeNode _gasPort; + private PipeNode? _gasPort; public override void Initialize() { base.Initialize(); - if (!Owner.TryGetComponent(out var container)) - { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(GasCanisterPortComponent)} on entity {Owner.Uid} did not have a {nameof(NodeContainerComponent)}."); - return; - } - _gasPort = container.Nodes.OfType().FirstOrDefault(); - if (_gasPort == null) - { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(GasCanisterPortComponent)} on entity {Owner.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); - return; - } + Owner.EnsureComponentWarn(); + SetGasPort(); if (Owner.TryGetComponent(out var snapGrid)) { - var anchoredCanister = snapGrid.GetLocal() - .Select(entity => entity.TryGetComponent(out var canister) ? canister : null) - .Where(canister => canister != null) - .Where(canister => canister.Anchored) - .Where(canister => !canister.ConnectedToPort) - .FirstOrDefault(); - if (anchoredCanister != null) + var entities = snapGrid.GetLocal(); + foreach (var entity in entities) { - anchoredCanister.TryConnectToPort(); + if (entity.TryGetComponent(out var canister) && canister.Anchored && !canister.ConnectedToPort) + { + canister.TryConnectToPort(); + break; + } } } } @@ -59,10 +49,24 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping ConnectedCanister?.DisconnectFromPort(); } - public override void Update() + public override void HandleMessage(ComponentMessage message, IComponent? component) { - ConnectedCanister?.Air.Share(_gasPort.Air, 1); - ConnectedCanister?.AirWasUpdated(); + base.HandleMessage(message, component); + switch (message) + { + case PipeNetUpdateMessage: + Update(); + break; + } + } + + public void Update() + { + if (_gasPort == null || ConnectedCanister == null) + return; + + ConnectedCanister.Air.Share(_gasPort.Air, 1); + ConnectedCanister.AirWasUpdated(); } public void ConnectGasCanister(GasCanisterComponent gasCanister) @@ -74,5 +78,20 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping { ConnectedCanister = null; } + + private void SetGasPort() + { + if (!Owner.TryGetComponent(out var container)) + { + Logger.Error($"{typeof(GasCanisterPortComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} did not have a {nameof(NodeContainerComponent)}."); + return; + } + _gasPort = container.Nodes.OfType().FirstOrDefault(); + if (_gasPort == null) + { + Logger.Error($"{typeof(GasCanisterPortComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); + return; + } + } } } diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/PipeNetDeviceComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/PipeNetDeviceComponent.cs index 3f41f36f37..0b2b94d92f 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/PipeNetDeviceComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/PipeNetDeviceComponent.cs @@ -1,4 +1,5 @@ -using Content.Server.Atmos; +#nullable enable +using Content.Server.Atmos; using Content.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; @@ -9,11 +10,14 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping /// Adds itself to a to be updated by. /// TODO: Make compatible with unanchoring/anchoring. Currently assumes that the Owner does not move. /// - public abstract class PipeNetDeviceComponent : Component + [RegisterComponent] + public class PipeNetDeviceComponent : Component { - public abstract void Update(); + public override string Name => "PipeNetDevice"; - protected IGridAtmosphereComponent JoinedGridAtmos { get; private set; } + private IGridAtmosphereComponent? JoinedGridAtmos { get; set; } + + private PipeNetUpdateMessage _cachedUpdateMessage = new(); public override void Initialize() { @@ -27,6 +31,11 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping LeaveGridAtmos(); } + public void Update() + { + SendMessage(_cachedUpdateMessage); + } + private void JoinGridAtmos() { var gridAtmos = EntitySystem.Get() @@ -41,4 +50,9 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping JoinedGridAtmos = null; } } + + public class PipeNetUpdateMessage : ComponentMessage + { + + } } diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs index d3521e9c8a..6c9558b035 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs @@ -1,11 +1,12 @@ -using System.Linq; +#nullable enable +using System.Linq; using Content.Server.Atmos; using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.Nodes; using Content.Shared.GameObjects.Components.Atmos; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Components.Transform; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Log; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -15,7 +16,7 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Pumps /// /// Transfer gas from one to another. /// - public abstract class BasePumpComponent : PipeNetDeviceComponent + public abstract class BasePumpComponent : Component { /// /// If the pump is currently pumping. @@ -33,87 +34,88 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Pumps private bool _pumpEnabled; /// - /// Needs to be same as that of a on this entity. + /// Needs to be same as that of a on this entity. /// [ViewVariables] - private PipeDirection _inletDirection; + private PipeDirection _initialInletDirection; /// - /// Needs to be same as that of a on this entity. + /// Needs to be same as that of a on this entity. /// [ViewVariables] - private PipeDirection _outletDirection; + private PipeDirection _initialOutletDirection; [ViewVariables] - private PipeNode _inletPipe; + private PipeNode? _inletPipe; [ViewVariables] - private PipeNode _outletPipe; + private PipeNode? _outletPipe; - private AppearanceComponent _appearance; + private AppearanceComponent? _appearance; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(ref _inletDirection, "inletDirection", PipeDirection.None); - serializer.DataField(ref _outletDirection, "outletDirection", PipeDirection.None); + serializer.DataField(ref _initialInletDirection, "inletDirection", PipeDirection.None); + serializer.DataField(ref _initialOutletDirection, "outletDirection", PipeDirection.None); serializer.DataField(ref _pumpEnabled, "pumpEnabled", false); } public override void Initialize() { base.Initialize(); - UpdatePipes(); - Owner.EntityManager.EventBus.SubscribeEvent(EventSource.Local, this, RotateEvent); + Owner.EnsureComponentWarn(); + SetPipes(); Owner.TryGetComponent(out _appearance); UpdateAppearance(); } - public override void Update() + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PipeNetUpdateMessage: + Update(); + break; + } + } + + public void Update() { if (!PumpEnabled) return; + if (_inletPipe == null || _outletPipe == null) + return; + PumpGas(_inletPipe.Air, _outletPipe.Air); } protected abstract void PumpGas(GasMixture inletGas, GasMixture outletGas); - private void RotateEvent(RotateEvent ev) - { - if (ev.Sender != Owner || ev.NewRotation == ev.OldRotation) - return; - - var diff = ev.NewRotation - ev.OldRotation; - _inletDirection = _inletDirection.RotatePipeDirection(diff); - _outletDirection = _outletDirection.RotatePipeDirection(diff); - UpdatePipes(); - } - private void UpdateAppearance() { if (_inletPipe == null || _outletPipe == null) return; - _appearance?.SetData(PumpVisuals.VisualState, new PumpVisualState(_inletDirection, _outletDirection, _inletPipe.ConduitLayer, _outletPipe.ConduitLayer, PumpEnabled)); + _appearance?.SetData(PumpVisuals.VisualState, new PumpVisualState(_initialInletDirection, _initialOutletDirection, _inletPipe.ConduitLayer, _outletPipe.ConduitLayer, PumpEnabled)); } - private void UpdatePipes() + private void SetPipes() { _inletPipe = null; _outletPipe = null; if (!Owner.TryGetComponent(out var container)) { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(BasePumpComponent)} on entity {Owner.Uid} did not have a {nameof(NodeContainerComponent)}."); + Logger.Error($"{typeof(BasePumpComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} did not have a {nameof(NodeContainerComponent)}."); return; } var pipeNodes = container.Nodes.OfType(); - _inletPipe = pipeNodes.Where(pipe => pipe.PipeDirection == _inletDirection).FirstOrDefault(); - _outletPipe = pipeNodes.Where(pipe => pipe.PipeDirection == _outletDirection).FirstOrDefault(); - if (_inletPipe == null | _outletPipe == null) + _inletPipe = pipeNodes.Where(pipe => pipe.PipeDirection == _initialInletDirection).FirstOrDefault(); + _outletPipe = pipeNodes.Where(pipe => pipe.PipeDirection == _initialOutletDirection).FirstOrDefault(); + if (_inletPipe == null || _outletPipe == null) { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(BasePumpComponent)} on entity {Owner.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); + Logger.Error($"{typeof(BasePumpComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); return; } } diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/Scrubbers/BaseSiphonComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/Scrubbers/BaseSiphonComponent.cs index 77acc61780..fe30881d58 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/Scrubbers/BaseSiphonComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/Scrubbers/BaseSiphonComponent.cs @@ -1,13 +1,14 @@ -using System.Linq; +#nullable enable +using System.Linq; using Content.Server.Atmos; using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.Nodes; using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components.Atmos; using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.ViewVariables; @@ -16,13 +17,13 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Scrubbers /// /// Transfers gas from the tile it is on to a . /// - public abstract class BaseSiphonComponent : PipeNetDeviceComponent + public abstract class BaseSiphonComponent : Component { [ViewVariables] - private PipeNode _scrubberOutlet; + private PipeNode? _scrubberOutlet; - private AtmosphereSystem _atmosSystem; + private AtmosphereSystem? _atmosSystem; [ViewVariables(VVAccess.ReadWrite)] public bool SiphonEnabled @@ -36,43 +37,60 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Scrubbers } private bool _siphonEnabled = true; - private AppearanceComponent _appearance; + private AppearanceComponent? _appearance; public override void Initialize() { base.Initialize(); + Owner.EnsureComponentWarn(); _atmosSystem = EntitySystem.Get(); - if (!Owner.TryGetComponent(out var container)) - { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(BaseSiphonComponent)} on entity {Owner.Uid} did not have a {nameof(NodeContainerComponent)}."); - return; - } - _scrubberOutlet = container.Nodes.OfType().FirstOrDefault(); - if (_scrubberOutlet == null) - { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(BaseSiphonComponent)} on entity {Owner.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); - return; - } + SetOutlet(); Owner.TryGetComponent(out _appearance); UpdateAppearance(); } - public override void Update() + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PipeNetUpdateMessage: + Update(); + break; + } + } + + public void Update() { if (!SiphonEnabled) return; var tileAtmos = Owner.Transform.Coordinates.GetTileAtmosphere(Owner.EntityManager); - if (tileAtmos == null) + + if (_scrubberOutlet == null || tileAtmos == null || tileAtmos.Air == null) return; + ScrubGas(tileAtmos.Air, _scrubberOutlet.Air); tileAtmos.Invalidate(); } protected abstract void ScrubGas(GasMixture inletGas, GasMixture outletGas); + private void SetOutlet() + { + if (!Owner.TryGetComponent(out var container)) + { + Logger.Error($"{typeof(BaseSiphonComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} did not have a {nameof(NodeContainerComponent)}."); + return; + } + _scrubberOutlet = container.Nodes.OfType().FirstOrDefault(); + if (_scrubberOutlet == null) + { + Logger.Error($"{typeof(BaseSiphonComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); + return; + } + } + private void UpdateAppearance() { _appearance?.SetData(SiphonVisuals.VisualState, new SiphonVisualState(SiphonEnabled)); diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/Vents/BaseVentComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/Vents/BaseVentComponent.cs index 8c0ba7f833..db4508959b 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/Vents/BaseVentComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/Vents/BaseVentComponent.cs @@ -1,13 +1,14 @@ -using System.Linq; +#nullable enable +using System.Linq; using Content.Server.Atmos; using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.Nodes; using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components.Atmos; using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.ViewVariables; @@ -16,13 +17,13 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Vents /// /// Transfers gas from a to the tile it is on. /// - public abstract class BaseVentComponent : PipeNetDeviceComponent + public abstract class BaseVentComponent : Component { [ViewVariables] - private PipeNode _ventInlet; + private PipeNode? _ventInlet; - private AtmosphereSystem _atmosSystem; + private AtmosphereSystem? _atmosSystem; [ViewVariables(VVAccess.ReadWrite)] public bool VentEnabled @@ -36,43 +37,60 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Vents } private bool _ventEnabled = true; - private AppearanceComponent _appearance; + private AppearanceComponent? _appearance; public override void Initialize() { base.Initialize(); + Owner.EnsureComponentWarn(); _atmosSystem = EntitySystem.Get(); - if (!Owner.TryGetComponent(out var container)) - { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(BaseVentComponent)} on entity {Owner.Uid} did not have a {nameof(NodeContainerComponent)}."); - return; - } - _ventInlet = container.Nodes.OfType().FirstOrDefault(); - if (_ventInlet == null) - { - JoinedGridAtmos?.RemovePipeNetDevice(this); - Logger.Error($"{typeof(BaseVentComponent)} on entity {Owner.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); - return; - } + SetInlet(); Owner.TryGetComponent(out _appearance); UpdateAppearance(); } - public override void Update() + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PipeNetUpdateMessage: + Update(); + break; + } + } + + public void Update() { if (!VentEnabled) return; var tileAtmos = Owner.Transform.Coordinates.GetTileAtmosphere(Owner.EntityManager); - if (tileAtmos == null) + + if (_ventInlet == null || tileAtmos == null || tileAtmos.Air == null) return; + VentGas(_ventInlet.Air, tileAtmos.Air); tileAtmos.Invalidate(); } protected abstract void VentGas(GasMixture inletGas, GasMixture outletGas); + private void SetInlet() + { + if (!Owner.TryGetComponent(out var container)) + { + Logger.Error($"{typeof(BaseVentComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} did not have a {nameof(NodeContainerComponent)}."); + return; + } + _ventInlet = container.Nodes.OfType().FirstOrDefault(); + if (_ventInlet == null) + { + Logger.Error($"{typeof(BaseVentComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); + return; + } + } + private void UpdateAppearance() { _appearance?.SetData(VentVisuals.VisualState, new VentVisualState(VentEnabled)); From 8e926db8e70d76db50d72e077a63bc2852f1fee3 Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 7 Jan 2021 10:17:34 +0000 Subject: [PATCH 060/166] I used the web-edit to fix the web-edit... (#2941) --- Resources/Prototypes/Catalog/Research/technologies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index f470d0f465..8537d48667 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -41,7 +41,7 @@ # Chemistry Technology Tree -type: technology +- type: technology name: "chemistry technology" id: ChemistryTechnology description: A crash course in chemistry. From 6eeaa589887f6169ec90024cd9b17b498e18fd1d Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 7 Jan 2021 10:35:39 +0000 Subject: [PATCH 061/166] HandheldLights no longer drain their batteries in 20 seconds. (#2942) * Initial * Update Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Components/Interactable/HandheldLightComponent.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs index 7c3862ccd5..3c080701cb 100644 --- a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Threading.Tasks; using Content.Server.GameObjects.Components.Atmos; using Content.Server.GameObjects.Components.GUI; @@ -38,7 +38,7 @@ namespace Content.Server.GameObjects.Components.Interactable [RegisterComponent] internal sealed class HandheldLightComponent : SharedHandheldLightComponent, IUse, IExamine, IInteractUsing { - [ViewVariables(VVAccess.ReadWrite)] public float Wattage { get; set; } = 10f; + [ViewVariables(VVAccess.ReadWrite)] public float Wattage { get; set; } [ViewVariables] private PowerCellSlotComponent _cellSlot = default!; private PowerCellComponent? Cell => _cellSlot.Cell; @@ -64,7 +64,7 @@ namespace Content.Server.GameObjects.Components.Interactable public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(this, x => x.Wattage, "wattage", 10f); + serializer.DataField(this, x => x.Wattage, "wattage", 3f); serializer.DataField(ref TurnOnSound, "turnOnSound", "/Audio/Items/flashlight_toggle.ogg"); serializer.DataField(ref TurnOnFailSound, "turnOnFailSound", "/Audio/Machines/button.ogg"); serializer.DataField(ref TurnOffSound, "turnOffSound", "/Audio/Items/flashlight_toggle.ogg"); From 8eb96cfb0106f09e0fe44e99d48c9a16237358ff Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 8 Jan 2021 10:29:08 -0300 Subject: [PATCH 062/166] Add setoutfit command (#2874) * Add setoutfit command * Adds setoutfit as a verb and adds a proper UI to the command * Removes from AdminMenuWindow * Changes the SetOutfit verb to be a component verb instead of a global verb * Addresses reviews * Remove empty method * Remove on server aswell --- .../HUD/Inventory/ClientInventoryComponent.cs | 3 + .../AdminMenu/AdminMenuWindow.cs | 5 +- .../AdminMenu/SetOutfit/SetOutfitEui.cs | 42 +++++++ .../AdminMenu/SetOutfit/SetOutfitMenu.xaml | 17 +++ .../AdminMenu/SetOutfit/SetOutfitMenu.xaml.cs | 105 ++++++++++++++++++ .../Commands/SetOutfitCommand.cs | 85 ++++++++++++++ .../Components/GUI/InventoryComponent.cs | 62 +++++++++-- Content.Server/SetOutfitEui.cs | 55 +++++++++ .../Administration/SetOutfitEuiState.cs | 13 +++ 9 files changed, 378 insertions(+), 9 deletions(-) create mode 100644 Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitEui.cs create mode 100644 Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml create mode 100644 Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml.cs create mode 100644 Content.Server/Administration/Commands/SetOutfitCommand.cs create mode 100644 Content.Server/SetOutfitEui.cs create mode 100644 Content.Shared/Administration/SetOutfitEuiState.cs diff --git a/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs b/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs index 97ff7454e5..d6458ee8f5 100644 --- a/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs +++ b/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs @@ -4,12 +4,15 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Client.GameObjects.Components.Clothing; using Content.Shared.GameObjects.Components.Inventory; +using Content.Shared.GameObjects.Verbs; using Content.Shared.Preferences.Appearance; +using Robust.Client.Console; using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; +using Robust.Shared.Localization; using Robust.Shared.ViewVariables; using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefines; using static Content.Shared.GameObjects.Components.Inventory.SharedInventoryComponent.ClientInventoryMessage; diff --git a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs index b4d9e4b7e6..e02483d5ee 100644 --- a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs +++ b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs @@ -1,10 +1,11 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; using Content.Client.GameObjects.EntitySystems; using Content.Client.StationEvents; using Content.Shared.Atmos; +using Content.Shared.Roles; using Robust.Client.Console; using Robust.Client.Graphics.Drawing; using Robust.Client.Interfaces.Placement; @@ -44,7 +45,7 @@ namespace Content.Client.UserInterface.AdminMenu { new SpawnEntitiesCommandButton(), new SpawnTilesCommandButton(), - new StationEventsCommandButton(), + new StationEventsCommandButton() }; private readonly List _debugButtons = new() { diff --git a/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitEui.cs b/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitEui.cs new file mode 100644 index 0000000000..0fa0229392 --- /dev/null +++ b/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitEui.cs @@ -0,0 +1,42 @@ +using Content.Client.Eui; +using Content.Shared.Eui; +using JetBrains.Annotations; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.IoC; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Content.Shared.Administration; + +namespace Content.Client.UserInterface.AdminMenu.SetOutfit +{ + [UsedImplicitly] + public sealed class SetOutfitEui : BaseEui + { + private readonly SetOutfitMenu _window; + public SetOutfitEui() + { + _window = new SetOutfitMenu(); + } + + public override void Opened() + { + _window.OpenCentered(); + } + + public override void Closed() + { + base.Closed(); + _window.Close(); + } + + public override void HandleState(EuiStateBase state) + { + var outfitState = (SetOutfitEuiState) state; + _window.TargetEntityId = outfitState.TargetEntityId; + + } + } +} diff --git a/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml b/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml new file mode 100644 index 0000000000..ddec212682 --- /dev/null +++ b/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml.cs b/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml.cs new file mode 100644 index 0000000000..0f1fba1fbf --- /dev/null +++ b/Content.Client/UserInterface/AdminMenu/SetOutfit/SetOutfitMenu.xaml.cs @@ -0,0 +1,105 @@ +#nullable enable +using System; +using Content.Shared.Construction; +using Content.Shared.Roles; +using Robust.Client.AutoGenerated; +using Robust.Client.Console; +using Robust.Client.Interfaces.ResourceManagement; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.Utility; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; + +namespace Content.Client.UserInterface.AdminMenu.SetOutfit +{ + [GenerateTypedNameReferences] + public partial class SetOutfitMenu : SS14Window + { + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IClientConsole _console = default!; + + public EntityUid? TargetEntityId { get; set; } + protected override Vector2? CustomSize => (250, 320); + + private StartingGearPrototype? _selectedOutfit; + + public SetOutfitMenu() + { + IoCManager.InjectDependencies(this); + RobustXamlLoader.Load(this); + + Title = Loc.GetString("Set Outfit"); + + ConfirmButton.Text = Loc.GetString("Confirm"); + ConfirmButton.OnPressed += ConfirmButtonOnOnPressed; + SearchBar.OnTextChanged += SearchBarOnOnTextChanged; + OutfitList.OnItemSelected += OutfitListOnOnItemSelected; + OutfitList.OnItemDeselected += OutfitListOnOnItemDeselected; + PopulateList(); + } + + private void ConfirmButtonOnOnPressed(BaseButton.ButtonEventArgs obj) + { + if (TargetEntityId == null || _selectedOutfit == null) + return; + var command = $"setoutfit {TargetEntityId} {_selectedOutfit.ID}"; + _console.ProcessCommand(command); + Close(); + } + + private void OutfitListOnOnItemSelected(ItemList.ItemListSelectedEventArgs obj) + { + _selectedOutfit = (StartingGearPrototype) obj.ItemList[obj.ItemIndex].Metadata!; + ConfirmButton.Disabled = false; + } + + private void OutfitListOnOnItemDeselected(ItemList.ItemListDeselectedEventArgs obj) + { + _selectedOutfit = null; + ConfirmButton.Disabled = true; + } + + + private void SearchBarOnOnTextChanged(LineEdit.LineEditEventArgs obj) + { + PopulateByFilter(SearchBar.Text); + } + + private void PopulateList() + { + foreach (var gear in _prototypeManager.EnumeratePrototypes()) + { + OutfitList.Add(GetItem(gear, OutfitList)); + } + } + + private void PopulateByFilter(string filter) + { + OutfitList.Clear(); + foreach (var gear in _prototypeManager.EnumeratePrototypes()) + { + if (!string.IsNullOrEmpty(filter) && + gear.ID.ToLowerInvariant().Contains(filter.Trim().ToLowerInvariant())) + { + OutfitList.Add(GetItem(gear, OutfitList)); + } + } + } + + + private static ItemList.Item GetItem(StartingGearPrototype gear, ItemList itemList) + { + return new(itemList) + { + Metadata = gear, + Text = gear.ID + }; + } + } +} diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs new file mode 100644 index 0000000000..980745f604 --- /dev/null +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -0,0 +1,85 @@ +using Content.Server.Eui; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Shared.Administration; +using Content.Shared.Roles; +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.Player; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Prototypes; + +namespace Content.Server.Administration.Commands +{ + [AdminCommand(AdminFlags.Admin)] + class SetOutfitCommand : IClientCommand + { + public string Command => "setoutfit"; + + public string Description => Loc.GetString("Sets the outfit of the specified entity. The entity must have an InventoryComponent"); + + public string Help => Loc.GetString("Usage: {0} | {0} ", Command); + + public void Execute(IConsoleShell shell, IPlayerSession player, string[] args) + { + if (args.Length < 1) + { + shell.SendText(player, Loc.GetString("Wrong number of arguments.")); + return; + } + + if (!int.TryParse(args[0], out var entityUid)) + { + shell.SendText(player, Loc.GetString("EntityUid must be a number.")); + return; + } + + var entityManager = IoCManager.Resolve(); + + var eUid = new EntityUid(entityUid); + + if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) + { + shell.SendText(player, Loc.GetString("Invalid entity ID.")); + return; + } + + var target = entityManager.GetEntity(eUid); + + if (!target.TryGetComponent(out var inventoryComponent)) + { + shell.SendText(player, Loc.GetString("Target entity does not have an inventory!")); + return; + } + + if (args.Length == 1) + { + var eui = IoCManager.Resolve(); + var ui = new SetOutfitEui(target); + eui.OpenEui(ui, player); + return; + } + + var prototypeManager = IoCManager.Resolve(); + if (!prototypeManager.TryIndex(args[1], out var startingGear)) + { + shell.SendText(player, Loc.GetString("Invalid outfit id")); + return; + } + + foreach (var slot in inventoryComponent.Slots) + { + inventoryComponent.ForceUnequip(slot); + var gearStr = startingGear.GetGear(slot, null); + if (gearStr != "") + { + var equipmentEntity = entityManager.SpawnEntity(gearStr, target.Transform.Coordinates); + inventoryComponent.Equip(slot, equipmentEntity.GetComponent()); + } + } + + } + } +} diff --git a/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs b/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs index 2ef74a187e..f6ea424c1f 100644 --- a/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Content.Server.Administration.Commands; using Content.Server.GameObjects.Components.Items.Clothing; using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.EntitySystems.Click; @@ -9,8 +10,13 @@ using Content.Shared.GameObjects.Components.Inventory; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; using Content.Shared.GameObjects.EntitySystems.EffectBlocker; +using Content.Shared.GameObjects.Verbs; using Content.Shared.Interfaces; +using Robust.Server.Console; using Robust.Server.GameObjects.Components.Container; +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.GameObjects; +using Robust.Server.Player; using Robust.Shared.Containers; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; @@ -32,8 +38,7 @@ namespace Content.Server.GameObjects.Components.GUI { [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; - [ViewVariables] - private readonly Dictionary _slotContainers = new(); + [ViewVariables] private readonly Dictionary _slotContainers = new(); private KeyValuePair? _hoverEntity; @@ -102,7 +107,7 @@ namespace Content.Server.GameObjects.Components.GUI bool IEffectBlocker.CanSlip() { - if(Owner.TryGetComponent(out InventoryComponent inventoryComponent) && + if (Owner.TryGetComponent(out InventoryComponent inventoryComponent) && inventoryComponent.TryGetSlotItem(EquipmentSlotDefines.Slots.SHOES, out ItemComponent shoes) ) { @@ -273,9 +278,11 @@ namespace Content.Server.GameObjects.Components.GUI return pass && _slotContainers[slot].CanInsert(item.Owner); } - public bool CanEquip(Slots slot, ItemComponent item, bool mobCheck = true) => CanEquip(slot, item, mobCheck, out var _); + public bool CanEquip(Slots slot, ItemComponent item, bool mobCheck = true) => + CanEquip(slot, item, mobCheck, out var _); - public bool CanEquip(Slots slot, IEntity entity, bool mobCheck = true) => CanEquip(slot, entity.GetComponent(), mobCheck); + public bool CanEquip(Slots slot, IEntity entity, bool mobCheck = true) => + CanEquip(slot, entity.GetComponent(), mobCheck); /// /// Drops the item in a slot. @@ -466,14 +473,15 @@ namespace Content.Server.GameObjects.Components.GUI { if (activeHand != null) { - await interactionSystem.Interaction(Owner, activeHand.Owner, itemContainedInSlot.Owner, - new EntityCoordinates()); + await interactionSystem.Interaction(Owner, activeHand.Owner, itemContainedInSlot.Owner, + new EntityCoordinates()); } else if (Unequip(msg.Inventoryslot)) { hands.PutInHand(itemContainedInSlot); } } + break; } case ClientInventoryUpdate.Hover: @@ -590,5 +598,45 @@ namespace Content.Server.GameObjects.Components.GUI return false; } + + [Verb] + private sealed class SetOutfitVerb : Verb + { + public override bool RequireInteractionRange => false; + public override bool BlockedByContainers => false; + + protected override void GetData(IEntity user, InventoryComponent component, VerbData data) + { + data.Visibility = VerbVisibility.Invisible; + if (!CanCommand(user)) + return; + + data.Visibility = VerbVisibility.Visible; + data.Text = Loc.GetString("Set Outfit"); + data.CategoryData = VerbCategories.Debug; + } + + protected override void Activate(IEntity user, InventoryComponent component) + { + if (!CanCommand(user)) + return; + + var target = component.Owner; + + var entityId = target.Uid.ToString(); + + var command = new SetOutfitCommand(); + var shell = IoCManager.Resolve(); + var args = new string[] {entityId}; + command.Execute(shell, user.PlayerSession(), args); + } + + private static bool CanCommand(IEntity user) + { + var groupController = IoCManager.Resolve(); + return user.TryGetComponent(out var player) && + groupController.CanCommand(player.playerSession, "setoutfit"); + } + } } } diff --git a/Content.Server/SetOutfitEui.cs b/Content.Server/SetOutfitEui.cs new file mode 100644 index 0000000000..3acbe72e23 --- /dev/null +++ b/Content.Server/SetOutfitEui.cs @@ -0,0 +1,55 @@ +using Content.Server.Administration; +using Content.Server.Database; +using Content.Server.Eui; +using Content.Shared.Administration; +using Content.Shared.Eui; +using JetBrains.Annotations; +using Robust.Server.Interfaces.Player; +using Robust.Shared.IoC; +using System; +using Robust.Shared.Interfaces.GameObjects; + +namespace Content.Server +{ + [UsedImplicitly] + public sealed class SetOutfitEui : BaseEui + { + [Dependency] private readonly IAdminManager _adminManager = default!; + private readonly IEntity _target; + public SetOutfitEui(IEntity entity) + { + _target = entity; + IoCManager.InjectDependencies(this); + } + + public override void Opened() + { + base.Opened(); + + StateDirty(); + _adminManager.OnPermsChanged += AdminManagerOnPermsChanged; + } + + public override EuiStateBase GetNewState() + { + return new SetOutfitEuiState + { + TargetEntityId = _target.Uid + }; + } + + private void AdminManagerOnPermsChanged(AdminPermsChangedEventArgs obj) + { + // Close UI if user loses +FUN. + if (obj.Player == Player && !UserAdminFlagCheck(AdminFlags.Fun)) + { + Close(); + } + } + private bool UserAdminFlagCheck(AdminFlags flags) + { + return _adminManager.HasAdminFlag(Player, flags); + } + + } +} diff --git a/Content.Shared/Administration/SetOutfitEuiState.cs b/Content.Shared/Administration/SetOutfitEuiState.cs new file mode 100644 index 0000000000..d16d55bb24 --- /dev/null +++ b/Content.Shared/Administration/SetOutfitEuiState.cs @@ -0,0 +1,13 @@ +using Content.Shared.Eui; +using Robust.Shared.Serialization; +using System; +using Robust.Shared.GameObjects; + +namespace Content.Shared.Administration +{ + [Serializable, NetSerializable] + public class SetOutfitEuiState : EuiStateBase + { + public EntityUid TargetEntityId; + } +} From 010a22a5937953f6c86a85c10ed90f3ad1dfe393 Mon Sep 17 00:00:00 2001 From: moonheart08 Date: Fri, 8 Jan 2021 08:21:34 -0600 Subject: [PATCH 063/166] Fix indentation in technologies.yml (#2952) --- Resources/Prototypes/Catalog/Research/technologies.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index 8537d48667..6e9800d817 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -59,7 +59,7 @@ icon: Objects/Weapons/Melee/stunbaton.rsi requiredPoints: 1000 requiredTechnologies: - -BasicResearch + - BasicResearch - type: technology name: "ballistic technology" @@ -68,7 +68,7 @@ icon: Objects/Weapons/Guns/Pistols/clarissa.rsi requiredPoints: 1500 requiredTechnologies: - -SecurityTechnology + - SecurityTechnology - type: technology name: "direct energy technology" @@ -77,7 +77,7 @@ icon: Objects/Weapons/Guns/Battery/taser.rsi requiredPoints: 1500 requiredTechnologies: - -SecurityTechnology + - SecurityTechnology - type: technology name: "explosives technology" @@ -86,7 +86,7 @@ icon: Objects/Weapons/Grenades/flashbang.rsi requiredPoints: 1500 requiredTechnologies: - -SecurityTechnology + - SecurityTechnology - type: technology name: "armor technology" @@ -95,7 +95,7 @@ icon: Clothing/OuterClothing/Vests/kevlar.rsi requiredPoints: 1500 requiredTechnologies: - -SecurityTechnology + - SecurityTechnology # Data Theory Technology Tree From 644dd23a1e12b4ad0636ea6f085e8666ca0e8673 Mon Sep 17 00:00:00 2001 From: AJCM Date: Fri, 8 Jan 2021 11:14:58 -0400 Subject: [PATCH 064/166] Fixes console errors --- Content.Client/IgnoredComponents.cs | 3 ++- .../Catalog/Research/technologies.yml | 20 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index 616a90eb8a..d9a2babe36 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -231,7 +231,8 @@ namespace Content.Client "GlassBeaker", "SliceableFood", "DamageOtherOnHit", - "DamageOnLand" + "DamageOnLand", + "Recyclable" }; } } diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index 6e9800d817..79713742bd 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -25,7 +25,7 @@ name: "advanced botany" id: AdvancedBotany description: A better understanding of botany. - icon: Objects/Specific/Hydroponics/potato.rsi + icon: Objects/Specific/Hydroponics/potato.rsi/seed.png requiredPoints: 1500 requiredTechnologies: - BiologicalTechnology @@ -34,7 +34,7 @@ name: "advanced surgery" id: AdvancedSugery description: Research new surgical procedures. - icon: Objects/Specific/Medical/surgery_tools.rsi + icon: Objects/Specific/Medical/surgery_tools.rsi/bone_saw.png requiredPoints: 1500 requiredTechnologies: - BiologicalTechnology @@ -45,7 +45,7 @@ name: "chemistry technology" id: ChemistryTechnology description: A crash course in chemistry. - icon: Objects/Specific/Chemistry/beakers.rsi + icon: Objects/Specific/Chemistry/beakers.rsi/beakerlarge.png requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -56,7 +56,7 @@ name: "security technology" id: SecurityTechnology description: Beginning of the long hard road to exosuits. - icon: Objects/Weapons/Melee/stunbaton.rsi + icon: Objects/Weapons/Melee/stunbaton.rsi/stunbaton_off.png requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -65,7 +65,7 @@ name: "ballistic technology" id: BallisticTechnology description: Just a fancy term for guns. - icon: Objects/Weapons/Guns/Pistols/clarissa.rsi + icon: Objects/Weapons/Guns/Pistols/clarissa.rsi/icon.png requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -74,7 +74,7 @@ name: "direct energy technology" id: DirectEnergyTechnology description: Basically laser guns. - icon: Objects/Weapons/Guns/Battery/taser.rsi + icon: Objects/Weapons/Guns/Battery/taser.rsi/icon.png requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -83,7 +83,7 @@ name: "explosives technology" id: ExplosivesTechnology description: Let's just start with grenades for now. - icon: Objects/Weapons/Grenades/flashbang.rsi + icon: Objects/Weapons/Grenades/flashbang.rsi/icon.png requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -92,7 +92,7 @@ name: "armor technology" id: ArmorTechnology description: Basic protective gear for security personnel. - icon: Clothing/OuterClothing/Vests/kevlar.rsi + icon: Clothing/OuterClothing/Vests/kevlar.rsi/icon.png requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -125,9 +125,7 @@ name: material sheet printing id: Sheets description: Print those sheets! - icon: - sprite: Objects/Materials/sheets.rsi - state: researchicon + icon: Objects/Materials/sheets.rsi/researchicon.png requiredPoints: 250 requiredTechnologies: - IndustrialEngineering From 333f84f637d80b60f6cd7fe82b959259f9d7850f Mon Sep 17 00:00:00 2001 From: AJCM Date: Fri, 8 Jan 2021 11:59:59 -0400 Subject: [PATCH 065/166] address review --- .../Catalog/Research/technologies.yml | 62 ++++++++++++++----- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index 79713742bd..1ba2cbcb25 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -1,5 +1,5 @@ # In order to make this list somewhat organized, please place new technologies underneath their overarching "base" technology. -# The technology tree is using this layout - https://tgstation13.org/wiki//images/thumb/f/f4/ResearchTree.png/800px-ResearchTree.png +# The technology tree is using this layout - https://tgstation13.org/wiki//images/thumb/f/f4/ResearchTree/800px-ResearchTree.png # Base Technology @@ -7,7 +7,9 @@ name: "basic research technology" id: BasicResearch description: Nanotrasen basic research technologies. - icon: Constructible/Power/server.rsi/server-on.png + icon: + sprite: Constructible/Power/server.rsi + state: server-on requiredPoints: 250 # Biological Technology Tree @@ -16,7 +18,9 @@ name: "biological technology" id: BiologicalTechnology description: Investigations into the natural world. - icon: Constructible/Misc/potted_plants.rsi/applebush.png + icon: + sprite: Constructible/Misc/potted_plants.rsi + state: applebush requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -25,7 +29,9 @@ name: "advanced botany" id: AdvancedBotany description: A better understanding of botany. - icon: Objects/Specific/Hydroponics/potato.rsi/seed.png + icon: + sprite: Objects/Specific/Hydroponics/potato.rsi + state: seed requiredPoints: 1500 requiredTechnologies: - BiologicalTechnology @@ -34,7 +40,9 @@ name: "advanced surgery" id: AdvancedSugery description: Research new surgical procedures. - icon: Objects/Specific/Medical/surgery_tools.rsi/bone_saw.png + icon: + sprite: Objects/Specific/Medical/surgery_tools.rsi + state: bone_saw requiredPoints: 1500 requiredTechnologies: - BiologicalTechnology @@ -45,7 +53,9 @@ name: "chemistry technology" id: ChemistryTechnology description: A crash course in chemistry. - icon: Objects/Specific/Chemistry/beakers.rsi/beakerlarge.png + icon: + sprite: Objects/Specific/Chemistry/beakers.rsi + state: beakerlarge requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -56,7 +66,9 @@ name: "security technology" id: SecurityTechnology description: Beginning of the long hard road to exosuits. - icon: Objects/Weapons/Melee/stunbaton.rsi/stunbaton_off.png + icon: + sprite: Objects/Weapons/Melee/stunbaton.rsi + state: stunbaton_off requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -65,7 +77,9 @@ name: "ballistic technology" id: BallisticTechnology description: Just a fancy term for guns. - icon: Objects/Weapons/Guns/Pistols/clarissa.rsi/icon.png + icon: + sprite: Objects/Weapons/Guns/Pistols/clarissa.rsi + state: icon requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -74,7 +88,9 @@ name: "direct energy technology" id: DirectEnergyTechnology description: Basically laser guns. - icon: Objects/Weapons/Guns/Battery/taser.rsi/icon.png + icon: + sprite: Objects/Weapons/Guns/Battery/taser.rsi + state: icon requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -83,7 +99,9 @@ name: "explosives technology" id: ExplosivesTechnology description: Let's just start with grenades for now. - icon: Objects/Weapons/Grenades/flashbang.rsi/icon.png + icon: + sprite: Objects/Weapons/Grenades/flashbang.rsi + state: icon requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -92,7 +110,9 @@ name: "armor technology" id: ArmorTechnology description: Basic protective gear for security personnel. - icon: Clothing/OuterClothing/Vests/kevlar.rsi/icon.png + icon: + sprite: Clothing/OuterClothing/Vests/kevlar.rsi + state: icon requiredPoints: 1500 requiredTechnologies: - SecurityTechnology @@ -103,7 +123,9 @@ name: "data theory" id: DataTheory description: Just like regular data, but in space! - icon: Constructible/Power/computers.rsi/computer-datatheory.png + icon: + sprite: Constructible/Power/computers.rsi + state: computer-datatheory requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -114,7 +136,9 @@ name: "industrial engineering" id: IndustrialEngineering description: A refresher course on modern engineering technology. - icon: Constructible/Power/protolathe.rsi/protolathe.png + icon: + sprite: Constructible/Power/protolathe.rsi + state: protolathe requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -125,7 +149,9 @@ name: material sheet printing id: Sheets description: Print those sheets! - icon: Objects/Materials/sheets.rsi/researchicon.png + icon: + sprite: Objects/Materials/sheets.rsi + state: researchicon requiredPoints: 250 requiredTechnologies: - IndustrialEngineering @@ -139,7 +165,9 @@ name: "electromagnetic theory" id: ElectromagneticTheory description: Try not to fry yourself. - icon: Constructible/Power/apc.rsi/apcewires.png + icon: + sprite: Constructible/Power/apc.rsi + state: apcewires requiredPoints: 1000 requiredTechnologies: - BasicResearch @@ -150,7 +178,9 @@ name: "basic bluespace theory" id: BluespaceTheory description: An experimental course on the mysterious technology known as bluespace. - icon: Objects/Misc/skub.rsi/icon.png + icon: + sprite: Objects/Misc/skub.rsi + state: icon requiredPoints: 1000 requiredTechnologies: - BasicResearch From 62a2cf9931d3effef5223895823a39bb387ba7dc Mon Sep 17 00:00:00 2001 From: AJCM Date: Fri, 8 Jan 2021 12:02:23 -0400 Subject: [PATCH 066/166] oops --- Resources/Prototypes/Catalog/Research/technologies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index 1ba2cbcb25..c80b3fd010 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -1,5 +1,5 @@ # In order to make this list somewhat organized, please place new technologies underneath their overarching "base" technology. -# The technology tree is using this layout - https://tgstation13.org/wiki//images/thumb/f/f4/ResearchTree/800px-ResearchTree.png +# The technology tree is using this layout - https://tgstation13.org/wiki//images/thumb/f/f4/ResearchTree.png/800px-ResearchTree.png # Base Technology From e84e38797259fc0c23894d4b86bb37c9c28d94b2 Mon Sep 17 00:00:00 2001 From: Metal Gear Sloth Date: Sat, 9 Jan 2021 09:58:42 +1100 Subject: [PATCH 067/166] Fix force-running station events --- .../EntitySystems/StationEvents/StationEventSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs b/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs index 5cef4092a4..c7403f55b8 100644 --- a/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs @@ -199,7 +199,7 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents { base.Update(frameTime); - if (!Enabled) + if (!Enabled && CurrentEvent == null) { return; } From b46b890618589bc5a8f79dbd4b92ff1f144d95f3 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Fri, 8 Jan 2021 17:05:29 -0600 Subject: [PATCH 068/166] Removes half-implemented ConduitLayer from piping (#2957) Co-authored-by: py01 --- .../GameObjects/Components/Atmos/PipeVisualizer.cs | 3 +-- .../Atmos/Piping/Pumps/BasePumpComponent.cs | 2 +- .../Components/NodeContainer/Nodes/PipeNode.cs | 9 +-------- .../Components/Atmos/SharedPipeComponent.cs | 11 +---------- .../Components/Atmos/SharedPumpComponent.cs | 8 ++------ .../Entities/Constructible/Ground/pipes.yml | 12 ++++++------ .../Textures/Constructible/Atmos/pipe.rsi/meta.json | 10 +++++----- .../Atmos/pipe.rsi/{pipeBend2.png => pipeBend.png} | Bin .../pipe.rsi/{pipeFourway2.png => pipeFourway.png} | Bin .../Atmos/pipe.rsi/{pipeHalf2.png => pipeHalf.png} | Bin .../{pipeStraight2.png => pipeStraight.png} | Bin .../{pipeTJunction2.png => pipeTJunction.png} | Bin 12 files changed, 17 insertions(+), 38 deletions(-) rename Resources/Textures/Constructible/Atmos/pipe.rsi/{pipeBend2.png => pipeBend.png} (100%) rename Resources/Textures/Constructible/Atmos/pipe.rsi/{pipeFourway2.png => pipeFourway.png} (100%) rename Resources/Textures/Constructible/Atmos/pipe.rsi/{pipeHalf2.png => pipeHalf.png} (100%) rename Resources/Textures/Constructible/Atmos/pipe.rsi/{pipeStraight2.png => pipeStraight.png} (100%) rename Resources/Textures/Constructible/Atmos/pipe.rsi/{pipeTJunction2.png => pipeTJunction.png} (100%) diff --git a/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs index 2ec10888e2..0ff952ce6a 100644 --- a/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs +++ b/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Shared.GameObjects.Components.Atmos; using JetBrains.Annotations; using Robust.Client.GameObjects; @@ -62,7 +62,6 @@ namespace Content.Client.GameObjects.Components.Atmos { var stateId = "pipe"; stateId += pipeVisualState.PipeDirection.PipeDirectionToPipeShape().ToString(); - stateId += (int) pipeVisualState.ConduitLayer; return stateId; } diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs index 6c9558b035..a4c3d6a8e9 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs @@ -97,7 +97,7 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Pumps private void UpdateAppearance() { if (_inletPipe == null || _outletPipe == null) return; - _appearance?.SetData(PumpVisuals.VisualState, new PumpVisualState(_initialInletDirection, _initialOutletDirection, _inletPipe.ConduitLayer, _outletPipe.ConduitLayer, PumpEnabled)); + _appearance?.SetData(PumpVisuals.VisualState, new PumpVisualState(_initialInletDirection, _initialOutletDirection, PumpEnabled)); } private void SetPipes() diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs index cc4c25207d..6991d99fa7 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs @@ -22,12 +22,6 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes public PipeDirection PipeDirection { get => _pipeDirection; set => SetPipeDirection(value); } private PipeDirection _pipeDirection; - /// - /// Controls what visuals are applied in . - /// - public ConduitLayer ConduitLayer => _conduitLayer; - private ConduitLayer _conduitLayer; - [ViewVariables] private IPipeNet _pipeNet = PipeNet.NullNet; @@ -69,7 +63,6 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes base.ExposeData(serializer); serializer.DataField(ref _pipeDirection, "pipeDirection", PipeDirection.None); serializer.DataField(this, x => x.LocalAir, "gasMixture", new GasMixture(DefaultVolume)); - serializer.DataField(ref _conduitLayer, "conduitLayer", ConduitLayer.Two); } public override void Initialize(IEntity owner) @@ -138,7 +131,7 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes private void UpdateAppearance() { - _appearance?.SetData(PipeVisuals.VisualState, new PipeVisualState(PipeDirection, ConduitLayer)); + _appearance?.SetData(PipeVisuals.VisualState, new PipeVisualState(PipeDirection)); } private void SetPipeDirection(PipeDirection pipeDirection) diff --git a/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs b/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs index b5c4f222a6..6f24813fcb 100644 --- a/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs +++ b/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs @@ -14,12 +14,10 @@ namespace Content.Shared.GameObjects.Components.Atmos public class PipeVisualState { public readonly PipeDirection PipeDirection; - public readonly ConduitLayer ConduitLayer; - public PipeVisualState(PipeDirection pipeDirection, ConduitLayer conduitLayer) + public PipeVisualState(PipeDirection pipeDirection) { PipeDirection = pipeDirection; - ConduitLayer = conduitLayer; } } @@ -65,13 +63,6 @@ namespace Content.Shared.GameObjects.Components.Atmos Fourway } - public enum ConduitLayer - { - One = 1, - Two = 2, - Three = 3, - } - public static class PipeDirectionHelpers { public const int PipeDirections = 4; diff --git a/Content.Shared/GameObjects/Components/Atmos/SharedPumpComponent.cs b/Content.Shared/GameObjects/Components/Atmos/SharedPumpComponent.cs index 20e9c2dfb9..d57b7dfc1e 100644 --- a/Content.Shared/GameObjects/Components/Atmos/SharedPumpComponent.cs +++ b/Content.Shared/GameObjects/Components/Atmos/SharedPumpComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components.Atmos @@ -14,16 +14,12 @@ namespace Content.Shared.GameObjects.Components.Atmos { public readonly PipeDirection InletDirection; public readonly PipeDirection OutletDirection; - public readonly ConduitLayer InletConduitLayer; - public readonly ConduitLayer OutletConduitLayer; public readonly bool PumpEnabled; - public PumpVisualState(PipeDirection inletDirection, PipeDirection outletDirection, ConduitLayer inletConduitLayer, ConduitLayer outletConduitLayer, bool pumpEnabled) + public PumpVisualState(PipeDirection inletDirection, PipeDirection outletDirection, bool pumpEnabled) { InletDirection = inletDirection; OutletDirection = outletDirection; - InletConduitLayer = inletConduitLayer; - OutletConduitLayer = outletConduitLayer; PumpEnabled = pumpEnabled; } } diff --git a/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml index 70c92e76a5..952ca8cce9 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true id: PipeBase name: Pipe @@ -39,7 +39,7 @@ nodeGroupID: Pipe pipeDirection: East - type: Icon - state: pipeHalf2 + state: pipeHalf - type: entity parent: PipeBase @@ -52,7 +52,7 @@ nodeGroupID: Pipe pipeDirection: Lateral - type: Icon - state: pipeStraight2 + state: pipeStraight - type: entity parent: PipeBase @@ -65,7 +65,7 @@ nodeGroupID: Pipe pipeDirection: SEBend - type: Icon - state: pipeBend2 + state: pipeBend - type: entity parent: PipeBase @@ -78,7 +78,7 @@ nodeGroupID: Pipe pipeDirection: TEast - type: Icon - state: pipeTJunction2 + state: pipeTJunction - type: entity parent: PipeBase @@ -91,4 +91,4 @@ nodeGroupID: Pipe pipeDirection: Fourway - type: Icon - state: pipeFourway2 + state: pipeFourway diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json index a0d9b3276c..7b7c971c8d 100644 --- a/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json @@ -8,7 +8,7 @@ "copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states":[ { - "name":"pipeTJunction2", + "name":"pipeTJunction", "directions":4, "delays":[ [ @@ -26,7 +26,7 @@ ] }, { - "name":"pipeHalf2", + "name":"pipeHalf", "directions":4, "delays":[ [ @@ -44,7 +44,7 @@ ] }, { - "name":"pipeBend2", + "name":"pipeBend", "directions":4, "delays":[ [ @@ -62,7 +62,7 @@ ] }, { - "name":"pipeFourway2", + "name":"pipeFourway", "directions":1, "delays":[ [ @@ -71,7 +71,7 @@ ] }, { - "name":"pipeStraight2", + "name":"pipeStraight", "directions":4, "delays":[ [ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeBend2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeBend.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pipe.rsi/pipeBend2.png rename to Resources/Textures/Constructible/Atmos/pipe.rsi/pipeBend.png diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway2.png rename to Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway.png diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeHalf2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeHalf.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pipe.rsi/pipeHalf2.png rename to Resources/Textures/Constructible/Atmos/pipe.rsi/pipeHalf.png diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeStraight2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeStraight.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pipe.rsi/pipeStraight2.png rename to Resources/Textures/Constructible/Atmos/pipe.rsi/pipeStraight.png diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTJunction2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTJunction.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTJunction2.png rename to Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTJunction.png From 76d2729722203af6bd8b54aabf2692ae041d738c Mon Sep 17 00:00:00 2001 From: AJCM-git <60196617+AJCM-git@users.noreply.github.com> Date: Fri, 8 Jan 2021 19:30:55 -0400 Subject: [PATCH 069/166] Makes FoodBase grindable and deletes duplicates (#2958) * Makes FoodBase grindable * forgot this one --- .../Entities/Objects/Consumable/food.yml | 170 +----------------- .../Objects/Specific/rehydrateable.yml | 1 - 2 files changed, 1 insertion(+), 170 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/food.yml b/Resources/Prototypes/Entities/Objects/Consumable/food.yml index fc6b5a09d8..bd3d0f7b2f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/food.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/food.yml @@ -10,6 +10,7 @@ - type: Sprite state: icon netsync: false + - type: Grindable # Only use visualizer if there's multiple steps available # - type: Appearance @@ -35,7 +36,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/4no_raisins.rsi - - type: Grindable - type: Item sprite: Objects/Consumable/Food/4no_raisins.rsi @@ -53,7 +53,6 @@ trash: TrashSnackBowl - type: Sprite sprite: Objects/Consumable/Food/aesirsalad.rsi - - type: Grindable - type: entity @@ -69,7 +68,6 @@ Quantity: 10 - type: Sprite sprite: Objects/Consumable/Food/amanita_pie.rsi - - type: Grindable - type: entity @@ -87,7 +85,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/amanitajelly.rsi - - type: Grindable #- type: entity @@ -118,7 +115,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/apple_cake_slice.rsi - - type: Grindable - type: entity @@ -134,7 +130,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/apple_pie.rsi - - type: Grindable # TODO: BREADSLICE? @@ -164,7 +159,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/badrecipe.rsi - - type: Grindable - type: entity @@ -180,7 +174,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/baguette.rsi - - type: Grindable - type: entity @@ -198,7 +191,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/breadslice.rsi - - type: Grindable - type: entity @@ -216,7 +208,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/bananabreadslice.rsi - - type: Grindable - type: entity @@ -235,7 +226,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/pie.rsi - - type: Grindable #- type: entity @@ -266,7 +256,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/beetsoup.rsi - - type: Grindable - type: entity @@ -284,7 +273,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/berryclafoutis.rsi - - type: Grindable - type: entity @@ -302,7 +290,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/birthday_cake_slice.rsi - - type: Grindable - type: entity @@ -320,7 +307,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/spaghettiboiled.rsi - - type: Grindable - type: entity @@ -338,7 +324,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/brain_cake_slice.rsi - - type: Grindable - type: entity @@ -358,7 +343,6 @@ sprite: Objects/Consumable/Food/candy.rsi - type: Item sprite: Objects/Consumable/Food/candy.rsi - - type: Grindable - type: entity name: candy corn @@ -373,7 +357,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/candy_corn.rsi - - type: Grindable - type: entity @@ -391,7 +374,6 @@ Quantity: 10 - type: Sprite sprite: Objects/Consumable/Food/carrotcake_slice.rsi - - type: Grindable - type: entity @@ -409,7 +391,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/carrotfries.rsi - - type: Grindable - type: entity @@ -427,7 +408,6 @@ Quantity: 10 - type: Sprite sprite: Objects/Consumable/Food/chawanmushi.rsi - - type: Grindable - type: entity @@ -445,7 +425,6 @@ sprite: Objects/Consumable/Food/cheeseburger.rsi - type: Item sprite: Objects/Consumable/Food/cheeseburger.rsi - - type: Grindable - type: entity name: cheesecake (slice) @@ -462,7 +441,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/cheesecake_slice.rsi - - type: Grindable - type: entity @@ -478,7 +456,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/cheesewedge.rsi - - type: Grindable - type: entity @@ -496,7 +473,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/cheesie_honkers.rsi - - type: Grindable - type: entity @@ -514,7 +490,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/cheesyfries.rsi - - type: Grindable - type: entity @@ -530,7 +505,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/cherrypie.rsi - - type: Grindable - type: entity @@ -550,7 +524,6 @@ sprite: Objects/Consumable/Food/chips.rsi - type: Item sprite: Objects/Consumable/Food/chips.rsi - - type: Grindable - type: entity name: chocolate bar @@ -567,7 +540,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/chocolatebar.rsi - - type: Grindable - type: entity @@ -585,7 +557,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/chocolatecake_slice.rsi - - type: Grindable - type: entity @@ -601,7 +572,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/chocolateegg.rsi - - type: Grindable - type: entity @@ -619,7 +589,6 @@ sprite: Objects/Consumable/Food/clownburger.rsi - type: Item sprite: Objects/Consumable/Food/clownburger.rsi - - type: Grindable - type: entity name: clown's tears @@ -634,7 +603,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/clownstears.rsi - - type: Grindable #- type: entity @@ -666,7 +634,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/coldchili.rsi - - type: Grindable #- type: entity @@ -696,7 +663,6 @@ Quantity: 10 - type: Sprite sprite: Objects/Consumable/Food/cookie!!!.rsi - - type: Grindable - type: entity @@ -712,7 +678,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/cracker.rsi - - type: Grindable - type: entity @@ -730,7 +695,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/creamcheesebreadslice.rsi - - type: Grindable - type: entity @@ -748,7 +712,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/cubancarp.rsi - - type: Grindable #- type: entity @@ -778,7 +741,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/donkpocket.rsi - - type: Grindable - type: entity @@ -796,7 +758,6 @@ sprite: Objects/Consumable/Food/donut1.rsi - type: Item sprite: Objects/Consumable/Food/donut1.rsi - - type: Grindable - type: entity parent: FoodBase @@ -813,7 +774,6 @@ sprite: Objects/Consumable/Food/donut2.rsi - type: Item sprite: Objects/Consumable/Food/donut2.rsi.rsi - - type: Grindable - type: entity parent: FoodBase @@ -830,7 +790,6 @@ sprite: Objects/Consumable/Food/egg-blue.rsi - type: Item sprite: Objects/Consumable/Food/egg-blue.rsi.rsi - - type: Grindable - type: entity parent: FoodBase @@ -847,7 +806,6 @@ sprite: Objects/Consumable/Food/egg-green.rsi - type: Item sprite: Objects/Consumable/Food/egg-green.rsi.rsi - - type: Grindable - type: entity parent: FoodBase @@ -864,7 +822,6 @@ sprite: Objects/Consumable/Food/egg-mime.rsi - type: Item sprite: Objects/Consumable/Food/egg-mime.rsi.rsi - - type: Grindable - type: entity parent: FoodBase @@ -881,7 +838,6 @@ sprite: Objects/Consumable/Food/egg-orange.rsi - type: Item sprite: Objects/Consumable/Food/egg-orange.rsi.rsi - - type: Grindable - type: entity parent: FoodBase @@ -898,7 +854,6 @@ sprite: Objects/Consumable/Food/egg-purple.rsi - type: Item sprite: Objects/Consumable/Food/egg-purple.rsi.rsi - - type: Grindable - type: entity parent: FoodBase @@ -915,7 +870,6 @@ sprite: Objects/Consumable/Food/egg-rainbow.rsi - type: Item sprite: Objects/Consumable/Food/egg-rainbow.rsi.rsi - - type: Grindable - type: entity parent: FoodBase @@ -932,7 +886,6 @@ sprite: Objects/Consumable/Food/egg-red.rsi - type: Item sprite: Objects/Consumable/Food/egg-red.rsi.rsi - - type: Grindable - type: entity @@ -950,7 +903,6 @@ sprite: Objects/Consumable/Food/egg-yellow.rsi - type: Item sprite: Objects/Consumable/Food/egg-yellow.rsi - - type: Grindable - type: entity parent: FoodBase @@ -969,7 +921,6 @@ seed: eggy - type: Item sprite: Objects/Consumable/Food/egg.rsi - - type: Grindable - type: entity parent: FoodBase @@ -986,7 +937,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/eggplantparm.rsi - - type: Grindable #- type: entity @@ -1018,7 +968,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/enchiladas.rsi - - type: Grindable #- type: entity @@ -1062,7 +1011,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/fishandchips.rsi - - type: Grindable - type: entity @@ -1080,7 +1028,6 @@ sprite: Objects/Consumable/Food/fishburger.rsi - type: Item sprite: Objects/Consumable/Food/fishburger.rsi - - type: Grindable #- type: entity # parent: FoodBase @@ -1109,7 +1056,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/fishfingers.rsi - - type: Grindable #- type: entity @@ -1139,7 +1085,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/fortune_cookie.rsi - - type: Grindable - type: entity @@ -1155,7 +1100,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/friedegg.rsi - - type: Grindable - type: entity @@ -1173,7 +1117,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/fries.rsi - - type: Grindable - type: entity @@ -1191,7 +1134,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/gappletart.rsi - - type: Grindable - type: entity @@ -1209,7 +1151,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/toastedsandwich.rsi - - type: Grindable - type: entity @@ -1227,7 +1168,6 @@ sprite: Objects/Consumable/Food/hburger.rsi - type: Item sprite: Objects/Consumable/Food/hburger.rsi - - type: Grindable - type: entity parent: FoodBase @@ -1244,7 +1184,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/herbsalad.rsi - - type: Grindable #- type: entity @@ -1276,7 +1215,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/hotchili.rsi - - type: Grindable - type: entity @@ -1292,7 +1230,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/hotdog.rsi - - type: Grindable #- type: entity @@ -1322,7 +1259,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/hugemushroomslice.rsi - - type: Grindable - type: entity @@ -1340,7 +1276,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/kabob.rsi - - type: Grindable - type: entity @@ -1356,7 +1291,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/jdonut1.rsi - - type: Grindable - type: entity @@ -1372,7 +1306,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/jdonut2.rsi - - type: Grindable - type: entity @@ -1390,7 +1323,6 @@ sprite: Objects/Consumable/Food/jellyburger.rsi - type: Item sprite: Objects/Consumable/Food/jellyburger.rsi - - type: Grindable - type: entity parent: FoodBase @@ -1407,7 +1339,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/jellysandwich.rsi - - type: Grindable - type: entity @@ -1425,7 +1356,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/jellytoast.rsi - - type: Grindable # TODO: Add more pies. Anything that shares a sprite @@ -1444,7 +1374,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/kabob.rsi - - type: Grindable #- type: entity @@ -1490,7 +1419,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/lemoncake_slice.rsi - - type: Grindable - type: entity @@ -1508,7 +1436,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/limecake_slice.rsi - - type: Grindable - type: entity @@ -1524,7 +1451,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/liquidfood.rsi - - type: Grindable - type: entity @@ -1540,7 +1466,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/loadedbakedpotato.rsi - - type: Grindable - type: entity @@ -1556,7 +1481,6 @@ Quantity: 5 - type: Sprite sprite: Objects/Consumable/Food/meat.rsi - - type: Grindable - type: entity @@ -1574,7 +1498,6 @@ sprite: Objects/Consumable/Food/meatball.rsi - type: Item sprite: Objects/Consumable/Food/meatball.rsi - - type: Grindable - type: entity parent: FoodBase @@ -1591,7 +1514,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/meatballsoup.rsi - - type: Grindable - type: entity @@ -1609,7 +1531,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/meatballspaghetti.rsi - - type: Grindable - type: entity @@ -1627,7 +1548,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/meatbreadslice.rsi - - type: Grindable - type: entity @@ -1645,7 +1565,6 @@ Quantity: 20 - type: Sprite sprite: Objects/Consumable/Food/meatpie.rsi - - type: Grindable - type: entity @@ -1661,7 +1580,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/meatpizzaslice.rsi - - type: Grindable - type: entity @@ -1679,7 +1597,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/meatsteak.rsi - - type: Grindable - type: entity @@ -1697,7 +1614,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/milosoup.rsi - - type: Grindable - type: entity @@ -1713,7 +1629,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/mimeburger.rsi - - type: Grindable - type: entity @@ -1729,7 +1644,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/mint.rsi - - type: Grindable #- type: entity @@ -1761,7 +1675,6 @@ sprite: Objects/Consumable/Food/hburger.rsi - type: Item sprite: Objects/Consumable/Food/hburger.rsi - - type: Grindable - type: entity parent: FoodBase @@ -1778,7 +1691,6 @@ Quantity: 30 - type: Sprite sprite: Objects/Consumable/Food/monkeysdelight.rsi - - type: Grindable #- type: entity @@ -1822,7 +1734,6 @@ Quantity: 10 - type: Sprite sprite: Objects/Consumable/Food/mushroompizzaslice.rsi - - type: Grindable - type: entity @@ -1840,7 +1751,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/mushroomsoup.rsi - - type: Grindable # TODO: More in this one @@ -1859,7 +1769,6 @@ Quantity: 1 - type: Sprite sprite: Objects/Consumable/Food/mysterysoup.rsi - - type: Grindable - type: entity @@ -1877,7 +1786,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/nettlesoup.rsi - - type: Grindable #- type: entity @@ -1909,7 +1817,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/omelette.rsi - - type: Grindable - type: entity @@ -1927,7 +1834,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/orangecake_slice.rsi - - type: Grindable - type: entity @@ -1945,7 +1851,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/pastatomato.rsi - - type: Grindable #- type: entity @@ -1975,7 +1880,6 @@ Quantity: 10 - type: Sprite sprite: Objects/Consumable/Food/phelmbiscuit.rsi - - type: Grindable - type: entity @@ -1991,7 +1895,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/pizzamargheritaslice.rsi - - type: Grindable - type: entity @@ -2009,7 +1912,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/plaincake_slice.rsi - - type: Grindable - type: entity @@ -2025,7 +1927,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/plump_pie.rsi - - type: Grindable - type: entity @@ -2044,7 +1945,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/popcorn.rsi - - type: Grindable - type: entity @@ -2060,7 +1960,6 @@ Quantity: 10 - type: Sprite sprite: Objects/Consumable/Food/poppypretzel.rsi - - type: Grindable - type: entity @@ -2078,7 +1977,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/pumpkinpieslice.rsi - - type: Grindable # TODO: Boiled rice? @@ -2109,7 +2007,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/roburger.rsi - - type: Grindable - type: entity @@ -2127,7 +2024,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/rofflewaffles.rsi - - type: Grindable #- type: entity @@ -2173,7 +2069,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/rpudding.rsi - - type: Grindable - type: entity @@ -2191,7 +2086,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/sandwich.rsi - - type: Grindable #- type: entity @@ -2235,7 +2129,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/sausage.rsi - - type: Grindable #- type: entity @@ -2282,7 +2175,6 @@ sprite: Objects/Consumable/Food/sosjerky.rsi - type: Item sprite: Objects/Consumable/Food/sosjerky.rsi - - type: Grindable - type: entity parent: FoodBase @@ -2299,7 +2191,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/soydope.rsi - - type: Grindable - type: entity @@ -2317,7 +2208,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/soylent_green.rsi - - type: Grindable # why these were named different i have no idea @@ -2336,7 +2226,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/soylent_yellow.rsi - - type: Grindable #- type: entity @@ -2366,7 +2255,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/space_twinkie.rsi - - type: Grindable - type: entity @@ -2384,7 +2272,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/spacylibertyduff.rsi - - type: Grindable - type: entity @@ -2400,7 +2287,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/spaghetti.rsi - - type: Grindable - type: entity @@ -2418,7 +2304,6 @@ sprite: Objects/Consumable/Food/spellburger.rsi - type: Item sprite: Objects/Consumable/Food/spellburger.rsi - - type: Grindable - type: entity parent: FoodBase @@ -2433,7 +2318,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/spesslaw.rsi - - type: Grindable - type: entity @@ -2449,7 +2333,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/stew.rsi - - type: Grindable - type: entity @@ -2467,7 +2350,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/stewedsoymeat.rsi - - type: Grindable - type: entity @@ -2483,7 +2365,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/stuffing.rsi - - type: Grindable #- type: entity @@ -2527,7 +2408,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/superbiteburger.rsi - - type: Grindable - type: entity @@ -2545,7 +2425,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/syndi_cakes.rsi - - type: Grindable - type: entity @@ -2561,7 +2440,6 @@ Quantity: 8 - type: Sprite sprite: Objects/Consumable/Food/taco.rsi - - type: Grindable - type: entity @@ -2579,7 +2457,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/tastybread.rsi - - type: Grindable - type: entity @@ -2597,7 +2474,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/toastedsandwich.rsi - - type: Grindable - type: entity @@ -2613,7 +2489,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/tofu.rsi - - type: Grindable - type: entity @@ -2631,7 +2506,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/tofubreadslice.rsi - - type: Grindable - type: entity @@ -2649,7 +2523,6 @@ sprite: Objects/Consumable/Food/tofuburger.rsi - type: Item sprite: Objects/Consumable/Food/tofuburger.rsi - - type: Grindable - type: entity parent: FoodBase @@ -2666,7 +2539,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/kabob.rsi - - type: Grindable - type: entity @@ -2682,7 +2554,6 @@ Quantity: 24 - type: Sprite sprite: Objects/Consumable/Food/tofurkey.rsi - - type: Grindable - type: entity @@ -2698,7 +2569,6 @@ Quantity: 6 - type: Sprite sprite: Objects/Consumable/Food/tomatomeat.rsi - - type: Grindable - type: entity @@ -2716,7 +2586,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/tomatosoup.rsi - - type: Grindable - type: entity @@ -2732,7 +2601,6 @@ Quantity: 4 - type: Sprite sprite: Objects/Consumable/Food/twobread.rsi - - type: Grindable - type: entity @@ -2750,7 +2618,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/validsalad.rsi - - type: Grindable - type: entity @@ -2766,7 +2633,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/vegetablepizzaslice.rsi - - type: Grindable - type: entity @@ -2784,7 +2650,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/vegetablesoup.rsi - - type: Grindable - type: entity @@ -2802,7 +2667,6 @@ Quantity: 16 - type: Sprite sprite: Objects/Consumable/Food/waffles.rsi - - type: Grindable - type: entity @@ -2818,7 +2682,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/watermelonslice.rsi - - type: Grindable - type: entity @@ -2836,7 +2699,6 @@ Quantity: 12 - type: Sprite sprite: Objects/Consumable/Food/wingfangchu.rsi - - type: Grindable - type: entity @@ -2854,7 +2716,6 @@ Quantity: 2 - type: Sprite sprite: Objects/Consumable/Food/wishsoup.rsi - - type: Grindable - type: entity @@ -2872,7 +2733,6 @@ sprite: Objects/Consumable/Food/xburger.rsi - type: Item sprite: Objects/Consumable/Food/xburger.rsi - - type: Grindable - type: entity parent: FoodBase @@ -2889,7 +2749,6 @@ Quantity: 20 - type: Sprite sprite: Objects/Consumable/Food/xenobreadslice.rsi - - type: Grindable - type: entity @@ -2905,7 +2764,6 @@ Quantity: 20 - type: Sprite sprite: Objects/Consumable/Food/xenomeat.rsi - - type: Grindable - type: entity @@ -2923,7 +2781,6 @@ Quantity: 20 - type: Sprite sprite: Objects/Consumable/Food/xenomeatpie.rsi - - type: Grindable - type: entity @@ -2941,7 +2798,6 @@ Quantity: 15 - type: Sprite sprite: Objects/Consumable/Food/stew.rsi - - type: Grindable - type: entity @@ -2960,7 +2816,6 @@ Quantity: 20 - type: Sprite sprite: Objects/Consumable/Food/milkape.rsi - - type: Grindable - type: entity @@ -2978,7 +2833,6 @@ - type: Sprite sprite: Objects/Consumable/Food/memoryleek.rsi state: memoryLeek - - type: Grindable - type: entity @@ -2997,7 +2851,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/apple_cake.rsi - - type: Grindable - type: entity @@ -3016,7 +2869,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/bananabread.rsi - - type: Grindable - type: entity @@ -3035,7 +2887,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/birthdaycake.rsi - - type: Grindable - type: entity @@ -3054,7 +2905,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/braincake.rsi - - type: Grindable - type: entity @@ -3073,7 +2923,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/bread.rsi - - type: Grindable - type: entity @@ -3092,7 +2941,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/carrotcake.rsi - - type: Grindable - type: entity @@ -3111,7 +2959,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/cheesecake.rsi - - type: Grindable - type: entity @@ -3130,7 +2977,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/apple_cake.rsi - - type: Grindable - type: entity @@ -3149,7 +2995,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/chocolatecake.rsi - - type: Grindable - type: entity @@ -3168,7 +3013,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/creamcheesebread.rsi - - type: Grindable - type: entity @@ -3187,7 +3031,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/lemoncake.rsi - - type: Grindable - type: entity @@ -3206,7 +3049,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/limecake.rsi - - type: Grindable - type: entity @@ -3225,7 +3067,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/meatbread.rsi - - type: Grindable - type: entity @@ -3245,7 +3086,6 @@ Quantity: 48 - type: Sprite sprite: Objects/Consumable/Food/meatpizza.rsi - - type: Grindable - type: entity @@ -3265,7 +3105,6 @@ Quantity: 48 - type: Sprite sprite: Objects/Consumable/Food/mushroompizza.rsi - - type: Grindable - type: entity @@ -3284,7 +3123,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/orangecake.rsi - - type: Grindable - type: entity @@ -3304,7 +3142,6 @@ Quantity: 48 - type: Sprite sprite: Objects/Consumable/Food/pizzamargherita.rsi - - type: Grindable - type: entity @@ -3323,7 +3160,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/plaincake.rsi - - type: Grindable - type: entity @@ -3342,7 +3178,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/pumpkinpie.rsi - - type: Grindable - type: Item sprite: Objects/Consumable/Food/pumpkinpie.rsi @@ -3364,7 +3199,6 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/tofubread.rsi - - type: Grindable - type: entity @@ -3384,7 +3218,6 @@ Quantity: 48 - type: Sprite sprite: Objects/Consumable/Food/vegetablepizza.rsi - - type: Grindable - type: entity @@ -3403,4 +3236,3 @@ Quantity: 40 - type: Sprite sprite: Objects/Consumable/Food/xenomeatbread.rsi - - type: Grindable diff --git a/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml b/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml index e06e4e2893..7bea165c02 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml @@ -15,7 +15,6 @@ sprite: Objects/Consumable/Food/monkeycube.rsi - type: Rehydratable target: MonkeyMob_Content - - type: Grindable - type: entity parent: PlushieCarp From 75c4ed6a093bf85dcd4249e5cbd61db8fdc0ae41 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Fri, 8 Jan 2021 18:06:36 -0700 Subject: [PATCH 070/166] Makes lightbulbs destructible (#2955) * Renames WindowBreak soundCollection to GlassBreak * Implements destructible lightbulbs moved the parent to the top as well * Fixes the old `glassbreak` soundCollection, renames it * Deletes the windows.yml version of glassbreak * Fixes the sound for bulbs being thrown * Removes name from abstract lightbulb * Implements IDestroyAct for lightbulbs * Implements onBreak for lightbulbs * Lights get damaged by getting hit and throwing * Lights now have an intermediate 'broken' state before destruction --- .../PowerReceiverUsers/LightBulbComponent.cs | 14 ++++--- .../Entities/Constructible/Walls/windows.yml | 13 ++----- .../Entities/Objects/Consumable/drinks.yml | 2 +- .../Entities/Objects/Power/lights.yml | 39 +++++++++++++++---- .../SoundCollections/glassbreak.yml | 8 ++-- 5 files changed, 48 insertions(+), 28 deletions(-) diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/LightBulbComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/LightBulbComponent.cs index ed4748fbf1..b7d72b392b 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/LightBulbComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/LightBulbComponent.cs @@ -1,5 +1,6 @@ -using System; +using System; using Content.Shared.Audio; +using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Server.GameObjects; using Robust.Server.GameObjects.EntitySystems; @@ -32,7 +33,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece /// Component that represents a light bulb. Can be broken, or burned, which turns them mostly useless. /// [RegisterComponent] - public class LightBulbComponent : Component, ILand + public class LightBulbComponent : Component, ILand, IBreakAct { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IRobustRandom _random = default!; @@ -121,15 +122,18 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece public void Land(LandEventArgs eventArgs) { - if (State == LightBulbState.Broken) - return; - var soundCollection = _prototypeManager.Index("glassbreak"); + var soundCollection = _prototypeManager.Index("GlassBreak"); var file = _random.Pick(soundCollection.PickFiles); EntitySystem.Get().PlayFromEntity(file, Owner); State = LightBulbState.Broken; } + + public void OnBreak(BreakageEventArgs eventArgs) + { + State = LightBulbState.Broken; + } } } diff --git a/Resources/Prototypes/Entities/Constructible/Walls/windows.yml b/Resources/Prototypes/Entities/Constructible/Walls/windows.yml index 8c75ec1e95..c63b189159 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/windows.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/windows.yml @@ -33,7 +33,7 @@ 15: behaviors: - !type:PlaySoundCollectionBehavior - soundCollection: WindowBreak + soundCollection: GlassBreak - !type:SpawnEntitiesBehavior spawn: ShardGlass: @@ -71,7 +71,7 @@ 75: behaviors: - !type:PlaySoundCollectionBehavior - soundCollection: WindowBreak + soundCollection: GlassBreak - !type:SpawnEntitiesBehavior spawn: ShardGlassReinforced: @@ -103,7 +103,7 @@ 100: behaviors: - !type:PlaySoundCollectionBehavior - soundCollection: WindowBreak + soundCollection: GlassBreak - !type:SpawnEntitiesBehavior spawn: ShardGlassPhoron: @@ -118,10 +118,3 @@ - type: Construction graph: window node: phoronWindow - -- type: soundCollection - id: WindowBreak - files: - - /Audio/Effects/glass_break1.ogg - - /Audio/Effects/glass_break2.ogg - - /Audio/Effects/glass_break3.ogg diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml index ef17deb41c..6f3b454fcf 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml @@ -29,7 +29,7 @@ 5: behaviors: - !type:PlaySoundCollectionBehavior - soundCollection: WindowBreak + soundCollection: GlassBreak - !type:SpawnEntitiesBehavior spawn: ShardGlass: diff --git a/Resources/Prototypes/Entities/Objects/Power/lights.yml b/Resources/Prototypes/Entities/Objects/Power/lights.yml index 103b422032..0037831aa0 100644 --- a/Resources/Prototypes/Entities/Objects/Power/lights.yml +++ b/Resources/Prototypes/Entities/Objects/Power/lights.yml @@ -1,4 +1,35 @@ - type: entity + parent: BaseItem + id: BaseLightbulb + abstract: true + components: + - type: LightBulb + - type: Damageable + - type: DamageOnLand + amount: 5 + - type: DamageOtherOnHit + amount: 5 + - type: Destructible + thresholds: + 5: + behaviors: + - !type:PlaySoundCollectionBehavior + soundCollection: GlassBreak + - !type:DoActsBehavior + acts: [ "Breakage" ] + 10: + behaviors: + - !type:PlaySoundCollectionBehavior + soundCollection: GlassBreak + - !type:SpawnEntitiesBehavior + spawn: + ShardGlass: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + +- type: entity parent: BaseLightbulb name: light bulb id: LightBulb @@ -10,14 +41,6 @@ sprite: Objects/Power/light_bulb.rsi state: normal -- type: entity - parent: BaseItem - name: baselightbulb - id: BaseLightbulb - abstract: true - components: - - type: LightBulb - - type: entity parent: BaseLightbulb name: light tube diff --git a/Resources/Prototypes/SoundCollections/glassbreak.yml b/Resources/Prototypes/SoundCollections/glassbreak.yml index 2e62ea1860..67417b22d4 100644 --- a/Resources/Prototypes/SoundCollections/glassbreak.yml +++ b/Resources/Prototypes/SoundCollections/glassbreak.yml @@ -1,6 +1,6 @@ - type: soundCollection - id: glassbreak + id: GlassBreak files: - - /Audio/Effects/glassbreak1.ogg - - /Audio/Effects/glassbreak2.ogg - - /Audio/Effects/glassbreak3.ogg + - /Audio/Effects/glass_break1.ogg + - /Audio/Effects/glass_break2.ogg + - /Audio/Effects/glass_break3.ogg From 42171a9b7043c7937d8508a392b8c3e5f806cfa0 Mon Sep 17 00:00:00 2001 From: Metal Gear Sloth Date: Sat, 9 Jan 2021 14:51:27 +1100 Subject: [PATCH 071/166] Stop github warnings --- .../GameObjects/Components/Mobs/CameraRecoilComponent.cs | 3 +-- Content.Client/UserInterface/Suspicion/SuspicionGui.cs | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs b/Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs index 2d4552122b..009f0c98bc 100644 --- a/Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs +++ b/Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs @@ -30,8 +30,7 @@ namespace Content.Client.GameObjects.Components.Mobs private Vector2 _currentKick; private float _lastKickTime; - [ComponentDependency] - private readonly EyeComponent? _eye; + [ComponentDependency] private readonly EyeComponent? _eye = null; // Basically I needed a way to chain this effect for the attack lunge animation. // Sorry! diff --git a/Content.Client/UserInterface/Suspicion/SuspicionGui.cs b/Content.Client/UserInterface/Suspicion/SuspicionGui.cs index 01b88dce9c..d2213379fe 100644 --- a/Content.Client/UserInterface/Suspicion/SuspicionGui.cs +++ b/Content.Client/UserInterface/Suspicion/SuspicionGui.cs @@ -18,7 +18,6 @@ namespace Content.Client.UserInterface.Suspicion public class SuspicionGui : Control { [Dependency] private readonly IPlayerManager _playerManager = default!; - [Dependency] private readonly IEntityManager _entityManager = default!; private readonly VBoxContainer _container; private readonly Button _roleButton; From 79dd7a7d7e0baf5370b36d5344c5f6cd77cc9793 Mon Sep 17 00:00:00 2001 From: chairbender Date: Fri, 8 Jan 2021 20:40:07 -0800 Subject: [PATCH 072/166] Improved top menu (#2949) * #272 proper open sides in menu buttons * #272 WIP, good starting point for making the top menu work well at different UI scales * #272 WIP top menu looking better, but inconsistent size * #272 WIP esc nice and big * #272 consistently sized top buttons * #272 proper highlighting of top menu elements * #272 proper highlighting of top menu elements * #272 nice shiny red tutorial button * #272 better tutorial icon * #272 missed svg changes * #272 consistently sized top menu * #272 better padding / alignment of top bar with other UI sections * #272 fix hamburger menu height to match others * #272 top menu name set based on keybind, use shortened names if possible * #272 top menu name set based on keybind, use shortened names if possible * #272 add top menu actions button * #272 add top menu admin button * #272 fix sandbox top button down status * #272 remove todo --- Content.Client/Sandbox/SandboxManager.cs | 17 +- Content.Client/UserInterface/ActionMenu.cs | 8 +- Content.Client/UserInterface/ActionsUI.cs | 20 +- .../AdminMenu/AdminMenuManager.cs | 27 ++ .../AdminMenu/AdminMenuWindow.cs | 15 + Content.Client/UserInterface/GameHud.cs | 351 ++++++++++++++---- .../UserInterface/Stylesheets/StyleBase.cs | 11 + .../UserInterface/Stylesheets/StyleNano.cs | 80 +++- .../UserInterface/Stylesheets/StyleSpace.cs | 4 + Resources/Textures/Interface/fist.svg | 91 +++++ .../Textures/Interface/fist.svg.96dpi.png | Bin 0 -> 548 bytes Resources/Textures/Interface/gavel.svg | 70 ++++ .../Textures/Interface/gavel.svg.96dpi.png | Bin 0 -> 548 bytes Resources/Textures/Interface/hamburger.svg | 30 +- .../Interface/hamburger.svg.96dpi.png | Bin 224 -> 316 bytes Resources/Textures/Interface/tutorial.svg | 67 ++-- .../Textures/Interface/tutorial.svg.96dpi.png | Bin 579 -> 644 bytes Resources/keybinds.yml | 2 +- 18 files changed, 685 insertions(+), 108 deletions(-) create mode 100644 Resources/Textures/Interface/fist.svg create mode 100644 Resources/Textures/Interface/fist.svg.96dpi.png create mode 100644 Resources/Textures/Interface/gavel.svg create mode 100644 Resources/Textures/Interface/gavel.svg.96dpi.png diff --git a/Content.Client/Sandbox/SandboxManager.cs b/Content.Client/Sandbox/SandboxManager.cs index 0f0f727a29..a7a79fe884 100644 --- a/Content.Client/Sandbox/SandboxManager.cs +++ b/Content.Client/Sandbox/SandboxManager.cs @@ -33,10 +33,12 @@ namespace Content.Client.Sandbox public readonly Button ShowMarkersButton; //Shows spawn points public readonly Button ShowBbButton; //Shows bounding boxes public readonly Button MachineLinkingButton; // Enables/disables machine linking mode. + private readonly IGameHud _gameHud; public SandboxWindow() { Resizable = false; + _gameHud = IoCManager.Resolve(); Title = "Sandbox Panel"; @@ -82,6 +84,20 @@ namespace Content.Client.Sandbox MachineLinkingButton = new Button { Text = Loc.GetString("Link machines"), ToggleMode = true }; vBox.AddChild(MachineLinkingButton); } + + + protected override void EnteredTree() + { + base.EnteredTree(); + _gameHud.SandboxButtonDown = true; + } + + protected override void ExitedTree() + { + base.ExitedTree(); + _gameHud.SandboxButtonDown = false; + } + } internal class SandboxManager : SharedSandboxManager, ISandboxManager @@ -197,7 +213,6 @@ namespace Content.Client.Sandbox private void WindowOnOnClose() { _window = null; - _gameHud.SandboxButtonDown = false; _sandboxWindowToggled = false; } diff --git a/Content.Client/UserInterface/ActionMenu.cs b/Content.Client/UserInterface/ActionMenu.cs index c51d27ac86..06b6312267 100644 --- a/Content.Client/UserInterface/ActionMenu.cs +++ b/Content.Client/UserInterface/ActionMenu.cs @@ -56,6 +56,7 @@ namespace Content.Client.UserInterface private readonly Button _clearButton; private readonly GridContainer _resultsGrid; private readonly TextureRect _dragShadow; + private readonly IGameHud _gameHud; private readonly DragDropHelper _dragDropHelper; @@ -64,6 +65,8 @@ namespace Content.Client.UserInterface _actionsComponent = actionsComponent; _actionsUI = actionsUI; _actionManager = IoCManager.Resolve(); + _gameHud = IoCManager.Resolve(); + Title = Loc.GetString("Actions"); CustomMinimumSize = (300, 300); @@ -143,14 +146,13 @@ namespace Content.Client.UserInterface _dragDropHelper = new DragDropHelper(OnBeginActionDrag, OnContinueActionDrag, OnEndActionDrag); } - protected override void EnteredTree() { base.EnteredTree(); _clearButton.OnPressed += OnClearButtonPressed; _searchBar.OnTextChanged += OnSearchTextChanged; _filterButton.OnItemSelected += OnFilterItemSelected; - + _gameHud.ActionsButtonDown = true; foreach (var actionMenuControl in _resultsGrid.Children) { var actionMenuItem = (actionMenuControl as ActionMenuItem); @@ -167,7 +169,7 @@ namespace Content.Client.UserInterface _clearButton.OnPressed -= OnClearButtonPressed; _searchBar.OnTextChanged -= OnSearchTextChanged; _filterButton.OnItemSelected -= OnFilterItemSelected; - + _gameHud.ActionsButtonDown = false; foreach (var actionMenuControl in _resultsGrid.Children) { var actionMenuItem = (actionMenuControl as ActionMenuItem); diff --git a/Content.Client/UserInterface/ActionsUI.cs b/Content.Client/UserInterface/ActionsUI.cs index 1a7f9d7074..7fe3703df8 100644 --- a/Content.Client/UserInterface/ActionsUI.cs +++ b/Content.Client/UserInterface/ActionsUI.cs @@ -32,6 +32,7 @@ namespace Content.Client.UserInterface private readonly ActionManager _actionManager; private readonly IEntityManager _entityManager; private readonly IGameTiming _gameTiming; + private readonly IGameHud _gameHud; private readonly ActionSlot[] _slots; @@ -80,13 +81,15 @@ namespace Content.Client.UserInterface _actionManager = IoCManager.Resolve(); _entityManager = IoCManager.Resolve(); _gameTiming = IoCManager.Resolve(); + _gameHud = IoCManager.Resolve(); _menu = new ActionMenu(_actionsComponent, this); + LayoutContainer.SetGrowHorizontal(this, LayoutContainer.GrowDirection.End); LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.End); LayoutContainer.SetAnchorTop(this, 0f); LayoutContainer.SetAnchorBottom(this, 0.8f); - LayoutContainer.SetMarginLeft(this, 10); - LayoutContainer.SetMarginTop(this, 100); + LayoutContainer.SetMarginLeft(this, 13); + LayoutContainer.SetMarginTop(this, 110); SizeFlagsHorizontal = SizeFlags.None; SizeFlagsVertical = SizeFlags.FillExpand; @@ -208,6 +211,9 @@ namespace Content.Client.UserInterface _lockButton.OnPressed += OnLockPressed; _settingsButton.OnPressed += OnToggleActionsMenu; _loadoutContainer.OnKeyBindDown += OnHotbarPaginate; + _gameHud.ActionsButtonToggled += OnToggleActionsMenuTopButton; + _gameHud.ActionsButtonDown = false; + _gameHud.ActionsButtonVisible = true; } protected override void ExitedTree() @@ -218,6 +224,9 @@ namespace Content.Client.UserInterface _lockButton.OnPressed -= OnLockPressed; _settingsButton.OnPressed -= OnToggleActionsMenu; _loadoutContainer.OnKeyBindDown -= OnHotbarPaginate; + _gameHud.ActionsButtonToggled -= OnToggleActionsMenuTopButton; + _gameHud.ActionsButtonDown = false; + _gameHud.ActionsButtonVisible = false; } protected override Vector2 CalculateMinimumSize() @@ -496,6 +505,13 @@ namespace Content.Client.UserInterface ToggleActionsMenu(); } + + private void OnToggleActionsMenuTopButton(bool open) + { + if (open == _menu.IsOpen) return; + ToggleActionsMenu(); + } + public void ToggleActionsMenu() { if (_menu.IsOpen) diff --git a/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs b/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs index 94b29253cf..c9caaedc71 100644 --- a/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs +++ b/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Content.Client.Administration; using Content.Shared.Input; using Robust.Client.Console; using Robust.Client.Interfaces.Input; @@ -13,6 +14,8 @@ namespace Content.Client.UserInterface.AdminMenu { [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly IInputManager _inputManager = default!; + [Dependency] private readonly IGameHud _gameHud = default!; + [Dependency] private readonly IClientAdminManager _clientAdminManager = default!; [Dependency] private readonly IClientConGroupController _clientConGroupController = default!; private SS14Window _window; @@ -26,6 +29,30 @@ namespace Content.Client.UserInterface.AdminMenu _inputManager.SetInputCommand(ContentKeyFunctions.OpenAdminMenu, InputCmdHandler.FromDelegate(session => Toggle())); + + _clientAdminManager.AdminStatusUpdated += () => + { + // when status changes, show the top button if we can open admin menu. + // if we can't or we lost admin status, close it and hide the button. + _gameHud.AdminButtonVisible = CanOpen(); + if (!_gameHud.AdminButtonVisible) + { + Close(); + } + }; + _gameHud.AdminButtonToggled += (open) => + { + if (open) + { + TryOpen(); + } + else + { + Close(); + } + }; + _gameHud.AdminButtonVisible = CanOpen(); + _gameHud.AdminButtonDown = false; } public void ResetWindow() diff --git a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs index e02483d5ee..c166d2e0d0 100644 --- a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs +++ b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs @@ -31,6 +31,7 @@ namespace Content.Client.UserInterface.AdminMenu public readonly TabContainer MasterTabContainer; public readonly VBoxContainer PlayerList; public readonly Label PlayerCount; + private readonly IGameHud _gameHud; protected override Vector2? CustomSize => (500, 250); @@ -207,6 +208,7 @@ namespace Content.Client.UserInterface.AdminMenu public AdminMenuWindow() //TODO: search for buttons? { + _gameHud = IoCManager.Resolve(); Title = Loc.GetString("Admin Menu"); #region PlayerList @@ -377,6 +379,19 @@ namespace Content.Client.UserInterface.AdminMenu IoCManager.Resolve().RequestEvents(); } + protected override void ExitedTree() + { + base.ExitedTree(); + _gameHud.AdminButtonDown = false; + + } + + protected override void EnteredTree() + { + base.EnteredTree(); + _gameHud.AdminButtonDown = true; + } + #region CommandButtonBaseClass private abstract class CommandButton { diff --git a/Content.Client/UserInterface/GameHud.cs b/Content.Client/UserInterface/GameHud.cs index 31f12c03f0..05c664b44e 100644 --- a/Content.Client/UserInterface/GameHud.cs +++ b/Content.Client/UserInterface/GameHud.cs @@ -1,17 +1,25 @@ using System; +using System.Transactions; +using Content.Client.UserInterface.Stylesheets; using Content.Client.Utility; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.Input; using Robust.Client.Graphics; using Robust.Client.Graphics.Drawing; +using Robust.Client.Input; using Robust.Client.Interfaces.Input; using Robust.Client.Interfaces.ResourceManagement; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; +using Robust.Shared.Utility; +using YamlDotNet.Core.Tokens; +using static Robust.Client.Input.Keyboard.Key; +using Control = Robust.Client.UserInterface.Control; namespace Content.Client.UserInterface { @@ -41,6 +49,16 @@ namespace Content.Client.UserInterface bool CraftingButtonVisible { get; set; } Action CraftingButtonToggled { get; set; } + // Actions top button. + bool ActionsButtonDown { get; set; } + bool ActionsButtonVisible { get; set; } + Action ActionsButtonToggled { get; set; } + + // Admin top button. + bool AdminButtonDown { get; set; } + bool AdminButtonVisible { get; set; } + Action AdminButtonToggled { get; set; } + // Sandbox top button. bool SandboxButtonDown { get; set; } bool SandboxButtonVisible { get; set; } @@ -69,6 +87,8 @@ namespace Content.Client.UserInterface private TopButton _buttonCharacterMenu; private TopButton _buttonInventoryMenu; private TopButton _buttonCraftingMenu; + private TopButton _buttonActionsMenu; + private TopButton _buttonAdminMenu; private TopButton _buttonSandboxMenu; private TutorialWindow _tutorialWindow; private TargetingDoll _targetingDoll; @@ -112,12 +132,14 @@ namespace Content.Client.UserInterface var characterTexture = _resourceCache.GetTexture("/Textures/Interface/character.svg.96dpi.png"); var inventoryTexture = _resourceCache.GetTexture("/Textures/Interface/inventory.svg.96dpi.png"); var craftingTexture = _resourceCache.GetTexture("/Textures/Interface/hammer.svg.96dpi.png"); - var tutorialTexture = _resourceCache.GetTexture("/Textures/Interface/students-cap.svg.96dpi.png"); + var actionsTexture = _resourceCache.GetTexture("/Textures/Interface/fist.svg.96dpi.png"); + var adminTexture = _resourceCache.GetTexture("/Textures/Interface/gavel.svg.96dpi.png"); + var tutorialTexture = _resourceCache.GetTexture("/Textures/Interface/tutorial.svg.96dpi.png"); var sandboxTexture = _resourceCache.GetTexture("/Textures/Interface/sandbox.svg.96dpi.png"); _topButtonsContainer = new HBoxContainer { - SeparationOverride = 4 + SeparationOverride = 8 }; RootControl.AddChild(_topButtonsContainer); @@ -125,32 +147,29 @@ namespace Content.Client.UserInterface LayoutContainer.SetAnchorAndMarginPreset(_topButtonsContainer, LayoutContainer.LayoutPreset.TopLeft, margin: 10); - // TODO: Pull key names here from the actual key binding config. + // the icon textures here should all have the same image height (32) but different widths, so in order to ensure + // the buttons themselves are consistent widths we set a common custom min size + Vector2 topMinSize = (42, 64); + // Escape - _buttonEscapeMenu = new TopButton(escapeTexture, "Esc") + _buttonEscapeMenu = new TopButton(escapeTexture, EngineKeyFunctions.EscapeMenu, _inputManager) { - ToolTip = Loc.GetString("Open escape menu.") + ToolTip = Loc.GetString("Open escape menu."), + CustomMinimumSize = (70, 64), + StyleClasses = {StyleBase.ButtonOpenRight} }; _topButtonsContainer.AddChild(_buttonEscapeMenu); _buttonEscapeMenu.OnToggled += args => EscapeButtonToggled?.Invoke(args.Pressed); - // Tutorial - _buttonTutorial = new TopButton(tutorialTexture, "F1") - { - ToolTip = Loc.GetString("Open tutorial.") - }; - - _topButtonsContainer.AddChild(_buttonTutorial); - - _buttonTutorial.OnToggled += a => ButtonTutorialOnOnToggled(); - // Character - _buttonCharacterMenu = new TopButton(characterTexture, "C") + _buttonCharacterMenu = new TopButton(characterTexture, ContentKeyFunctions.OpenCharacterMenu, _inputManager) { ToolTip = Loc.GetString("Open character menu."), - Visible = false + CustomMinimumSize = topMinSize, + Visible = false, + StyleClasses = {StyleBase.ButtonSquare} }; _topButtonsContainer.AddChild(_buttonCharacterMenu); @@ -158,10 +177,12 @@ namespace Content.Client.UserInterface _buttonCharacterMenu.OnToggled += args => CharacterButtonToggled?.Invoke(args.Pressed); // Inventory - _buttonInventoryMenu = new TopButton(inventoryTexture, "I") + _buttonInventoryMenu = new TopButton(inventoryTexture, ContentKeyFunctions.OpenInventoryMenu, _inputManager) { ToolTip = Loc.GetString("Open inventory menu."), - Visible = false + CustomMinimumSize = topMinSize, + Visible = false, + StyleClasses = {StyleBase.ButtonSquare} }; _topButtonsContainer.AddChild(_buttonInventoryMenu); @@ -169,27 +190,69 @@ namespace Content.Client.UserInterface _buttonInventoryMenu.OnToggled += args => InventoryButtonToggled?.Invoke(args.Pressed); // Crafting - _buttonCraftingMenu = new TopButton(craftingTexture, "G") + _buttonCraftingMenu = new TopButton(craftingTexture, ContentKeyFunctions.OpenCraftingMenu, _inputManager) { ToolTip = Loc.GetString("Open crafting menu."), - Visible = false + CustomMinimumSize = topMinSize, + Visible = false, + StyleClasses = {StyleBase.ButtonSquare} }; _topButtonsContainer.AddChild(_buttonCraftingMenu); _buttonCraftingMenu.OnToggled += args => CraftingButtonToggled?.Invoke(args.Pressed); + // Actions + _buttonActionsMenu = new TopButton(actionsTexture, ContentKeyFunctions.OpenActionsMenu, _inputManager) + { + ToolTip = Loc.GetString("Open actions menu."), + CustomMinimumSize = topMinSize, + Visible = false, + StyleClasses = {StyleBase.ButtonSquare} + }; + + _topButtonsContainer.AddChild(_buttonActionsMenu); + + _buttonActionsMenu.OnToggled += args => ActionsButtonToggled?.Invoke(args.Pressed); + + // Admin + _buttonAdminMenu = new TopButton(adminTexture, ContentKeyFunctions.OpenAdminMenu, _inputManager) + { + ToolTip = Loc.GetString("Open admin menu."), + CustomMinimumSize = topMinSize, + Visible = false, + StyleClasses = {StyleBase.ButtonSquare} + }; + + _topButtonsContainer.AddChild(_buttonAdminMenu); + + _buttonAdminMenu.OnToggled += args => AdminButtonToggled?.Invoke(args.Pressed); + // Sandbox - _buttonSandboxMenu = new TopButton(sandboxTexture, "B") + _buttonSandboxMenu = new TopButton(sandboxTexture, ContentKeyFunctions.OpenSandboxWindow, _inputManager) { ToolTip = Loc.GetString("Open sandbox menu."), - Visible = false + CustomMinimumSize = topMinSize, + Visible = false, + StyleClasses = {StyleBase.ButtonSquare} }; _topButtonsContainer.AddChild(_buttonSandboxMenu); _buttonSandboxMenu.OnToggled += args => SandboxButtonToggled?.Invoke(args.Pressed); + // Tutorial + _buttonTutorial = new TopButton(tutorialTexture, ContentKeyFunctions.OpenTutorial, _inputManager) + { + ToolTip = Loc.GetString("Open tutorial."), + CustomMinimumSize = topMinSize, + StyleClasses = {StyleBase.ButtonOpenLeft, TopButton.StyleClassRedTopButton}, + }; + + _topButtonsContainer.AddChild(_buttonTutorial); + + _buttonTutorial.OnToggled += a => ButtonTutorialOnOnToggled(); + _tutorialWindow = new TutorialWindow(); _tutorialWindow.OnClose += () => _buttonTutorial.Pressed = false; @@ -251,7 +314,8 @@ namespace Content.Client.UserInterface RootControl.AddChild(SuspicionContainer); - LayoutContainer.SetAnchorAndMarginPreset(SuspicionContainer, LayoutContainer.LayoutPreset.BottomLeft, margin: 10); + LayoutContainer.SetAnchorAndMarginPreset(SuspicionContainer, LayoutContainer.LayoutPreset.BottomLeft, + margin: 10); LayoutContainer.SetGrowHorizontal(SuspicionContainer, LayoutContainer.GrowDirection.End); LayoutContainer.SetGrowVertical(SuspicionContainer, LayoutContainer.GrowDirection.Begin); } @@ -330,6 +394,34 @@ namespace Content.Client.UserInterface public Action CraftingButtonToggled { get; set; } + public bool ActionsButtonDown + { + get => _buttonActionsMenu.Pressed; + set => _buttonActionsMenu.Pressed = value; + } + + public bool ActionsButtonVisible + { + get => _buttonActionsMenu.Visible; + set => _buttonActionsMenu.Visible = value; + } + + public Action ActionsButtonToggled { get; set; } + + public bool AdminButtonDown + { + get => _buttonAdminMenu.Pressed; + set => _buttonAdminMenu.Pressed = value; + } + + public bool AdminButtonVisible + { + get => _buttonAdminMenu.Visible; + set => _buttonAdminMenu.Visible = value; + } + + public Action AdminButtonToggled { get; set; } + public bool SandboxButtonDown { get => _buttonSandboxMenu.Pressed; @@ -344,94 +436,203 @@ namespace Content.Client.UserInterface public Action SandboxButtonToggled { get; set; } - public sealed class TopButton : BaseButton + public sealed class TopButton : ContainerButton { public const string StyleClassLabelTopButton = "topButtonLabel"; + public const string StyleClassRedTopButton = "topButtonLabel"; + private const float CustomTooltipDelay = 0.4f; private static readonly Color ColorNormal = Color.FromHex("#7b7e9e"); + private static readonly Color ColorRedNormal = Color.FromHex("#FEFEFE"); private static readonly Color ColorHovered = Color.FromHex("#9699bb"); + private static readonly Color ColorRedHovered = Color.FromHex("#FFFFFF"); private static readonly Color ColorPressed = Color.FromHex("#789B8C"); + private const float VertPad = 8f; + + private Color NormalColor => HasStyleClass(StyleClassRedTopButton) ? ColorRedNormal : ColorNormal; + private Color HoveredColor => HasStyleClass(StyleClassRedTopButton) ? ColorRedHovered : ColorHovered; + private readonly TextureRect _textureRect; private readonly Label _label; + private readonly BoundKeyFunction _function; + private readonly IInputManager _inputManager; - public TopButton(Texture texture, string keyName) + public TopButton(Texture texture, BoundKeyFunction function, IInputManager inputManager) { - ToggleMode = true; + _function = function; + _inputManager = inputManager; + TooltipDelay = CustomTooltipDelay; - AddChild(new MarginContainer - { - MarginTopOverride = 4, - Children = + AddChild( + new VBoxContainer { - new VBoxContainer + Children = { - Children = + new Control {CustomMinimumSize = (0, VertPad)}, + (_textureRect = new TextureRect { - (_textureRect = new TextureRect - { - Texture = texture, - SizeFlagsHorizontal = SizeFlags.ShrinkCenter, - SizeFlagsVertical = SizeFlags.Expand | SizeFlags.ShrinkCenter, - ModulateSelfOverride = ColorNormal, - CustomMinimumSize = (0, 32), - Stretch = TextureRect.StretchMode.KeepCentered - }), - (_label = new Label - { - Text = keyName, - SizeFlagsHorizontal = SizeFlags.ShrinkCenter, - ModulateSelfOverride = ColorNormal, - StyleClasses = {StyleClassLabelTopButton} - }) - } + Texture = texture, + SizeFlagsHorizontal = SizeFlags.ShrinkCenter, + SizeFlagsVertical = SizeFlags.Expand | SizeFlags.ShrinkCenter, + ModulateSelfOverride = NormalColor, + Stretch = TextureRect.StretchMode.KeepCentered + }), + new Control {CustomMinimumSize = (0, VertPad)}, + (_label = new Label + { + Text = ShortKeyName(_function), + SizeFlagsHorizontal = SizeFlags.ShrinkCenter, + ModulateSelfOverride = NormalColor, + StyleClasses = {StyleClassLabelTopButton} + }) } } - }); + ); - DrawModeChanged(); + ToggleMode = true; } - protected override Vector2 CalculateMinimumSize() + protected override void EnteredTree() { - var styleSize = ActualStyleBox?.MinimumSize ?? Vector2.Zero; - return (0, 4) + styleSize + base.CalculateMinimumSize(); + _inputManager.OnKeyBindingAdded += OnKeyBindingChanged; + _inputManager.OnKeyBindingRemoved += OnKeyBindingChanged; } - protected override void Draw(DrawingHandleScreen handle) + protected override void ExitedTree() { - ActualStyleBox?.Draw(handle, PixelSizeBox); + _inputManager.OnKeyBindingAdded -= OnKeyBindingChanged; + _inputManager.OnKeyBindingRemoved -= OnKeyBindingChanged; } - private StyleBox ActualStyleBox + + private void OnKeyBindingChanged(IKeyBinding obj) { - get + _label.Text = ShortKeyName(_function); + } + + private string ShortKeyName(BoundKeyFunction keyFunction) + { + // need to use shortened key names so they fit in the buttons. + return TryGetShortKeyName(keyFunction, out var name) ? Loc.GetString(name) : " "; + } + + private bool TryGetShortKeyName(BoundKeyFunction keyFunction, out string name) + { + if (_inputManager.TryGetKeyBinding(keyFunction, out var binding)) { - TryGetStyleProperty(Button.StylePropertyStyleBox, out StyleBox ret); - return ret; + // can't possibly fit a modifier key in the top button, so omit it + var key = binding.BaseKey; + if (binding.Mod1 != Unknown || binding.Mod2 != Unknown || + binding.Mod3 != Unknown) + { + name = null; + return false; + } + + name = null; + name = key switch + { + Apostrophe => "'", + Comma => ",", + Delete => "Del", + Down => "Dwn", + Escape => "Esc", + Equal => "=", + Home => "Hom", + Insert => "Ins", + Left => "Lft", + Menu => "Men", + Minus => "-", + Num0 => "0", + Num1 => "1", + Num2 => "2", + Num3 => "3", + Num4 => "4", + Num5 => "5", + Num6 => "6", + Num7 => "7", + Num8 => "8", + Num9 => "9", + Pause => "||", + Period => ".", + Return => "Ret", + Right => "Rgt", + Slash => "/", + Space => "Spc", + Tab => "Tab", + Tilde => "~", + BackSlash => "\\", + BackSpace => "Bks", + LBracket => "[", + MouseButton4 => "M4", + MouseButton5 => "M5", + MouseButton6 => "M6", + MouseButton7 => "M7", + MouseButton8 => "M8", + MouseButton9 => "M9", + MouseLeft => "ML", + MouseMiddle => "MM", + MouseRight => "MR", + NumpadDecimal => "N.", + NumpadDivide => "N/", + NumpadEnter => "Ent", + NumpadMultiply => "*", + NumpadNum0 => "0", + NumpadNum1 => "1", + NumpadNum2 => "2", + NumpadNum3 => "3", + NumpadNum4 => "4", + NumpadNum5 => "5", + NumpadNum6 => "6", + NumpadNum7 => "7", + NumpadNum8 => "8", + NumpadNum9 => "9", + NumpadSubtract => "N-", + PageDown => "PgD", + PageUp => "PgU", + RBracket => "]", + SemiColon => ";", + _ => DefaultShortKeyName(keyFunction) + }; + return name != null; } + + name = null; + return false; } - protected override void DrawModeChanged() + private string DefaultShortKeyName(BoundKeyFunction keyFunction) { + var name = FormattedMessage.EscapeText(_inputManager.GetKeyFunctionButtonString(keyFunction)); + return name.Length > 3 ? null : name; + } + + protected override void StylePropertiesChanged() + { + // colors of children depend on style, so ensure we update when style is changed + base.StylePropertiesChanged(); + UpdateChildColors(); + } + + private void UpdateChildColors() + { + if (_label == null || _textureRect == null) return; switch (DrawMode) { case DrawModeEnum.Normal: - SetOnlyStylePseudoClass(Button.StylePseudoClassNormal); - _textureRect.ModulateSelfOverride = ColorNormal; - _label.ModulateSelfOverride = ColorNormal; + _textureRect.ModulateSelfOverride = NormalColor; + _label.ModulateSelfOverride = NormalColor; break; case DrawModeEnum.Pressed: - SetOnlyStylePseudoClass(Button.StylePseudoClassPressed); _textureRect.ModulateSelfOverride = ColorPressed; _label.ModulateSelfOverride = ColorPressed; break; case DrawModeEnum.Hover: - SetOnlyStylePseudoClass(Button.StylePseudoClassHover); - _textureRect.ModulateSelfOverride = ColorHovered; - _label.ModulateSelfOverride = ColorHovered; + _textureRect.ModulateSelfOverride = HoveredColor; + _label.ModulateSelfOverride = HoveredColor; break; case DrawModeEnum.Disabled: @@ -439,15 +640,11 @@ namespace Content.Client.UserInterface } } - protected override void LayoutUpdateOverride() - { - var box = ActualStyleBox ?? new StyleBoxEmpty(); - var contentBox = box.GetContentBox(PixelSizeBox); - foreach (var child in Children) - { - FitChildInPixelBox(child, (UIBox2i) contentBox); - } + protected override void DrawModeChanged() + { + base.DrawModeChanged(); + UpdateChildColors(); } } } diff --git a/Content.Client/UserInterface/Stylesheets/StyleBase.cs b/Content.Client/UserInterface/Stylesheets/StyleBase.cs index 83dd9c26cb..bf62514e8d 100644 --- a/Content.Client/UserInterface/Stylesheets/StyleBase.cs +++ b/Content.Client/UserInterface/Stylesheets/StyleBase.cs @@ -17,6 +17,7 @@ namespace Content.Client.UserInterface.Stylesheets public const string ButtonOpenRight = "OpenRight"; public const string ButtonOpenLeft = "OpenLeft"; public const string ButtonOpenBoth = "OpenBoth"; + public const string ButtonSquare = "ButtonSquare"; public const string ButtonCaution = "Caution"; @@ -28,6 +29,7 @@ namespace Content.Client.UserInterface.Stylesheets protected StyleBoxTexture BaseButtonOpenRight { get; } protected StyleBoxTexture BaseButtonOpenLeft { get; } protected StyleBoxTexture BaseButtonOpenBoth { get; } + protected StyleBoxTexture BaseButtonSquare { get; } protected StyleBase(IResourceCache resCache) { @@ -70,6 +72,15 @@ namespace Content.Client.UserInterface.Stylesheets BaseButtonOpenBoth.SetPadding(StyleBox.Margin.Right, 2); BaseButtonOpenBoth.SetPadding(StyleBox.Margin.Left, 1); + BaseButtonSquare = new StyleBoxTexture(BaseButton) + { + Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (3, 24))), + }; + BaseButtonSquare.SetPatchMargin(StyleBox.Margin.Horizontal, 0); + BaseButtonSquare.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8); + BaseButtonSquare.SetPadding(StyleBox.Margin.Right, 2); + BaseButtonSquare.SetPadding(StyleBox.Margin.Left, 1); + BaseRules = new[] { // Default font. diff --git a/Content.Client/UserInterface/Stylesheets/StyleNano.cs b/Content.Client/UserInterface/Stylesheets/StyleNano.cs index 734946b907..ba2372b4a4 100644 --- a/Content.Client/UserInterface/Stylesheets/StyleNano.cs +++ b/Content.Client/UserInterface/Stylesheets/StyleNano.cs @@ -2,6 +2,7 @@ using Content.Client.GameObjects.EntitySystems; using Content.Client.UserInterface.Controls; using Content.Client.Utility; +using Robust.Client.Graphics; using Robust.Client.Graphics.Drawing; using Robust.Client.Interfaces.ResourceManagement; using Robust.Client.UserInterface; @@ -44,7 +45,9 @@ namespace Content.Client.UserInterface.Stylesheets public static readonly Color NanoGold = Color.FromHex("#A88B5E"); public static readonly Color ButtonColorDefault = Color.FromHex("#464966"); + public static readonly Color ButtonColorDefaultRed = Color.FromHex("#D43B3B"); public static readonly Color ButtonColorHovered = Color.FromHex("#575b7f"); + public static readonly Color ButtonColorHoveredRed = Color.FromHex("#DF6B6B"); public static readonly Color ButtonColorPressed = Color.FromHex("#3e6c45"); public static readonly Color ButtonColorDisabled = Color.FromHex("#30313c"); @@ -162,6 +165,33 @@ namespace Content.Client.UserInterface.Stylesheets Modulate = ButtonColorPressed }; + var buttonTex = resCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png"); + var topButtonBase = new StyleBoxTexture + { + Texture = buttonTex, + }; + topButtonBase.SetPatchMargin(StyleBox.Margin.All, 10); + topButtonBase.SetPadding(StyleBox.Margin.All, 0); + topButtonBase.SetContentMarginOverride(StyleBox.Margin.All, 0); + + var topButtonOpenRight = new StyleBoxTexture(topButtonBase) + { + Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((0, 0), (14, 24))), + }; + topButtonOpenRight.SetPatchMargin(StyleBox.Margin.Right, 0); + + var topButtonOpenLeft = new StyleBoxTexture(topButtonBase) + { + Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (14, 24))), + }; + topButtonOpenLeft.SetPatchMargin(StyleBox.Margin.Left, 0); + + var topButtonSquare = new StyleBoxTexture(topButtonBase) + { + Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (3, 24))), + }; + topButtonSquare.SetPatchMargin(StyleBox.Margin.Horizontal, 0); + var textureInvertedTriangle = resCache.GetTexture("/Textures/Interface/Nano/inverted_triangle.svg.png"); var lineEditTex = resCache.GetTexture("/Textures/Interface/Nano/lineedit.png"); @@ -410,6 +440,10 @@ namespace Content.Client.UserInterface.Stylesheets .Class(ButtonOpenBoth) .Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenBoth), + Element().Class(ContainerButton.StyleClassButton) + .Class(ButtonSquare) + .Prop(ContainerButton.StylePropertyStyleBox, BaseButtonSquare), + new StyleRule(new SelectorElement(typeof(Label), new[] { Button.StyleClassButton }, null, null), new[] { new StyleProperty(Label.StylePropertyAlignMode, Label.AlignMode.Center), @@ -808,8 +842,43 @@ namespace Content.Client.UserInterface.Stylesheets }), // Those top menu buttons. - Element() - .Prop(Button.StylePropertyStyleBox, BaseButton), + // these use slight variations on the various BaseButton styles so that the content within them appears centered, + // which is NOT the case for the default BaseButton styles (OpenLeft/OpenRight adds extra padding on one of the sides + // which makes the TopButton icons appear off-center, which we don't want). + new StyleRule( + new SelectorElement(typeof(GameHud.TopButton), new[] {ButtonSquare}, null, null), + new[] + { + new StyleProperty(Button.StylePropertyStyleBox, topButtonSquare), + }), + + new StyleRule( + new SelectorElement(typeof(GameHud.TopButton), new[] {ButtonOpenLeft}, null, null), + new[] + { + new StyleProperty(Button.StylePropertyStyleBox, topButtonOpenLeft), + }), + + new StyleRule( + new SelectorElement(typeof(GameHud.TopButton), new[] {ButtonOpenRight}, null, null), + new[] + { + new StyleProperty(Button.StylePropertyStyleBox, topButtonOpenRight), + }), + + new StyleRule( + new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassNormal}), + new[] + { + new StyleProperty(Button.StylePropertyModulateSelf, ButtonColorDefault), + }), + + new StyleRule( + new SelectorElement(typeof(GameHud.TopButton), new[] {GameHud.TopButton.StyleClassRedTopButton}, null, new[] {Button.StylePseudoClassNormal}), + new[] + { + new StyleProperty(Button.StylePropertyModulateSelf, ButtonColorDefaultRed), + }), new StyleRule( new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassNormal}), @@ -832,6 +901,13 @@ namespace Content.Client.UserInterface.Stylesheets new StyleProperty(Button.StylePropertyModulateSelf, ButtonColorHovered), }), + new StyleRule( + new SelectorElement(typeof(GameHud.TopButton), new[] {GameHud.TopButton.StyleClassRedTopButton}, null, new[] {Button.StylePseudoClassHover}), + new[] + { + new StyleProperty(Button.StylePropertyModulateSelf, ButtonColorHoveredRed), + }), + new StyleRule( new SelectorElement(typeof(Label), new[] {GameHud.TopButton.StyleClassLabelTopButton}, null, null), new[] diff --git a/Content.Client/UserInterface/Stylesheets/StyleSpace.cs b/Content.Client/UserInterface/Stylesheets/StyleSpace.cs index f0fcc2fd77..b3d9fcb0d7 100644 --- a/Content.Client/UserInterface/Stylesheets/StyleSpace.cs +++ b/Content.Client/UserInterface/Stylesheets/StyleSpace.cs @@ -61,6 +61,10 @@ namespace Content.Client.UserInterface.Stylesheets .Class(ButtonOpenBoth) .Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenBoth), + Element().Class(ContainerButton.StyleClassButton) + .Class(ButtonSquare) + .Prop(ContainerButton.StylePropertyStyleBox, BaseButtonSquare), + // Colors for the buttons. Element().Class(ContainerButton.StyleClassButton) .Pseudo(ContainerButton.StylePseudoClassNormal) diff --git a/Resources/Textures/Interface/fist.svg b/Resources/Textures/Interface/fist.svg new file mode 100644 index 0000000000..c25a18781d --- /dev/null +++ b/Resources/Textures/Interface/fist.svg @@ -0,0 +1,91 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/Resources/Textures/Interface/fist.svg.96dpi.png b/Resources/Textures/Interface/fist.svg.96dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..c64e2957ca1f35ffbca9a56d591a7320a485ed7a GIT binary patch literal 548 zcmV+<0^9wGP)Vc$h3!p`HXO(?*yLvq7 mLeh5`@S@f8>S1-mN%#dhNvb`+<>dYV0000 + + + + + image/svg+xml + + + + + + + + + + diff --git a/Resources/Textures/Interface/gavel.svg.96dpi.png b/Resources/Textures/Interface/gavel.svg.96dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..821c07195fe3d54b716cd5c61d3c24315e1f96d7 GIT binary patch literal 548 zcmV+<0^9wGP)N@ZTW~4N{R9&?W{!#6Z%)*2Q2X#7x41fx$*%k=P9WEKMY~&Mk|) zZXyyfi9tdPLW!Y7)W3Qk!@G_4Tf2nx(OuVmZiCiRsDvp>7JYYM6N7@EaZAWkn=r|gV7u@>!&+F=1hyZu8FnWX#kCP}Dk6qgV9Z3scuHxm zI8P5EVnb1zTNuTp{-m{NW@GqTv`;6U(?1*K?g?eGHKjCDV0$BCPee>53`fM9J|Phi myHiRp^2YvNZU2$~5BdXCnc=W32p`V?0000 + width="7.9563375mm" + sodipodi:docname="hamburger.svg" + inkscape:export-filename="C:\ss14\space-station-14\Resources\Textures\Interface\hamburger.svg.96dpi.png" + inkscape:export-xdpi="115.20007" + inkscape:export-ydpi="115.20007" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + z!P*nuH0n=!x;TbJw7$Jz=;!1p;&9RWvAKvz(jB=@?FAbT9lPP6tavHNA))fs@ngp( z#BkLaCNk%DSxQ%IpWzcH_sS!7_1?l?3lpbY@lSA*HS@G(kk+kaB^8PRwoFW?9ZHK;klRnUZbV~->Vzg0%vWs|~H(Vr&odhpBgTEfgL`VTaBrF@v%sJCm;h13TE hv4Iu|sn2I{uiO}@IoHXH2&7nwojgN0fS`sWr31+4 zEbxddW?lFz@#uVe#Za)pfyd=yy~hGOM~gNl*5|A&7iy$b z3OpyLC#X-p>H7B7O1pF4Ya;iqwB8{2I^z}Vnu7N0zQS*)z#}rhcH{gSQ#iU)Te!XYh3Ob6Mw<&;$Ve0Ykw6 diff --git a/Resources/Textures/Interface/tutorial.svg b/Resources/Textures/Interface/tutorial.svg index 36de5ee867..71762200ae 100644 --- a/Resources/Textures/Interface/tutorial.svg +++ b/Resources/Textures/Interface/tutorial.svg @@ -5,15 +5,21 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - id="svg1475" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="27.760838" + height="25.371094" + viewBox="0 0 27.760838 25.371094" + fill="none" version="1.1" - viewBox="0 0 5.3731326 8.4666643" - height="8.4666643mm" - width="5.3731327mm"> - + id="svg8" + sodipodi:docname="tutorial.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" + inkscape:export-filename="C:\ss14\space-station-14\Resources\Textures\Interface\tutorial.svg.96dpi.png" + inkscape:export-xdpi="121.08268" + inkscape:export-ydpi="121.08268"> + id="metadata14"> @@ -24,18 +30,37 @@ - - - - + + + diff --git a/Resources/Textures/Interface/tutorial.svg.96dpi.png b/Resources/Textures/Interface/tutorial.svg.96dpi.png index 2e83e41f93b421f90de1518b4d3bea052f8f0c6f..f8934fe0c96290d31e893e9ef2203ff111207c1c 100644 GIT binary patch delta 618 zcmV-w0+s#41cU`PiBL{Q4GJ0x0000DNk~Le0000Z0000W2nGNE0GLg|_W%F@32;bR za{vGmp8x<7p8+3l-X4)gCw~GFNkluO&<|ss)&Rnpm{8ISC;F}X6DXp-ezI$ zdEfKgGauZA5>hACFY225S-n~&uMEg7+w10bgB(`ZGhjBXKG7|Z0d+BIHWbwiN9&8~KsR8f zqDC7TbsJILRMj9g^=Bf?FLi&FFi-tod0|waR0VQE{aq5~k9x8Sm{)DWi^8bBDGM^5 z5u5^}dLb30SN&8m%zuKqBdcepFXT1gc+yU?bqts+6vpxA ztZQV&mxy2z3j>1S2e45aYny;15J@UwyMVxO`enmnF~vZN_z@HP;Wq<og9FhG3WTYR8%6`?=#Nu zx5A*LB}pUB*hwJ?c;e{}fVI5P2=EqYd$22DG!!ZUHQ=WQ>ZKNnRe-$|2w(@WQ1C+r zwh0V{V)H4`2?2ZF1sfjd9C!ibZ#m$=!ES(ww3@81%BZCH)@+(tEBBS%Yk+>>X`yH4 zKv@rf4Wj=qKnJM)4_HrVmz5$|iD+;7vX@qy^jyXz4JXV^=LXHJE$K3$=5rdD7@+F8 q-CJO;5O{~a0zLu1fqh^htL7ikK5PeFQqdX!0000 Date: Sat, 9 Jan 2021 02:11:09 -0300 Subject: [PATCH 073/166] Refactors the CargoOrderDataManager into the CargoConsoleSystem (#2858) * Update submodule * Refactor CargoOrderDataManager into CargoConsoleSystem * Fix OnRemove event Co-authored-by: Radrark --- Content.Server/Cargo/CargoOrderDataManager.cs | 104 ------------------ .../Cargo/ICargoOrderDataManager.cs | 18 --- .../Components/Cargo/CargoConsoleComponent.cs | 17 ++- .../Cargo/CargoOrderDatabaseComponent.cs | 8 +- .../EntitySystems/CargoConsoleSystem.cs | 91 ++++++++++++++- Content.Server/ServerContentIoC.cs | 3 +- 6 files changed, 101 insertions(+), 140 deletions(-) delete mode 100644 Content.Server/Cargo/CargoOrderDataManager.cs delete mode 100644 Content.Server/Cargo/ICargoOrderDataManager.cs diff --git a/Content.Server/Cargo/CargoOrderDataManager.cs b/Content.Server/Cargo/CargoOrderDataManager.cs deleted file mode 100644 index 8665b597ed..0000000000 --- a/Content.Server/Cargo/CargoOrderDataManager.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System.Collections.Generic; -using Content.Server.GameObjects.Components.Cargo; -using Content.Shared.Prototypes.Cargo; - -namespace Content.Server.Cargo -{ - public class CargoOrderDataManager : ICargoOrderDataManager - { - private readonly Dictionary _accounts = new(); - private readonly List _components = new(); - - public CargoOrderDataManager() - { - CreateAccount(0); - } - - public void CreateAccount(int id) - { - _accounts.Add(id, new CargoOrderDatabase(id)); - } - - public bool TryGetAccount(int id, out CargoOrderDatabase account) - { - if (_accounts.TryGetValue(id, out var _account)) - { - account = _account; - return true; - } - account = null; - return false; - } - - /// - /// Adds an order to the database. - /// - /// The person who requested the item. - /// The reason the product was requested. - /// The ID of the product requested. - /// The amount of the products requested. - /// The ID of the bank account paying for the order. - /// Whether the order will be bought when the orders are processed. - public virtual void AddOrder(int id, string requester, string reason, string productId, int amount, int payingAccountId) - { - if (amount < 1 || !TryGetAccount(id, out var account)) - return; - account.AddOrder(requester, reason, productId, amount, payingAccountId); - SyncComponentsWithId(id); - } - - public void RemoveOrder(int id, int orderNumber) - { - if (!TryGetAccount(id, out var account)) - return; - account.RemoveOrder(orderNumber); - SyncComponentsWithId(id); - } - - public void ApproveOrder(int id, int orderNumber) - { - if (!TryGetAccount(id, out var account)) - return; - account.ApproveOrder(orderNumber); - SyncComponentsWithId(id); - } - - private void SyncComponentsWithId(int id) - { - foreach (var component in _components) - { - if (!component.ConnectedToDatabase || component.Database.Id != id) - continue; - component.Dirty(); - } - } - - public List RemoveAndGetApprovedFrom(CargoOrderDatabase database) - { - var approvedOrders = database.SpliceApproved(); - SyncComponentsWithId(database.Id); - return approvedOrders; - } - - public void AddComponent(CargoOrderDatabaseComponent component) - { - if (_components.Contains(component)) - return; - _components.Add(component); - component.Database = _accounts[0]; - } - - public List GetOrdersFromAccount(int accountId) - { - if (!TryGetAccount(accountId, out var account)) - return null; - return account.GetOrders(); - } - - public (int CurrentCapacity, int MaxCapacity) GetCapacity(int id) - { - TryGetAccount(id, out var account); - return (account.CurrentOrderSize, account.MaxOrderSize); - } - } -} diff --git a/Content.Server/Cargo/ICargoOrderDataManager.cs b/Content.Server/Cargo/ICargoOrderDataManager.cs deleted file mode 100644 index 118a4e1f9d..0000000000 --- a/Content.Server/Cargo/ICargoOrderDataManager.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections.Generic; -using Content.Server.GameObjects.Components.Cargo; -using Content.Shared.Prototypes.Cargo; - -namespace Content.Server.Cargo -{ - public interface ICargoOrderDataManager - { - bool TryGetAccount(int id, out CargoOrderDatabase account); - void AddOrder(int id, string requester, string reason, string productId, int amount, int payingAccountId); - void RemoveOrder(int id, int orderNumber); - void ApproveOrder(int id, int orderNumber); - void AddComponent(CargoOrderDatabaseComponent component); - List GetOrdersFromAccount(int accountId); - List RemoveAndGetApprovedFrom(CargoOrderDatabase database); - (int CurrentCapacity, int MaxCapacity) GetCapacity(int id); - } -} diff --git a/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs b/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs index b48ebd83bb..db36c2a884 100644 --- a/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs +++ b/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs @@ -26,7 +26,6 @@ namespace Content.Server.GameObjects.Components.Cargo [ComponentReference(typeof(IActivate))] public class CargoConsoleComponent : SharedCargoConsoleComponent, IActivate { - [Dependency] private readonly ICargoOrderDataManager _cargoOrderDataManager = default!; [Dependency] private readonly IMapManager _mapManager = default!; [ViewVariables] @@ -88,7 +87,7 @@ namespace Content.Server.GameObjects.Components.Cargo { if (UserInterface != null) { - UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; + UserInterface.OnReceiveMessage -= UserInterfaceOnOnReceiveMessage; } base.OnRemove(); @@ -125,12 +124,12 @@ namespace Content.Server.GameObjects.Components.Cargo break; } - _cargoOrderDataManager.AddOrder(orders.Database.Id, msg.Requester, msg.Reason, msg.ProductId, msg.Amount, _bankAccount.Id); + _cargoConsoleSystem.AddOrder(orders.Database.Id, msg.Requester, msg.Reason, msg.ProductId, msg.Amount, _bankAccount.Id); break; } case CargoConsoleRemoveOrderMessage msg: { - _cargoOrderDataManager.RemoveOrder(orders.Database.Id, msg.OrderNumber); + _cargoConsoleSystem.RemoveOrder(orders.Database.Id, msg.OrderNumber); break; } case CargoConsoleApproveOrderMessage msg: @@ -145,12 +144,12 @@ namespace Content.Server.GameObjects.Components.Cargo PrototypeManager.TryIndex(order.ProductId, out CargoProductPrototype product); if (product == null!) break; - var capacity = _cargoOrderDataManager.GetCapacity(orders.Database.Id); + var capacity = _cargoConsoleSystem.GetCapacity(orders.Database.Id); if (capacity.CurrentCapacity == capacity.MaxCapacity) break; if (!_cargoConsoleSystem.ChangeBalance(_bankAccount.Id, (-product.PointCost) * order.Amount)) break; - _cargoOrderDataManager.ApproveOrder(orders.Database.Id, msg.OrderNumber); + _cargoConsoleSystem.ApproveOrder(orders.Database.Id, msg.OrderNumber); UpdateUIState(); break; } @@ -165,7 +164,7 @@ namespace Content.Server.GameObjects.Components.Cargo var indices = Owner.Transform.Coordinates.ToVector2i(Owner.EntityManager, _mapManager); var offsets = new Vector2i[] { new Vector2i(0, 1), new Vector2i(1, 1), new Vector2i(1, 0), new Vector2i(1, -1), new Vector2i(0, -1), new Vector2i(-1, -1), new Vector2i(-1, 0), new Vector2i(-1, 1), }; - var adjacentEntities = new List>(); //Probably better than IEnumerable.concat + var adjacentEntities = new List>(); //Probably better than IEnumerable.concat foreach (var offset in offsets) { adjacentEntities.Add((indices+offset).GetEntitiesInTileFast(Owner.Transform.GridID)); @@ -186,7 +185,7 @@ namespace Content.Server.GameObjects.Components.Cargo { if (cargoTelepad.TryGetComponent(out var telepadComponent)) { - var approvedOrders = _cargoOrderDataManager.RemoveAndGetApprovedFrom(orders.Database); + var approvedOrders = _cargoConsoleSystem.RemoveAndGetApprovedOrders(orders.Database.Id); orders.Database.ClearOrderCapacity(); foreach (var order in approvedOrders) { @@ -226,7 +225,7 @@ namespace Content.Server.GameObjects.Components.Cargo var id = _bankAccount.Id; var name = _bankAccount.Name; var balance = _bankAccount.Balance; - var capacity = _cargoOrderDataManager.GetCapacity(id); + var capacity = _cargoConsoleSystem.GetCapacity(id); UserInterface?.SetState(new CargoConsoleInterfaceState(_requestOnly, id, name, balance, capacity)); } } diff --git a/Content.Server/GameObjects/Components/Cargo/CargoOrderDatabaseComponent.cs b/Content.Server/GameObjects/Components/Cargo/CargoOrderDatabaseComponent.cs index 09fff675c2..54c5c7e091 100644 --- a/Content.Server/GameObjects/Components/Cargo/CargoOrderDatabaseComponent.cs +++ b/Content.Server/GameObjects/Components/Cargo/CargoOrderDatabaseComponent.cs @@ -1,6 +1,8 @@ -using Content.Server.Cargo; +using Content.Server.Cargo; +using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components.Cargo; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.IoC; namespace Content.Server.GameObjects.Components.Cargo @@ -8,8 +10,6 @@ namespace Content.Server.GameObjects.Components.Cargo [RegisterComponent] public class CargoOrderDatabaseComponent : SharedCargoOrderDatabaseComponent { - [Dependency] private readonly ICargoOrderDataManager _cargoOrderDataManager = default!; - public CargoOrderDatabase Database { get; set; } public bool ConnectedToDatabase => Database != null; @@ -17,7 +17,7 @@ namespace Content.Server.GameObjects.Components.Cargo { base.Initialize(); - _cargoOrderDataManager.AddComponent(this); + Database = EntitySystem.Get().StationOrderDatabase; } public override ComponentState GetComponentState() diff --git a/Content.Server/GameObjects/EntitySystems/CargoConsoleSystem.cs b/Content.Server/GameObjects/EntitySystems/CargoConsoleSystem.cs index a12412a57d..ad6ffad73c 100644 --- a/Content.Server/GameObjects/EntitySystems/CargoConsoleSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/CargoConsoleSystem.cs @@ -1,10 +1,13 @@ -using System.Collections.Generic; -using Content.Server.Cargo; +using System.Collections.Generic; using Robust.Shared.GameObjects.Systems; +using Content.Shared.Prototypes.Cargo; +using Content.Shared.GameTicking; +using Content.Server.Cargo; +using Content.Server.GameObjects.Components.Cargo; namespace Content.Server.GameObjects.EntitySystems { - public class CargoConsoleSystem : EntitySystem + public class CargoConsoleSystem : EntitySystem, IResettingEntitySystem { /// /// How much time to wait (in seconds) before increasing bank accounts balance. @@ -23,6 +26,8 @@ namespace Content.Server.GameObjects.EntitySystems /// Stores all bank accounts. /// private readonly Dictionary _accountsDict = new(); + + private readonly Dictionary _databasesDict = new(); /// /// Used to assign IDs to bank accounts. Incremental counter. /// @@ -36,9 +41,12 @@ namespace Content.Server.GameObjects.EntitySystems /// public CargoBankAccount StationAccount => GetBankAccount(0); + public CargoOrderDatabase StationOrderDatabase => GetOrderDatabase(0); + public override void Initialize() { CreateBankAccount("Orbital Monitor IV Station", 100000); + CreateOrderDatabase(0); } public override void Update(float frameTime) @@ -56,6 +64,15 @@ namespace Content.Server.GameObjects.EntitySystems } } + public void Reset() + { + _accountsDict.Clear(); + _databasesDict.Clear(); + _timer = 0; + _accountIndex = 0; + Initialize(); + } + /// /// Creates a new bank account. /// @@ -66,6 +83,11 @@ namespace Content.Server.GameObjects.EntitySystems _accountIndex += 1; } + public void CreateOrderDatabase(int id) + { + _databasesDict.Add(id, new CargoOrderDatabase(id)); + } + /// /// Returns the bank account associated with the given ID. /// @@ -74,6 +96,11 @@ namespace Content.Server.GameObjects.EntitySystems return _accountsDict[id]; } + public CargoOrderDatabase GetOrderDatabase(int id) + { + return _databasesDict[id]; + } + /// /// Returns whether the account exists, eventually passing the account in the out parameter. /// @@ -82,6 +109,11 @@ namespace Content.Server.GameObjects.EntitySystems return _accountsDict.TryGetValue(id, out account); } + public bool TryGetOrderDatabase(int id, out CargoOrderDatabase database) + { + return _databasesDict.TryGetValue(id, out database); + } + /// /// Attempts to change the given account's balance. /// Returns false if there's no account associated with the given ID @@ -102,5 +134,58 @@ namespace Content.Server.GameObjects.EntitySystems account.Balance += amount; return true; } + + public bool AddOrder(int id, string requester, string reason, string productId, int amount, int payingAccountId) + { + if (amount < 1 || !TryGetOrderDatabase(id, out var database)) + return false; + database.AddOrder(requester, reason, productId, amount, payingAccountId); + SyncComponentsWithId(id); + return true; + } + + public bool RemoveOrder(int id, int orderNumber) + { + if (!TryGetOrderDatabase(id, out var database)) + return false; + database.RemoveOrder(orderNumber); + SyncComponentsWithId(id); + return true; + } + + public bool ApproveOrder(int id, int orderNumber) + { + if (!TryGetOrderDatabase(id, out var database)) + return false; + database.ApproveOrder(orderNumber); + SyncComponentsWithId(id); + return true; + } + + public List RemoveAndGetApprovedOrders(int id) + { + if (!TryGetOrderDatabase(id, out var database)) + return new List(); + var approvedOrders = database.SpliceApproved(); + SyncComponentsWithId(id); + return approvedOrders; + } + + public (int CurrentCapacity, int MaxCapacity) GetCapacity(int id) + { + if (!TryGetOrderDatabase(id, out var database)) + return (0,0); + return (database.CurrentOrderSize, database.MaxOrderSize); + } + + private void SyncComponentsWithId(int id) + { + foreach (var comp in ComponentManager.EntityQuery()) + { + if (!comp.ConnectedToDatabase || comp.Database.Id != id) + continue; + comp.Dirty(); + } + } } } diff --git a/Content.Server/ServerContentIoC.cs b/Content.Server/ServerContentIoC.cs index 09a1f2d17c..89469b58ce 100644 --- a/Content.Server/ServerContentIoC.cs +++ b/Content.Server/ServerContentIoC.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.AI.Utility.Considerations; using Content.Server.AI.WorldState; using Content.Server.Cargo; @@ -38,7 +38,6 @@ namespace Content.Server IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); - IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); From 7986c0ff731d6f9ab550974ade723ee152072375 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sat, 9 Jan 2021 12:17:13 +0100 Subject: [PATCH 074/166] Fix knockdown help sound --- .../GameObjects/Components/Mobs/StunnableComponent.cs | 6 ------ .../GameObjects/Components/Mobs/StunnableComponent.cs | 8 ++++++++ .../Components/Mobs/SharedStunnableComponent.cs | 2 ++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Content.Client/GameObjects/Components/Mobs/StunnableComponent.cs b/Content.Client/GameObjects/Components/Mobs/StunnableComponent.cs index 8fa3e2949d..11d38ccd70 100644 --- a/Content.Client/GameObjects/Components/Mobs/StunnableComponent.cs +++ b/Content.Client/GameObjects/Components/Mobs/StunnableComponent.cs @@ -12,12 +12,6 @@ namespace Content.Client.GameObjects.Components.Mobs [ComponentReference(typeof(SharedStunnableComponent))] public class StunnableComponent : SharedStunnableComponent { - protected override void OnInteractHand() - { - EntitySystem.Get() - .Play("/Audio/Effects/thudswoosh.ogg", Owner, AudioHelpers.WithVariation(0.25f)); - } - public override void HandleComponentState(ComponentState? curState, ComponentState? nextState) { base.HandleComponentState(curState, nextState); diff --git a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs index 9f3ec4def6..9f71567a8b 100644 --- a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs @@ -1,10 +1,12 @@ using Content.Server.GameObjects.EntitySystems; using Content.Shared.Alert; +using Content.Shared.Audio; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.GameObjects.Components.Movement; using Content.Shared.Interfaces.GameObjects.Components; using NFluidsynth; +using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; @@ -108,6 +110,12 @@ namespace Content.Server.GameObjects.Components.Mobs } } + protected override void OnInteractHand() + { + EntitySystem.Get() + .PlayFromEntity("/Audio/Effects/thudswoosh.ogg", Owner, AudioHelpers.WithVariation(0.05f)); + } + public override ComponentState GetComponentState() { return new StunnableComponentState(StunnedTimer, KnockdownTimer, SlowdownTimer, WalkModifierOverride, diff --git a/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs b/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs index 794ab734be..c4e6395042 100644 --- a/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs +++ b/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs @@ -232,6 +232,8 @@ namespace Content.Shared.GameObjects.Components.Mobs KnockdownTimer -= _helpKnockdownRemove; + OnInteractHand(); + SetAlert(); Dirty(); From 1fe25049a377ec7853d52b14072cc25bba8a39d6 Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 9 Jan 2021 13:49:44 +0100 Subject: [PATCH 075/166] updates submodule to fix windows build --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 9b92bcf911..792179657b 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 9b92bcf91191d33074b790489c6440f084ce8433 +Subproject commit 792179657bd536882f41662ea23a3b5d471e6e70 From d81a5faac49b4f87f413cfb0c9f90db5ed1c240a Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Sat, 9 Jan 2021 20:31:34 +0100 Subject: [PATCH 076/166] Adds disarm action (#2950) * Adds disarming * Disarm acts * yaml * much better icon for disarm * Apply Remie's suggestions, improve code! --- .../EntitySystems/MeleeWeaponSystem.cs | 9 ++ Content.Server/Actions/DisarmAction.cs | 89 ++++++++++++++++++ .../Components/GUI/HandsComponent.cs | 48 +++++++++- .../Components/Mobs/StunnableComponent.cs | 26 ++++- .../EntitySystems/MeleeWeaponSystem.cs | 5 + .../Interfaces/GameObjects/IDisarmedAct.cs | 42 +++++++++ Content.Shared/Actions/ActionType.cs | 1 + .../MeleeWeaponSystemMessages.cs | 13 +++ Resources/Prototypes/Actions/actions.yml | 11 +++ .../Prototypes/Entities/Mobs/Player/human.yml | 1 + .../Textures/Interface/Actions/disarm.png | Bin 0 -> 1183 bytes .../Textures/Interface/Actions/meta.json | 4 + 12 files changed, 247 insertions(+), 2 deletions(-) create mode 100644 Content.Server/Actions/DisarmAction.cs create mode 100644 Content.Server/Interfaces/GameObjects/IDisarmedAct.cs create mode 100644 Resources/Textures/Interface/Actions/disarm.png diff --git a/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs b/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs index 806e122204..7f4ec946fc 100644 --- a/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs @@ -28,6 +28,7 @@ namespace Content.Client.GameObjects.EntitySystems public override void Initialize() { SubscribeNetworkEvent(PlayWeaponArc); + SubscribeNetworkEvent(PlayLunge); } public override void FrameUpdate(float frameTime) @@ -106,5 +107,13 @@ namespace Content.Client.GameObjects.EntitySystems }); } } + + private void PlayLunge(PlayLungeAnimationMessage msg) + { + EntityManager + .GetEntity(msg.Source) + .EnsureComponent() + .SetData(msg.Angle); + } } } diff --git a/Content.Server/Actions/DisarmAction.cs b/Content.Server/Actions/DisarmAction.cs new file mode 100644 index 0000000000..e166f02577 --- /dev/null +++ b/Content.Server/Actions/DisarmAction.cs @@ -0,0 +1,89 @@ +#nullable enable +using System; +using System.Linq; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Mobs; +using Content.Server.GameObjects.Components.Pulling; +using Content.Server.GameObjects.EntitySystems; +using Content.Server.Interfaces.GameObjects; +using Content.Server.Utility; +using Content.Shared.Actions; +using Content.Shared.Audio; +using Content.Shared.GameObjects.Components.Mobs; +using Content.Shared.GameObjects.Components.Pulling; +using Content.Shared.GameObjects.EntitySystems.ActionBlocker; +using Content.Shared.Interfaces; +using Content.Shared.Utility; +using JetBrains.Annotations; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.Player; +using Robust.Shared.Audio; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Random; +using Robust.Shared.Serialization; + +namespace Content.Server.Actions +{ + [UsedImplicitly] + public class DisarmAction : ITargetEntityAction + { + private float _failProb; + private float _pushProb; + private float _cooldown; + + public void ExposeData(ObjectSerializer serializer) + { + serializer.DataField(ref _failProb, "failProb", 0.4f); + serializer.DataField(ref _pushProb, "pushProb", 0.4f); + serializer.DataField(ref _cooldown, "cooldown", 1.5f); + } + + public void DoTargetEntityAction(TargetEntityActionEventArgs args) + { + var disarmedActs = args.Target.GetAllComponents().ToArray(); + + if (disarmedActs.Length == 0 || !args.Performer.InRangeUnobstructed(args.Target)) return; + if (!args.Performer.TryGetComponent(out var actions)) return; + if (args.Target == args.Performer || !args.Performer.CanAttack()) return; + + var random = IoCManager.Resolve(); + var audio = EntitySystem.Get(); + var system = EntitySystem.Get(); + + var angle = new Angle(args.Target.Transform.MapPosition.Position - args.Performer.Transform.MapPosition.Position); + + actions.Cooldown(ActionType.Disarm, Cooldowns.SecondsFromNow(_cooldown)); + + if (random.Prob(_failProb)) + { + audio.PlayFromEntity("/Audio/Weapons/punchmiss.ogg", args.Performer, + AudioHelpers.WithVariation(0.025f)); + args.Performer.PopupMessageOtherClients(Loc.GetString("{0} fails to disarm {1}!", args.Performer.Name, args.Target.Name)); + args.Performer.PopupMessageCursor(Loc.GetString("You fail to disarm {0}!", args.Target.Name)); + system.SendLunge(angle, args.Performer); + return; + } + + system.SendAnimation("disarm", angle, args.Performer, args.Performer, new []{ args.Target }); + + var eventArgs = new DisarmedActEventArgs() {Target = args.Target, Source = args.Performer, PushProbability = _pushProb}; + + // Sort by priority. + Array.Sort(disarmedActs, (a, b) => a.Priority.CompareTo(b.Priority)); + + foreach (var disarmedAct in disarmedActs) + { + if (disarmedAct.Disarmed(eventArgs)) + return; + } + + audio.PlayFromEntity("/Audio/Effects/thudswoosh.ogg", args.Performer, + AudioHelpers.WithVariation(0.025f)); + } + } +} diff --git a/Content.Server/GameObjects/Components/GUI/HandsComponent.cs b/Content.Server/GameObjects/Components/GUI/HandsComponent.cs index 9d1aa7cef9..0182636f77 100644 --- a/Content.Server/GameObjects/Components/GUI/HandsComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/HandsComponent.cs @@ -4,22 +4,31 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.GameObjects.Components.Pulling; using Content.Server.GameObjects.EntitySystems.Click; +using Content.Server.Interfaces.GameObjects; using Content.Server.Interfaces.GameObjects.Components.Items; +using Content.Server.Utility; +using Content.Shared.Audio; using Content.Shared.GameObjects.Components.Body.Part; using Content.Shared.GameObjects.Components.Items; +using Content.Shared.GameObjects.Components.Pulling; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; +using Content.Shared.Interfaces; using Content.Shared.Physics.Pull; using Robust.Server.GameObjects; using Robust.Server.GameObjects.Components.Container; using Robust.Server.GameObjects.EntitySystemMessages; +using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.Containers; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Network; using Robust.Shared.IoC; +using Robust.Shared.Localization; using Robust.Shared.Log; using Robust.Shared.Maths; using Robust.Shared.Players; @@ -32,7 +41,7 @@ namespace Content.Server.GameObjects.Components.GUI [ComponentReference(typeof(IHandsComponent))] [ComponentReference(typeof(ISharedHandsComponent))] [ComponentReference(typeof(SharedHandsComponent))] - public class HandsComponent : SharedHandsComponent, IHandsComponent, IBodyPartAdded, IBodyPartRemoved + public class HandsComponent : SharedHandsComponent, IHandsComponent, IBodyPartAdded, IBodyPartRemoved, IDisarmedAct { [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; @@ -718,6 +727,43 @@ namespace Content.Server.GameObjects.Components.GUI RemoveHand(args.Slot); } + + bool IDisarmedAct.Disarmed(DisarmedActEventArgs eventArgs) + { + if (BreakPulls()) + return false; + + var source = eventArgs.Source; + + EntitySystem.Get().PlayFromEntity("/Audio/Effects/thudswoosh.ogg", source, + AudioHelpers.WithVariation(0.025f)); + + if (ActiveHand != null && Drop(ActiveHand, false)) + { + source.PopupMessageOtherClients(Loc.GetString("{0} disarms {1}!", source.Name, eventArgs.Target.Name)); + source.PopupMessageCursor(Loc.GetString("You disarm {0}!", eventArgs.Target.Name)); + } + else + { + source.PopupMessageOtherClients(Loc.GetString("{0} shoves {1}!", source.Name, eventArgs.Target.Name)); + source.PopupMessageCursor(Loc.GetString("You shove {0}!", eventArgs.Target.Name)); + } + + return true; + } + + // We want this to be the last disarm act to run. + int IDisarmedAct.Priority => int.MaxValue; + + private bool BreakPulls() + { + // What is this API?? + if (!Owner.TryGetComponent(out SharedPullerComponent? puller) + || puller.Pulling == null || !puller.Pulling.TryGetComponent(out PullableComponent? pullable)) + return false; + + return pullable.TryStopPull(); + } } public class Hand : IDisposable diff --git a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs index 9f71567a8b..041542e389 100644 --- a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs @@ -1,17 +1,23 @@ using Content.Server.GameObjects.EntitySystems; +using Content.Server.Interfaces.GameObjects; +using Content.Server.Utility; using Content.Shared.Alert; using Content.Shared.Audio; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.GameObjects.Components.Movement; +using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; using NFluidsynth; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.Random; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Random; using Robust.Shared.Timers; using Logger = Robust.Shared.Log.Logger; @@ -19,7 +25,7 @@ namespace Content.Server.GameObjects.Components.Mobs { [RegisterComponent] [ComponentReference(typeof(SharedStunnableComponent))] - public class StunnableComponent : SharedStunnableComponent + public class StunnableComponent : SharedStunnableComponent, IDisarmedAct { [Dependency] private readonly IGameTiming _gameTiming = default!; @@ -121,5 +127,23 @@ namespace Content.Server.GameObjects.Components.Mobs return new StunnableComponentState(StunnedTimer, KnockdownTimer, SlowdownTimer, WalkModifierOverride, RunModifierOverride); } + + bool IDisarmedAct.Disarmed(DisarmedActEventArgs eventArgs) + { + if (!IoCManager.Resolve().Prob(eventArgs.PushProbability)) + return false; + + Paralyze(4f); + + var source = eventArgs.Source; + + EntitySystem.Get().PlayFromEntity("/Audio/Effects/thudswoosh.ogg", source, + AudioHelpers.WithVariation(0.025f)); + + source.PopupMessageOtherClients(Loc.GetString("{0} pushes {1}!", source, eventArgs.Target.Name)); + source.PopupMessageCursor(Loc.GetString("You push {0}!", eventArgs.Target.Name)); + + return true; + } } } diff --git a/Content.Server/GameObjects/EntitySystems/MeleeWeaponSystem.cs b/Content.Server/GameObjects/EntitySystems/MeleeWeaponSystem.cs index b8d470975c..edeb316154 100644 --- a/Content.Server/GameObjects/EntitySystems/MeleeWeaponSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/MeleeWeaponSystem.cs @@ -14,5 +14,10 @@ namespace Content.Server.GameObjects.EntitySystems RaiseNetworkEvent(new MeleeWeaponSystemMessages.PlayMeleeWeaponAnimationMessage(arc, angle, attacker.Uid, source.Uid, hits.Select(e => e.Uid).ToList(), textureEffect, arcFollowAttacker)); } + + public void SendLunge(Angle angle, IEntity source) + { + RaiseNetworkEvent(new MeleeWeaponSystemMessages.PlayLungeAnimationMessage(angle, source.Uid)); + } } } diff --git a/Content.Server/Interfaces/GameObjects/IDisarmedAct.cs b/Content.Server/Interfaces/GameObjects/IDisarmedAct.cs new file mode 100644 index 0000000000..8d2fd3b190 --- /dev/null +++ b/Content.Server/Interfaces/GameObjects/IDisarmedAct.cs @@ -0,0 +1,42 @@ +using System; +using Robust.Shared.Interfaces.GameObjects; + +namespace Content.Server.Interfaces.GameObjects +{ + /// + /// Implements behavior when an entity is disarmed. + /// + public interface IDisarmedAct + { + /// + /// Behavior when the entity is disarmed. + /// Return true to prevent the default disarm behavior, + /// or rest of IDisarmAct behaviors that come after this one from happening. + /// + bool Disarmed(DisarmedActEventArgs eventArgs); + + /// + /// Priority for this disarm act. + /// Used to determine act execution order. + /// + int Priority => 0; + } + + public class DisarmedActEventArgs : EventArgs + { + /// + /// The entity being disarmed. + /// + public IEntity Target { get; init; } + + /// + /// The entity performing the disarm. + /// + public IEntity Source { get; init; } + + /// + /// Probability for push/knockdown. + /// + public float PushProbability { get; init; } + } +} diff --git a/Content.Shared/Actions/ActionType.cs b/Content.Shared/Actions/ActionType.cs index 151d78b1dd..90160db3d4 100644 --- a/Content.Shared/Actions/ActionType.cs +++ b/Content.Shared/Actions/ActionType.cs @@ -7,6 +7,7 @@ { Error, HumanScream, + Disarm, DebugInstant, DebugToggle, DebugTargetPoint, diff --git a/Content.Shared/GameObjects/EntitySystemMessages/MeleeWeaponSystemMessages.cs b/Content.Shared/GameObjects/EntitySystemMessages/MeleeWeaponSystemMessages.cs index 1d16d09083..d949c33c76 100644 --- a/Content.Shared/GameObjects/EntitySystemMessages/MeleeWeaponSystemMessages.cs +++ b/Content.Shared/GameObjects/EntitySystemMessages/MeleeWeaponSystemMessages.cs @@ -30,5 +30,18 @@ namespace Content.Shared.GameObjects.EntitySystemMessages public bool TextureEffect { get; } public bool ArcFollowAttacker { get; } } + + [Serializable, NetSerializable] + public sealed class PlayLungeAnimationMessage : EntitySystemMessage + { + public Angle Angle { get; } + public EntityUid Source { get; } + + public PlayLungeAnimationMessage(Angle angle, EntityUid source) + { + Angle = angle; + Source = source; + } + } } } diff --git a/Resources/Prototypes/Actions/actions.yml b/Resources/Prototypes/Actions/actions.yml index c30aef5800..d588369a6b 100644 --- a/Resources/Prototypes/Actions/actions.yml +++ b/Resources/Prototypes/Actions/actions.yml @@ -22,6 +22,17 @@ - /Audio/Voice/Human/femalescream_5.ogg wilhelm: /Audio/Voice/Human/wilhelm_scream.ogg +- type: action + actionType: Disarm + icon: Interface/Actions/disarm.png + name: "[color=red]Disarm[/color]" + description: "Attempt to [color=red]disarm[/color] someone." + filters: + - human + behaviorType: TargetEntity + repeat: true + behavior: !type:DisarmAction { } + - type: action actionType: DebugInstant icon: Interface/Alerts/Human/human1.png diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index 84f57d23b0..afe8be1e5b 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -14,6 +14,7 @@ - type: Actions innateActions: - HumanScream + - Disarm - type: OverlayEffectsUI - type: Eye zoom: 0.5, 0.5 diff --git a/Resources/Textures/Interface/Actions/disarm.png b/Resources/Textures/Interface/Actions/disarm.png new file mode 100644 index 0000000000000000000000000000000000000000..f1efa1df685d057446ac1616a0040aadff7308ef GIT binary patch literal 1183 zcmV;Q1YrA#P)Px(SxH1eR9J<@SIKT0M-Y9ph$1~QEy|L)_#{M&MQw4Sc;HJTKu!h%13Bds_&@Ri z`41z=A*Ucl0Oyh*=!-FmZHNjfE)t?c5Q&TyT9&!Z(v`z-hC`7QX&tQMp&Q+edaqtr z)ii-?Hp!dlkDomMkif>Xr;mIB`r{|hW2w6z5+Bure_=d(`bZ5fKHPZt-Blg__S5(L zi?6<6qnv&5^2N8_Tz(&rVj;te`3xThUd(5BvCw<2pN&kQn9uNNEMY{a5=N=G?K}Vd z=O4PjON9)NP9=0|8e<+!SbFdm5-0I;{4<8$-N1Cw(k1r)Wz(`wap z00?W7MnsDlt;SnDtW6q;*#+$H7rCl*zyUyuP8+4d_P|^is=(fEj%(3r0|12G(q%QQ|%m-u*l5Ez` zbO2C8;~>zm_%6SKUgm^WvjG4o24tO^UuNgkvi|PuNS~cuV76s}r~^+ln8@W<(3Y2M zQx_oj*Oq>MaRvG8E55YyDFc9od+WX;LO6c(mQ{DJYfzAv;(MbSG5|uWQHO9G%rC64 z;?5R4@P0-_AR;vDH3;Eck$}|Mw#*ht2nfdp04yzk(ic3Rd(A`P8vp@jqYe@ROX>UX zUxs_79FI)I{KRr>8;;`)1n!WQ00}Ugu3ALY-6=;Quv^^b+ATM$>*pu>?Cb(_Y|Fj> zq1MhD5?H*q#)t$YNy1LHKZ(8sWW~+R+S_COqq#H#05_3_mz9eSkmHhFO5bPH?iV}R zmpvqU2$TvLe&gnCqw%h)2U{o+`BgCto!TA4GxypE)JMP`0$#~F?PTk02!Mc{?5j&Z zu|$AbuOV1^*~}&vj)Ud3jh_7JA#hr&|9WF@P=t!Hpf&qZ6 zDyUdhUa_iNRu%6UD&{Fqgr`~154B6+qTi99WQp Date: Sat, 9 Jan 2021 21:38:29 +0100 Subject: [PATCH 077/166] Disarm popup entity name fix --- .../GameObjects/Components/Mobs/StunnableComponent.cs | 2 +- Content.Server/Interfaces/GameObjects/IDisarmedAct.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs index 041542e389..6d9970f114 100644 --- a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs @@ -140,7 +140,7 @@ namespace Content.Server.GameObjects.Components.Mobs EntitySystem.Get().PlayFromEntity("/Audio/Effects/thudswoosh.ogg", source, AudioHelpers.WithVariation(0.025f)); - source.PopupMessageOtherClients(Loc.GetString("{0} pushes {1}!", source, eventArgs.Target.Name)); + source.PopupMessageOtherClients(Loc.GetString("{0} pushes {1}!", source.Name, eventArgs.Target.Name)); source.PopupMessageCursor(Loc.GetString("You push {0}!", eventArgs.Target.Name)); return true; diff --git a/Content.Server/Interfaces/GameObjects/IDisarmedAct.cs b/Content.Server/Interfaces/GameObjects/IDisarmedAct.cs index 8d2fd3b190..b1198b39d8 100644 --- a/Content.Server/Interfaces/GameObjects/IDisarmedAct.cs +++ b/Content.Server/Interfaces/GameObjects/IDisarmedAct.cs @@ -11,7 +11,7 @@ namespace Content.Server.Interfaces.GameObjects /// /// Behavior when the entity is disarmed. /// Return true to prevent the default disarm behavior, - /// or rest of IDisarmAct behaviors that come after this one from happening. + /// or rest of IDisarmedAct behaviors that come after this one from happening. /// bool Disarmed(DisarmedActEventArgs eventArgs); From 0b7f286cf3a842427b169cc16a68390ef978aab0 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sat, 9 Jan 2021 22:29:59 +0100 Subject: [PATCH 078/166] setoutfit doesn't do mob checks anymore. Fixes bug where trying to setoutfit a dead/stunned mob would drop the new outfit on the ground, alongside the old outfit. --- Content.Server/Administration/Commands/SetOutfitCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs index 980745f604..f6e0b2b064 100644 --- a/Content.Server/Administration/Commands/SetOutfitCommand.cs +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -76,7 +76,7 @@ namespace Content.Server.Administration.Commands if (gearStr != "") { var equipmentEntity = entityManager.SpawnEntity(gearStr, target.Transform.Coordinates); - inventoryComponent.Equip(slot, equipmentEntity.GetComponent()); + inventoryComponent.Equip(slot, equipmentEntity.GetComponent(), false); } } From 7bf80fd4b8e49967af2b4614cb0c483d832d3d5f Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Sun, 10 Jan 2021 02:41:55 -0600 Subject: [PATCH 079/166] SolutionContainer refactors (#2954) * removes unused method * Code uncluttering (Also removed the netcode, color code, and visuals, need to rewrite) * SolutionContainerVisualState * Removes caching of SolutionContainer Color * ChemicalsAdded() and ChemicalsRemoved() for updating appearance and handling reaction checks * SolutionContainerComponentState * Netcode * ChemMasterComponent no longer creates a SolutionContainerComponent with new(), uses a Solution instead * Enable nullable in SolutionContainer implementations * Some review fixes * uses IReadOnlyLists in ChemMaster * Comments * review fixes 3 * ReagentUnit documentation * Review fixes * spelling fix * spelling 2 * typo Co-authored-by: py01 --- .../Chemistry/ChemMaster/ChemMasterWindow.cs | 4 +- .../Chemistry/SolutionContainerComponent.cs | 18 +- .../Body/Behavior/StomachBehavior.cs | 4 +- .../Body/Circulatory/BloodstreamComponent.cs | 2 +- .../Chemistry/ChemMasterComponent.cs | 31 +- .../Chemistry/SolutionContainerComponent.cs | 247 +-------------- .../Components/Fluids/PuddleComponent.cs | 2 +- .../Components/Fluids/SprayComponent.cs | 2 +- .../Interactable/WelderComponent.cs | 2 +- Content.Shared/Chemistry/ReagentUnit.cs | 6 +- Content.Shared/Chemistry/Solution.cs | 5 + .../ChemMaster/SharedChemMasterComponent.cs | 10 +- .../SharedSolutionContainerComponent.cs | 288 +++++++++++++----- .../EntitySystems/ChemicalReactionSystem.cs | 1 + 14 files changed, 260 insertions(+), 362 deletions(-) diff --git a/Content.Client/GameObjects/Components/Chemistry/ChemMaster/ChemMasterWindow.cs b/Content.Client/GameObjects/Components/Chemistry/ChemMaster/ChemMasterWindow.cs index 0524a87ff7..2e6fd8d51c 100644 --- a/Content.Client/GameObjects/Components/Chemistry/ChemMaster/ChemMasterWindow.cs +++ b/Content.Client/GameObjects/Components/Chemistry/ChemMaster/ChemMasterWindow.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Content.Client.UserInterface.Stylesheets; using Content.Shared.Chemistry; @@ -378,7 +378,7 @@ namespace Content.Client.GameObjects.Components.Chemistry.ChemMaster bufferHBox.AddChild(bufferLabel); var bufferVol = new Label { - Text = $"{state.BufferCurrentVolume}/{state.BufferMaxVolume}", + Text = $"{state.BufferCurrentVolume}", StyleClasses = {StyleNano.StyleClassLabelSecondaryColor} }; bufferHBox.AddChild(bufferVol); diff --git a/Content.Client/GameObjects/Components/Chemistry/SolutionContainerComponent.cs b/Content.Client/GameObjects/Components/Chemistry/SolutionContainerComponent.cs index e52a03c747..cb1e8e61d1 100644 --- a/Content.Client/GameObjects/Components/Chemistry/SolutionContainerComponent.cs +++ b/Content.Client/GameObjects/Components/Chemistry/SolutionContainerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry; +#nullable enable using Content.Shared.GameObjects.Components.Chemistry; using Robust.Shared.GameObjects; @@ -8,22 +8,6 @@ namespace Content.Client.GameObjects.Components.Chemistry [ComponentReference(typeof(SharedSolutionContainerComponent))] public class SolutionContainerComponent : SharedSolutionContainerComponent { - public override bool CanAddSolution(Solution solution) - { - // TODO CLIENT - return false; - } - public override bool TryAddSolution(Solution solution, bool skipReactionCheck = false, bool skipColor = false) - { - // TODO CLIENT - return false; - } - - public override bool TryRemoveReagent(string reagentId, ReagentUnit quantity) - { - // TODO CLIENT - return false; - } } } diff --git a/Content.Server/GameObjects/Components/Body/Behavior/StomachBehavior.cs b/Content.Server/GameObjects/Components/Body/Behavior/StomachBehavior.cs index 0f1dd177c7..30107dbd03 100644 --- a/Content.Server/GameObjects/Components/Body/Behavior/StomachBehavior.cs +++ b/Content.Server/GameObjects/Components/Body/Behavior/StomachBehavior.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Linq; using Content.Server.GameObjects.Components.Chemistry; @@ -147,7 +147,7 @@ namespace Content.Server.GameObjects.Components.Body.Behavior } // Add solution to _stomachContents - solutionComponent.TryAddSolution(solution, false, true); + solutionComponent.TryAddSolution(solution); // Add each reagent to _reagentDeltas. Used to track how long each reagent has been in the stomach foreach (var reagent in solution.Contents) { diff --git a/Content.Server/GameObjects/Components/Body/Circulatory/BloodstreamComponent.cs b/Content.Server/GameObjects/Components/Body/Circulatory/BloodstreamComponent.cs index b38b2db3a7..e915c526ce 100644 --- a/Content.Server/GameObjects/Components/Body/Circulatory/BloodstreamComponent.cs +++ b/Content.Server/GameObjects/Components/Body/Circulatory/BloodstreamComponent.cs @@ -68,7 +68,7 @@ namespace Content.Server.GameObjects.Components.Body.Circulatory return false; } - _internalSolution.TryAddSolution(solution, false, true); + _internalSolution.TryAddSolution(solution); return true; } diff --git a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs index 3de7bbd767..ad6dee4f94 100644 --- a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs @@ -49,7 +49,7 @@ namespace Content.Server.GameObjects.Components.Chemistry [ViewVariables] private bool Powered => !Owner.TryGetComponent(out PowerReceiverComponent? receiver) || receiver.Powered; - [ViewVariables] private readonly SolutionContainerComponent BufferSolution = new(); + [ViewVariables] private readonly Solution BufferSolution = new(); [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(ChemMasterUiKey.Key); @@ -81,8 +81,7 @@ namespace Content.Server.GameObjects.Components.Chemistry ContainerManagerComponent.Ensure($"{Name}-reagentContainerContainer", Owner); //BufferSolution = Owner.BufferSolution - BufferSolution.Solution = new Solution(); - BufferSolution.MaxVolume = ReagentUnit.New(1000); + BufferSolution.RemoveAllSolution(); UpdateUserInterface(); } @@ -182,12 +181,12 @@ namespace Content.Server.GameObjects.Components.Chemistry if (beaker == null) { return new ChemMasterBoundUserInterfaceState(Powered, false, ReagentUnit.New(0), ReagentUnit.New(0), - "", Owner.Name, new List(), BufferSolution.ReagentList.ToList(), _bufferModeTransfer, BufferSolution.CurrentVolume, BufferSolution.MaxVolume); + "", Owner.Name, new List(), BufferSolution.Contents, _bufferModeTransfer, BufferSolution.TotalVolume); } var solution = beaker.GetComponent(); return new ChemMasterBoundUserInterfaceState(Powered, true, solution.CurrentVolume, solution.MaxVolume, - beaker.Name, Owner.Name, solution.ReagentList.ToList(), BufferSolution.ReagentList.ToList(), _bufferModeTransfer, BufferSolution.CurrentVolume, BufferSolution.MaxVolume); + beaker.Name, Owner.Name, solution.ReagentList, BufferSolution.Contents, _bufferModeTransfer, BufferSolution.TotalVolume); } private void UpdateUserInterface() @@ -222,12 +221,12 @@ namespace Content.Server.GameObjects.Components.Chemistry var beakerSolution = beaker.GetComponent(); if (isBuffer) { - foreach (var reagent in BufferSolution.Solution.Contents) + foreach (var reagent in BufferSolution.Contents) { if (reagent.ReagentId == id) { ReagentUnit actualAmount; - if (amount == ReagentUnit.New(-1)) + if (amount == ReagentUnit.New(-1)) //amount is ReagentUnit.New(-1) when the client sends a message requesting to remove all solution from the container { actualAmount = ReagentUnit.Min(reagent.Quantity, beakerSolution.EmptyVolume); } @@ -237,7 +236,7 @@ namespace Content.Server.GameObjects.Components.Chemistry } - BufferSolution.Solution.RemoveReagent(id, actualAmount); + BufferSolution.RemoveReagent(id, actualAmount); if (_bufferModeTransfer) { beakerSolution.TryAddReagent(id, actualAmount, out var _); @@ -257,14 +256,14 @@ namespace Content.Server.GameObjects.Components.Chemistry ReagentUnit actualAmount; if (amount == ReagentUnit.New(-1)) { - actualAmount = ReagentUnit.Min(reagent.Quantity, BufferSolution.EmptyVolume); + actualAmount = reagent.Quantity; } else { - actualAmount = ReagentUnit.Min(reagent.Quantity, amount, BufferSolution.EmptyVolume); + actualAmount = ReagentUnit.Min(reagent.Quantity, amount); } beakerSolution.TryRemoveReagent(id, actualAmount); - BufferSolution.Solution.AddReagent(id, actualAmount); + BufferSolution.AddReagent(id, actualAmount); break; } } @@ -275,12 +274,12 @@ namespace Content.Server.GameObjects.Components.Chemistry private void TryCreatePackage(IEntity user, UiAction action, int pillAmount, int bottleAmount) { - if (BufferSolution.CurrentVolume == 0) + if (BufferSolution.TotalVolume == 0) return; if (action == UiAction.CreateBottles) { - var individualVolume = BufferSolution.CurrentVolume / ReagentUnit.New(bottleAmount); + var individualVolume = BufferSolution.TotalVolume / ReagentUnit.New(bottleAmount); if (individualVolume < ReagentUnit.New(1)) return; @@ -289,7 +288,7 @@ namespace Content.Server.GameObjects.Components.Chemistry { var bottle = Owner.EntityManager.SpawnEntity("bottle", Owner.Transform.Coordinates); - var bufferSolution = BufferSolution.Solution.SplitSolution(actualVolume); + var bufferSolution = BufferSolution.SplitSolution(actualVolume); bottle.TryGetComponent(out var bottleSolution); bottleSolution?.TryAddSolution(bufferSolution); @@ -314,7 +313,7 @@ namespace Content.Server.GameObjects.Components.Chemistry } else //Pills { - var individualVolume = BufferSolution.CurrentVolume / ReagentUnit.New(pillAmount); + var individualVolume = BufferSolution.TotalVolume / ReagentUnit.New(pillAmount); if (individualVolume < ReagentUnit.New(1)) return; @@ -323,7 +322,7 @@ namespace Content.Server.GameObjects.Components.Chemistry { var pill = Owner.EntityManager.SpawnEntity("pill", Owner.Transform.Coordinates); - var bufferSolution = BufferSolution.Solution.SplitSolution(actualVolume); + var bufferSolution = BufferSolution.SplitSolution(actualVolume); pill.TryGetComponent(out var pillSolution); pillSolution?.TryAddSolution(bufferSolution); diff --git a/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs b/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs index 48cf119f7a..79a003913e 100644 --- a/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs @@ -1,144 +1,19 @@ -using System.Collections.Generic; -using System.Linq; -using Content.Server.Chemistry; +#nullable enable using Content.Server.GameObjects.Components.GUI; -using Content.Server.GameObjects.EntitySystems; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Chemistry; -using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; using Content.Shared.GameObjects.Verbs; -using Content.Shared.Utility; -using Robust.Server.GameObjects; -using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; using Robust.Shared.Localization; -using Robust.Shared.Log; -using Robust.Shared.Maths; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; -using Robust.Shared.Utility; -using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Chemistry { - /// - /// ECS component that manages a liquid solution of reagents. - /// [RegisterComponent] [ComponentReference(typeof(SharedSolutionContainerComponent))] - public class SolutionContainerComponent : SharedSolutionContainerComponent, IExamine + public class SolutionContainerComponent : SharedSolutionContainerComponent { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; - - private IEnumerable _reactions; - private ChemicalReactionSystem _reactionSystem; - private string _fillInitState; - private int _fillInitSteps; - private string _fillPathString = "Objects/Specific/Chemistry/fillings.rsi"; - private ResourcePath _fillPath; - private SpriteSpecifier _fillSprite; - private AudioSystem _audioSystem; - private ChemistrySystem _chemistrySystem; - private SpriteComponent _spriteComponent; - - /// - /// The volume without reagents remaining in the container. - /// - [ViewVariables] - public ReagentUnit EmptyVolume => MaxVolume - CurrentVolume; - public IReadOnlyList ReagentList => Solution.Contents; - public bool CanExamineContents => Capabilities.HasCap(SolutionContainerCaps.CanExamine); - public bool CanUseWithChemDispenser => Capabilities.HasCap(SolutionContainerCaps.FitsInDispenser); - public bool CanAddSolutions => Capabilities.HasCap(SolutionContainerCaps.AddTo); - public bool CanRemoveSolutions => Capabilities.HasCap(SolutionContainerCaps.RemoveFrom); - - /// - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - serializer.DataField(this, x => x.MaxVolume, "maxVol", ReagentUnit.New(0)); - serializer.DataField(this, x => x.Solution, "contents", new Solution()); - serializer.DataField(this, x => x.Capabilities, "caps", SolutionContainerCaps.AddTo | SolutionContainerCaps.RemoveFrom | SolutionContainerCaps.CanExamine); - serializer.DataField(ref _fillInitState, "fillingState", string.Empty); - serializer.DataField(ref _fillInitSteps, "fillingSteps", 7); - } - - public override void Initialize() - { - base.Initialize(); - _audioSystem = EntitySystem.Get(); - _chemistrySystem = _entitySystemManager.GetEntitySystem(); - _reactions = _prototypeManager.EnumeratePrototypes(); - _reactionSystem = _entitySystemManager.GetEntitySystem(); - } - - protected override void Startup() - { - base.Startup(); - RecalculateColor(); - if (!string.IsNullOrEmpty(_fillInitState)) - { - _spriteComponent = Owner.GetComponent(); - _fillPath = new ResourcePath(_fillPathString); - _fillSprite = new SpriteSpecifier.Rsi(_fillPath, _fillInitState + (_fillInitSteps - 1)); - _spriteComponent.AddLayerWithSprite(_fillSprite); - UpdateFillIcon(); - } - } - - public void RemoveAllSolution() - { - Solution.RemoveAllSolution(); - OnSolutionChanged(false); - } - - public override bool TryRemoveReagent(string reagentId, ReagentUnit quantity) - { - if (!Solution.ContainsReagent(reagentId, out var currentQuantity)) - { - return false; - } - - Solution.RemoveReagent(reagentId, quantity); - OnSolutionChanged(false); - return true; - } - - /// - /// Attempt to remove the specified quantity from this solution - /// - /// Quantity of this solution to remove - /// Whether or not the solution was successfully removed - public bool TryRemoveSolution(ReagentUnit quantity) - { - if (CurrentVolume == 0) - { - return false; - } - - Solution.RemoveSolution(quantity); - OnSolutionChanged(false); - return true; - } - - public Solution SplitSolution(ReagentUnit quantity) - { - var solutionSplit = Solution.SplitSolution(quantity); - OnSolutionChanged(false); - return solutionSplit; - } - - protected void RecalculateColor() - { - SubstanceColor = Solution.Color; - } - /// /// Transfers solution from the held container to the target container. /// @@ -195,43 +70,6 @@ namespace Content.Server.GameObjects.Components.Chemistry } } - void IExamine.Examine(FormattedMessage message, bool inDetailsRange) - { - if (!CanExamineContents) - { - return; - } - - if (ReagentList.Count == 0) - { - message.AddText(Loc.GetString("It's empty.")); - } - else if (ReagentList.Count == 1) - { - var reagent = ReagentList[0]; - - if (_prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype proto)) - { - message.AddMarkup( - Loc.GetString("It contains a [color={0}]{1}[/color] substance.", - proto.GetSubstanceTextColor().ToHexNoAlpha(), - Loc.GetString(proto.PhysicalDescription))); - } - } - else - { - var reagent = ReagentList.Max(); - - if (_prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype proto)) - { - message.AddMarkup( - Loc.GetString("It contains a [color={0}]{1}[/color] mixture of substances.", - SubstanceColor.ToHexNoAlpha(), - Loc.GetString(proto.PhysicalDescription))); - } - } - } - /// /// Transfers solution from a target container to the held container. /// @@ -288,86 +126,5 @@ namespace Content.Server.GameObjects.Components.Chemistry handSolutionComp.TryAddSolution(transferSolution); } } - - private void CheckForReaction() - { - _reactionSystem.FullyReactSolution(Solution, Owner, MaxVolume); - } - - public bool TryAddReagent(string reagentId, ReagentUnit quantity, out ReagentUnit acceptedQuantity, bool skipReactionCheck = false, bool skipColor = false) - { - var toAcceptQuantity = MaxVolume - Solution.TotalVolume; - if (quantity > toAcceptQuantity) - { - acceptedQuantity = toAcceptQuantity; - if (acceptedQuantity == 0) return false; - } - else - { - acceptedQuantity = quantity; - } - - Solution.AddReagent(reagentId, acceptedQuantity); - if (!skipColor) { - RecalculateColor(); - } - if(!skipReactionCheck) - CheckForReaction(); - OnSolutionChanged(skipColor); - return true; - } - - public override bool CanAddSolution(Solution solution) - { - return solution.TotalVolume <= (MaxVolume - Solution.TotalVolume); - } - - public override bool TryAddSolution(Solution solution, bool skipReactionCheck = false, bool skipColor = false) - { - if (!CanAddSolution(solution)) - return false; - - Solution.AddSolution(solution); - if (!skipColor) { - RecalculateColor(); - } - if(!skipReactionCheck) - CheckForReaction(); - OnSolutionChanged(skipColor); - return true; - } - - protected void UpdateFillIcon() - { - if (string.IsNullOrEmpty(_fillInitState)) - { - return; - } - - var percentage = (CurrentVolume / MaxVolume).Double(); - var level = ContentHelpers.RoundToLevels(percentage * 100, 100, _fillInitSteps); - - //Transformed glass uses special fancy sprites so we don't bother - if (level == 0 || (Owner.TryGetComponent(out var transformComp) && transformComp.Transformed)) - { - _spriteComponent.LayerSetColor(1, Color.Transparent); - return; - } - - _fillSprite = new SpriteSpecifier.Rsi(_fillPath, _fillInitState + level); - _spriteComponent.LayerSetSprite(1, _fillSprite); - _spriteComponent.LayerSetColor(1, SubstanceColor); - } - - protected virtual void OnSolutionChanged(bool skipColor) - { - if (!skipColor) - { - RecalculateColor(); - } - - UpdateFillIcon(); - _chemistrySystem.HandleSolutionChange(Owner); - } } } diff --git a/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs b/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs index d3f3275c53..9221cd60a0 100644 --- a/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs +++ b/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs @@ -286,7 +286,7 @@ namespace Content.Server.GameObjects.Components.Fluids Color newColor; if (_recolor) { - newColor = _contents.SubstanceColor.WithAlpha(cappedScale); + newColor = _contents.Color.WithAlpha(cappedScale); } else { diff --git a/Content.Server/GameObjects/Components/Fluids/SprayComponent.cs b/Content.Server/GameObjects/Components/Fluids/SprayComponent.cs index 71f09c780e..8a45830637 100644 --- a/Content.Server/GameObjects/Components/Fluids/SprayComponent.cs +++ b/Content.Server/GameObjects/Components/Fluids/SprayComponent.cs @@ -161,7 +161,7 @@ namespace Content.Server.GameObjects.Components.Fluids if (vapor.TryGetComponent(out AppearanceComponent appearance)) // Vapor sprite should face down. { appearance.SetData(VaporVisuals.Rotation, -Angle.South + rotation); - appearance.SetData(VaporVisuals.Color, contents.SubstanceColor.WithAlpha(1f)); + appearance.SetData(VaporVisuals.Color, contents.Color.WithAlpha(1f)); appearance.SetData(VaporVisuals.State, true); } diff --git a/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs b/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs index 175c174aec..ac0a8b1bb7 100644 --- a/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Threading.Tasks; using Content.Server.Atmos; diff --git a/Content.Shared/Chemistry/ReagentUnit.cs b/Content.Shared/Chemistry/ReagentUnit.cs index 0697d4c421..67a900ec5f 100644 --- a/Content.Shared/Chemistry/ReagentUnit.cs +++ b/Content.Shared/Chemistry/ReagentUnit.cs @@ -1,10 +1,14 @@ -using System; +using System; using System.Globalization; using System.Linq; using Robust.Shared.Interfaces.Serialization; namespace Content.Shared.Chemistry { + /// + /// Represents a quantity of reagent, to a precision of 0.01. + /// To enforce this level of precision, floats are shifted by 2 decimal points, rounded, and converted to an int. + /// [Serializable] public struct ReagentUnit : ISelfSerialize, IComparable, IEquatable { diff --git a/Content.Shared/Chemistry/Solution.cs b/Content.Shared/Chemistry/Solution.cs index 9730bae940..ea334527b3 100644 --- a/Content.Shared/Chemistry/Solution.cs +++ b/Content.Shared/Chemistry/Solution.cs @@ -63,6 +63,11 @@ namespace Content.Shared.Chemistry () => _contents); } + public bool ContainsReagent(string reagentId) + { + return ContainsReagent(reagentId, out _); + } + public bool ContainsReagent(string reagentId, out ReagentUnit quantity) { foreach (var reagent in Contents) diff --git a/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs b/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs index 8aed76f83b..11c6437475 100644 --- a/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs +++ b/Content.Shared/GameObjects/Components/Chemistry/ChemMaster/SharedChemMasterComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using Content.Shared.Chemistry; @@ -30,20 +30,19 @@ namespace Content.Shared.GameObjects.Components.Chemistry.ChemMaster /// /// A list of the reagents and their amounts within the beaker/reagent container, if applicable. /// - public readonly List ContainerReagents; + public readonly IReadOnlyList ContainerReagents; /// /// A list of the reagents and their amounts within the buffer, if applicable. /// - public readonly List BufferReagents; + public readonly IReadOnlyList BufferReagents; public readonly string DispenserName; public readonly bool BufferModeTransfer; public readonly ReagentUnit BufferCurrentVolume; - public readonly ReagentUnit BufferMaxVolume; public ChemMasterBoundUserInterfaceState(bool hasPower, bool hasBeaker, ReagentUnit beakerCurrentVolume, ReagentUnit beakerMaxVolume, string containerName, - string dispenserName, List containerReagents, List bufferReagents, bool bufferModeTransfer, ReagentUnit bufferCurrentVolume, ReagentUnit bufferMaxVolume) + string dispenserName, IReadOnlyList containerReagents, IReadOnlyList bufferReagents, bool bufferModeTransfer, ReagentUnit bufferCurrentVolume) { HasPower = hasPower; HasBeaker = hasBeaker; @@ -55,7 +54,6 @@ namespace Content.Shared.GameObjects.Components.Chemistry.ChemMaster BufferReagents = bufferReagents; BufferModeTransfer = bufferModeTransfer; BufferCurrentVolume = bufferCurrentVolume; - BufferMaxVolume = bufferMaxVolume; } } diff --git a/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs b/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs index e65a975be4..c7c35f4295 100644 --- a/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs +++ b/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs @@ -1,100 +1,230 @@ -#nullable enable -using System; +#nullable enable using Content.Shared.Chemistry; +using Content.Shared.GameObjects.EntitySystems; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Appearance; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Log; using Robust.Shared.Maths; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; +using Robust.Shared.Utility; using Robust.Shared.ViewVariables; +using System; +using System.Collections.Generic; namespace Content.Shared.GameObjects.Components.Chemistry { - public abstract class SharedSolutionContainerComponent : Component + /// + /// Holds a with a limited volume. + /// + public abstract class SharedSolutionContainerComponent : Component, IExamine { public override string Name => "SolutionContainer"; /// public sealed override uint? NetID => ContentNetIDs.SOLUTION; - private Solution _solution = new(); - private ReagentUnit _maxVolume; - private Color _substanceColor; - - /// - /// The contained solution. - /// [ViewVariables] - public Solution Solution - { - get => _solution; - set - { - if (_solution == value) - { - return; - } + public Solution Solution { get; private set; } = new(); - _solution = value; - Dirty(); - } - } + public IReadOnlyList ReagentList => Solution.Contents; + + [ViewVariables(VVAccess.ReadWrite)] + public ReagentUnit MaxVolume { get; set; } - /// - /// The total volume of all the of the reagents in the container. - /// [ViewVariables] public ReagentUnit CurrentVolume => Solution.TotalVolume; /// - /// The maximum volume of the container. + /// Volume needed to fill this container. /// - [ViewVariables(VVAccess.ReadWrite)] - public ReagentUnit MaxVolume - { - get => _maxVolume; - set - { - if (_maxVolume == value) - { - return; - } + [ViewVariables] + public ReagentUnit EmptyVolume => MaxVolume - CurrentVolume; - _maxVolume = value; - Dirty(); - } - } + [ViewVariables] + public virtual Color Color => Solution.Color; /// - /// The current blended color of all the reagents in the container. + /// If reactions will be checked for when adding reagents to the container. /// [ViewVariables(VVAccess.ReadWrite)] - public virtual Color SubstanceColor - { - get => _substanceColor; - set - { - if (_substanceColor == value) - { - return; - } + public bool CanReact { get; set; } - _substanceColor = value; - Dirty(); - } - } - - /// - /// The current capabilities of this container (is the top open to pour? can I inject it into another object?). - /// [ViewVariables(VVAccess.ReadWrite)] public SolutionContainerCaps Capabilities { get; set; } - public abstract bool CanAddSolution(Solution solution); + public bool CanExamineContents => Capabilities.HasCap(SolutionContainerCaps.CanExamine); - public abstract bool TryAddSolution(Solution solution, bool skipReactionCheck = false, bool skipColor = false); + public bool CanUseWithChemDispenser => Capabilities.HasCap(SolutionContainerCaps.FitsInDispenser); - public abstract bool TryRemoveReagent(string reagentId, ReagentUnit quantity); + public bool CanAddSolutions => Capabilities.HasCap(SolutionContainerCaps.AddTo); + + public bool CanRemoveSolutions => Capabilities.HasCap(SolutionContainerCaps.RemoveFrom); + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(this, x => x.CanReact, "canReact", true); + serializer.DataField(this, x => x.MaxVolume, "maxVol", ReagentUnit.New(0)); + serializer.DataField(this, x => x.Solution, "contents", new Solution()); + serializer.DataField(this, x => x.Capabilities, "caps", SolutionContainerCaps.AddTo | SolutionContainerCaps.RemoveFrom | SolutionContainerCaps.CanExamine); + } + + public void RemoveAllSolution() + { + if (CurrentVolume == 0) + return; + + Solution.RemoveAllSolution(); + ChemicalsRemoved(); + } + + /// + /// Adds reagent of an Id to the container. + /// + /// The Id of the reagent to add. + /// The amount of reagent to add. + /// The amount of reagent sucesfully added. + /// If all the reagent could be added. + public bool TryAddReagent(string reagentId, ReagentUnit quantity, out ReagentUnit acceptedQuantity) + { + acceptedQuantity = EmptyVolume > quantity ? quantity : EmptyVolume; + Solution.AddReagent(reagentId, acceptedQuantity); + + if (acceptedQuantity > 0) + ChemicalsAdded(); + + return acceptedQuantity == quantity; + } + + /// + /// Removes reagent of an Id to the container. + /// + /// The Id of the reagent to remove. + /// The amount of reagent to remove. + /// If the reagent to remove was found in the container. + public bool TryRemoveReagent(string reagentId, ReagentUnit quantity) + { + if (!Solution.ContainsReagent(reagentId)) + return false; + + Solution.RemoveReagent(reagentId, quantity); + ChemicalsRemoved(); + return true; + } + + /// + /// Removes part of the solution in the container. + /// + /// the volume of solution to remove. + /// The solution that was removed. + public Solution SplitSolution(ReagentUnit quantity) + { + var splitSol = Solution.SplitSolution(quantity); + ChemicalsRemoved(); + return splitSol; + } + + /// + /// Checks if a solution can fit into the container. + /// + /// The solution that is trying to be added. + /// If the solution can be fully added. + public bool CanAddSolution(Solution solution) + { + return solution.TotalVolume <= EmptyVolume; + } + + /// + /// Adds a solution to the container, if it can fully fit. + /// + /// The solution to try to add. + /// If the solution could be added. + public bool TryAddSolution(Solution solution) + { + if (!CanAddSolution(solution)) + return false; + + Solution.AddSolution(solution); + ChemicalsAdded(); + return true; + } + + private void ChemicalsAdded() + { + ProcessReactions(); + SolutionChanged(); + UpdateAppearance(); + Dirty(); + } + + private void ChemicalsRemoved() + { + SolutionChanged(); + UpdateAppearance(); + Dirty(); + } + + private void SolutionChanged() + { + EntitySystem.Get() + .HandleSolutionChange(Owner); + } + + private void ProcessReactions() + { + if (!CanReact) + return; + + EntitySystem.Get() + .FullyReactSolution(Solution, Owner, MaxVolume); + } + + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) + { + if (!CanExamineContents) + return; + + var prototypeManager = IoCManager.Resolve(); + + if (ReagentList.Count == 0) + { + message.AddText(Loc.GetString("Contains no chemicals.")); + return; + } + + var primaryReagent = Solution.GetPrimaryReagentId(); + if (!prototypeManager.TryIndex(primaryReagent, out ReagentPrototype proto)) + { + Logger.Error($"{nameof(SharedSolutionContainerComponent)} could not find the prototype associated with {primaryReagent}."); + return; + } + + var colorHex = Color.ToHexNoAlpha(); //TODO: If the chem has a dark color, the examine text becomes black on a black background, which is unreadable. + var messageString = "It contains a [color={0}]{1}[/color] " + (ReagentList.Count == 1 ? "chemical." : "mixture of chemicals."); + + message.AddMarkup(Loc.GetString(messageString, colorHex, Loc.GetString(proto.PhysicalDescription))); + } + + private void UpdateAppearance() + { + if (!Owner.TryGetComponent(out var appearance)) + return; + + appearance.SetData(SolutionContainerVisuals.VisualState, GetVisualState()); + } + + private SolutionContainerVisualState GetVisualState() + { + var filledVolumeFraction = CurrentVolume.Float() / MaxVolume.Float(); + + return new SolutionContainerVisualState(Color, filledVolumeFraction); + } - /// public override ComponentState GetComponentState() { return new SolutionContainerComponentState(Solution); @@ -102,14 +232,34 @@ namespace Content.Shared.GameObjects.Components.Chemistry public override void HandleComponentState(ComponentState? curState, ComponentState? nextState) { - base.HandleComponentState(curState, nextState); - - if (curState is not SolutionContainerComponentState state) - { + if (curState is not SolutionContainerComponentState containerState) return; - } - _solution = state.Solution; + Solution = containerState.Solution; + } + } + + [Serializable, NetSerializable] + public enum SolutionContainerVisuals : byte + { + VisualState + } + + [Serializable, NetSerializable] + public class SolutionContainerVisualState + { + public readonly Color Color; + + /// + /// Represents how full the container is, as a fraction equivalent to /. + /// + public readonly byte FilledVolumeFraction; + + /// The fraction of the container's volume that is filled. + public SolutionContainerVisualState(Color color, float filledVolumeFraction) + { + Color = color; + FilledVolumeFraction = (byte) (byte.MaxValue * filledVolumeFraction); } } diff --git a/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs b/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs index 0c43fff0d9..811c97756d 100644 --- a/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; namespace Content.Shared.GameObjects.EntitySystems { + //TODO: Reimplement sounds for reactions public class ChemicalReactionSystem : EntitySystem { private IEnumerable _reactions; From 7bfdf30268fe77cc584d0f33d660db7dd117333e Mon Sep 17 00:00:00 2001 From: Morshu32 Date: Sun, 10 Jan 2021 13:07:33 +0100 Subject: [PATCH 080/166] Add PlaceCentered bool to PlaceableSurfaceComponent (#2771) * Added bool _placeCentered to check if an entity must be placed at mouse position or center of the PlaceableSurface (+ offset) when dropped. * private variables formatted to camel case * Use EqualsApprox in the setter for PositionOffset * -Changed client-side SurfaceComponent to camelCase -Added placeCentered and positionOffset to PlaceableSurfaceComponentState -Getter and setters for placeCentered and positionOffset client-side * Update Content.Client/GameObjects/Components/PlaceableSurfaceComponent.cs Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> * Add "_" to private vars name * Made YAML properties camelCase * Add "_" to private vars name * Call Dirty() when IsPlaceable,PlaceCentered and PositionOffset are changed. * Removed Dirty() from client. Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> --- .../Components/PlaceableSurfaceComponent.cs | 36 ++++++++++++- .../Components/PlaceableSurfaceComponent.cs | 50 +++++++++++++++++-- .../SharedPlaceableSurfaceComponent.cs | 10 +++- .../Constructible/Storage/Closets/closet.yml | 1 + 4 files changed, 91 insertions(+), 6 deletions(-) diff --git a/Content.Client/GameObjects/Components/PlaceableSurfaceComponent.cs b/Content.Client/GameObjects/Components/PlaceableSurfaceComponent.cs index 090c187e2a..ff207ce795 100644 --- a/Content.Client/GameObjects/Components/PlaceableSurfaceComponent.cs +++ b/Content.Client/GameObjects/Components/PlaceableSurfaceComponent.cs @@ -1,6 +1,7 @@ #nullable enable using Content.Shared.GameObjects.Components; using Robust.Shared.GameObjects; +using Robust.Shared.Maths; namespace Content.Client.GameObjects.Components { @@ -9,6 +10,8 @@ namespace Content.Client.GameObjects.Components public class PlaceableSurfaceComponent : SharedPlaceableSurfaceComponent { private bool _isPlaceable; + private bool _placeCentered; + private Vector2 _positionOffset; public override bool IsPlaceable { @@ -22,7 +25,36 @@ namespace Content.Client.GameObjects.Components _isPlaceable = value; - Dirty(); + } + } + + public override bool PlaceCentered + { + get => _placeCentered; + set + { + if (_placeCentered == value) + { + return; + } + + _placeCentered = value; + + } + } + + public override Vector2 PositionOffset + { + get => _positionOffset; + set + { + if (_positionOffset.EqualsApprox(value)) + { + return; + } + + _positionOffset = value; + } } @@ -36,6 +68,8 @@ namespace Content.Client.GameObjects.Components } _isPlaceable = state.IsPlaceable; + _placeCentered = state.PlaceCentered; + _positionOffset = state.PositionOffset; } } } diff --git a/Content.Server/GameObjects/Components/PlaceableSurfaceComponent.cs b/Content.Server/GameObjects/Components/PlaceableSurfaceComponent.cs index 34e40e69d5..1230842be4 100644 --- a/Content.Server/GameObjects/Components/PlaceableSurfaceComponent.cs +++ b/Content.Server/GameObjects/Components/PlaceableSurfaceComponent.cs @@ -1,8 +1,9 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; using Content.Shared.GameObjects.Components; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; +using Robust.Shared.Maths; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -13,6 +14,8 @@ namespace Content.Server.GameObjects.Components public class PlaceableSurfaceComponent : SharedPlaceableSurfaceComponent, IInteractUsing { private bool _isPlaceable; + private bool _placeCentered; + private Vector2 _positionOffset; [ViewVariables(VVAccess.ReadWrite)] public override bool IsPlaceable @@ -31,6 +34,42 @@ namespace Content.Server.GameObjects.Components } } + [ViewVariables(VVAccess.ReadWrite)] + public override bool PlaceCentered + { + get => _placeCentered; + set + { + if (_placeCentered == value) + { + return; + } + + _placeCentered = value; + + Dirty(); + + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public override Vector2 PositionOffset + { + get => _positionOffset; + set + { + if (_positionOffset.EqualsApprox(value)) + { + return; + } + + _positionOffset = value; + + Dirty(); + + } + } + [ViewVariables] int IInteractUsing.Priority => -10; @@ -39,11 +78,13 @@ namespace Content.Server.GameObjects.Components base.ExposeData(serializer); serializer.DataField(ref _isPlaceable, "IsPlaceable", true); + serializer.DataField(ref _placeCentered, "placeCentered", false); + serializer.DataField(ref _positionOffset, "positionOffset", Vector2.Zero); } public override ComponentState GetComponentState() { - return new PlaceableSurfaceComponentState(_isPlaceable); + return new PlaceableSurfaceComponentState(_isPlaceable,_placeCentered,_positionOffset); } public async Task InteractUsing(InteractUsingEventArgs eventArgs) @@ -56,7 +97,10 @@ namespace Content.Server.GameObjects.Components return false; } handComponent.Drop(eventArgs.Using); - eventArgs.Using.Transform.WorldPosition = eventArgs.ClickLocation.Position; + if (_placeCentered) + eventArgs.Using.Transform.WorldPosition = eventArgs.Target.Transform.WorldPosition + _positionOffset; + else + eventArgs.Using.Transform.WorldPosition = eventArgs.ClickLocation.Position; return true; } } diff --git a/Content.Shared/GameObjects/Components/SharedPlaceableSurfaceComponent.cs b/Content.Shared/GameObjects/Components/SharedPlaceableSurfaceComponent.cs index 9ed7a48cd1..ef84393789 100644 --- a/Content.Shared/GameObjects/Components/SharedPlaceableSurfaceComponent.cs +++ b/Content.Shared/GameObjects/Components/SharedPlaceableSurfaceComponent.cs @@ -1,5 +1,6 @@ using System; using Robust.Shared.GameObjects; +using Robust.Shared.Maths; using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components @@ -8,18 +9,23 @@ namespace Content.Shared.GameObjects.Components { public override string Name => "PlaceableSurface"; public override uint? NetID => ContentNetIDs.PLACEABLE_SURFACE; - public virtual bool IsPlaceable { get; set; } + public virtual bool PlaceCentered { get; set; } + public virtual Vector2 PositionOffset { get; set; } } [Serializable, NetSerializable] public class PlaceableSurfaceComponentState : ComponentState { public readonly bool IsPlaceable; + public readonly bool PlaceCentered; + public readonly Vector2 PositionOffset; - public PlaceableSurfaceComponentState(bool placeable) : base(ContentNetIDs.PLACEABLE_SURFACE) + public PlaceableSurfaceComponentState(bool placeable, bool centered, Vector2 offset) : base(ContentNetIDs.PLACEABLE_SURFACE) { IsPlaceable = placeable; + PlaceCentered = centered; + PositionOffset = offset; } } } diff --git a/Resources/Prototypes/Entities/Constructible/Storage/Closets/closet.yml b/Resources/Prototypes/Entities/Constructible/Storage/Closets/closet.yml index 6798e6fd6a..bfab9479d3 100644 --- a/Resources/Prototypes/Entities/Constructible/Storage/Closets/closet.yml +++ b/Resources/Prototypes/Entities/Constructible/Storage/Closets/closet.yml @@ -38,6 +38,7 @@ - SmallImpassable - type: EntityStorage - type: PlaceableSurface + placeCentered: true - type: Damageable resistances: metallicResistances - type: Destructible From d403a7fab461a086809bdda5db4f5476bf292940 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 11 Jan 2021 01:24:03 +1100 Subject: [PATCH 081/166] Fix NPC shutdown crash (#2971) Co-authored-by: Metal Gear Sloth --- Content.Server/AI/Operators/AiOperator.cs | 30 +++++++++---------- .../Combat/Melee/SwingMeleeWeaponOperator.cs | 12 +++++--- .../Combat/Melee/UnarmedCombatOperator.cs | 12 +++++--- .../Inventory/CloseStorageOperator.cs | 11 ++++--- .../Movement/MoveToEntityOperator.cs | 11 ++++--- .../Operators/Movement/MoveToGridOperator.cs | 11 ++++--- .../Operators/Sequences/SequenceOperator.cs | 8 ++--- .../AI/Utility/Actions/UtilityAction.cs | 6 ++-- .../AI/Utility/AiLogic/UtilityAI.cs | 2 ++ .../GameObjects/EntitySystems/AI/AiSystem.cs | 13 ++++---- 10 files changed, 67 insertions(+), 49 deletions(-) diff --git a/Content.Server/AI/Operators/AiOperator.cs b/Content.Server/AI/Operators/AiOperator.cs index 94c809eabd..4714998040 100644 --- a/Content.Server/AI/Operators/AiOperator.cs +++ b/Content.Server/AI/Operators/AiOperator.cs @@ -5,38 +5,36 @@ namespace Content.Server.AI.Operators { public abstract class AiOperator { - public bool HasStartup => _hasStartup; - private bool _hasStartup = false; - private bool _hasShutdown = false; + public bool HasStartup { get; private set; } + + public bool HasShutdown { get; private set; } /// /// Called once when the AiLogicProcessor starts this action /// - public virtual bool TryStartup() + /// true if it hasn't started up previously + public virtual bool Startup() { // If we've already startup then no point continuing // This signals to the override that it's already startup // Should probably throw but it made some code elsewhere marginally easier - if (_hasStartup) - { + if (HasStartup) return false; - } - - _hasStartup = true; + + HasStartup = true; return true; } /// /// Called once when the AiLogicProcessor is done with this action if the outcome is successful or fails. /// - public virtual void Shutdown(Outcome outcome) + public virtual bool Shutdown(Outcome outcome) { - if (_hasShutdown) - { - throw new InvalidOperationException("AiOperator has already shutdown"); - } + if (HasShutdown) + return false; - _hasShutdown = true; + HasShutdown = true; + return true; } /// @@ -53,4 +51,4 @@ namespace Content.Server.AI.Operators Continuing, Failed, } -} \ No newline at end of file +} diff --git a/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs b/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs index 69db28af24..90a174ea34 100644 --- a/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs +++ b/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs @@ -22,9 +22,9 @@ namespace Content.Server.AI.Operators.Combat.Melee _burstTime = burstTime; } - public override bool TryStartup() + public override bool Startup() { - if (!base.TryStartup()) + if (!base.Startup()) { return true; } @@ -42,13 +42,17 @@ namespace Content.Server.AI.Operators.Combat.Melee return true; } - public override void Shutdown(Outcome outcome) + public override bool Shutdown(Outcome outcome) { - base.Shutdown(outcome); + if (!base.Shutdown(outcome)) + return false; + if (_owner.TryGetComponent(out CombatModeComponent combatModeComponent)) { combatModeComponent.IsInCombatMode = false; } + + return true; } public override Outcome Execute(float frameTime) diff --git a/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs b/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs index 3d00db189d..a614b34c21 100644 --- a/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs +++ b/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs @@ -22,9 +22,9 @@ namespace Content.Server.AI.Operators.Combat.Melee _burstTime = burstTime; } - public override bool TryStartup() + public override bool Startup() { - if (!base.TryStartup()) + if (!base.Startup()) { return true; } @@ -51,13 +51,17 @@ namespace Content.Server.AI.Operators.Combat.Melee return true; } - public override void Shutdown(Outcome outcome) + public override bool Shutdown(Outcome outcome) { - base.Shutdown(outcome); + if (!base.Shutdown(outcome)) + return false; + if (_owner.TryGetComponent(out CombatModeComponent combatModeComponent)) { combatModeComponent.IsInCombatMode = false; } + + return true; } public override Outcome Execute(float frameTime) diff --git a/Content.Server/AI/Operators/Inventory/CloseStorageOperator.cs b/Content.Server/AI/Operators/Inventory/CloseStorageOperator.cs index fd4567ffba..0b3208588d 100644 --- a/Content.Server/AI/Operators/Inventory/CloseStorageOperator.cs +++ b/Content.Server/AI/Operators/Inventory/CloseStorageOperator.cs @@ -21,9 +21,9 @@ namespace Content.Server.AI.Operators.Inventory _owner = owner; } - public override bool TryStartup() + public override bool Startup() { - if (!base.TryStartup()) + if (!base.Startup()) { return true; } @@ -40,12 +40,15 @@ namespace Content.Server.AI.Operators.Inventory return _target != null; } - public override void Shutdown(Outcome outcome) + public override bool Shutdown(Outcome outcome) { - base.Shutdown(outcome); + if (!base.Shutdown(outcome)) + return false; + var blackboard = UtilityAiHelpers.GetBlackboard(_owner); blackboard?.GetState().SetValue(null); + return true; } public override Outcome Execute(float frameTime) diff --git a/Content.Server/AI/Operators/Movement/MoveToEntityOperator.cs b/Content.Server/AI/Operators/Movement/MoveToEntityOperator.cs index 0b84e525fa..0327b8b9da 100644 --- a/Content.Server/AI/Operators/Movement/MoveToEntityOperator.cs +++ b/Content.Server/AI/Operators/Movement/MoveToEntityOperator.cs @@ -32,9 +32,9 @@ namespace Content.Server.AI.Operators.Movement _requiresInRangeUnobstructed = requiresInRangeUnobstructed; } - public override bool TryStartup() + public override bool Startup() { - if (!base.TryStartup()) + if (!base.Startup()) { return true; } @@ -45,11 +45,14 @@ namespace Content.Server.AI.Operators.Movement return true; } - public override void Shutdown(Outcome outcome) + public override bool Shutdown(Outcome outcome) { - base.Shutdown(outcome); + if (!base.Shutdown(outcome)) + return false; + var steering = EntitySystem.Get(); steering.Unregister(_owner); + return true; } public override Outcome Execute(float frameTime) diff --git a/Content.Server/AI/Operators/Movement/MoveToGridOperator.cs b/Content.Server/AI/Operators/Movement/MoveToGridOperator.cs index c86923d3ec..19f8ef465a 100644 --- a/Content.Server/AI/Operators/Movement/MoveToGridOperator.cs +++ b/Content.Server/AI/Operators/Movement/MoveToGridOperator.cs @@ -21,9 +21,9 @@ namespace Content.Server.AI.Operators.Movement DesiredRange = desiredRange; } - public override bool TryStartup() + public override bool Startup() { - if (!base.TryStartup()) + if (!base.Startup()) { return true; } @@ -34,11 +34,14 @@ namespace Content.Server.AI.Operators.Movement return true; } - public override void Shutdown(Outcome outcome) + public override bool Shutdown(Outcome outcome) { - base.Shutdown(outcome); + if (!base.Shutdown(outcome)) + return false; + var steering = EntitySystem.Get(); steering.Unregister(_owner); + return true; } public override Outcome Execute(float frameTime) diff --git a/Content.Server/AI/Operators/Sequences/SequenceOperator.cs b/Content.Server/AI/Operators/Sequences/SequenceOperator.cs index 0b103ffdb3..5446a9f5cc 100644 --- a/Content.Server/AI/Operators/Sequences/SequenceOperator.cs +++ b/Content.Server/AI/Operators/Sequences/SequenceOperator.cs @@ -17,9 +17,9 @@ namespace Content.Server.AI.Operators.Sequences { return Outcome.Success; } - + var op = Sequence.Peek(); - op.TryStartup(); + op.Startup(); var outcome = op.Execute(frameTime); switch (outcome) @@ -35,10 +35,10 @@ namespace Content.Server.AI.Operators.Sequences op.Shutdown(outcome); Sequence.Clear(); return Outcome.Failed; - + default: throw new ArgumentOutOfRangeException(); } } } -} \ No newline at end of file +} diff --git a/Content.Server/AI/Utility/Actions/UtilityAction.cs b/Content.Server/AI/Utility/Actions/UtilityAction.cs index b79fa0955a..3fbf978cfc 100644 --- a/Content.Server/AI/Utility/Actions/UtilityAction.cs +++ b/Content.Server/AI/Utility/Actions/UtilityAction.cs @@ -62,7 +62,7 @@ namespace Content.Server.AI.Utility.Actions { Owner = owner; } - + public virtual void Shutdown() {} /// @@ -78,7 +78,7 @@ namespace Content.Server.AI.Utility.Actions return Outcome.Success; } - op.TryStartup(); + op.Startup(); var outcome = op.Execute(frameTime); switch (outcome) @@ -116,7 +116,7 @@ namespace Content.Server.AI.Utility.Actions // Overall structure is based on Building a better centaur // Ideally we should early-out each action as cheaply as possible if it's not valid, thus // the finalScore can only go down over time. - + var finalScore = 1.0f; var minThreshold = min / Bonus; context.GetState().SetValue(considerations.Count); diff --git a/Content.Server/AI/Utility/AiLogic/UtilityAI.cs b/Content.Server/AI/Utility/AiLogic/UtilityAI.cs index 305e8ebfca..df0284deed 100644 --- a/Content.Server/AI/Utility/AiLogic/UtilityAI.cs +++ b/Content.Server/AI/Utility/AiLogic/UtilityAI.cs @@ -137,6 +137,8 @@ namespace Content.Server.AI.Utility.AiLogic { var currentOp = CurrentAction?.ActionOperators.Peek(); currentOp?.Shutdown(Outcome.Failed); + CurrentAction?.Shutdown(); + CurrentAction = null; } public void MobStateChanged(MobStateChangedMessage message) diff --git a/Content.Server/GameObjects/EntitySystems/AI/AiSystem.cs b/Content.Server/GameObjects/EntitySystems/AI/AiSystem.cs index 5a7e6bb994..36b56d93f3 100644 --- a/Content.Server/GameObjects/EntitySystems/AI/AiSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/AI/AiSystem.cs @@ -110,17 +110,18 @@ namespace Content.Server.GameObjects.EntitySystems.AI foreach (var processor in _awakeAi) { - if (count >= maxUpdates) - { - break; - } - - if (processor.SelfEntity.Deleted) + if (processor.SelfEntity.Deleted || + !processor.SelfEntity.HasComponent()) { toRemove.Add(processor); continue; } + if (count >= maxUpdates) + { + break; + } + processor.Update(frameTime); count++; } From aeb3c1832e217e9881e6cd105421d2bd70c808fe Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 11 Jan 2021 01:24:33 +1100 Subject: [PATCH 082/166] Fix clickmaps (#2967) Co-authored-by: Metal Gear Sloth --- Content.Client/GameObjects/Components/ClickableComponent.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Client/GameObjects/Components/ClickableComponent.cs b/Content.Client/GameObjects/Components/ClickableComponent.cs index d55c58affe..5bebcc3940 100644 --- a/Content.Client/GameObjects/Components/ClickableComponent.cs +++ b/Content.Client/GameObjects/Components/ClickableComponent.cs @@ -87,6 +87,8 @@ namespace Content.Client.GameObjects.Components { foreach (var layer in sprite.AllLayers) { + if (!layer.Visible) continue; + if (layer.Texture != null) { if (_clickMapManager.IsOccluding(layer.Texture, From ee6c28aededa78ee509b953a57e98995f0683a42 Mon Sep 17 00:00:00 2001 From: chairbender Date: Sun, 10 Jan 2021 06:27:55 -0800 Subject: [PATCH 083/166] Better logic related to selecting / deselecting target-based actions (#2962) --- .../Components/Mobs/ClientActionsComponent.cs | 13 +++++++++-- Content.Client/UserInterface/ActionMenu.cs | 3 +-- Content.Client/UserInterface/ActionsUI.cs | 8 +++---- .../UserInterface/Controls/ActionSlot.cs | 6 ++++- Content.Shared/Actions/BaseActionPrototype.cs | 23 +++++++++++++++++-- 5 files changed, 42 insertions(+), 11 deletions(-) diff --git a/Content.Client/GameObjects/Components/Mobs/ClientActionsComponent.cs b/Content.Client/GameObjects/Components/Mobs/ClientActionsComponent.cs index 2040dcbbf1..0ccaf31299 100644 --- a/Content.Client/GameObjects/Components/Mobs/ClientActionsComponent.cs +++ b/Content.Client/GameObjects/Components/Mobs/ClientActionsComponent.cs @@ -184,8 +184,10 @@ namespace Content.Client.GameObjects.Components.Mobs // only do something for actual target-based actions if (_ui?.SelectingTargetFor?.Action == null || - (_ui.SelectingTargetFor.Action.BehaviorType != BehaviorType.TargetEntity && - _ui.SelectingTargetFor.Action.BehaviorType != BehaviorType.TargetPoint)) return false; + (!_ui.SelectingTargetFor.Action.IsTargetAction)) return false; + + // do nothing if we know it's on cooldown + if (_ui.SelectingTargetFor.IsOnCooldown) return false; var attempt = _ui.SelectingTargetFor.ActionAttempt(); if (attempt == null) @@ -217,6 +219,13 @@ namespace Content.Client.GameObjects.Components.Mobs } return true; } + // we are supposed to target an entity but we didn't click it + case BehaviorType.TargetEntity when args.EntityUid == EntityUid.Invalid: + { + if (attempt.Action.DeselectWhenEntityNotClicked) + _ui.StopTargeting(); + return false; + } default: _ui.StopTargeting(); return false; diff --git a/Content.Client/UserInterface/ActionMenu.cs b/Content.Client/UserInterface/ActionMenu.cs index 06b6312267..31d1a8ad55 100644 --- a/Content.Client/UserInterface/ActionMenu.cs +++ b/Content.Client/UserInterface/ActionMenu.cs @@ -404,8 +404,7 @@ namespace Content.Client.UserInterface ItemTag => action is ItemActionPrototype, NotItemTag => action is ActionPrototype, InstantActionTag => action.BehaviorType == BehaviorType.Instant, - TargetActionTag => action.BehaviorType == BehaviorType.TargetEntity || - action.BehaviorType == BehaviorType.TargetPoint, + TargetActionTag => action.IsTargetAction, ToggleActionTag => action.BehaviorType == BehaviorType.Toggle, _ => action.Filters.Contains(tag) }; diff --git a/Content.Client/UserInterface/ActionsUI.cs b/Content.Client/UserInterface/ActionsUI.cs index 7fe3703df8..c0c6085279 100644 --- a/Content.Client/UserInterface/ActionsUI.cs +++ b/Content.Client/UserInterface/ActionsUI.cs @@ -337,9 +337,9 @@ namespace Content.Client.UserInterface actionSlot.EnableAction(); actionSlot.Cooldown = actionState.Cooldown; - // if we are targeting with an action now on cooldown, stop targeting + // if we are targeting for this action and it's now on cooldown, stop targeting if we're supposed to if (SelectingTargetFor?.Action != null && SelectingTargetFor.Action == action && - actionState.IsOnCooldown(_gameTiming)) + actionState.IsOnCooldown(_gameTiming) && action.DeselectOnCooldown) { StopTargeting(); } @@ -410,10 +410,10 @@ namespace Content.Client.UserInterface // action is currently granted actionSlot.EnableAction(); - // if we are targeting with an action now on cooldown, stop targeting + // if we are targeting with an action now on cooldown, stop targeting if we should if (SelectingTargetFor?.Action != null && SelectingTargetFor.Action == action && SelectingTargetFor.Item == itemEntity && - actionState.IsOnCooldown(_gameTiming)) + actionState.IsOnCooldown(_gameTiming) && action.DeselectOnCooldown) { StopTargeting(); } diff --git a/Content.Client/UserInterface/Controls/ActionSlot.cs b/Content.Client/UserInterface/Controls/ActionSlot.cs index 68ea495db6..e98f898d7c 100644 --- a/Content.Client/UserInterface/Controls/ActionSlot.cs +++ b/Content.Client/UserInterface/Controls/ActionSlot.cs @@ -53,8 +53,10 @@ namespace Content.Client.UserInterface.Controls /// /// Is there an action in the slot that can currently be used? + /// Target-basedActions on cooldown can still be selected / deselected if they've been configured as such /// - public bool CanUseAction => HasAssignment && ActionEnabled && !IsOnCooldown; + public bool CanUseAction => Action != null && ActionEnabled && + (!IsOnCooldown || (Action.IsTargetAction && !Action.DeselectOnCooldown)); /// /// Item the action is provided by, only valid if Action is an ItemActionPrototype. May be null @@ -340,8 +342,10 @@ namespace Content.Client.UserInterface.Controls /// public void Depress(bool depress) { + // action can still be toggled if it's allowed to stay selected if (!CanUseAction) return; + if (_depressed && !depress) { // fire the action diff --git a/Content.Shared/Actions/BaseActionPrototype.cs b/Content.Shared/Actions/BaseActionPrototype.cs index 4068c9da79..669ee18254 100644 --- a/Content.Shared/Actions/BaseActionPrototype.cs +++ b/Content.Shared/Actions/BaseActionPrototype.cs @@ -30,8 +30,6 @@ namespace Content.Shared.Actions [ViewVariables] public SpriteSpecifier IconOn { get; private set; } - - /// /// Name to show in UI. Accepts formatting. /// @@ -60,6 +58,18 @@ namespace Content.Shared.Actions /// public bool Repeat { get; private set; } + /// + /// For TargetEntity/TargetPoint actions, should the action be de-selected if currently selected (choosing a target) + /// when it goes on cooldown. Defaults to false. + /// + public bool DeselectOnCooldown { get; private set; } + + /// + /// For TargetEntity actions, should the action be de-selected if the user doesn't click an entity when + /// selecting a target. Defaults to false. + /// + public bool DeselectWhenEntityNotClicked { get; private set; } + /// /// Filters that can be used to filter this item in action menu. /// @@ -70,6 +80,12 @@ namespace Content.Shared.Actions /// public IEnumerable Keywords { get; private set; } + /// + /// True if this is an action that requires selecting a target + /// + public bool IsTargetAction => + BehaviorType == BehaviorType.TargetEntity || BehaviorType == BehaviorType.TargetPoint; + public virtual void LoadFrom(YamlMappingNode mapping) { var serializer = YamlObjectSerializer.NewReader(mapping); @@ -106,6 +122,9 @@ namespace Content.Shared.Actions Name, BehaviorType); } + serializer.DataField(this, x => x.DeselectOnCooldown, "deselectOnCooldown", false); + serializer.DataField(this, x => x.DeselectWhenEntityNotClicked, "deselectWhenEntityNotClicked", false); + serializer.DataReadFunction("filters", new List(), rawTags => { From 7d78f6779f1a078a98a476debca41eb61cb681ff Mon Sep 17 00:00:00 2001 From: Alex Evgrashin Date: Sun, 10 Jan 2021 17:29:59 +0300 Subject: [PATCH 084/166] Add flashlights for hardsuit helmets (#2947) * Fixed engineering hardsuit helmet sprites and add flashlight component * Add better cell for helmets and setup all engi helmets * Flashlights for rd and medicals * Mining and secs helmets * HoS and syndies * Wiz hardsuit --- .../Entities/Clothing/Head/base.yml | 30 ++++++++++++++++++ .../Clothing/Head/hardsuit-helmets.yml | 24 +++++++------- .../Entities/Objects/Power/powercells.yml | 2 +- .../atmospherics.rsi/inhand-left.png | Bin 407 -> 0 bytes .../atmospherics.rsi/inhand-right.png | Bin 413 -> 0 bytes .../Head/Hardsuits/atmospherics.rsi/meta.json | 16 +++++++--- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../atmospherics.rsi/off-inhand-left.png | Bin 0 -> 919 bytes .../atmospherics.rsi/off-inhand-right.png | Bin 0 -> 994 bytes ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../atmospherics.rsi/on-inhand-left.png | Bin 0 -> 1237 bytes .../atmospherics.rsi/on-inhand-right.png | Bin 0 -> 1246 bytes .../Hardsuits/engineering-white.rsi/meta.json | 16 +++++++--- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../{inhand-left.png => off-inhand-left.png} | Bin ...{inhand-right.png => off-inhand-right.png} | Bin ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../engineering-white.rsi/on-inhand-left.png | Bin 0 -> 1241 bytes .../engineering-white.rsi/on-inhand-right.png | Bin 0 -> 1224 bytes .../engineering.rsi/equipped-HELMET.png | Bin 1136 -> 0 bytes .../Head/Hardsuits/engineering.rsi/meta.json | 16 +++++++--- .../engineering.rsi/off-equipped-HELMET.png | Bin 0 -> 1174 bytes .../{inhand-left.png => off-inhand-left.png} | Bin ...{inhand-right.png => off-inhand-right.png} | Bin ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../engineering.rsi/on-inhand-left.png | Bin 0 -> 1223 bytes .../engineering.rsi/on-inhand-right.png | Bin 0 -> 1296 bytes .../Hardsuits/medical.rsi/inhand-left.png | Bin 388 -> 0 bytes .../Hardsuits/medical.rsi/inhand-right.png | Bin 393 -> 0 bytes .../Head/Hardsuits/medical.rsi/meta.json | 16 +++++++--- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../Hardsuits/medical.rsi/off-inhand-left.png | Bin 0 -> 813 bytes .../medical.rsi/off-inhand-right.png | Bin 0 -> 870 bytes ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../Hardsuits/medical.rsi/on-inhand-left.png | Bin 0 -> 995 bytes .../Hardsuits/medical.rsi/on-inhand-right.png | Bin 0 -> 988 bytes .../Clothing/Head/Hardsuits/rd.rsi/meta.json | 20 ++++++++++-- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../Head/Hardsuits/rd.rsi/off-inhand-left.png | Bin 0 -> 834 bytes .../Hardsuits/rd.rsi/off-inhand-right.png | Bin 0 -> 890 bytes ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../Head/Hardsuits/rd.rsi/on-inhand-left.png | Bin 0 -> 1076 bytes .../Head/Hardsuits/rd.rsi/on-inhand-right.png | Bin 0 -> 1124 bytes .../Hardsuits/salvage.rsi/inhand-left.png | Bin 413 -> 0 bytes .../Hardsuits/salvage.rsi/inhand-right.png | Bin 419 -> 0 bytes .../Head/Hardsuits/salvage.rsi/meta.json | 16 +++++++--- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../Hardsuits/salvage.rsi/off-inhand-left.png | Bin 0 -> 967 bytes .../salvage.rsi/off-inhand-right.png | Bin 0 -> 983 bytes ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../Hardsuits/salvage.rsi/on-inhand-left.png | Bin 0 -> 1228 bytes .../Hardsuits/salvage.rsi/on-inhand-right.png | Bin 0 -> 1222 bytes .../security-red.rsi/inhand-left.png | Bin 392 -> 0 bytes .../security-red.rsi/inhand-right.png | Bin 407 -> 0 bytes .../Head/Hardsuits/security-red.rsi/meta.json | 16 +++++++--- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../security-red.rsi/off-inhand-left.png | Bin 0 -> 916 bytes .../security-red.rsi/off-inhand-right.png | Bin 0 -> 945 bytes ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../security-red.rsi/on-inhand-left.png | Bin 0 -> 1162 bytes .../security-red.rsi/on-inhand-right.png | Bin 0 -> 1219 bytes .../Head/Hardsuits/security.rsi/meta.json | 20 ++++++++++-- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../security.rsi/off-inhand-left.png | Bin 0 -> 746 bytes .../security.rsi/off-inhand-right.png | Bin 0 -> 792 bytes ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../Hardsuits/security.rsi/on-inhand-left.png | Bin 0 -> 903 bytes .../security.rsi/on-inhand-right.png | Bin 0 -> 953 bytes .../Hardsuits/syndicate.rsi/icon-flash.png | Bin 0 -> 826 bytes .../Head/Hardsuits/syndicate.rsi/meta.json | 20 +++++++++--- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../{inhand-left.png => off-inhand-left.png} | Bin ...{inhand-right.png => off-inhand-right.png} | Bin .../syndicate.rsi/on-equipped-HELMET.png | Bin 0 -> 1709 bytes .../syndicate.rsi/on-inhand-left.png | Bin 0 -> 1398 bytes .../syndicate.rsi/on-inhand-right.png | Bin 0 -> 1389 bytes .../Head/Hardsuits/wizard.rsi/inhand-left.png | Bin 439 -> 0 bytes .../Hardsuits/wizard.rsi/inhand-right.png | Bin 439 -> 0 bytes .../Head/Hardsuits/wizard.rsi/meta.json | 16 +++++++--- ...ped-HELMET.png => off-equipped-HELMET.png} | Bin .../Hardsuits/wizard.rsi/off-inhand-left.png | Bin 0 -> 917 bytes .../Hardsuits/wizard.rsi/off-inhand-right.png | Bin 0 -> 1003 bytes ...pped-HELMET.png => on-equipped-HELMET.png} | Bin .../Hardsuits/wizard.rsi/on-inhand-left.png | Bin 0 -> 1212 bytes .../Hardsuits/wizard.rsi/on-inhand-right.png | Bin 0 -> 1308 bytes 85 files changed, 180 insertions(+), 48 deletions(-) delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/on-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) rename Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/{inhand-left.png => off-inhand-left.png} (100%) rename Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/{inhand-right.png => off-inhand-right.png} (100%) rename Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/off-equipped-HELMET.png rename Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/{inhand-left.png => off-inhand-left.png} (100%) rename Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/{inhand-right.png => off-inhand-right.png} (100%) rename Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/on-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/on-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/security.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security.rsi/off-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/security.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-inhand-right.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/icon-flash.png rename Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) rename Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/{inhand-left.png => off-inhand-left.png} (100%) rename Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/{inhand-right.png => off-inhand-right.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/{equipped-HELMET.png => off-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-right.png rename Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/{flash-equipped-HELMET.png => on-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/on-inhand-right.png diff --git a/Resources/Prototypes/Entities/Clothing/Head/base.yml b/Resources/Prototypes/Entities/Clothing/Head/base.yml index d35da8e880..a7cb46c395 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/base.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/base.yml @@ -29,3 +29,33 @@ - type: PressureProtection highPressureMultiplier: 0.5 lowPressureMultiplier: 100 + +- type: entity + parent: ClothingHeadHardsuitBase + id: ClothingHeadHardsuitWithLightBase + name: base hardsuit helmet with light + abstract: true + components: + - type: Sprite + layers: + - state: icon + - state: icon-flash + visible: false + - type: Clothing + HeldPrefix: off + ClothingPrefix: off + - type: PointLight + enabled: false + radius: 3 + - type: LoopingSound + - type: Appearance + visuals: + - type: FlashLightVisualizer + - type: ItemActions + actions: + - actionType: ToggleLight + # right now there is no power system for hardsuits + # so hardsuit helmet just have small battery inside + - type: HandheldLight + - type: PowerCellSlot + startingCellType: PowerCellSmallHigh diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index f663e3ffd6..cfa983df68 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -1,5 +1,5 @@ - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitAtmos name: atmos hardsuit helmet description: A special hardsuit helmet designed for working in low-pressure, high thermal environments. @@ -32,7 +32,7 @@ sprite: Clothing/Head/Hardsuits/deathsquad.rsi - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitEngineering name: engineering hardsuit helmet description: An engineering hardsuit helmet designed for working in low-pressure, high radioactive environments. @@ -46,7 +46,7 @@ lowPressureMultiplier: 100 - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitEngineeringWhite name: CE hardsuit helmet description: Special hardsuit helmet, made for the chief engineer of the station. @@ -71,7 +71,7 @@ lowPressureMultiplier: 100 - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitMedical name: medical hardsuit helmet description: Lightweight medical hardsuit helmet that doesn't restrict your head movements. @@ -85,9 +85,9 @@ lowPressureMultiplier: 55 - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitRd - name: rd hardsuit helmet + name: research director's hardsuit helmet description: Lightweight hardsuit helmet that doesn't restrict your head movements. components: - type: Sprite @@ -99,7 +99,7 @@ lowPressureMultiplier: 55 - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitSalvage name: salvage hardsuit helmet description: A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating for wildlife encounters and dual floodlights. @@ -113,7 +113,7 @@ lowPressureMultiplier: 100 - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitSecurity name: security hardsuit helmet description: Armored hardsuit helmet for security needs. @@ -127,7 +127,7 @@ lowPressureMultiplier: 100 - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitSecurityRed name: hos hardsuit helmet description: Red armored hardsuit helmet for security needs. Belongs to the HoS. @@ -141,7 +141,7 @@ lowPressureMultiplier: 100 - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitSyndie name: blood red hardsuit helmet description: An advanced red hardsuit helmet designed for work in special operations. @@ -150,9 +150,11 @@ sprite: Clothing/Head/Hardsuits/syndicate.rsi - type: Clothing sprite: Clothing/Head/Hardsuits/syndicate.rsi + - type: PointLight + color: green - type: entity - parent: ClothingHeadHardsuitBase + parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitWizard name: wizard hardsuit helmet description: A bizarre gem-encrusted helmet that radiates magical energies. diff --git a/Resources/Prototypes/Entities/Objects/Power/powercells.yml b/Resources/Prototypes/Entities/Objects/Power/powercells.yml index a0c7b0e26b..d94314de03 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powercells.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powercells.yml @@ -1,4 +1,4 @@ -# Power cells +# Power cells - type: entity id: PowerCellBase diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-left.png deleted file mode 100644 index 7b91c45b694729dc7b1ad7c25a113468493c6c6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8S0J4oCb_6d?ci)(w+XG5 zg_#exnk(2_hpe2FIqh@i?a!H?KS#JL#`}ov>oNHVRLxiteuk zTAW;zSx}OhpU1#ZF(){zps4iwm*9erU!Q1s>uQ}lb3S-OsKG_!2aj~l`)HnIDC+6m zVPPC(eA(DbVa}sTM<#_R1Z!?oF}Jr^4^2yh38h#BSrY8iwYgN6elCg%x}) zW|Zb-*yAUC4K9_!*XyAC<9iyvjtUtn~B;qjWz44x7N zjfQg|6H^!&+5TkC4{Qt++|T6f?!1S~Ntij9`NN6LVP|fcGOur%boiwE2h9YIIa{-p v;#l`Ib#D6cL{dT}Tu6gig7xERVSWZVF$J%c-dpp5j%Dz4^>bP0l+XkK*f)|r diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-right.png deleted file mode 100644 index d26398b840e444c9e94c4299a83b3a8dd209fa19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8S0J4oCb_6d?ci)(w+XG5 zg_#exnk(2_hpe2FIqh@i?a!H?KS#JL#`}ov>oNHVRLxiteuk zTAW;zSx}OhpU1#ZF(){zps4iwm*9erU!Q1s>uQ}lb3S-OsKG_!2aj~l`)HnIDC+6m zVPPC(eA(DbVa}sTM<#_R1Z!?oF}Jr^4^2yh38h#BSrY8iwYgN6elCg%x}) zW|Zb-*yAUCfF*Gn`2xg3#u{G)1I>{Ma0*BV9womR)2y77Go3k}rNlaVd(4MBwO%XDkDmpub zvMm%^Bw06}d@LjfGBG6J+R-1iJ{WE; zJeuA5IUQiA0pJ2NnJD+82DBMwJ>1v;6*)78&qol`;+ E0I`~!2mk;8 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json index 366c8b9bdc..22a5d5a234 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json @@ -16,19 +16,27 @@ "directions": 1 }, { - "name": "equipped-HELMET", + "name": "off-equipped-HELMET", "directions": 4 }, { - "name": "flash-equipped-HELMET", + "name": "off-inhand-left", "directions": 4 }, { - "name": "inhand-left", + "name": "off-inhand-right", "directions": 4 }, { - "name": "inhand-right", + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ba55de1e0d3cc5df1eccf3f000a7bd3a3e3440 GIT binary patch literal 919 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10m}Na(978H@y_xOk zArdIju>Yp!l%os9lw-o9A_MfhTb))bsjfJFB3L`trexCBlz=K;6~RwSDqkhEU+{}^ z7Y)&HE#Q~6$>@+?w>ogmN}aSfe(ZBSd5f;QmBs#-Z=3sF|GnY+>i@t0o4>DL{9@NR zS21bv7?uVG0R|=q1`Y;B1qK!vr-55z`kE{cN5l8bb<6oK*vka+-B-VT?fUMM~!~Ae#>(XmqgJ1rc>C3p?n4RHlY{`;2S%14eoS3+YQ6;(7p|pCn zT#0F5Oa^;`^%gFN!i94etbTcfPvXDy*XDIdt=Duw$-aH6=`p%;mUC}>*$+y*(TEY zcnR~_$)+yur*C%UsN8is?xfo$|Dn>Sbt7ly3F&xcTZ;V_DhYoXF3C&*Z9%?*UWp2N4*%jLMs`SdA8lzz3%zVP=0K?&a=h2n>Yp-7MJ(D{rJ$y1(>&jn@rx_*YdR)8bu+7b`<)0^gR=s9O zej;xYXI#4Qg#Vp$GWYswm0x5nQnGQn|6$goslg9E&c5q%V1IpFLaJ_BT5l)QI_?K7 zz&Mtx-|ABS(!#k~{){pEvGvdNytJ5W*VQ^aFZug#W^=hYFjN=p>;{J9;+@@RM5@Bv z8=se}1zanYskT~p-rx6cS;o|bZ4Vr+{-u6ndNF66`FWWTnHM#2y`4LKs}5<&nXXF9 z6)~u3_+-_XyQ=5CebLGNn|@!nQpnzXSkAO6vNog%DE#kXhtO^94V70`oL%g8HN@Rc kS;yfXD>zNQoOYj?LGrA@C!3|5(;0xk)78&qol`;+04^GZPyhe` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/off-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..45d73f73dfc76ee67f3075135fda6d9602929ca7 GIT binary patch literal 994 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10m@_HMw2E z4z#H|JOW-^B5v^G9g*Wd4S4_f{}v_+`th4r?K?`#<}{wPaEm@68fb8_u*v-WjPayngiB(?uQ$tUHN(q~J0%Py4vSBPCKyCl!Vcfu8`1*v!;kgd79~iUhoZehYE)U7t>rALKjanFU2R^F+47Oq+%lcD zXPbcMXV$~^az+;<(%*e@IoNkeM3?DJZrTA$;|aTVPR?*O{mQ7{oL#AVVUondkndu< z9&sD|(LH-5XZP8H^BwoQnS85n8Ej-m3FrxqXL6hwB LS3j3^P6(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ=TS-JgRCwC#n_o;@RT#j3w*_Gxe`LJSc2Z_sMT5)$u?%NeGI&IISy2mk_r z0I&-sDW1v_5&$v-h1&eO+NxoIPddEPsam6~o=4lRwvKvk@8~|X`rajuNcCmpjne?7 z^H$}kY-xOJ*jA7Zz~R$x$N;v2^l+!5>HK>2Lr|p(^uUW$a}CT=rW`G`o8Uo^kPf zQwzZ}E}Gpvm`jVJYUpNJ9k(X^t2E%&q@SB*b(l+wDLehe%L?=@wF=DKo(nzn^j#k_ zU4@+JEu-P53QqKvG1FCu&pRD;V-3zDsCK|skWPd12mqd6e^ZOhCTa>KB?y3{`f&b0 z*DrsRBzuO)s&;VxD3Ak8LDn*4_gcd${UA}NO?hz^7Gnx|CIg@L+|U2{!`Hq79Es8Z zDW151grv0t7Qpz?`|s6{jtl_s_Q_mY+QtD`@CRt?{`;Y$cBbA%*H9NJFA()snIv$aC1u5T`c`#npPBa{#TTTM396BI8)0)PM@00;mA zfB+x>2mk_r03ZMe00Mvju5M^JK|1OIp-A$bMPD%1 z=SgT>AfBb_ziq9GH~|n?S*HE7kH0yPdOe)y_AX&DrttNp+YFj(DDre-@0gS}Z3@Jr z8IdAQC?Pj}QgTQop2=rvPd?vHnrL@AU`YG(U}4_Jq5eje_T)1U%)2KzUoohJjp?*?LBjwSKeS@AL?00;oPS^gaWg;Anil#PJW00000NkvXXu0mjfKd>kp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/on-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..77b15e837d76abe64daa32585940ef35207ce1bd GIT binary patch literal 1246 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10SW-M)978H@y_p^F z6CEmXpniLah;`TDnH#(t^HRcMH{51me?85BSwgt^!y~UVLUJa?T>4H<7ue65cykCY z7JNK8FlLVOK8Fv!XD+a^9#$w>qIma_#>NsIqiu({xVK$z|28f9*nC~@jL7rT?>w1P zeBRdb{`;Eezt7DN3leEf5tH@QV`^YfVBlcDpeD2^Eo?Zn!8iKGgB4QDKUSSqziOT0 z>YE?BTx5#J^CdIBy!!rKTX@~#x0`3Zd-2LvB6|A`&IR2X`Mow%bKmbb4+~0QdXVwh zn#;knQS;V|FwOmeRmv;NPn?SS%g?_mWZ|n-27eB{(oA4{a_7(Ah!kc9HE+Kkt}62R zl>r=C_1t^!8vgt&zJ3dHWuS5g!v?0M4mTUJSDlOqICn2cnc?%idWIXbb5oAQ2&+ov zvtAe8TA%gb{fueGXW6~Z45<#BA9{c;-^%bBsOQyx zV=!GTms@*BR(?W}l|VA%<6qXBG(p0&t>}M(YX27i{it!^?oAn zKlDwCeEZ}OX99l#v(fa#^8Kb+K_7XeFSUg&@VmWfk&n)%#=SS)_PvYN{Qr2f`F{2} z7r%+9O0nuR{Q0S#K5JbsKl6o{>F&|bMHsjn73S_WUs^G1htxAOuI8_Nk&zrMn)aKt zqyD{)-|lI??83#b#nu{j2bg!LcFm1q$WmEwFz{>Uixz3E#(0P8`MsyD5_F%+r^zmu z+PCiBb>&}`O0J0v*}5$%U2|`_Z43J8zEMb5Wo^m!aF46LYt15l2E=lB=6s&L(Vcg0 zlCcWb0NFq|=vFn%~)<4I7O?8<0?kD`~>gp|?cvrqwchb&X zBeQk2`-R(wn67aLX8n9K$$mxL#Hk`P7M)+=$G560d&>58Z4)nuZHTN{2TUX#JKLP{ z&DFK%AA7u8d~fyk6KrvBDm;I_|FU=TuaM?#irNqA)`T@FKa+BcdH7}JVY9fi^Nww> zIQTX2!g8rkCZV>sG$(chD?UrhFy`K1zHjvm9m|vxkrnLv!QYRa-V;0L^wg7cE9Uzg zo*}35bUU}q>WZbdpE~g6rcSU-~3I$MT2nyN`yYNA7mo{rYZs@a(n?T63-i`!8i;@#N+8eg8P% zoo?FnKc^YQ{@$H?*8T^xv~G*gNlvdv>o-Fp?xfCteg+=Sh3S01+?au76N9I#pUXO@ GgeCwjk21jk literal 0 HcmV?d00001 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 366c8b9bdc..22a5d5a234 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json @@ -16,19 +16,27 @@ "directions": 1 }, { - "name": "equipped-HELMET", + "name": "off-equipped-HELMET", "directions": 4 }, { - "name": "flash-equipped-HELMET", + "name": "off-inhand-left", "directions": 4 }, { - "name": "inhand-left", + "name": "off-inhand-right", "directions": 4 }, { - "name": "inhand-right", + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-inhand-right.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/flash-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/flash-equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6e7831c894f8a817660e66795d909461ea921d GIT binary patch literal 1241 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/off-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/off-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/off-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/off-inhand-right.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/flash-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/flash-equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..bff16d72c4981d2fe84dafe4b7963f5197681050 GIT binary patch literal 1223 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/inhand-right.png deleted file mode 100644 index d7ffaacbbb9d06d85f04f7b9a916c85cd6dae7ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e(Ey(iS0J5v`?H^;W#+WcnV&xc zxou^cv#PfC0$GeDL4Lsu4$p3+0XcEamT z(fM}DMlL2pp0>-S*Jn76oUq4d1wBFlepW1DI6Nx`^ z>+BlV`zO5LGuQfkh474t0k?yE3!in1_U&mqyxK~)xFX`A%=M>QPH8#?LW!sL@_PCO zJp6l>Yq$0EwLK@#brx0BYbQAV4G$FVdQ&MBb@02PFo0{{R3 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json index 366c8b9bdc..22a5d5a234 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json @@ -16,19 +16,27 @@ "directions": 1 }, { - "name": "equipped-HELMET", + "name": "off-equipped-HELMET", "directions": 4 }, { - "name": "flash-equipped-HELMET", + "name": "off-inhand-left", "directions": 4 }, { - "name": "inhand-left", + "name": "off-inhand-right", "directions": 4 }, { - "name": "inhand-right", + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbfbbf6c6a54cd6a8b5d2499322871bdf3965fe GIT binary patch literal 813 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 HN@xNAlP0Mx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json index 665e2ac94e..22a5d5a234 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json @@ -16,11 +16,27 @@ "directions": 1 }, { - "name": "equipped-HELMET", + "name": "off-equipped-HELMET", "directions": 4 }, { - "name": "flash-equipped-HELMET", + "name": "off-inhand-left", + "directions": 4 + }, + { + "name": "off-inhand-right", + "directions": 4 + }, + { + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..dc16b147b847f4af8ec961a94890c901a5ffdf1a GIT binary patch literal 834 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10m`-@QIEGZ*dNX^! zw{)V!ar^L=JYCs!!J5+?9@vUDc^7t04zSvBMRm(72^Q9c$(np$?KzHJTj{!q<6vIt z%k{Ul8xP2`#tqS37@mkKvb1 z>n=VPVqkJ$;9y`>U|?xr5MW?}a;gGq3uR9n%Bu12U&ec2@B6O&@*0La=humTjS$bx zH<&KY`10bG!dUT!CAKmDKd-xOaMkB$%rPCkB^RS6Z)v|6wRy(`wfU!K>^OUzPXS0z zU8*@HXi1qHgU8#R1yhnzGgqzbtkFwmV;4$E@9vT9-5mV;)QyW4H*YF6Gj}d~8*M6Y z-EgO&paoz-(6E< z+N;}IPP?~me}7KqMa}u`H8oQf`%G#45fqeA{k{Qc)~W{&a%Bz&v{t>(e=l1w@1VwW zi`V6EXY|`LZMnw4qxyT{gMgX`bB*NR?f2@+<>9D)kkZj+c{@x0_`(&*4sRINbuD6= zkj}`67P63FUhrMy_LKtZ!i}`9Sjfk)I5(wFud;iI`$NssFFLsEmc;UN) zuh>}AuBN7bRa(NE7kRJEQoko%wq-n&UQ^aGeeh(*FQ$yiGLV?z|+;wWt~$(69APr BW}pB7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..e289c62a841f46588e7161834efde8d0fc887e5a GIT binary patch literal 890 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10m>E1>978H@y_vn= zTRKqYfc^Ddr5b$URu&OVjpbT0F9Tv8saTY5?Dp6iEft_q^5(&UdI!Z7SJtlR4!O0q z@2&4#7lC_?0i`b%R5k?`2-V20EB8(EQTn0%?04&gJGJ-s*4%$yd;fdfyWhRZYnRS_ z%9yLi9?y{#ge~IueW{9c(ZX0Zxchqmf4+pd`(L(-6ksRuW`zj@#0 znYUNPe4|&s|EgtwMH#q0ON(^x_IXy@=jWX>vlK`I*EAv3?3&)WMaTAi`)B^ET;{d2tkreP-&bGnowo0m^r^S&Q|EsQ zS#&+h`gv2r&KIU1#7qy{t;usa{)#Pa!?gpeOTSJ#cxwB5@iKu|7dSZs=WQ~5&%{vO zuKs1|?!=qU!i*QP7ff4x^S-ss&Z!5@FR!Z!d)>9}%>t$dLpFuR4OUCE+2mippR8i2 zpceg3>EkTT^2NK8DmHIF>dl-Xx>JkcQ#35FQ9>TX$yJx#{&8veR}*&|u$ls0#|?pX zbv9EsJ4~u>*AV~z^Sk=;r?v|MTjczo=G;2_;n7_~V6aLgb2K%~U1z{}c@x7d*_!7s z_~-5D*Ay%Nx$BeM(vYAD7qSHO_VVA*&)pm{Eq(r(-@pI_hF;FhuhY62{WjOns+wGt zeL1gf>Er$#>rP)j=g#11dvF7P{I5l`n%pdp?A{{yYKO*!t45y=ub;y#AQX0m=jGNH zf3GfMOW4)=si$=E;@(weQ&zK?G*Spt4-nn7Lz5|h0 zUOfNK;gC~cTU+YuxHo93HMhgILy&ZLq3u&S!<>MK$1SOaTN!}B)78&qol`;+0PvcI Ao&W#< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/flash-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/flash-equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..b107272ddaed509f4228fbaa6e3cf51f7c9aabc1 GIT binary patch literal 1076 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 JS?83{1OVOKn2!Je diff --git a/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json index 366c8b9bdc..22a5d5a234 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json @@ -16,19 +16,27 @@ "directions": 1 }, { - "name": "equipped-HELMET", + "name": "off-equipped-HELMET", "directions": 4 }, { - "name": "flash-equipped-HELMET", + "name": "off-inhand-left", "directions": 4 }, { - "name": "inhand-left", + "name": "off-inhand-right", "directions": 4 }, { - "name": "inhand-right", + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..b11a533c26b857d91af38e7a53002d52b740cfbc GIT binary patch literal 967 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/on-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..141dc492a4ec57d8b1e37260142c6bf56fe9fc5d GIT binary patch literal 1222 zcmV;%1UdVOP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ=Oi4sRRCwC#n_o;@RUF4ZmvoR#HmNW=TT7us8bDjp;8uK*6g2_I5{a-U=bTG4 zaSu-GlfL@^X2vYWH|v8hnCwYMf`CS%ZnF?E-jH@HTOrgiI;yzH4AbjF@4eps;h$sX zV$W%Aa_{e+(|&)Sp8n1`_jf8Oib64$5{kSC00MvjAOHve0)PM@00;mAfB+x>2mk^= z5f%x<^N`M9Kp7glD24hwc~40O2BXq{DNHd4laO?qcD_+D`k-mo{LAYB3K6eD#9QZf zpb+r_`0Fb;@^}sY`U;G7v}3!S)n2*I=UyA@{bS4473%XSM*T(@x%x}giw2;<@lZA4 zP<%?enY^*Ae~4;t&<=&jquc#W7rNf4o>4!*YrYQ)zJbA>rN2aL2)OLG+G)Do4Zyf_ zgz=Ljj5|jFXu91^I28XBaH;h@ciR)za(46Wb>{(GXMB;VZs*Gd>qaZX+G&=4i^1rv z^_EjsCet{74BOr?2a^usd*@jQ9HY!3Q~O6bfaY|549Y4|}q2$|)<|cit!V z>tvpOi=m#i{kVUqc}P34o5y!=YDCy)z)KD*P4rIP>kxP%`xbluEqx z%CjL8c7I*Zg|Ty?uHfkbx6=+QY5k_#X=i3G$%V0VdHN+q$qFO@v993hDYw(E8`Q=v zz{AFR60JXO_b9NnNsN>m2zC9FSLIEHn)esY;yz4Rt0|b-cw4lemTo#uilqA z=|j;VM!&Ue&SQjTE-@(K`?y} zSg*(_D{>0D@Au=`_ZW~#NAEs#jXPBh%szLP{+jE(s^hMl<}tNbn5rjiDF{9vQ1IM5 zk@>y<-p0(4w`n}JNZk`rYCY|oxD{b~BB5=fcu+l1uN!vsVyL+)&E!?Ec+L`wo`FiJ zbJ=O{w2@fs;mWQ(Oy37j?pk`+;5h2}&;N^I&|hDHoU*doG7P}AM3SE-;`}x%Q})f5 zG+v1@J&|}L$6?bt|F4(BGjmDYPCMrZNBQBqX?l8}CSH1!uggn$tLb`gfhGwp5Sn%r z*k~k>ko56iPFaD>#sdJq?-6X(`vF+EvB=5SkM5XJU{mSwjW#H1dkKu25Z9Uqm=1vW k>#SG|2>=2>F_*sw03qqLdS0RKJpcdz07*qoM6N<$f`z^^MF0Q* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/inhand-left.png deleted file mode 100644 index 8b4ba7b8d966043b800c329c2994d4e568566d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|exd5LKS0J6Jrez~5f5po9psvCH z|Nns^wHi7LYU`aYy*n(7gN!d5dnwF$H0j8s z5QX5C7N(YV%BJe!o!!Q&n^#CI>F+jPt6^v^dc^EWP*}m&V#e7#3^Nu<`(0nNzZ7Wk zd`}n05RcB}1PRu~2^*N)oVZ$eX0R;KVPnqW3YiijlAyzyW2UjoO6yPr-whFqrD~Rk zA~+*N3`9LSL=Q$V-4J28yMQG*v6z{8@@nBZt!H_8c#PE(Hn|Pg)?fQp*z7z$gWV*<72LDl!`xdS7{@DS2_T1Qa=iG3e_~xYO`R!zGiE-T2~; cFWSlsYn4Tk1!l!g0y>q!)78&qol`;+0Nm|`iU0rr diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/inhand-right.png deleted file mode 100644 index 44e2e8e0f3ca7da6ee83fa0ef5d4f132c93948c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|exd5LKS0J6Jrez~5f5po9psvCH z|Nns^wHi7LYU`aYy*n(7gN!d5dnwF$H0j8s z5QX5C7N(YV%BJe!o!!Q&n^#CI>F+jPt6^v^dc^EWP*}m&V#e7#3^Nu<`(0nNzZ7Wk zI!_nJ5RcB}1PRu~2?k7Ve=a%kxG_bv@XknBq~)c>6(MrKRZ=uoR&=9AL${IDQZ>t@ zKnC$ttw{n}hZZsDonk3z778;z;4(92?uHY_3Z3WXH25->T?{nfauYfb#-PBkn911d zpO}$D@PQ{wS|C7i5RhFZXJ}>eT9?a=HHNSIR!!!nl@7y91_lwG20A0@D>FVdQ&MBb@0N3V{Q2+n{ diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json index 366c8b9bdc..22a5d5a234 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json @@ -16,19 +16,27 @@ "directions": 1 }, { - "name": "equipped-HELMET", + "name": "off-equipped-HELMET", "directions": 4 }, { - "name": "flash-equipped-HELMET", + "name": "off-inhand-left", "directions": 4 }, { - "name": "inhand-left", + "name": "off-inhand-right", "directions": 4 }, { - "name": "inhand-right", + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..c81cf30dc9cd313a3b2a8dc423e83a27f1cee5c8 GIT binary patch literal 916 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10n58^j978H@y_xNw zA?zq}Z2w&^r=E$iz6YHyRd8lr606d1$ym}-C14YBaND@R+CBQ zxtn9N>kbD4qXGj<1A_nqlLG^s)1bG7JFVO{v9-Msczw5T~3;QPz&)5h)I-n@Wv9V@p59@mAX8G+CrKMey*0bzC zypsD+OhL!m=~Lt9xzE*$73ksFryHygujwr0qVmma$IW`#&b>k^jxPIxu3e3j{?l~5 z_v|4(u|4mmJ(u0fmT}2H++TrH$&7pV1Qx-UuROi~MqcW-ioFpo#n4c@wDF|(^ypV- zKh;HxEU2u`zBaG++ZVSoAbmAt;ql*-6c(*mb>hma3hVz8Goxg!d)ZVRbGo@IHb0%e z@+u=kQ50wV>N|X=GgWyQW=8!zlPOTTYl4kcOZ)S{kkB=IqZ|W6A3m&9>E{zH-DUOP zctxdQyyjz9tGhA6Jr((T*C?cIS5$p2u=(~av;XyHq>uS%Coo6|eEfCe*awc}o{hZ^ z1;sx8nh~~qyUQNCWul97d-rU9Ip6WD+8^e#efOX5FZj`3w(fU>pMf%ih8VVJ$TJE4 z%;d(eYOPqaOcNeI-x#lLnm>6>_b0yPf6a>64{qY>V0Y3{eO~bWpvkfHWdi&y5g+cU z1QoqI^Jeo?Q6P6l`*UDa9F1DZ#DD(r!rP5UE(uLBe?MVTu|vWH$7}nKZkfZ>wW{lB zbC&VtJv9NX_aC|hhJMtr;Nd_2e?QlbqUFz{^WPt3VsMF9T9ewV>UbnHoPXYQtzG$x zB7_{uzV6_+csH3v@Z@EanolnTfPuW-&-g`M`{f9SvU&Bhe^1T`h<=e&CT+B}>hrsX zyYDj67WTR)l=#1|aZs^>bP0l+XkKy(EEC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b449d7b9918b0a536f67c9c2a72d7f6f53a215 GIT binary patch literal 945 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10n9V(1978H@y_s$6 z5gjPfu>bo8uZpcI6Bagm?rJgl*U+4>P>l2Kg|lL-t}V?_FL%FqXmCWw9n#Bv)s<^mVMGXBc63@rzQKl33JLH-g`f<`rXd=bCzo^U6Fcm zWuYJglLG?>1ET^1O9O)d0~3^!74T|PeMSZY&(B$+4(0XwpD)j6oYA!=Yr3h1>pyR) z?3|-tZl3S?87=DIeqVT6`aXsaRk^O(SHe%%DKA-Q_#`{*VoDR|^vToapKf_yX0T^x z@Ab48u9l?9r{^VTG9>>CGo9Y?{3Vl{^7`vxTkhTCBe2C<;@+KS^L~pRo_(9; zE#IP(E}=8FnEnJB)7o3A7IRMc|MV}6(_Xd*u>)nr%&u|Xl5GiMSO4-q`K$lp?LPJi zCYyx)nKuagUoQT8jI-90dqY@t;ey1MZ)aP3cQf;PPYVq>{EGc8U(&LZZypNXkK2>- z?L)`al35Gx243L$67zY!tqqfcP*?dqAGKGfCNHfFFF$#` zTrz2y=j3(9yY{;u$k3_hi4s|Sl11KWVUNGYwsx(nLTu8nX7;p5=B&`SEn6D0Y#{?{ ztX}`D{OoWqP1F0=*6oUsOMR)gT2v}rF?Qo~5N~Tx?dLv6?|0St=_29t$?3qI+~A~}74eUkA&_%()a={du?#@q M>FVdQ&MBb@0MW3N{Qv*} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/flash-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/flash-equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..32f699cb47348a360be83168a9a2e806c55fd970 GIT binary patch literal 1162 zcmV;51a(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ=5J^NqRCwC#+kZ%$bsWI)_w(F2J?_qV)9PZHOe=M5;>PlyB#;gESCjo9MrVOy ze^fRItI=$WWn)B>!PtgDY(*L&R&IebaC4OY(?5^d_jwwUYD6HAbq+I5|AYLw-2lb<6~KWy+P+ z9=^ln{M+?Xqj^mT(L8*tn}8lL&YN_cD9okRYUbhx6|`E-oG8p?-lPLCM#{S7hi}Nr z;D_;18nQB0T#x5IKzDp^!;~e%j6KVOtvH|RcdueA&c~i*!IEL-_}+#oKo=?XOO0k` zouMR|bt;sZQdj&RtJ;q>fTYvORHdg=WV_6k1K9-loGk~kDY9LrDm@*YP6m)xtNk-+ z796Tddmza5_fFFu2x3@3R$wvGD6kwQk7b7o);T^VMOT*f83x1i0ASO>J@tRel7y;heA8W%3i#JL5BTq8 zSqA_KiFk=<0K~h101yBIKmZ5;0U!VbfB+Bx0zd!=fCP*fZj3~~t`HAv2%-rH00AHX z1b`R@<1|znSL`(`{mQRDeSSt&RDuD8k9*(NSLL4#YMRE?LA$ikGC(G@+mr@u1s*?p zv}xwzool7aX8d#TKOiYtSC(uQaPgw7Hefk%M+oWd-U7d%Yn zT1oQzF!&VO#(g|#GU4z9I90HdOj+JIeE^}e1bV;#Y%V^S1HkCSOKiViL)))YjQQPE zCnu9;)Kfp>VaVg!PYY05vvb(=29%)6Eq@?N!%P7kfMDti}xlF1YE!r;IBUXS?kM216ok! z=7Nj%iD|C&yc6-{+5Z_p1-wfT?%(b@sFfu&RYOq}zO$bSpFRB7St!0774HH9KmZ7U c1dhK30AG}pvaJb90{{R307*qoM6N<$g1!+J-2eap literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..71d2a0932519e0ccb72626ddf90fe55e3f254b12 GIT binary patch literal 1219 zcmZXUeLNF*9LImV(DD#&)8vrLh*F5l84mL_t4-u&IMa26Xk=;fv~Zs0A#;&o9y3QQ zm6nKkn$F8(a&Gce*mC4C$b ziEk&?GA#)i+F|}jst`>UG~b5ks$pmx1jl<^%+W$|qCC-Vk0P%XxDC0ecy;WaMxBZ{ zXtA?;N_)&zJ5;@NpcL?0O&oCBInt}fhXYU{IlC23{#y~H4z2Zp3C?O-lSvN*QwV&J zHmI$xx4qeTt;-nxd}R_ZFLXvt_%KIQG|ODTytd-zZqT%cER90=+v?5%0I z#{Nsfgl346%39b$_A&(9UCsNpaul83iVdsDM0lFniJ+RGAd>bn78~X+pU0nclrEfc zS5!?;CR0q&zcWs=BlQ8j_@y&H0DiZ?r*$j<9nlj1f-efnI(@7hr^;V_O<7H65tjUw zx{LIPgD-4Dw9YvoTb2y3dMI?=eLN;CC~Q4~Ty)eB?}>V}oV>KQ`?A;Qxc-LS`xOUk z#8J!cz^6fEvKWUSb8%oXDilK1AuuDG;8aY|_2fhB^lWGKi`z|od^0XtudQTKX@L?c zc8mp%BA>PYwz%k!?{RX3*WaJft}@$l0h~9RztD&QBiqAK?gW}H zoA5-=_WCM+#AU&`yuK|n7U30@`<=zZjTU6YCn)S1ELeY=&9 z8&q<|)ikO}?vCIc(E`W;F#!1&{$y2c?l75N>)Jm{{byH>HdFc;ad0C`$BbM}JwdnLR+_``|mjbhl_(O%`k z2Q5}s;rmIdzME1M@E5dHzS~gaNvA-=Hj6fJV&&<3QMs|;c;R>OiG4y_hRn^P(OfJ6 zkBT%g3R%G-n5cCa7suV7@&~1CJ~8^X4nc6Q60pl^2tRK4NIK_Y>FVM{yacZXc z)}ah}>O5p)uBsaUUfV8%9?Kq`(&EEf$w+vs1&DiLz0ZT9`+1)iYgMqFK7aB;|@8{&Tim c)RSll@IzeINHa;QNA!Szy$#;F8toPH1!Qg}!To*Ck+Z=2mJzMw>kC<4U0Qdg(-n~l&J6E#9$o z_dJ|*G__yENUU(Wib~4$+sZee?9EfF^uCw>?{ixEv!li5Hl8kPmo;ZpU|?xr5MW?( zVBlb2L~!2ByLzf-Mmu{0-xlVKAN?I~B^lIA;_f}abLIZT|5HwDfA%S<)`_DhM{^u<>zC3?h_)l@!ztMpW*BIsPWj;LkC;u(#yhLp8&K))n z-tLx{>g(boG1*;iTVXsY0J`@AIBI<-($K zp=O^d|8)B`Ut(P1ct(ArjeVV9$DYRgGe!|^4CY&V88-N7GdX-?LJuX5hPhjU{9FD# z_sP4v+hZnNUMuCjfA!LJGw-SWNnG^idxO$@<*iz$%5JJ=PLygo#dM*u?DyW}w!;^F z>NoFXXI!Vz5+&+hXJe!Oue|xq@7x~F&Z$ZJ%Xt|44F1nq6~Z@TT3yxSJtqzseAyPn zcz>VW!$+U=7?$VnJ0CLnz!HPS8LFO38NT%GOJVe%{wU)1@$a`8yhAsdo__G*dN%vy zS&2VW~bLLL{T~+t97%sm}EoGm|tWeDeiuD7#-n?fpWj6fPpT}>` O00f?{elF{r5}E)YPC3i~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/off-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/off-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..38cc8ca8a677a6eff41865a4a05a760633f98c76 GIT binary patch literal 792 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10nC5x9IEGZ*dNccM z)@=uY)S1-{GD4T#8tfvelo#Xeo4EX^TNGfE|q)SKj6Z> z(D#I6_eNcShMXSZBiu{meqGbaWP21W%2 zmIej^1||nM=SqOoO*Up`1`huWhK!y5f-CJ99DYq&>!sOy(^+b9^u3D6zi-nczqxcY zI#xKfCvqs-*c8o6Fxu5H#m?fncH@Nfm}>`=7~JZkd;Wdf%=^3hScPUSL!FaJZg_mp z$8F5d9cP|oR4bXnrO?v;T>riU2fr6<@Z;AX>Sh)$j$eO!?kn@RmA}rrGziGq)!sS! z?;h{A+wKzl>OX#Fi>oi6uGyhgZU1_MM6$xKUX8xu#T8r!5`Y1?$IkCr&FR0*9$y99 z6fK_bObiiyILFybes7+5pbT^2B!=j-X|s-}eQKM_GI!fze*XCne{YYw_5a&l(=R~lED&0L=(SH% z?^^EPNs+?}UB^YeDm@N<^?>gpI7ZrtD9$o$iQ zF(v!;%if8%z1e{w_g_z*Wwt0|@$`d>LKUJ-%>)zQ30d^-zoX5$u2?c=2fx9ov(m-Z z>$WXFTI=<4>TUKL^Uencuy!qE-g~lh!bN-cm#H0~bP|yK)0*Mb8@nB*YqPl-fWXt$ K&t;ucLK6TIvqu&H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/flash-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/security.rsi/flash-equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..742af4cd0038b35a3420a9db84f43588c9002080 GIT binary patch literal 903 zcmV;219<$2P)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ<4M{{nRCwC#+s{waU>LyhZ($Jxl5PdI%z-GGXO** zQKi`999BOPi74d&P~3barl6o3x?|fmx^7VC>trhtBN~mMs%lXPx%vk~Rn@W}c-%f< zuJJpWHJa;_tYp&YxD8Q$qu*>+5A1 z2V5TneVWf1yVuX-M{2(O$y1x~#PnYqp9_D$@8rgSG#U-W^H<(9&B`AH6Y+!+4oo|( zE&a5fYh`0?qv*y1zxE5@>@RaD&jgO^8F27Q7BuQVqUr$Lj&cFWvw#2yfB*=9ybq{? zDCIAr-D&S0B#}rK?CA4(!N4gM zq0#|7KqC+UE)EU#&d>qPjjOE8Ed${92Z%-^q*Rsm?m;kch!o$aDjlG9AHe0lzP$-o z(@fER$QE+&fNM7f`b2cot9}jt5y>ss-TX>pGr2p9S`2k^wBsEO{kK zr2{xX2KWZp_aA%&AQWmNJTaSJG+|jLet!TUpA9DkU(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;xdt zzf}VLTb~WJ-WV8PTY1muNSWo83byT#%Vh^5qyyty9r!0GYjQvkI`)Ad%$=NJ_QVn9 zPR?K-_|eqg3-5Q+ALy4#CY#!W>p$tgCIT*;PjmUA#l(1xh;^KD@iDL8>?ab5^6=5C zzW2UuJGgEEfC^>sKI2u|M{!dQuq;c*VlfUM+REglMQYz3@^9az;QD?)pivR4f^H6VLQm>?mWq$N2RA)212U&dA1B;CfQm zGx2+XPP(s&fItG0>kZHg>1L{Q4ZIzIewK{{Am0K4KmZ5;0U!VbfB+Bx0zd!=00AHX z1i)QDOpJ$_ojs(1DIfuC@0WGPhAo7a7w3W1(-uJqdeo{hGUAa=*NdssKn3{hN5TIA zKq-Z3n#ALY)j981Tu+~x=G>V*08EV608C(;KeqAT05HwpM^J)Jqfk`A1L&Hm;0DS591lTqLIvq)CDwQYD ztH);c1CYr)27;zz;YFN8F@ZC~R#0)UT&o4fvY9ni~#kRgAL%EyoZ5C8&T bh~?J+o%m)y^qAz~00000NkvXXu0mjfPO7fe literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/icon-flash.png b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/icon-flash.png new file mode 100644 index 0000000000000000000000000000000000000000..a2da1025505f05814a43f78c6ef0f1b854b91553 GIT binary patch literal 826 zcmV-A1I7G_P)s> z6@Usr1>k=GP~0S4Jaf`Har%NNe;+?|*!f%Dr7M@kRBNV+Svzq2&|yap21vx}S(8k% zCYdA=t49w8rUd(E07j=V*-^HT$IOk7Y$5;G95>-=3(CShp0hSB2@nwQ`q4H2eLm)wq|GeF_B8B4jAbDkS)-Yy1k2#ztXBUutGK%J*sXaw+ z@Ipz*!j&7-0!#?V4UeDEw5pAE-%r$9FG{$IP+bT;s-f2e2-k=4=w5sceo|VR#?@`a zpF9IlW`b~Y2CAg6m)6h_(w0r6bc^am0jvmQ)FK(x!is=zQGiz6Lf*WQ<)I;@kQbl| zm>WR3dq5S{3NM=%l5bSe*DoXH%MngQsa+gFPeuqQBE)<-YSt}fxIyJrV++FXDFaB; zx!~pyNu0B9C`JvdM@b3{XRd@FqgnDM_bC1KaYE(a(9qw&W_TFnoi z2q+rb-Zr#-ZPYdB2x(lQHeQ2vpabn-2SGHxcYh@Q^ym^`6evw-&Dnu5V6gV)&b8+L z+mGZ^{fKH0Bhfge!7=QTL*LUc`0n-KRelYv<;`Z!TCs8tB)rZQtAD9HZeGPkry&78AOxrnw%qx! zAQ&CrV8;OmKBrAK89SPR0+0j7x*m4fGikd5_zgk5;`GAc3v069B? zwX2x8e*}Yy>&q)q<6^)g2^X&cum|yvARs4CS!`;M39gO+#A*XTO9WtZSIl_;DEa^_ zkN_~t0zfI^PvTn}0H8*8)>iH@!~C4Fh};iq9hN+DhaP3Se@HW;9z)@dx^uGjyV=wz z(&g!ucy08%;WWR>+caJ5ikb*=Z5{zvar1;Cr&u#nMUz3 z=hZq=r)Ezz3c7sD+|)~)wV|_zH)rOedsfX0R?YP+W=mk2BF)?nDH(SpTB^@FrzB3j z@t`$-+d2#PqrDWQML2syFv-}=9gCg60&Xx20%S-9s0NqfT1(|6R{H3m1D=(}gJ11P zfwwkEd;W%oy)BZcfA>^9v+aq~Q%h=QWO2r;Ice>d!lA*?%A)9lA*_dTNpaTEKIVOq zSxdF+<|OxRzRi@2Dy*$So@4nBl_z7!!G1}Mx~7aE2s zH?h_UfiQHZIpNbBq;T+&=XTD~HHR*MtfX}FBEPrmH;pN7HQKlV|+)dRVM&#(PZ zNeEKPANXWy9K-19A$=fLi1rx0pvf2WL+aHoW&UwSB-zM`2uFmhK11D>stYs8v_9!` zmjnLW;#xDYJ&0zpsa2{sU2px&E66F`Aifmk%HTkq&+hkrL`eoQ!<>>q=gsI~OfGJp zwp+?S<*}R1T;u7TfnUv$#Yx|55gu^dqm78lJ4~!6%SAqpPYBfN5nGTh=6n3 zo#+P&-OhSbUdJXK7Ka8@_I&ab6vXauxE*!r)X@ofH0`*CWMEH-_neL4xpGFZaW%f2 zF>7OZ;ahx>aOCA+>7ju(pk>NEUZaA&(uE(HA^=vEhDaRKl3teu6C-G_4V+ zj2pX&YqD3oFx#YfsAyHqU;qH$zhhQ*7w+Gl?%dbyE6J|IKnP$zO-ke6V5x5uuVZHT z-7TuFZgZDeIxi)qaeur^wT7Gix@tuj_t3ey_uky@SbUQc>H4-hSCT_(jr=_&>5bIs z@P?6LxM@*mE%bwe za6wr66R4oL?Tqukx%e8pHzPU(Zlz%(=!`DZroc<7^87iLzw4|I)*_l}pnSC>>{T^o z((Sv?FV<|YxRh!IwXfW6*|I0V#;9eOp#Sq)^;O<`A-6N?9XmDg0;Dee^(|y=#Ftew zudzjX6+zQ>^VB!$3%sMo!mFL$OV#*XbRqOl|QI@nr%^q;OScgcdhR#kBbmrqD9b(jb5vvaC+2vAZlHHpiz_ z;R2GO)-upKyzQsu>sxrUZ`*Sf2%THD!P6x~RyL977LIlUC|D^(FtbHmY$FNBOlS>Y zQQ^W5Ni(?0PSQM>F3^PIBp3h<{tco_L(S4)fAi&}b%%;T@v8xL=bWs|@uWNd2YDeE AW&i*H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..c1350c82422d333e47e4ee556249d0deb809e2d4 GIT binary patch literal 1398 zcmZvcc{mh!7{`B%8RQt(FlN)bdUAziWroSP*>w!9D<)H;T2$j2O_3(&Vwv275xI{j zv^1I=<=VDrqKFCQn8+1T8MNcCeV%>xkMHO6Jn!>9?_clpO~$*}OYKAL0{}=lI@q`i zjN6MCOu*W}&G&_sgkzhw4 zv-Vb2G6$kp4OaiM=g&#dw_>-cFOjkbOXZV%Ld2hj*fh&(-8S@YUG_SyyhN}ciK4@~ z`W1y4@fdsb7PfU6 zz^&sIS0uXSe8a{)HHEF>6?!U#O`|X_XJdsdR1C=K$km~tP#uUVqOgDxnY@m(ZK=nO zYN2Xt=fz-w)wMB_i8bd3H=CJdt_#s!fYFpc#i>`wx&~>wqgYFow_Zgr*DwtNM5<}^=Vlbmq$wOOv1{Bf zxwR%X<#~?ri0-24{j7xyU(mw-qC=Bdh4^hg6bdn8e)V(VN*~(0@Ua+d8<1#$PWcrr zf7AtM-q{H-n@B}vWoVxo#m7<0^6QETW#wbgDcJq9$7Aa&SKyl?7&Nw0RyS%UM7@G@ z^)h28U)zNqh|4?7Ltp#znXnF#=;2s?PWG)vch!0C=_dJNc9Lm$QoISo6Vchvzbbr> zvE&yy-1zXC#O`g&X#GP1Mz)gQHI?btkr`X1_(UZuN!(e>KEi_K8xQ(OtK!9FwRRnY zr|laLih|WNnmFofK$G_A!jm^QV$K|{@6JLs=6ViDf9ACZbBFysfXHgeS|P-D<;$dM z=%RF4N7~Kwfg_RHKfj+LEPq$Ny*3URr?JeZrBtPym@hVP#&W%()D;qmHobbPG{f*v z1Qs|kwt9n7X~u@jSk~Q(0l&q*Y?MrQgz(D;K5S^S`!+8eO}owrW}}M-Aw!*?#R+h3 zdapydabi`KfS2q^KD?^u!N&_lwOrAPItivoH@sq%Rd`Ahd=YJtU~4Nh);@lUj6uVn zC5X*$_pOx=o$dlNGmr%%x7?kT4H>mK#7zWLRmu8)zSlh1-MxQ6!B)FERJReI)$#9t zuhU*>v!ZtA(wj5Qzvj$7Mqtw#jqUsEH9jow5U$J#&7jGmca+Gr@Y>q9!+CsUy7N?v znPa&zN@v7UCL;l_AbXP+-E((^sWLvwq4k|PzsrRNtyIXIM72^QxWgP4Bvwq=R)oeB z-p7N%XIqrJ7tM3qjJ7|%wpN!??iw#FFrB!T=t(r6(!~J%&XozgT~88OJw2i8=r2QW zjd|A>EAXu!d26~Ek@BIfgJN7?j6l$o@Is6eV$`AhW_f=8i;pTFc4UNgA zC`i9{iA-B3r5YOg8I%2yJ^a3+>LEPBl0cHbTTxp6H`XRq1}BVkm9`+xmHEG@`pM{> zsUEdP!sLb;wSxO(-T~RWr7UTzfS~mVr+CrX6Oo^YgE>ZYddjGZ-Smmyzexf&?}+Vs zlhoN{QHIqejKWoG&8Wvk_1Nm2;d^u!7fj4L zhAHo<(fLk>$0*0b>TL6xvNnXmj%e=HO=ri`NeG~%&ndQfu{{Kx2^?)*Y#OYHvHt)= CF?9w2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..db67f97b6f48060f71b90e5d0d50f5975448e651 GIT binary patch literal 1389 zcmZ9Mc|6m99LGP~m$5^+V{U%vq2!1TM}}#HNLo`rS~=(VZO*h=nsN_tE<{0Jo zLkKw%DMzIwrXm^Tm?KGk>)-x(y`GQ9`_I?w^>`<{9wtbjuqXh4go8caO-S5ti6eww zMhP7g0!g#?2nPTy^II^Glcyj&s(ahJIRik~27nz8z}lve(*Q&o0>CE&V3rNQHfqMH z&VvAm2psU%?$PgNb9vOvV+vhXQ=Y8BD3u`py0jyNiySQ_oggT7JCbZ{O-3ShXvwUE zy@_<+ro|p5ZQ5jd(mf<1G)L6I9pTuKihG=PKeDAEP3lX7aR8$!fVaTafWtBd^L3}~ zTnfU+1TkY%7Nv8HW;wS*#0QiL+EE}2L~$_JKR~>F6NtdsXKSg~bAL2A1FOnSV}f;@ zPV_3zR)_uTtACi)YW}vqNJO7mPQvyhFw%NmVK-lZ78|+l6@kHYUC=mSUag?5r@eR@ zflo%A9stUZuF5f^l<`Gzo~LR}m%N ziu?}S_1zQH&u(ctEVio=@@91RaUerQ1gDb1om?zCM`SfYeQJss3yMP(K{n09FDCoA ze{65JuXd(J|rU$8GMxajj>YOA=?C1EWR2TvZ`4DxVX@8#&L06cA zj=9->(|+nwq28JSq#oNS!Bcr_@rISUG?06FbN`c#4!F#eOmTX;@#@*U#JR1(FnK); z4pzU_N$uGblpKv&FJe9mWN-8zkX}&eT3iE$o{I)q{;f=MPk2*lP;dZt1iyvxfNgry z|0f?)aEDQsWoE$7-{GT_)oQ6OTAVg1h*e5<5VoPk`Q6E0=}h`OXK>1kqh@m`8Mia! z!d?9~v+C71ih(8~{mboX|J_Y_56R!g3k;gLRz>-ij1^AeSZ&D2qT@8cw21vnaQ9%2 zPTj%p`20<)K!wdAf#UnOvUsDuymVS|+(*{Rb9+k(J%DQM*|T6g10_WN&?Ko=aWZtv zue0H|z;=N86Z2JHo6{#pG+@rl=Qr(bUd6g73 zKgE8X9+MjRb8tCi3yr*wRiy{$^C`@h4{F$s$OVI(i{2C5r5bL{h2^Wn^E@Vhm#=2R z4L_vC3o`T3O~)mMX(AK#h#>S0K4Ww`B;gexV{?{&)IIN^$v$6iCY zxn%`m`n_1{+<7$oK=f#8v=yHJ($Q5`!|AAnePscLgi;QmpkwX&&rVAdyRbXax0t5* z)KL*Tx#Z@K#bZaIv3ub)EyLE1CzJ3N2S1*;tfHc{@M?`V92lxPi~Fpdl`L7N2_c|L zS841lvav{CBxjueUAcQg--%*i+Ah;O_0?6!<{k<_?V+*Fn@Y0V+Wc$;T+P=~AHM}8 zR`PRtkAb0LPH`mb>m?WwG7d?-tLy*noy!5Nn;X#Y*FOsjH&!gb?=JhIJZG%sN&#TRDV_7;$=* f27KPP=mT?)5?kV#*Wc#>H86O(`njxgN@xNAZwsk4 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/inhand-right.png deleted file mode 100644 index 1a23feecdbb745c8c09a57dfe7e7d99ec7a49ef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)GAB7WD?UXu zPdF<=NjX(5BQ-E3H(7VK(f|Me0d!JMQvg8b*k%9#0Bw3ySad{Xb7OL8aCB*JZU6vy zoKseCa&`CgQ*iP1Y+I1~vw87-cAIns{Djo{RytO}uWhALb2?UADE@fTNre z%>lJdDK7CczrvO6bhA@R#&N$5007`W@s)%cUrA8rT_r&aaFqltz*Q2|4Ll`54e*o% hHNjO9R37@<{{W^A23Y-By`}&F002ovPDHLkV1l?9sBr)Q diff --git a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json index 366c8b9bdc..22a5d5a234 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json @@ -16,19 +16,27 @@ "directions": 1 }, { - "name": "equipped-HELMET", + "name": "off-equipped-HELMET", "directions": 4 }, { - "name": "flash-equipped-HELMET", + "name": "off-inhand-left", "directions": 4 }, { - "name": "inhand-left", + "name": "off-inhand-right", "directions": 4 }, { - "name": "inhand-right", + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..90b7c2574adeecfa3040d9d98c8ede416017c63e GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10n58{k978H@y_t32 zTO?5A`2N=?_;zn~j?8!#)hVqJ^eu=(`fYQU!nb8PB0_lzPHutU7Tk8W(_!Ii{kckC z=!$oJ!+xhs-oVGSCJvlk~Q|;=-zIK@}-@d=5`S!I& z)$Fs=ZrLxmdQnaEndrl)kEJ5dL}d$})xQX~Vu_i`EX3f#Di`)mZxK`dg4j;G4S$?B z#+|$#F59rW$YIs`Qib}3GG)cqQM=p{&9^H9IbXN-?eKeZ{dGF`6YapgLC-_yGczO{ zvhHZxrRH;n|MA?ry_a-2c}sl@s@a6E#qSJl6MENn=UL?JLoMY2(#{JG1+i{V=UAGb zWALJP$DdPdK#u6NRV}|ioM*i-XE)RHTXC#Xlw~Xbc?+qe&pFTHkZI7-@b_f$zy8$8}vDzdo0$QXZLJP0;kiS55i5V z8qS@|@5{HVWLcRSJO7SyF^%x)}3O^e0eGS=g&F+vtpi4j^+I)*$@(S zO4;!ik04rPI570>URk9y<;=pARprx7SYYuKAhST%S|@g%kF3))vAO+Md4ZAfkf&U1 zV^mYhD-M&d>?PN}c=E4~e_VTkb@9QL6$c*QJ1TzTrXXXdqsEqb_lge`9W>uk()+0I zrl$4#Z#)mX%SG<>YKlx3TfBLhzt?NUg3JFTC*N;ReV!bd{6B`_PA1>Y`Y$hS*(JWX zP5JufnoNZEs=|9o(}G{^KeYPgejcvqz?zz0LW!4oe$~pdE2Ox{BwUa_XrLpetZ2Yf zox(AT>B8;%Yoohbo;<($^?ro-q8Br3nX)}i88o~WGixnBes$YnK9{7|e-j)1PrYK! h&<7{T3$y;pGThwaJ+1xEwm=3T@O1TaS?83{1OT0ygNy(G literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..de647331f939c0eba7e9f53f0f06c9150a89eb70 GIT binary patch literal 1003 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 S`f{ZJ0000 literal 0 HcmV?d00001 From 39c220c4331c00ae13d06835557e3235dc51c874 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sun, 10 Jan 2021 15:40:04 +0100 Subject: [PATCH 085/166] Rehydratable component attaches spawned entities to grid or map. Also fix crash when injecting rehydratable with a solution. - Fixes #2969 --- .../Components/Chemistry/RehydratableComponent.cs | 4 +++- .../Components/Chemistry/SharedSolutionContainerComponent.cs | 5 ++--- Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs b/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs index e5cc33c2ff..59d95f2054 100644 --- a/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs @@ -3,6 +3,7 @@ using Content.Server.Utility; using Content.Shared.Chemistry; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; using Robust.Shared.GameObjects; using Robust.Shared.Localization; using Robust.Shared.Serialization; @@ -67,7 +68,8 @@ namespace Content.Server.GameObjects.Components.Chemistry Owner.PopupMessageEveryone(Loc.GetString("{0:TheName} expands!", Owner)); if (!string.IsNullOrEmpty(_targetPrototype)) { - Owner.EntityManager.SpawnEntity(_targetPrototype, Owner.Transform.Coordinates); + var ent = Owner.EntityManager.SpawnEntity(_targetPrototype, Owner.Transform.Coordinates); + ent.Transform.AttachToGridOrMap(); } Owner.Delete(); } diff --git a/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs b/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs index c7c35f4295..584ab4cd19 100644 --- a/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs +++ b/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs @@ -171,8 +171,7 @@ namespace Content.Shared.GameObjects.Components.Chemistry private void SolutionChanged() { - EntitySystem.Get() - .HandleSolutionChange(Owner); + EntitySystem.Get().HandleSolutionChange(Owner); } private void ProcessReactions() @@ -212,7 +211,7 @@ namespace Content.Shared.GameObjects.Components.Chemistry private void UpdateAppearance() { - if (!Owner.TryGetComponent(out var appearance)) + if (Owner.Deleted || !Owner.TryGetComponent(out var appearance)) return; appearance.SetData(SolutionContainerVisuals.VisualState, GetVisualState()); diff --git a/Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs b/Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs index 9c414cd6f8..e6e531eb1a 100644 --- a/Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/ChemistrySystem.cs @@ -36,6 +36,9 @@ namespace Content.Shared.GameObjects.EntitySystems foreach (var solutionChangeArg in solutionChangeArgs) { solutionChangeArg.SolutionChanged(eventArgs); + + if (owner.Deleted) + return; } } } From c557923cce48037db7ff412c467361bf3ace80c4 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sun, 10 Jan 2021 15:52:57 +0100 Subject: [PATCH 086/166] Hide deadchat bubbles if the player's mob doesn't have a GhostComponent Fixes #2964 --- Content.Client/Chat/ChatManager.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Content.Client/Chat/ChatManager.cs b/Content.Client/Chat/ChatManager.cs index 07431434ab..96910110f8 100644 --- a/Content.Client/Chat/ChatManager.cs +++ b/Content.Client/Chat/ChatManager.cs @@ -1,11 +1,13 @@ using System.Collections.Generic; using Content.Client.Administration; +using Content.Client.GameObjects.Components.Observer; using Content.Client.Interfaces.Chat; using Content.Shared.Administration; using Content.Shared.Chat; using Robust.Client.Console; using Robust.Client.Interfaces.Graphics.ClientEye; using Robust.Client.Interfaces.UserInterface; +using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.GameObjects; @@ -25,6 +27,8 @@ namespace Content.Client.Chat { internal sealed class ChatManager : IChatManager, IPostInjectInit { + [Dependency] private IPlayerManager _playerManager = default!; + private struct SpeechBubbleData { public string Message; @@ -387,7 +391,13 @@ namespace Content.Client.Chat switch (msg.Channel) { case ChatChannel.Local: + AddSpeechBubble(msg, SpeechBubble.SpeechType.Say); + break; + case ChatChannel.Dead: + if (!_playerManager.LocalPlayer?.ControlledEntity?.HasComponent() ?? true) + break; + AddSpeechBubble(msg, SpeechBubble.SpeechType.Say); break; From 654cca13bfd905fc39829094e7e132c21ee24796 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sun, 10 Jan 2021 16:01:16 +0100 Subject: [PATCH 087/166] Fixes disposals not flushing down stuff. Fixes #2933 --- .../GameObjects/Components/Disposal/DisposalEntryComponent.cs | 2 +- .../GameObjects/Components/Disposal/DisposalUnitComponent.cs | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs index b8fe213197..21a2409908 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs @@ -23,7 +23,7 @@ namespace Content.Server.GameObjects.Components.Disposal var holder = Owner.EntityManager.SpawnEntity(HolderPrototypeId, Owner.Transform.MapPosition); var holderComponent = holder.GetComponent(); - foreach (var entity in from.ContainedEntities) + foreach (var entity in from.ContainedEntities.ToArray()) { holderComponent.TryInsert(entity); } diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs index b1abeb9455..d3f1b3230b 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs @@ -287,10 +287,6 @@ namespace Content.Server.GameObjects.Components.Disposal } var entryComponent = entry.GetComponent(); - foreach (var entity in _container.ContainedEntities.ToList()) - { - _container.Remove(entity); - } if (Owner.Transform.Coordinates.TryGetTileAtmosphere(out var tileAtmos) && tileAtmos.Air != null && From 3157da2db72ea4f7b9fe500fcae9c4ff8e81f1be Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sun, 10 Jan 2021 16:10:28 +0100 Subject: [PATCH 088/166] Bottles break when thrown and spill their contents on the ground. Fixes #2918 --- .../Thresholds/Behavior/SpillBehavior.cs | 24 +++++++++++++++++++ .../Entities/Objects/Consumable/drinks.yml | 1 + .../Objects/Consumable/drinks_bottles.yml | 20 +++++++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/SpillBehavior.cs diff --git a/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/SpillBehavior.cs b/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/SpillBehavior.cs new file mode 100644 index 0000000000..53ac16d632 --- /dev/null +++ b/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/SpillBehavior.cs @@ -0,0 +1,24 @@ +#nullable enable +using Content.Server.GameObjects.Components.Chemistry; +using Content.Server.GameObjects.Components.Fluids; +using Content.Server.GameObjects.EntitySystems; +using JetBrains.Annotations; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Destructible.Thresholds.Behavior +{ + [UsedImplicitly] + public class SpillBehavior : IThresholdBehavior + { + public void ExposeData(ObjectSerializer serializer) { } + + public void Trigger(IEntity owner, DestructibleSystem system) + { + if (!owner.TryGetComponent(out SolutionContainerComponent? solutionContainer)) + return; + + solutionContainer.Solution.SpillAt(owner.Transform.Coordinates, "PuddleSmear", false); + } + } +} diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml index 6f3b454fcf..c01489c8d5 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml @@ -30,6 +30,7 @@ behaviors: - !type:PlaySoundCollectionBehavior soundCollection: GlassBreak + - !type:SpillBehavior { } - !type:SpawnEntitiesBehavior spawn: ShardGlass: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml index 51fe476ff3..82da85a1da 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml @@ -10,8 +10,26 @@ transferAmount: 5 - type: Sprite state: icon - + - type: DamageOnLand + amount: 5 + - type: DamageOtherOnHit + amount: 10 - type: Spillable + - type: Damageable + - type: Destructible + thresholds: + 5: + behaviors: + - !type:PlaySoundCollectionBehavior + soundCollection: GlassBreak + - !type:SpillBehavior { } + - !type:SpawnEntitiesBehavior + spawn: + ShardGlass: + min: 1 + max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity parent: DrinkBottleBaseFull From 07776358eb27af078f95ea30e52be95f0693ce95 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sun, 10 Jan 2021 16:16:18 +0100 Subject: [PATCH 089/166] Balance hunger & thirst movement slowdown. Fixes #2877 (in my opinion) --- .../GameObjects/Components/Nutrition/SharedHungerComponent.cs | 4 ++-- .../GameObjects/Components/Nutrition/SharedThirstComponent.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs b/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs index 7faa1d69a6..c5e7dc21d5 100644 --- a/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs +++ b/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs @@ -20,7 +20,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition { if (CurrentHungerThreshold == HungerThreshold.Starving) { - return 0.5f; + return 0.75f; } return 1.0f; } @@ -31,7 +31,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition { if (CurrentHungerThreshold == HungerThreshold.Starving) { - return 0.5f; + return 0.75f; } return 1.0f; } diff --git a/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs b/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs index 70ad6d4976..3372566550 100644 --- a/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs +++ b/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs @@ -19,7 +19,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition { if (CurrentThirstThreshold == ThirstThreshold.Parched) { - return 0.25f; + return 0.75f; } return 1.0f; } @@ -30,7 +30,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition { if (CurrentThirstThreshold == ThirstThreshold.Parched) { - return 0.5f; + return 0.75f; } return 1.0f; } From 5ec8e81ddbffe071794eddbf9c93d27ef24f8ef3 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sun, 10 Jan 2021 16:21:09 +0100 Subject: [PATCH 090/166] Fixes syringe/injector item status volume not being updated correctly. Fixes #2843 --- .../Components/Chemistry/InjectorComponent.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/Components/Chemistry/InjectorComponent.cs b/Content.Server/GameObjects/Components/Chemistry/InjectorComponent.cs index 2f59c9fad5..76fc2f8b29 100644 --- a/Content.Server/GameObjects/Components/Chemistry/InjectorComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/InjectorComponent.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Content.Server.GameObjects.Components.Body.Circulatory; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Chemistry; +using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; using Content.Shared.Utility; @@ -23,7 +24,7 @@ namespace Content.Server.GameObjects.Components.Chemistry /// containers, and can directly inject into a mobs bloodstream. /// [RegisterComponent] - public class InjectorComponent : SharedInjectorComponent, IAfterInteract, IUse + public class InjectorComponent : SharedInjectorComponent, IAfterInteract, IUse, ISolutionChange { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; @@ -71,6 +72,8 @@ namespace Content.Server.GameObjects.Components.Chemistry // Set _toggleState based on prototype _toggleState = _injectOnly ? InjectorToggleMode.Inject : InjectorToggleMode.Draw; + + Dirty(); } /// @@ -280,6 +283,11 @@ namespace Content.Server.GameObjects.Components.Chemistry Dirty(); } + public void SolutionChanged(SolutionChangeEventArgs eventArgs) + { + Dirty(); + } + public override ComponentState GetComponentState() { Owner.TryGetComponent(out SolutionContainerComponent? solution); From ad5192695f2e2e1a0b5cdf11b3abb171f0e8cb85 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Sun, 10 Jan 2021 20:07:54 +0100 Subject: [PATCH 091/166] Adds verb and command to make any entity "sentient" (player-controllable) (#2970) * Adds verb and command to make any entity "sentient" (player-controllable) * oops --- .../Commands/MakeSentientCommand.cs | 52 +++++++++++++++++++ .../GlobalVerbs/MakeSentientVerb.cs | 49 +++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 Content.Server/Commands/MakeSentientCommand.cs create mode 100644 Content.Server/GlobalVerbs/MakeSentientVerb.cs diff --git a/Content.Server/Commands/MakeSentientCommand.cs b/Content.Server/Commands/MakeSentientCommand.cs new file mode 100644 index 0000000000..53197b3908 --- /dev/null +++ b/Content.Server/Commands/MakeSentientCommand.cs @@ -0,0 +1,52 @@ +#nullable enable +using Content.Server.Administration; +using Content.Server.GameObjects.Components.Mobs; +using Content.Server.GameObjects.Components.Movement; +using Content.Shared.Administration; +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.Player; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; + +namespace Content.Server.Commands +{ + [AdminCommand(AdminFlags.Fun)] + public class MakeSentientCommand : IClientCommand + { + public string Command => "makesentient"; + public string Description => "Makes an entity sentient (able to be controlled by a player)"; + public string Help => "makesentient "; + + public void Execute(IConsoleShell shell, IPlayerSession? player, string[] args) + { + if (args.Length != 1) + { + shell.SendText(player, "Wrong number of arguments."); + return; + } + + if (!int.TryParse(args[0], out var id)) + { + shell.SendText(player, "Invalid argument."); + return; + } + + var entId = new EntityUid(id); + + var entityManager = IoCManager.Resolve(); + + if (!entityManager.TryGetEntity(entId, out var entity) || entity.Deleted) + { + shell.SendText(player, "Invalid entity specified!"); + return; + } + + if(entity.HasComponent()) + entity.RemoveComponent(); + + entity.EnsureComponent(); + entity.EnsureComponent(); + } + } +} diff --git a/Content.Server/GlobalVerbs/MakeSentientVerb.cs b/Content.Server/GlobalVerbs/MakeSentientVerb.cs new file mode 100644 index 0000000000..5206e89264 --- /dev/null +++ b/Content.Server/GlobalVerbs/MakeSentientVerb.cs @@ -0,0 +1,49 @@ +using Content.Server.Commands; +using Content.Server.GameObjects.Components.Mobs; +using Content.Shared.GameObjects.Verbs; +using Robust.Server.Console; +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; + +namespace Content.Server.GlobalVerbs +{ + [GlobalVerb] + public class MakeSentientVerb : GlobalVerb + { + public override bool RequireInteractionRange => false; + public override bool BlockedByContainers => false; + + public override void GetData(IEntity user, IEntity target, VerbData data) + { + data.Visibility = VerbVisibility.Invisible; + + var groupController = IoCManager.Resolve(); + + if (user == target || target.HasComponent()) + return; + + var player = user.GetComponent().playerSession; + if (groupController.CanCommand(player, "makesentient")) + { + data.Visibility = VerbVisibility.Visible; + data.Text = Loc.GetString("Make Sentient"); + data.CategoryData = VerbCategories.Debug; + } + } + + public override void Activate(IEntity user, IEntity target) + { + var groupController = IoCManager.Resolve(); + + var player = user.GetComponent().playerSession; + if (!groupController.CanCommand(player, "makesentient")) + return; + + new MakeSentientCommand().Execute(IoCManager.Resolve(), player, + new[] {target.Uid.ToString()}); + } + } +} From 8def38aed4c6e87999598c46a7d94ba40febb7e9 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Sun, 10 Jan 2021 20:08:07 +0100 Subject: [PATCH 092/166] SetAnchor debug command and verb (#2972) --- Content.Server/Commands/SetAnchorCommand.cs | 58 +++++++++++++++++++++ Content.Server/GlobalVerbs/SetAnchorVerb.cs | 56 ++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 Content.Server/Commands/SetAnchorCommand.cs create mode 100644 Content.Server/GlobalVerbs/SetAnchorVerb.cs diff --git a/Content.Server/Commands/SetAnchorCommand.cs b/Content.Server/Commands/SetAnchorCommand.cs new file mode 100644 index 0000000000..532458d55e --- /dev/null +++ b/Content.Server/Commands/SetAnchorCommand.cs @@ -0,0 +1,58 @@ +#nullable enable +using Content.Server.Administration; +using Content.Shared.Administration; +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.Player; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; + +namespace Content.Server.Commands +{ + [AdminCommand(AdminFlags.Debug)] + public class SetAnchorCommand : IClientCommand + { + public string Command => "setanchor"; + public string Description => "Sets the anchoring state of an entity."; + public string Help => "setanchor "; + public void Execute(IConsoleShell shell, IPlayerSession? player, string[] args) + { + if (args.Length == 0 || args.Length > 2) + { + shell.SendText(player, "Invalid number of argument!"); + return; + } + + if (!int.TryParse(args[0], out var id)) + { + shell.SendText(player, "Invalid argument specified!"); + return; + } + + var entId = new EntityUid(id); + + var entityManager = IoCManager.Resolve(); + + if (!entityManager.TryGetEntity(entId, out var entity) || entity.Deleted || !entity.TryGetComponent(out PhysicsComponent? physics)) + { + shell.SendText(player, "Invalid entity specified!"); + return; + } + + if (args.Length == 2) + { + if (!bool.TryParse(args[1], out var value)) + { + shell.SendText(player, "Invalid argument specified!"); + return; + } + + physics.Anchored = value; + return; + } + + physics.Anchored = !physics.Anchored; + } + } +} diff --git a/Content.Server/GlobalVerbs/SetAnchorVerb.cs b/Content.Server/GlobalVerbs/SetAnchorVerb.cs new file mode 100644 index 0000000000..1fa2246d7d --- /dev/null +++ b/Content.Server/GlobalVerbs/SetAnchorVerb.cs @@ -0,0 +1,56 @@ +#nullable enable +using Content.Server.GameObjects.Components.Nutrition; +using Content.Shared.GameObjects.Components.Damage; +using Content.Shared.GameObjects.Verbs; +using Robust.Server.Console; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; + +namespace Content.Server.GlobalVerbs +{ + [GlobalVerb] + public class SetAnchorVerb : GlobalVerb + { + public override bool RequireInteractionRange => false; + public override bool BlockedByContainers => false; + + public override void GetData(IEntity user, IEntity target, VerbData data) + { + data.CategoryData = VerbCategories.Debug; + data.Visibility = VerbVisibility.Invisible; + + var groupController = IoCManager.Resolve(); + + if (user.TryGetComponent(out var player)) + { + if (!target.TryGetComponent(out PhysicsComponent? physics)) + { + return; + } + + if (groupController.CanCommand(player.playerSession, "setanchor")) + { + data.Text = physics.Anchored ? "Unanchor" : "Anchor"; + data.Visibility = VerbVisibility.Visible; + } + } + } + + public override void Activate(IEntity user, IEntity target) + { + if (user.TryGetComponent(out var player)) + { + var groupController = IoCManager.Resolve(); + if (!groupController.CanCommand(player.playerSession, "setanchor")) + return; + + if (target.TryGetComponent(out PhysicsComponent? physics)) + { + physics.Anchored = !physics.Anchored; + } + } + } + } +} From 12c733654cb295b9c1e1f7d598fa1d72770296fb Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Sun, 10 Jan 2021 20:12:34 +0100 Subject: [PATCH 093/166] Basic gibbing (#2973) * Adds gibbing * Adds adminbused absurd-damage foamblade * Sane parts * BaseOrgan -> BaseMechanism * Do not do random offset on shared, fix killing oneself with click attacks * BaseMechanism -> BaseHumanOrgan -> *stuff* * Account for prediction, again * Add gibbing sound --- .../EntitySystems/MeleeWeaponSystem.cs | 57 +++++++++--------- .../Components/Body/BodyComponent.cs | 30 +++++++++ .../Components/Body/Part/BodyPartComponent.cs | 2 + .../Thresholds/Behavior/GibBehavior.cs | 27 +++++++++ .../Components/Recycling/RecyclerComponent.cs | 2 +- .../GameObjects/Components/Body/IBody.cs | 5 ++ .../Components/Body/Part/IBodyPart.cs | 5 ++ .../Body/Part/SharedBodyPartComponent.cs | 9 +++ .../Components/Body/SharedBodyComponent.cs | 16 +++++ Resources/Audio/Effects/gib1.ogg | Bin 0 -> 28202 bytes Resources/Audio/Effects/gib2.ogg | Bin 0 -> 34200 bytes Resources/Audio/Effects/gib3.ogg | Bin 0 -> 26609 bytes .../Body/Mechanisms/basic_human_organs.yml | 25 ++++++++ .../Prototypes/Body/Parts/humanoid_parts.yml | 1 + .../Entities/Mobs/Species/human.yml | 5 ++ .../Prototypes/Entities/Objects/Fun/toys.yml | 10 ++- Resources/Prototypes/SoundCollections/gib.yml | 6 ++ SpaceStation14.sln.DotSettings | 1 + 18 files changed, 172 insertions(+), 29 deletions(-) create mode 100644 Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/GibBehavior.cs create mode 100644 Resources/Audio/Effects/gib1.ogg create mode 100644 Resources/Audio/Effects/gib2.ogg create mode 100644 Resources/Audio/Effects/gib3.ogg create mode 100644 Resources/Prototypes/SoundCollections/gib.yml diff --git a/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs b/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs index 7f4ec946fc..e35c150cd2 100644 --- a/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs @@ -51,39 +51,42 @@ namespace Content.Client.GameObjects.EntitySystems var attacker = EntityManager.GetEntity(msg.Attacker); - var lunge = attacker.EnsureComponent(); - lunge.SetData(msg.Angle); - - var entity = EntityManager.SpawnEntity(weaponArc.Prototype, attacker.Transform.Coordinates); - entity.Transform.LocalRotation = msg.Angle; - - var weaponArcAnimation = entity.GetComponent(); - weaponArcAnimation.SetData(weaponArc, msg.Angle, attacker, msg.ArcFollowAttacker); - - // Due to ISpriteComponent limitations, weapons that don't use an RSI won't have this effect. - if (EntityManager.TryGetEntity(msg.Source, out var source) && msg.TextureEffect && source.TryGetComponent(out ISpriteComponent sourceSprite) - && sourceSprite.BaseRSI?.Path != null) + if (!attacker.Deleted) { - var sys = Get(); - var curTime = _gameTiming.CurTime; - var effect = new EffectSystemMessage + var lunge = attacker.EnsureComponent(); + lunge.SetData(msg.Angle); + + var entity = EntityManager.SpawnEntity(weaponArc.Prototype, attacker.Transform.Coordinates); + entity.Transform.LocalRotation = msg.Angle; + + var weaponArcAnimation = entity.GetComponent(); + weaponArcAnimation.SetData(weaponArc, msg.Angle, attacker, msg.ArcFollowAttacker); + + // Due to ISpriteComponent limitations, weapons that don't use an RSI won't have this effect. + if (EntityManager.TryGetEntity(msg.Source, out var source) && msg.TextureEffect && source.TryGetComponent(out ISpriteComponent sourceSprite) + && sourceSprite.BaseRSI?.Path != null) { - EffectSprite = sourceSprite.BaseRSI.Path.ToString(), - RsiState = sourceSprite.LayerGetState(0).Name, - Coordinates = attacker.Transform.Coordinates, - Color = Vector4.Multiply(new Vector4(255, 255, 255, 125), 1.0f), - ColorDelta = Vector4.Multiply(new Vector4(0, 0, 0, -10), 1.0f), - Velocity = msg.Angle.ToVec(), - Acceleration = msg.Angle.ToVec() * 5f, - Born = curTime, - DeathTime = curTime.Add(TimeSpan.FromMilliseconds(300f)), - }; - sys.CreateEffect(effect); + var sys = Get(); + var curTime = _gameTiming.CurTime; + var effect = new EffectSystemMessage + { + EffectSprite = sourceSprite.BaseRSI.Path.ToString(), + RsiState = sourceSprite.LayerGetState(0).Name, + Coordinates = attacker.Transform.Coordinates, + Color = Vector4.Multiply(new Vector4(255, 255, 255, 125), 1.0f), + ColorDelta = Vector4.Multiply(new Vector4(0, 0, 0, -10), 1.0f), + Velocity = msg.Angle.ToVec(), + Acceleration = msg.Angle.ToVec() * 5f, + Born = curTime, + DeathTime = curTime.Add(TimeSpan.FromMilliseconds(300f)), + }; + sys.CreateEffect(effect); + } } foreach (var uid in msg.Hits) { - if (!EntityManager.TryGetEntity(uid, out var hitEntity)) + if (!EntityManager.TryGetEntity(uid, out var hitEntity) || hitEntity.Deleted) { continue; } diff --git a/Content.Server/GameObjects/Components/Body/BodyComponent.cs b/Content.Server/GameObjects/Components/Body/BodyComponent.cs index 71637b13ea..000832af1d 100644 --- a/Content.Server/GameObjects/Components/Body/BodyComponent.cs +++ b/Content.Server/GameObjects/Components/Body/BodyComponent.cs @@ -1,15 +1,20 @@ #nullable enable using System; using Content.Server.Commands.Observer; +using Content.Shared.Audio; using Content.Shared.GameObjects.Components.Body; using Content.Shared.GameObjects.Components.Body.Part; using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.Components.Mobs.State; using Content.Shared.GameObjects.Components.Movement; +using Content.Shared.Utility; using Robust.Server.GameObjects.Components.Container; +using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.Console; using Robust.Server.Interfaces.Player; +using Robust.Shared.Audio; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.Players; @@ -41,6 +46,7 @@ namespace Content.Server.GameObjects.Components.Body base.OnRemovePart(slot, part); _partContainer.ForceRemove(part.Owner); + part.Owner.RandomOffset(0.25f); } public override void Initialize() @@ -88,5 +94,29 @@ namespace Content.Server.GameObjects.Components.Body new Ghost().Execute(shell, (IPlayerSession) session, Array.Empty()); } } + + public override void Gib(bool gibParts = false) + { + base.Gib(gibParts); + + EntitySystem.Get() + .PlayAtCoords(AudioHelpers.GetRandomFileFromSoundCollection("gib"), Owner.Transform.Coordinates, + AudioHelpers.WithVariation(0.025f)); + + if (Owner.TryGetComponent(out ContainerManagerComponent? container)) + { + foreach (var cont in container.GetAllContainers()) + { + foreach (var ent in cont.ContainedEntities) + { + cont.ForceRemove(ent); + ent.Transform.Coordinates = Owner.Transform.Coordinates; + ent.RandomOffset(0.25f); + } + } + } + + Owner.Delete(); + } } } diff --git a/Content.Server/GameObjects/Components/Body/Part/BodyPartComponent.cs b/Content.Server/GameObjects/Components/Body/Part/BodyPartComponent.cs index 450d400c40..44c7cc5a7e 100644 --- a/Content.Server/GameObjects/Components/Body/Part/BodyPartComponent.cs +++ b/Content.Server/GameObjects/Components/Body/Part/BodyPartComponent.cs @@ -11,6 +11,7 @@ using Content.Shared.GameObjects.Components.Body.Surgery; using Content.Shared.GameObjects.Verbs; using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; using Robust.Server.Console; using Robust.Server.GameObjects; using Robust.Server.GameObjects.Components.Container; @@ -57,6 +58,7 @@ namespace Content.Server.GameObjects.Components.Body.Part base.OnRemoveMechanism(mechanism); _mechanismContainer.Remove(mechanism.Owner); + mechanism.Owner.RandomOffset(0.25f); } public override void Initialize() diff --git a/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/GibBehavior.cs b/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/GibBehavior.cs new file mode 100644 index 0000000000..c388666c24 --- /dev/null +++ b/Content.Server/GameObjects/Components/Destructible/Thresholds/Behavior/GibBehavior.cs @@ -0,0 +1,27 @@ +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Components.Body; +using JetBrains.Annotations; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Destructible.Thresholds.Behavior +{ + [UsedImplicitly] + public class GibBehavior : IThresholdBehavior + { + private bool _recursive = true; + + public void ExposeData(ObjectSerializer serializer) + { + serializer.DataField(ref _recursive, "recursive", true); + } + + public void Trigger(IEntity owner, DestructibleSystem system) + { + if (owner.TryGetComponent(out IBody body)) + { + body.Gib(_recursive); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs b/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs index e5f6943739..a9074492d5 100644 --- a/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs +++ b/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs @@ -79,7 +79,7 @@ namespace Content.Server.GameObjects.Components.Recycling // Mobs are a special case! if (CanGib(entity)) { - entity.Delete(); // TODO: Gib + entity.GetComponent().Gib(true); Bloodstain(); return; } diff --git a/Content.Shared/GameObjects/Components/Body/IBody.cs b/Content.Shared/GameObjects/Components/Body/IBody.cs index 672ef1c73a..152deb3bb0 100644 --- a/Content.Shared/GameObjects/Components/Body/IBody.cs +++ b/Content.Shared/GameObjects/Components/Body/IBody.cs @@ -247,5 +247,10 @@ namespace Content.Shared.GameObjects.Components.Body /// The index to look in. /// A pair of the part name and body part occupying it. KeyValuePair PartAt(int index); + + /// + /// Gibs this body. + /// + void Gib(bool gibParts = false); } } diff --git a/Content.Shared/GameObjects/Components/Body/Part/IBodyPart.cs b/Content.Shared/GameObjects/Components/Body/Part/IBodyPart.cs index c04dcf8f19..ba8ed2d192 100644 --- a/Content.Shared/GameObjects/Components/Body/Part/IBodyPart.cs +++ b/Content.Shared/GameObjects/Components/Body/Part/IBodyPart.cs @@ -116,5 +116,10 @@ namespace Content.Shared.GameObjects.Components.Body.Part /// false otherwise. /// bool DeleteMechanism(IMechanism mechanism); + + /// + /// Gibs the body part. + /// + void Gib(); } } diff --git a/Content.Shared/GameObjects/Components/Body/Part/SharedBodyPartComponent.cs b/Content.Shared/GameObjects/Components/Body/Part/SharedBodyPartComponent.cs index 97d05c161f..ffbd3a0c70 100644 --- a/Content.Shared/GameObjects/Components/Body/Part/SharedBodyPartComponent.cs +++ b/Content.Shared/GameObjects/Components/Body/Part/SharedBodyPartComponent.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using Content.Shared.GameObjects.Components.Body.Mechanism; using Content.Shared.GameObjects.Components.Body.Surgery; +using Content.Shared.Utility; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -313,6 +314,14 @@ namespace Content.Shared.GameObjects.Components.Body.Part protected virtual void OnAddedToBody(IBody body) { } protected virtual void OnRemovedFromBody(IBody old) { } + + public virtual void Gib() + { + foreach (var mechanism in _mechanisms) + { + RemoveMechanism(mechanism); + } + } } [Serializable, NetSerializable] diff --git a/Content.Shared/GameObjects/Components/Body/SharedBodyComponent.cs b/Content.Shared/GameObjects/Components/Body/SharedBodyComponent.cs index 33dda03b24..0c18eaa0df 100644 --- a/Content.Shared/GameObjects/Components/Body/SharedBodyComponent.cs +++ b/Content.Shared/GameObjects/Components/Body/SharedBodyComponent.cs @@ -1,6 +1,7 @@ #nullable enable using System; using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Shared.Damage; @@ -11,7 +12,10 @@ using Content.Shared.GameObjects.Components.Body.Template; using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.Components.Movement; using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Utility; +using Robust.Shared.Containers; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Containers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -19,6 +23,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; +using Component = Robust.Shared.GameObjects.Component; namespace Content.Shared.GameObjects.Components.Body { @@ -697,6 +702,17 @@ namespace Content.Shared.GameObjects.Components.Body } } } + + public virtual void Gib(bool gibParts = false) + { + foreach (var (_, part) in Parts) + { + RemovePart(part); + + if (gibParts) + part.Gib(); + } + } } [Serializable, NetSerializable] diff --git a/Resources/Audio/Effects/gib1.ogg b/Resources/Audio/Effects/gib1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..31c1a01cd65a0ea4f378d8619392179604daeb14 GIT binary patch literal 28202 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/gib3.ogg b/Resources/Audio/Effects/gib3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aa37a543a916c98230e2e847bbf85665fe71ef2b GIT binary patch literal 26609 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 iFtuw~+JqTrue True True + True True True True From 2a5fda519801d5d50ad5eb68e4b818e4d4460851 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Sun, 10 Jan 2021 20:52:11 +0100 Subject: [PATCH 094/166] Fix being gibbed when commiting suicide or ghosting while crit'd --- Content.Server/Commands/Chat/SuicideCommand.cs | 7 +++---- Content.Server/GameTicking/GamePreset.cs | 2 +- Content.Server/GameTicking/GameTicker.cs | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Server/Commands/Chat/SuicideCommand.cs b/Content.Server/Commands/Chat/SuicideCommand.cs index d27e555cfd..aa73ff4913 100644 --- a/Content.Server/Commands/Chat/SuicideCommand.cs +++ b/Content.Server/Commands/Chat/SuicideCommand.cs @@ -38,7 +38,7 @@ namespace Content.Server.Commands.Chat var kind = suicide.Suicide(target, chat); if (kind != SuicideKind.Special) { - damageableComponent.ChangeDamage(kind switch + damageableComponent.SetDamage(kind switch { SuicideKind.Blunt => DamageType.Blunt, SuicideKind.Slash => DamageType.Slash, @@ -52,8 +52,7 @@ namespace Content.Server.Commands.Chat SuicideKind.Bloodloss => DamageType.Bloodloss, _ => DamageType.Blunt }, - 500, - true, source); + 200, source); } } @@ -119,7 +118,7 @@ namespace Content.Server.Commands.Chat var selfMessage = Loc.GetString("You attempt to bite your own tongue!"); owner.PopupMessage(selfMessage); - dmgComponent.ChangeDamage(DamageType.Piercing, 500, true, owner); + dmgComponent.SetDamage(DamageType.Piercing, 200, owner); // Prevent the player from returning to the body. Yes, this is an ugly hack. var ghost = new Ghost(){CanReturn = false}; diff --git a/Content.Server/GameTicking/GamePreset.cs b/Content.Server/GameTicking/GamePreset.cs index b9716c1d08..1d0d14cc42 100644 --- a/Content.Server/GameTicking/GamePreset.cs +++ b/Content.Server/GameTicking/GamePreset.cs @@ -69,7 +69,7 @@ namespace Content.Server.GameTicking if (playerEntity.TryGetComponent(out IDamageableComponent? damageable)) { //todo: what if they dont breathe lol - damageable.ChangeDamage(DamageType.Asphyxiation, 100, true); + damageable.SetDamage(DamageType.Asphyxiation, 200, playerEntity); } } else diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index 7c2568c1a4..e4229c43f5 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using Content.Server.Administration; +using Content.Server.Commands.Observer; using Content.Server.GameObjects.Components.Access; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; From c01b1d5c05cc545acdad75536a6b2e64d3149845 Mon Sep 17 00:00:00 2001 From: Ygg01 Date: Mon, 11 Jan 2021 00:17:28 +0100 Subject: [PATCH 095/166] Add cigarettes and matches to SS14 (#2522) * Add resources for cigs/matches * Add files for cigarettes * Remove Shared Components * Applied some of the suggestions * Change priority to allow matches to be set alight by matchbox * Added item for pack of cigars * Add swepts resources. Fix naming * Fix naming, implement suggestions. * Addressed Paul's suggestions * Remove unused resources * Fix Paul's suggestions --- .../Nutrition/BurnStateVisualizer.cs | 66 +++++++++++ Content.Client/IgnoredComponents.cs | 3 + .../Interactable/MatchboxComponent.cs | 29 +++++ .../Interactable/MatchstickComponent.cs | 105 +++++++++++++++++ .../Interactable/WelderComponent.cs | 10 +- .../Components/Nutrition/SmokingComponent.cs | 107 ++++++++++++++++++ .../Components/SharedBurningStates.cs | 13 +++ .../GameObjects/Components/SmokingVisuals.cs | 11 ++ .../Components/Interaction/IHotItem.cs | 17 +++ Resources/Audio/Items/match_strike.ogg | Bin 0 -> 25149 bytes .../Catalog/VendingMachines/cigs.yml | 3 + .../Entities/Objects/Consumable/fancy.yml | 42 +++++++ .../Entities/Objects/Tools/matches.yml | 53 +++++++++ .../Consumable/Fancy/cigarettes.rsi/cig.png | Bin 0 -> 249 bytes .../Fancy/cigarettes.rsi/cig_empty.png | Bin 0 -> 280 bytes .../Fancy/cigarettes.rsi/cig_open.png | Bin 0 -> 171 bytes .../Consumable/Fancy/cigarettes.rsi/meta.json | 23 ++++ .../Fancy/mask_cig.rsi/burnt-icon.png | Bin 0 -> 135 bytes .../Consumable/Fancy/mask_cig.rsi/icon.png | Bin 0 -> 140 bytes .../Fancy/mask_cig.rsi/lit-equipped-MASK.png | Bin 0 -> 429 bytes .../Fancy/mask_cig.rsi/lit-icon.png | Bin 0 -> 344 bytes .../Consumable/Fancy/mask_cig.rsi/meta.json | 85 ++++++++++++++ .../mask_cig.rsi/unlit-equipped-MASK.png | Bin 0 -> 133 bytes .../Objects/Tools/matches.rsi/match_burnt.png | Bin 0 -> 150 bytes .../Objects/Tools/matches.rsi/match_lit.png | Bin 0 -> 518 bytes .../Objects/Tools/matches.rsi/match_unlit.png | Bin 0 -> 194 bytes .../Objects/Tools/matches.rsi/matchbox.png | Bin 0 -> 532 bytes .../matches.rsi/matchbox_almostempty.png | Bin 0 -> 524 bytes .../Tools/matches.rsi/matchbox_almostfull.png | Bin 0 -> 524 bytes .../Objects/Tools/matches.rsi/matchbox_e.png | Bin 0 -> 511 bytes .../Objects/Tools/matches.rsi/meta.json | 46 ++++++++ 31 files changed, 612 insertions(+), 1 deletion(-) create mode 100644 Content.Client/GameObjects/Components/Nutrition/BurnStateVisualizer.cs create mode 100644 Content.Server/GameObjects/Components/Interactable/MatchboxComponent.cs create mode 100644 Content.Server/GameObjects/Components/Interactable/MatchstickComponent.cs create mode 100644 Content.Server/GameObjects/Components/Nutrition/SmokingComponent.cs create mode 100644 Content.Shared/GameObjects/Components/SharedBurningStates.cs create mode 100644 Content.Shared/GameObjects/Components/SmokingVisuals.cs create mode 100644 Content.Shared/Interfaces/GameObjects/Components/Interaction/IHotItem.cs create mode 100644 Resources/Audio/Items/match_strike.ogg create mode 100644 Resources/Prototypes/Entities/Objects/Consumable/fancy.yml create mode 100644 Resources/Prototypes/Entities/Objects/Tools/matches.yml create mode 100644 Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig.png create mode 100644 Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig_open.png create mode 100644 Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/burnt-icon.png create mode 100644 Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/lit-equipped-MASK.png create mode 100644 Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/lit-icon.png create mode 100644 Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/unlit-equipped-MASK.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/match_burnt.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/match_lit.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/match_unlit.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/matchbox.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/matchbox_almostempty.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/matchbox_almostfull.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/matchbox_e.png create mode 100644 Resources/Textures/Objects/Tools/matches.rsi/meta.json diff --git a/Content.Client/GameObjects/Components/Nutrition/BurnStateVisualizer.cs b/Content.Client/GameObjects/Components/Nutrition/BurnStateVisualizer.cs new file mode 100644 index 0000000000..d70adb82d6 --- /dev/null +++ b/Content.Client/GameObjects/Components/Nutrition/BurnStateVisualizer.cs @@ -0,0 +1,66 @@ +using Content.Shared.GameObjects.Components; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Nutrition +{ + [UsedImplicitly] + public class BurnStateVisualizer : AppearanceVisualizer + { + private string _burntIcon = "burnt-icon"; + private string _litIcon = "lit-icon"; + private string _unlitIcon = "icon"; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + if (node.TryGetNode("unlitIcon", out var unlitIcon)) + { + _unlitIcon = unlitIcon.AsString(); + } + + if (node.TryGetNode("litIcon", out var litIcon)) + { + _litIcon = litIcon.AsString(); + } + + if (node.TryGetNode("burntIcon", out var burntIcon)) + { + _burntIcon = burntIcon.AsString(); + } + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (component.TryGetData(SmokingVisuals.Smoking, out var smoking)) + { + SetState(component, smoking); + } + } + + private void SetState(AppearanceComponent component, SharedBurningStates burnState) + { + if (component.Owner.TryGetComponent(out var sprite)) + { + switch (burnState) + { + case SharedBurningStates.Lit: + sprite.LayerSetState(0, _litIcon); + break; + case SharedBurningStates.Burnt: + sprite.LayerSetState(0, _burntIcon); + break; + default: + sprite.LayerSetState(0, _unlitIcon); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index d9a2babe36..3570c3b374 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -169,6 +169,9 @@ namespace Content.Client "Flammable", "CreamPie", "CreamPied", + "Smoking", + "Matchstick", + "Matchbox", "BlockGameArcade", "KitchenSpike", "Butcherable", diff --git a/Content.Server/GameObjects/Components/Interactable/MatchboxComponent.cs b/Content.Server/GameObjects/Components/Interactable/MatchboxComponent.cs new file mode 100644 index 0000000000..d7a883fbb3 --- /dev/null +++ b/Content.Server/GameObjects/Components/Interactable/MatchboxComponent.cs @@ -0,0 +1,29 @@ +using System.Threading.Tasks; +using Content.Shared.GameObjects.Components; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Shared.GameObjects; + +namespace Content.Server.GameObjects.Components.Interactable +{ + // TODO make changes in icons when different threshold reached + // e.g. different icons for 10% 50% 100% + [RegisterComponent] + public class MatchboxComponent : Component, IInteractUsing + { + public override string Name => "Matchbox"; + + public int Priority => 1; + + public async Task InteractUsing(InteractUsingEventArgs eventArgs) + { + if (eventArgs.Using.TryGetComponent(out var matchstick) + && matchstick.CurrentState == SharedBurningStates.Unlit) + { + matchstick.Ignite(eventArgs.User); + return true; + } + + return false; + } + } +} \ No newline at end of file diff --git a/Content.Server/GameObjects/Components/Interactable/MatchstickComponent.cs b/Content.Server/GameObjects/Components/Interactable/MatchstickComponent.cs new file mode 100644 index 0000000000..3bf112b9ff --- /dev/null +++ b/Content.Server/GameObjects/Components/Interactable/MatchstickComponent.cs @@ -0,0 +1,105 @@ +#nullable enable +using System.Threading.Tasks; +using Content.Shared.Audio; +using Content.Shared.GameObjects.Components; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; +using Robust.Shared.GameObjects.Components.Timers; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Interactable +{ + [RegisterComponent] + [ComponentReference(typeof(IHotItem))] + public class MatchstickComponent : Component, IHotItem, IInteractUsing + { + public override string Name => "Matchstick"; + + private SharedBurningStates _currentState = SharedBurningStates.Unlit; + + /// + /// How long will matchstick last in seconds. + /// + [ViewVariables(VVAccess.ReadOnly)] private int _duration; + + /// + /// Sound played when you ignite the matchstick. + /// + private string? _igniteSound; + + /// + /// Point light component. Gives matches a glow in dark effect. + /// + [ComponentDependency] + private readonly PointLightComponent? _pointLightComponent = default!; + + /// + /// Current state to matchstick. Can be Unlit, Lit or Burnt. + /// + [ViewVariables] + public SharedBurningStates CurrentState + { + get => _currentState; + private set + { + _currentState = value; + + if (_pointLightComponent != null) + { + _pointLightComponent.Enabled = _currentState == SharedBurningStates.Lit; + } + + if (Owner.TryGetComponent(out AppearanceComponent? appearance)) + { + appearance.SetData(SmokingVisuals.Smoking, _currentState); + } + } + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _duration, "duration", 10); + serializer.DataField(ref _igniteSound, "igniteSound", null); + } + + bool IHotItem.IsCurrentlyHot() + { + return CurrentState == SharedBurningStates.Lit; + } + + public void Ignite(IEntity user) + { + // Play Sound + if (!string.IsNullOrEmpty(_igniteSound)) + { + EntitySystem.Get().PlayFromEntity(_igniteSound, Owner, + AudioHelpers.WithVariation(0.125f).WithVolume(-0.125f)); + } + + // Change state + CurrentState = SharedBurningStates.Lit; + Owner.SpawnTimer(_duration * 1000, () => CurrentState = SharedBurningStates.Burnt); + } + + public async Task InteractUsing(InteractUsingEventArgs eventArgs) + { + if (eventArgs.Target.TryGetComponent(out var hotItem) + && hotItem.IsCurrentlyHot() + && CurrentState == SharedBurningStates.Unlit) + { + Ignite(eventArgs.User); + return true; + } + + return false; + } + } +} \ No newline at end of file diff --git a/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs b/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs index ac0a8b1bb7..21776ab4e8 100644 --- a/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/WelderComponent.cs @@ -28,7 +28,8 @@ namespace Content.Server.GameObjects.Components.Interactable [RegisterComponent] [ComponentReference(typeof(ToolComponent))] [ComponentReference(typeof(IToolComponent))] - public class WelderComponent : ToolComponent, IExamine, IUse, ISuicideAct, ISolutionChange + [ComponentReference(typeof(IHotItem))] + public class WelderComponent : ToolComponent, IExamine, IUse, ISuicideAct, ISolutionChange, IHotItem { [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; @@ -73,6 +74,11 @@ namespace Content.Server.GameObjects.Components.Interactable } } + bool IHotItem.IsCurrentlyHot() + { + return WelderLit; + } + public override void Initialize() { base.Initialize(); @@ -285,5 +291,7 @@ namespace Content.Server.GameObjects.Components.Interactable { Dirty(); } + + } } diff --git a/Content.Server/GameObjects/Components/Nutrition/SmokingComponent.cs b/Content.Server/GameObjects/Components/Nutrition/SmokingComponent.cs new file mode 100644 index 0000000000..ad650d2906 --- /dev/null +++ b/Content.Server/GameObjects/Components/Nutrition/SmokingComponent.cs @@ -0,0 +1,107 @@ +#nullable enable +using System.Threading.Tasks; +using Content.Server.GameObjects.Components.Items.Clothing; +using Content.Shared.GameObjects.Components; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; +using Robust.Shared.GameObjects.Components.Timers; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Nutrition +{ + /// + /// This item acts as a representation for smokable consumables. + /// + /// To smoke a cigar, you need: + /// + /// a hot item (implements IHotItem interface) + /// that's a alight. + /// for the target cigar be Unlit. Lit cigars are already lit and butt's don't have any "fuel" left. + /// + /// TODO: Add reagents that interact when smoking + /// TODO: Allow suicide via excessive Smoking + /// + [RegisterComponent] + public class SmokingComponent : Component, IInteractUsing, IHotItem + { + public override string Name => "Smoking"; + + private SharedBurningStates _currentState = SharedBurningStates.Unlit; + + [ComponentDependency] private readonly ClothingComponent? _clothingComponent = default!; + [ComponentDependency] private readonly AppearanceComponent? _appearanceComponent = default!; + + /// + /// Duration represents how long will this item last. + /// Generally it ticks down whether it's time-based + /// or consumption-based. + /// + [ViewVariables] private int _duration; + + /// + /// What is the temperature of the cigar? + /// + /// For a regular cigar, the temp approaches around 400°C or 580°C + /// dependant on where you measure. + /// + [ViewVariables] private float _temperature; + + [ViewVariables] + private SharedBurningStates CurrentState + { + get => _currentState; + set + { + _currentState = value; + + if (_clothingComponent != null) + { + switch (_currentState) + { + case SharedBurningStates.Lit: + _clothingComponent.EquippedPrefix = "lit"; + _clothingComponent.ClothingEquippedPrefix = "lit"; + break; + default: + _clothingComponent.EquippedPrefix = "unlit"; + _clothingComponent.ClothingEquippedPrefix = "unlit"; + break; + } + } + + _appearanceComponent?.SetData(SmokingVisuals.Smoking, _currentState); + } + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _duration, "duration", 30); + serializer.DataField(ref _temperature, "temperature", 673.15f); + } + + public async Task InteractUsing(InteractUsingEventArgs eventArgs) + { + if (eventArgs.Using.TryGetComponent(out IHotItem? lighter) + && lighter.IsCurrentlyHot() + && CurrentState == SharedBurningStates.Unlit + ) + { + CurrentState = SharedBurningStates.Lit; + // TODO More complex handling of cigar consumption + Owner.SpawnTimer(_duration * 1000, () => CurrentState = SharedBurningStates.Burnt); + return true; + } + + return false; + } + + bool IHotItem.IsCurrentlyHot() + { + return _currentState == SharedBurningStates.Lit; + } + } +} \ No newline at end of file diff --git a/Content.Shared/GameObjects/Components/SharedBurningStates.cs b/Content.Shared/GameObjects/Components/SharedBurningStates.cs new file mode 100644 index 0000000000..d371943d62 --- /dev/null +++ b/Content.Shared/GameObjects/Components/SharedBurningStates.cs @@ -0,0 +1,13 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components +{ + [Serializable, NetSerializable] + public enum SharedBurningStates : byte + { + Unlit, + Lit, + Burnt, + } +} diff --git a/Content.Shared/GameObjects/Components/SmokingVisuals.cs b/Content.Shared/GameObjects/Components/SmokingVisuals.cs new file mode 100644 index 0000000000..851a510d6d --- /dev/null +++ b/Content.Shared/GameObjects/Components/SmokingVisuals.cs @@ -0,0 +1,11 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components +{ + [Serializable, NetSerializable] + public enum SmokingVisuals : byte + { + Smoking, + } +} diff --git a/Content.Shared/Interfaces/GameObjects/Components/Interaction/IHotItem.cs b/Content.Shared/Interfaces/GameObjects/Components/Interaction/IHotItem.cs new file mode 100644 index 0000000000..a86fee8c51 --- /dev/null +++ b/Content.Shared/Interfaces/GameObjects/Components/Interaction/IHotItem.cs @@ -0,0 +1,17 @@ +using JetBrains.Annotations; +using Robust.Shared.GameObjects; + +namespace Content.Shared.Interfaces.GameObjects.Components +{ + /// + /// This interface gives components hot quality when they are used. + /// E.g if you hold a lit match or a welder then it will be hot, + /// presuming match is lit or the welder is on respectively. + /// However say you hold an item that is always hot like lava rock, + /// it will be permanently hot. + /// + public interface IHotItem + { + bool IsCurrentlyHot(); + } +} diff --git a/Resources/Audio/Items/match_strike.ogg b/Resources/Audio/Items/match_strike.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8bf23316e1d382bb7d7f49599891574a42eea4cf GIT binary patch literal 25149 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 F0}j~eEI9xG literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Catalog/VendingMachines/cigs.yml b/Resources/Prototypes/Catalog/VendingMachines/cigs.yml index d591447f8d..bf1a001aa1 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/cigs.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/cigs.yml @@ -4,3 +4,6 @@ description: A vending machine containing smoking supplies. animationDuration: 2.1 spriteName: cigs + startingInventory: + CigarettePack: 20 + Matchbox: 10 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/fancy.yml b/Resources/Prototypes/Entities/Objects/Consumable/fancy.yml new file mode 100644 index 0000000000..fcf5d0dc31 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Consumable/fancy.yml @@ -0,0 +1,42 @@ +- type: entity + name: "Base Cigarette" + id: BaseCigarette + parent: BaseItem + abstract: true + components: + - type: Sprite + sprite: Objects/Consumable/Fancy/mask_cig.rsi + netsync: false + state: icon + - type: Clothing + sprite: Objects/Consumable/Fancy/mask_cig.rsi + Slots: [ mask ] + HeldPrefix: unlit + size: 1 + - type: Smoking + duration: 30 + - type: Appearance + visuals: + - type: BurnStateVisualizer + +- type: entity + id: Cigarette + parent: BaseCigarette + name: cigarette + description: "If you want to get cancer, might as well do it in style." + +- type: entity + id: CigarettePack + parent: SmallboxItem + name: cigarette pack + description: "Pack of cigarettes" + components: + - type: Sprite + sprite: Objects/Consumable/Fancy/cigarettes.rsi + layers: + - state: cig + - type: StorageFill + contents: + - name: Cigarette + amount: 6 + diff --git a/Resources/Prototypes/Entities/Objects/Tools/matches.yml b/Resources/Prototypes/Entities/Objects/Tools/matches.yml new file mode 100644 index 0000000000..3c9c337b6c --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Tools/matches.yml @@ -0,0 +1,53 @@ +- type: entity + id: SmallboxItem + parent: BaseItem + abstract: true + components: + - type: Storage + capacity: 10 + - type: Item + size: 6 + +- type: entity + name: match stick + parent: BaseItem + id: Matchstick + description: "A simple match stick, used for lighting fine smokables." + components: + - type: Sprite + netsync: false + sprite: Objects/Tools/matches.rsi + layers: + - state: match_unlit + - type: Item + size: 1 + sprite: Objects/Tools/matches.rsi + - type: Matchstick + duration: 10 + igniteSound: /Audio/Items/match_strike.ogg + - type: PointLight + enabled: false + radius: 1.1 + color: darkorange + - type: Appearance + visuals: + - type: BurnStateVisualizer + unlitIcon: match_unlit + litIcon: match_lit + burntIcon: match_burnt + +- type: entity + name: match box + parent: SmallboxItem + id: Matchbox + description: "A small box of Almost But Not Quite Plasma Premium Matches." + components: + - type: Matchbox + - type: Sprite + sprite: Objects/Tools/matches.rsi + layers: + - state: matchbox + - type: StorageFill + contents: + - name: Matchstick + amount: 6 diff --git a/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig.png b/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig.png new file mode 100644 index 0000000000000000000000000000000000000000..845968ae9f5585e402bdee93d3124c8ab7cb7921 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ1D-C9Ar*6y6C_v{Cy4YkP2`jC z43ycq<(s|U&Zig8s?20%);Xf3V`0X;{OJ@1wJeEAM^YWD*-c)%O;+(MWlz}5b8PgIepH-GpA2`hcU@O+!|=0!NBmk!G&q_?58V$eqr!*^>bP0l+XkKh1O!p literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig_empty.png b/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..42abce58e0b40dbee205e36f4e2d28e11d767133 GIT binary patch literal 280 zcmV+z0q6dSP)qzGH?n z7@RXcOKXOg*Ma5vwOqMMvcU!Le_5pwDiy{E`Z;!0DYv*C-fFKC?{>c7i+$jK{ zP&=iRFCHc!O;Z2{jW&0!-rfN@+rzU; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig_open.png b/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/cig_open.png new file mode 100644 index 0000000000000000000000000000000000000000..45bf3c6cc0c91e17aeaabc5ba642f69052511161 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJB2O2`kcv6U2@?ZWKOz7C literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json b/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json new file mode 100644 index 0000000000..1f2a383e97 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "cig", + "directions": 1 + }, + { + "name": "cig_empty", + "directions": 1 + }, + { + "name": "cig_open", + "directions": 1 + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/burnt-icon.png b/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/burnt-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2321b995142142b680822faac276180ed1ff37 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzKTj9Okcv6U2@p2Sa-Mn*n*`>{=APN dIucqK89p5sNS}LfttilB22WQ%mvv4FO#o!SF{S_j literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/icon.png b/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..03c18368f80ab5ef68394b2b9f570e446b40dd8d GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJU{4pvkcv6U2@*!A$%-*lcR itxs1B@}Qa}7#IZR@fNDjxXK7Lp25@A&t;ucLK6U*7%w3J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/lit-equipped-MASK.png b/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/lit-equipped-MASK.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5cad56f2028ebd79f6b3865a0ebbc6d07cdc59 GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zf+;U@Y-;aSW-L^Y*S|VVi*j%Y_q; ztnNGunAmqbZ0WjjfJN)YN}uXC3v=o|&1=+`ESvOjlO`*}f+;~>YrnqA)Vq_lcDlkP zmc%8TO&)Uugj5?CY^~dhYHv^b`0@6G8HYY!|M17w`oGolb>I1cHll$8@h>*1I(_I6 zv|Gd?z!0Z-uV21S9!(7c!vj~7W2I|a`}28^yg0)GXUsMbfO_uxy8P2We&hV3hZCaSW-L^Y*r(7qg=X+k@px z-8XPHxt>tWX_=xF5goyGt?;O@#D;A>y>sIZovYg*bi{2#-0zJBO@RiHC(;(x$>(h5 z`F(!R+`CzEEI?Bk7y>SROqk$(KJlf-sV3dvgVQthrX;Y7eAxM7rL<+K^7T^N!rs1Z zpYQ&xlatNc`l~6(zUY;{-v8Ha-l0!I&YIVk-fGzVupsr;jC;qb?%3P8=Wo7jQm=RG z)cn-9xzFk!i+?$PlObT%dI7LqAfnFb^2gWwFSUwXT+)}%+fiS;>35yW?}wUvdU?{e zn>+t(ny#!AcU`ah$@Y!^R{mw&{A2ZB#{H`DaQzGm_N4t~y!xZ&Pv*>j4Oir!-=A_a fzxf|XKB4g*gUae%+65EkSAh7Qu6{1-oD!MRVd(ZO;Oq{^Tz)-^{%lEe7*&=;fqS+oZDGCXAb( z-LY6>Ay{P2#bM0-9$@C|&1`nr11P1Gic6ViE_858Kz)rX!lzHYb1MIM%GI$R_DuCDCkD0T>0`|H9p1BMy?*LED<^W*P1W5Z6 zaBzi>{k4L~9QV?Hb4z&(Jd0Z0U( zm~B*5O)bH_2nhsWBuPTAK@C760L2iGu`lEa-~%w~Uvy4-1WGCsOxbFao6JlqOQj!L|uJ!^&U+0{{R307*qo IM6N<$f;l7JIsgCw literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/matches.rsi/match_unlit.png b/Resources/Textures/Objects/Tools/matches.rsi/match_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..32cc7067348e1981d5a43b7c3f1f9f1a5106909e GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJPEQxdkcv5PFK*;I4UzVbM7uxu*&mi=J9FmE{8)v#ikj9H{6c;OXk;vd$@?2>|TSO-BF# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/matches.rsi/matchbox.png b/Resources/Textures/Objects/Tools/matches.rsi/matchbox.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd12b3a08655998b560e4fe0976b133100cd8c5 GIT binary patch literal 532 zcmV+v0_**WP)gh0tbf_|ABxyR9q`KI2WN%H=zz9 zjzXn%a*`CSXhd|7I7q9dCi&*>bw~&X9893N+y`#E=bq<%cn<=BKp+qZ1OopV8ANn* z>Yzqeh^zqxu?FWA@4y%kJib}ST8l{!vz6^n@>D@5X69IXxJv$V z5rFrPUXj02#Cy+|r8PtZJ8U?7eS+orGUMl_i6Tqp{$pMqa6Rw!72wACf*zl_OJ#8d zq-_ka`*e<4t;WXkCjg8Zj+RdHV!q7&Q`1;$I8vHrVKU1Iqk{#weW9SmYjac?4k2zCK$gk_d}o{A!WagiaNLr9v7gEMx zI>|*9{o{^j1O==JZwdk^f)MW-LlvqYd(Ha`;1nammU9>&1*k~3Lg^d@oGQ)4BSx_z zIIn*-?<+vP(coP!K}0bIlEif;gjTBscvOA69f9xP+D$pHY;HGr`u5jAUp^4naee~^ WIkDWTJ1Hvw0000r4EW2+*$_>EK zrfiWDBBx*=PVvDA9#laHgmx3>9GV_sFOJZjllPwckL!KkXjt>wOvR?>=2?HZM(OGl z0Pi0?qg0(DguthzbwmU=q8z_I&GJHx=P%#&^^@fz1NDXqaPv~dPS4$=zPJj~H3m3* zu1KTNU~Bm!0BXwQ>{(V8YCNrP_VwjL9#tKvIk@`+cP>}#)a*R<#Z~ebN{pXBij#=Z zGX=8QEITWoi6kN;X(q0nWbMIiMvtA~VztVRZJ}Jqb7(C0%cKAG4BWjkVXbBxGYHmI z1~U}H`+zz}yVWF0rO0H`w8{3hyW3lg=W+mi*w|p{#m?|E5O<*XMo6imz2sts{d6X9 z00W!|uPOofTHpU{n& z35~1}Spy1U4bCgxfiWO>e5--A7Ly%hH;FKvCg&WB4{F`ssMqq@nUYRb7FfT#M)6`9 zfVcOaQoK~gd(Y$>99{?~ICa<34Np+5~Q|A~O%5t!@xk67I8Pb^KFa0`8)vc>UEZ%fA8Hu(uTr@kTC|+nOszVZ2Yyk%I9U7#0_q~J75odj2z3*>h&T$B zcB$eZsak)ehz=45X|>cOU+z5)3Bibi35d&m;BNOl?|Wa)g-9e4i9{li$bUvg5nZ1v zS>lAmDHw=Td@zCsRS*K9-NZSEj!m$aC1}sdd(WK*wZ3mMta){=Y%}uC(}Gc|!%bcD8IM=WkP6S_SDE0~|bE zpwVcsz48G7HD&tBEKe4ztk<^s`qGgpRCTlfH_w%=a(RK;(kfGDig@qYdHj*|)M3&z z<@2LW5=n3<$1YV^yL*GDznLGH%;SR}nETf|aO?bWYc<=LL9nhen4uWn2h=&*ttLq> z$N2adZPLDW_uDpy@_7K>*Xu05_&)p&WF07M3OQA@mt4%SU+x6P5EH#?6r9K`o~CLJ`(xo`~-I0u+;@I$xQ$N002ovPDHLkV1f${ B?eYKs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/matches.rsi/meta.json b/Resources/Textures/Objects/Tools/matches.rsi/meta.json new file mode 100644 index 0000000000..55a8383b55 --- /dev/null +++ b/Resources/Textures/Objects/Tools/matches.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "match_burnt", + "directions": 1 + }, + { + "name": "match_lit", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "match_unlit", + "directions": 1 + }, + { + "name": "matchbox", + "directions": 1 + }, + { + "name": "matchbox_almostempty", + "directions": 1 + }, + { + "name": "matchbox_almostfull", + "directions": 1 + }, + { + "name": "matchbox_e", + "directions": 1 + } + ] +} From 2249081443c1431bd776236cec3ad8fd6c53e5c9 Mon Sep 17 00:00:00 2001 From: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> Date: Sun, 10 Jan 2021 15:50:04 -0800 Subject: [PATCH 096/166] Fix traitor identification overlay (#2978) --- .../GameObjects/Components/Suspicion/TraitorOverlay.cs | 8 ++++---- .../GameObjects/EntitySystems/SuspicionRoleSystem.cs | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs b/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs index abf40e340c..414582fdc9 100644 --- a/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs +++ b/Content.Client/GameObjects/Components/Suspicion/TraitorOverlay.cs @@ -1,4 +1,4 @@ -using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.GameObjects.EntitySystems; using Robust.Client.Graphics; using Robust.Client.Graphics.Drawing; using Robust.Client.Graphics.Overlays; @@ -64,18 +64,18 @@ namespace Content.Client.GameObjects.Components.Suspicion // Otherwise the entity can not exist yet if (!_entityManager.TryGetEntity(uid, out var ally)) { - return; + continue; } if (!ally.TryGetComponent(out IPhysicsComponent physics)) { - return; + continue; } if (!ExamineSystemShared.InRangeUnOccluded(ent.Transform.MapPosition, ally.Transform.MapPosition, 15, entity => entity == ent || entity == ally)) { - return; + continue; } // all entities have a TransformComponent diff --git a/Content.Server/GameObjects/EntitySystems/SuspicionRoleSystem.cs b/Content.Server/GameObjects/EntitySystems/SuspicionRoleSystem.cs index fb7fef8e65..7bfb191404 100644 --- a/Content.Server/GameObjects/EntitySystems/SuspicionRoleSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/SuspicionRoleSystem.cs @@ -1,12 +1,13 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Server.GameObjects.Components.Suspicion; +using Content.Shared.GameTicking; using JetBrains.Annotations; using Robust.Shared.GameObjects.Systems; namespace Content.Server.GameObjects.EntitySystems { [UsedImplicitly] - public class SuspicionRoleSystem : EntitySystem + public class SuspicionRoleSystem : EntitySystem, IResettingEntitySystem { private readonly HashSet _traitors = new(); @@ -47,5 +48,10 @@ namespace Content.Server.GameObjects.EntitySystems _traitors.Clear(); base.Shutdown(); } + + public void Reset() + { + _traitors.Clear(); + } } } From 563c15af34a5785b141433e8598507b4b09f530b Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 02:01:59 +0100 Subject: [PATCH 097/166] Fix seeing do afters in the lobby. --- .../GameObjects/EntitySystems/DoAfter/DoAfterGui.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterGui.cs b/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterGui.cs index d0ca66107b..ec1bd55d96 100644 --- a/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterGui.cs +++ b/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterGui.cs @@ -149,6 +149,16 @@ namespace Content.Client.GameObjects.EntitySystems.DoAfter if (doAfters.Count == 0) return; + if (_eyeManager.CurrentMap != AttachedEntity.Transform.MapID) + { + Visible = false; + return; + } + else + { + Visible = true; + } + // Set position ready for 2nd+ frames. var screenCoordinates = _eyeManager.CoordinatesToScreen(AttachedEntity.Transform.Coordinates); _playerPosition = new ScreenCoordinates(screenCoordinates.X / UIScale, screenCoordinates.Y / UIScale); From bfe575b7b6bac0276ba1b19c03f5b7e00e525012 Mon Sep 17 00:00:00 2001 From: Swept Date: Mon, 11 Jan 2021 07:02:36 +0000 Subject: [PATCH 098/166] Random bedsheet spawner. (#2940) * Initial * Optimized YAML * Probbed * Updates RSIs * Maps them into dorms. * A * Adds descriptions from TG * Addressed reviews --- Resources/Maps/saltern.yml | 1583 ++++++++--------- .../Effects/Markers/bedsheet_spawner.yml | 36 + .../Entities/Objects/Misc/bedsheets.yml | 125 +- .../Clothing/Neck/Bedsheets/NT.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/USA.rsi/meta.json | 2 +- .../Neck/Bedsheets/black.rsi/meta.json | 2 +- .../Neck/Bedsheets/blue.rsi/meta.json | 2 +- .../Neck/Bedsheets/brown.rsi/meta.json | 2 +- .../Neck/Bedsheets/captain.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/ce.rsi/meta.json | 2 +- .../Neck/Bedsheets/centcom.rsi/meta.json | 2 +- .../Neck/Bedsheets/clown.rsi/inhand-left.png | Bin 0 -> 428 bytes .../Neck/Bedsheets/clown.rsi/inhand-right.png | Bin 0 -> 440 bytes .../Neck/Bedsheets/clown.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/cmo.rsi/meta.json | 2 +- .../Neck/Bedsheets/green.rsi/meta.json | 2 +- .../Neck/Bedsheets/grey.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/hop.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/hos.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/ian.rsi/meta.json | 2 +- .../Neck/Bedsheets/medical.rsi/meta.json | 2 +- .../Neck/Bedsheets/mime.rsi/meta.json | 2 +- .../Neck/Bedsheets/orange.rsi/meta.json | 2 +- .../Neck/Bedsheets/purple.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/qm.rsi/meta.json | 2 +- .../Neck/Bedsheets/rainbow.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/rd.rsi/meta.json | 2 +- .../Clothing/Neck/Bedsheets/red.rsi/meta.json | 2 +- .../Neck/Bedsheets/syndie.rsi/meta.json | 2 +- .../Neck/Bedsheets/white.rsi/meta.json | 2 +- .../Neck/Bedsheets/yellow.rsi/meta.json | 2 +- .../Objects/Misc/bedsheets.rsi/meta.json | 207 +-- 32 files changed, 904 insertions(+), 1099 deletions(-) create mode 100644 Resources/Prototypes/Entities/Effects/Markers/bedsheet_spawner.yml create mode 100644 Resources/Textures/Clothing/Neck/Bedsheets/clown.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Neck/Bedsheets/clown.rsi/inhand-right.png diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index 2707b46420..6ec3a2cf13 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -534,6 +534,8 @@ entities: pos: -15.694785,24.608267 rot: -1.5707963267948966 rad type: Transform + - caps: AddTo, RemoveFrom + type: SolutionContainer - uid: 60 type: DisgustingSweptSoup components: @@ -650,6 +652,8 @@ entities: pos: -3.470539,16.956116 rot: -1.5707963267948966 rad type: Transform + - caps: AddTo, RemoveFrom + type: SolutionContainer - uid: 74 type: Carpet components: @@ -699,6 +703,8 @@ entities: pos: 8.439846,26.712742 rot: 1.5707963267948966 rad type: Transform + - caps: AddTo, RemoveFrom + type: SolutionContainer - uid: 81 type: Table components: @@ -923,6 +929,8 @@ entities: - parent: 853 pos: 8.661116,25.513401 type: Transform + - caps: AddTo, RemoveFrom + type: SolutionContainer - uid: 114 type: BoxDonkpocket components: @@ -21192,16 +21200,16 @@ entities: - containers: machine_board: entities: - - 4273 + - 4272 type: Robust.Server.GameObjects.Components.Container.Container machine_parts: entities: + - 4273 - 4274 - 4275 - 4276 - 4277 - 4278 - - 4279 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 1044 @@ -22499,6 +22507,8 @@ entities: pos: -35.166924,-3.5 rot: 3.141592653589793 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 1191 @@ -23011,10 +23021,8 @@ entities: pos: -5.5120974,-7.5 rot: 1.5707963267948966 rad type: Transform - - startingCharge: 11998.838 + - startingCharge: 11999.417 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 1240 type: Poweredlight components: @@ -32228,6 +32236,8 @@ entities: pos: -8.476567,-17.420076 rot: -1.5707963267948966 rad type: Transform + - caps: AddTo, RemoveFrom + type: SolutionContainer - uid: 2443 type: TableWood components: @@ -32677,10 +32687,8 @@ entities: pos: 9.5,27.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.004 + - startingCharge: 11999.634 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2505 type: SalternApc components: @@ -32688,10 +32696,8 @@ entities: pos: -2.5,27.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.34 + - startingCharge: 11999.3 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2506 type: SalternApc components: @@ -32699,10 +32705,8 @@ entities: pos: 9.5,22.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.008 + - startingCharge: 11999.066 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2507 type: SalternApc components: @@ -32710,10 +32714,8 @@ entities: pos: 24.5,14.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.336 + - startingCharge: 11999.733 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2508 type: SalternApc components: @@ -32721,10 +32723,8 @@ entities: pos: 28.5,14.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.838 + - startingCharge: 11999.483 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2509 type: SalternApc components: @@ -32732,10 +32732,8 @@ entities: pos: 47.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11982.172 + - startingCharge: 11991.15 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2510 type: SalternApc components: @@ -32743,10 +32741,8 @@ entities: pos: 31.5,1.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.174 + - startingCharge: 11999.15 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2511 type: SalternApc components: @@ -32754,10 +32750,8 @@ entities: pos: 43.5,10.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.506 + - startingCharge: 11999.384 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2512 type: SalternApc components: @@ -32765,10 +32759,8 @@ entities: pos: 12.5,13.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11997.842 + - startingCharge: 11999.116 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2513 type: SalternApc components: @@ -32776,10 +32768,8 @@ entities: pos: 7.5,-17.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.008 + - startingCharge: 11999.2 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2514 type: SalternApc components: @@ -32787,10 +32777,8 @@ entities: pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.008 + - startingCharge: 11999.066 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2515 type: SalternApc components: @@ -32798,22 +32786,20 @@ entities: pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.672 + - startingCharge: 11999.467 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2516 - type: PoweredSmallLight + type: CrateEmergencyFire components: - parent: 853 - pos: -15.498537,16.019438 + pos: 22.5,13.5 rot: -1.5707963267948966 rad type: Transform - - powerLoad: 0 - type: PowerReceiver + - IsPlaceable: False + type: PlaceableSurface - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 2517 type: SalternApc @@ -32822,10 +32808,8 @@ entities: pos: -3.5,15.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.838 + - startingCharge: 11999.483 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2518 type: SalternApc components: @@ -32833,10 +32817,8 @@ entities: pos: -28.5,12.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.672 + - startingCharge: 11999.4 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2519 type: SalternApc components: @@ -32844,10 +32826,8 @@ entities: pos: -39.5,11.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.672 + - startingCharge: 11999.4 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2520 type: SalternApc components: @@ -32855,10 +32835,8 @@ entities: pos: -11.5,2.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11996.846 + - startingCharge: 11998.483 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2521 type: Table components: @@ -32873,10 +32851,8 @@ entities: pos: -20.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.502 + - startingCharge: 11999.75 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2523 type: ApcExtensionCable components: @@ -32898,10 +32874,8 @@ entities: pos: -1.5,-18.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.174 + - startingCharge: 11999.083 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2526 type: SalternApc components: @@ -32909,10 +32883,8 @@ entities: pos: -9.75476,-21.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11992.338 + - startingCharge: 11996.233 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2527 type: SalternApc components: @@ -32920,10 +32892,8 @@ entities: pos: -14.5,-16.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.17 + - startingCharge: 11999.65 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2528 type: ApcExtensionCable components: @@ -33113,10 +33083,8 @@ entities: pos: -16.302551,15.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.668 + - startingCharge: 11999.833 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2555 type: ApcExtensionCable components: @@ -34762,10 +34730,8 @@ entities: pos: -14.5,-8.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.506 + - startingCharge: 11999.45 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 2790 type: ApcExtensionCable components: @@ -40533,7 +40499,7 @@ entities: pos: 42.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer @@ -40546,7 +40512,7 @@ entities: pos: 27.5,13.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer @@ -40559,7 +40525,7 @@ entities: pos: 11.5,24.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer @@ -40572,25 +40538,19 @@ entities: pos: 21.5,-9.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer - supplyRate: 6000 type: PowerSupplier - uid: 3617 - type: SalternSubstation + type: BedsheetSpawner components: - parent: 853 - pos: -15.5,16.5 + pos: -27.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 - type: Battery - - drawRate: 8000 - type: PowerConsumer - - supplyRate: 6000 - type: PowerSupplier - uid: 3618 type: SalternSubstation components: @@ -40598,7 +40558,7 @@ entities: pos: -0.5,-22.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer @@ -40618,7 +40578,7 @@ entities: pos: 0.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer @@ -40631,7 +40591,7 @@ entities: pos: -21.5,-10.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer @@ -40644,7 +40604,7 @@ entities: pos: -32.5,7.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319450 + - startingCharge: 3200172 type: Battery - drawRate: 8000 type: PowerConsumer @@ -42483,6 +42443,8 @@ entities: pos: 44.486908,10 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3884 @@ -42491,6 +42453,8 @@ entities: - parent: 853 pos: 47.22923,-3 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3885 @@ -42499,6 +42463,8 @@ entities: - parent: 853 pos: 29.299644,-7.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3886 @@ -42508,6 +42474,8 @@ entities: pos: 31.467993,-4.5 rot: 1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3887 @@ -42516,6 +42484,8 @@ entities: - parent: 853 pos: 30.278831,9.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3888 @@ -42524,6 +42494,8 @@ entities: - parent: 853 pos: 18.260162,9.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3889 @@ -42533,6 +42505,8 @@ entities: pos: 26.46292,-1 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3890 @@ -42542,6 +42516,8 @@ entities: pos: 17.399544,2 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3891 @@ -42550,6 +42526,8 @@ entities: - parent: 853 pos: 7.2721233,-15.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3892 @@ -42558,6 +42536,8 @@ entities: - parent: 853 pos: 7.3033733,-20.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3893 @@ -42567,6 +42547,8 @@ entities: pos: -10.487591,2 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3894 @@ -42576,6 +42558,8 @@ entities: pos: -2.7508366,15 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3895 @@ -42585,6 +42569,8 @@ entities: pos: 5.701264,16.5 rot: 3.141592653589793 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3896 @@ -42593,6 +42579,8 @@ entities: - parent: 853 pos: 6.2924953,10.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3897 @@ -42602,6 +42590,8 @@ entities: pos: 12.41432,9.5 rot: 1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3898 @@ -42611,6 +42601,8 @@ entities: pos: 16.47682,3.5 rot: 1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3899 @@ -42620,6 +42612,8 @@ entities: pos: -24.514448,12 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3900 @@ -42628,6 +42622,8 @@ entities: - parent: 853 pos: -39.802197,11.207858 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3901 @@ -42637,6 +42633,8 @@ entities: pos: -22.347473,-1.5 rot: 3.141592653589793 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3902 @@ -42645,6 +42643,8 @@ entities: - parent: 853 pos: -20.745232,-0.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3903 @@ -42654,6 +42654,8 @@ entities: pos: -13.885857,-9 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3904 @@ -42670,6 +42672,8 @@ entities: pos: 10.68897,19.5 rot: 3.141592653589793 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3906 @@ -42679,6 +42683,8 @@ entities: pos: 8.923345,28.5 rot: 1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3907 @@ -42688,6 +42694,8 @@ entities: pos: -2.4985301,28.5 rot: 1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3908 @@ -42696,6 +42704,8 @@ entities: - parent: 853 pos: -2.7641551,26.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3909 @@ -42705,6 +42715,8 @@ entities: pos: 9.704595,26.5 rot: 3.141592653589793 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3910 @@ -42714,6 +42726,8 @@ entities: pos: -12.509865,6 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3911 @@ -42777,31 +42791,19 @@ entities: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 3918 - type: PoweredSmallLight + type: BedsheetSpawner components: - parent: 853 - pos: -15.494916,16.030584 + pos: -27.5,1.5 rot: -1.5707963267948966 rad type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer - uid: 3919 - type: PoweredSmallLight + type: BedsheetSpawner components: - parent: 853 - pos: -15.494916,16.030584 + pos: -27.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer - uid: 3920 type: PoweredSmallLight components: @@ -42822,10 +42824,8 @@ entities: pos: -12.5,12.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11998.174 + - startingCharge: 11999.217 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 3922 type: EmergencyLight components: @@ -42833,6 +42833,8 @@ entities: pos: -13.5,-17 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3923 @@ -42842,6 +42844,8 @@ entities: pos: -10.5,-17 rot: -1.5707963267948966 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3924 @@ -42851,6 +42855,8 @@ entities: pos: 5.7693076,-15.5 rot: 3.141592653589793 rad type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3925 @@ -42859,6 +42865,8 @@ entities: - parent: 853 pos: 2.2274737,8.5 type: Transform + - powerLoad: 1 + type: PowerReceiver - startingCharge: 30000 type: Battery - uid: 3926 @@ -44116,6 +44124,8 @@ entities: pos: -4.4964724,-8 rot: -1.5707963267948966 rad type: Transform + - startingCharge: 12224.357 + type: Battery - uid: 4082 type: AirlockMaint components: @@ -44332,10 +44342,8 @@ entities: pos: -30.517641,-3.5 rot: 3.141592653589793 rad type: Transform - - startingCharge: 11998.34 + - startingCharge: 11999.233 type: Battery - - drawRate: 2000 - type: PowerConsumer - uid: 4112 type: Bed components: @@ -44358,62 +44366,63 @@ entities: rot: 1.5707963267948966 rad type: Transform - uid: 4115 - type: BedsheetNT + type: PoweredSmallLight components: - parent: 853 - pos: -27.5,1.5 - rot: 1.5707963267948966 rad + pos: -22.5,-16 + rot: -1.5707963267948966 rad type: Transform + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 4116 - type: BedsheetNT + type: AirlockMaintIntLocked components: + - name: Waste Disposal + type: MetaData - parent: 853 - pos: -27.5,-1.5 - rot: 1.5707963267948966 rad + pos: -24.5,-12.5 + rot: -1.5707963267948966 rad type: Transform - uid: 4117 - type: BedsheetNT - components: - - parent: 853 - pos: -27.5,-4.5 - rot: 1.5707963267948966 rad - type: Transform -- uid: 4118 type: TableWood components: - parent: 853 pos: -30.5,-4.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4119 +- uid: 4118 type: TableWood components: - parent: 853 pos: -30.5,-1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4120 +- uid: 4119 type: TableWood components: - parent: 853 pos: -30.5,1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4121 +- uid: 4120 type: ChairWood components: - parent: 853 pos: -30.5,-5.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4122 +- uid: 4121 type: ChairWood components: - parent: 853 pos: -30.5,-2.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4123 +- uid: 4122 type: Poweredlight components: - parent: 853 @@ -44425,7 +44434,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4124 +- uid: 4123 type: Poweredlight components: - parent: 853 @@ -44438,7 +44447,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4125 +- uid: 4124 type: Poweredlight components: - parent: 853 @@ -44451,91 +44460,91 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4126 +- uid: 4125 type: CarpetGreen components: - parent: 853 pos: -29.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4127 +- uid: 4126 type: CarpetGreen components: - parent: 853 pos: -29.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4128 +- uid: 4127 type: CarpetGreen components: - parent: 853 pos: -28.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4129 +- uid: 4128 type: CarpetGreen components: - parent: 853 pos: -28.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4130 +- uid: 4129 type: CarpetGay components: - parent: 853 pos: -29.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4131 +- uid: 4130 type: CarpetGay components: - parent: 853 pos: -29.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4132 +- uid: 4131 type: CarpetGay components: - parent: 853 pos: -28.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4133 +- uid: 4132 type: CarpetGay components: - parent: 853 pos: -28.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4134 +- uid: 4133 type: CarpetBlue components: - parent: 853 pos: -29.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4135 +- uid: 4134 type: CarpetBlue components: - parent: 853 pos: -29.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4136 +- uid: 4135 type: CarpetBlue components: - parent: 853 pos: -28.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4137 +- uid: 4136 type: CarpetBlue components: - parent: 853 pos: -28.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4138 +- uid: 4137 type: BoxDonkpocket components: - parent: 853 @@ -44546,42 +44555,42 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4139 +- uid: 4138 type: TableR components: - parent: 853 pos: 15.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4140 +- uid: 4139 type: Bed components: - parent: 853 pos: -2.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4141 +- uid: 4140 type: Bed components: - parent: 853 pos: 0.5,7.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4141 + type: BedsheetOrange + components: + - parent: 853 + pos: -2.5,7.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4142 - type: BedsheetOrange - components: - - parent: 853 - pos: -2.5,7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4143 type: BedsheetOrange components: - parent: 853 pos: 0.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4144 +- uid: 4143 type: LockerGeneric components: - parent: 853 @@ -44594,7 +44603,7 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4145 +- uid: 4144 type: LockerGeneric components: - parent: 853 @@ -44607,7 +44616,7 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4146 +- uid: 4145 type: Poweredlight components: - parent: 853 @@ -44619,7 +44628,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4147 +- uid: 4146 type: Poweredlight components: - parent: 853 @@ -44631,7 +44640,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4148 +- uid: 4147 type: Poweredlight components: - parent: 853 @@ -44643,7 +44652,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4149 +- uid: 4148 type: Poweredlight components: - parent: 853 @@ -44654,14 +44663,14 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4150 +- uid: 4149 type: Rack components: - parent: 853 pos: 31.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4151 +- uid: 4150 type: Poweredlight components: - parent: 853 @@ -44673,77 +44682,77 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4152 +- uid: 4151 type: hydroponicsTray components: - parent: 853 pos: -18.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4153 +- uid: 4152 type: hydroponicsTray components: - parent: 853 pos: -19.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4154 +- uid: 4153 type: hydroponicsTray components: - parent: 853 pos: -20.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4155 +- uid: 4154 type: hydroponicsTray components: - parent: 853 pos: -20.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4156 +- uid: 4155 type: hydroponicsTray components: - parent: 853 pos: -20.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4157 +- uid: 4156 type: hydroponicsTray components: - parent: 853 pos: -19.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4158 +- uid: 4157 type: hydroponicsTray components: - parent: 853 pos: -18.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4159 +- uid: 4158 type: solid_wall components: - parent: 853 pos: 16.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4160 +- uid: 4159 type: solid_wall components: - parent: 853 pos: 12.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4161 +- uid: 4160 type: solid_wall components: - parent: 853 pos: 13.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4162 +- uid: 4161 type: Morgue components: - parent: 853 @@ -44755,7 +44764,7 @@ entities: morgue_tray: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4163 +- uid: 4162 type: Morgue components: - parent: 853 @@ -44767,7 +44776,7 @@ entities: morgue_tray: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4164 +- uid: 4163 type: Morgue components: - parent: 853 @@ -44779,7 +44788,7 @@ entities: morgue_tray: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4165 +- uid: 4164 type: Morgue components: - parent: 853 @@ -44791,7 +44800,7 @@ entities: morgue_tray: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4166 +- uid: 4165 type: Morgue components: - parent: 853 @@ -44803,27 +44812,27 @@ entities: morgue_tray: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4167 +- uid: 4166 type: SignMorgue components: - parent: 853 pos: 17.313038,-12.573634 type: Transform -- uid: 4168 +- uid: 4167 type: TableMetal components: - parent: 853 pos: 14.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4169 +- uid: 4168 type: TableMetal components: - parent: 853 pos: 15.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4170 +- uid: 4169 type: CrayonBoxFilled components: - parent: 853 @@ -44834,7 +44843,7 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4171 +- uid: 4170 type: MagazinePistolSmgTopMounted components: - parent: 853 @@ -44845,7 +44854,7 @@ entities: RangedMagazine-magazine: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4172 +- uid: 4171 type: MagazinePistolSmgTopMounted components: - parent: 853 @@ -44856,7 +44865,7 @@ entities: RangedMagazine-magazine: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4173 +- uid: 4172 type: AirlockMedicalLocked components: - name: Morgue @@ -44865,7 +44874,7 @@ entities: pos: 16.5,-15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4174 +- uid: 4173 type: computerBodyScanner components: - parent: 853 @@ -44875,36 +44884,36 @@ entities: - containers: board: entities: - - 4175 + - 4174 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4175 +- uid: 4174 type: BodyScannerComputerCircuitboard components: - - parent: 4174 + - parent: 4173 type: Transform -- uid: 4176 +- uid: 4175 type: Rack components: - parent: 853 pos: 29.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4177 +- uid: 4176 type: BarSign components: - parent: 853 pos: -5.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4178 +- uid: 4177 type: SignBar components: - parent: 853 pos: 0.7031777,2.4187772 rot: -1.5707963267948966 rad type: Transform -- uid: 4179 +- uid: 4178 type: Poweredlight components: - parent: 853 @@ -44917,7 +44926,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4180 +- uid: 4179 type: Poweredlight components: - parent: 853 @@ -44930,21 +44939,21 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4181 +- uid: 4180 type: MopBucket components: - parent: 853 pos: -21.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4182 +- uid: 4181 type: AMEJar components: - parent: 853 pos: 38.585155,11.629917 rot: -1.5707963267948966 rad type: Transform -- uid: 4183 +- uid: 4182 type: KitchenReagentGrinder components: - parent: 853 @@ -44957,133 +44966,133 @@ entities: ReagentGrinder-entityContainerContainer: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4184 +- uid: 4183 type: ApcExtensionCable components: - parent: 853 pos: 26.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4185 +- uid: 4184 type: ApcExtensionCable components: - parent: 853 pos: 25.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4186 +- uid: 4185 type: Carpet components: - parent: 853 pos: -8.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4187 +- uid: 4186 type: Carpet components: - parent: 853 pos: -8.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4188 +- uid: 4187 type: Carpet components: - parent: 853 pos: -7.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4189 +- uid: 4188 type: Carpet components: - parent: 853 pos: -7.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4190 +- uid: 4189 type: Carpet components: - parent: 853 pos: -6.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4191 +- uid: 4190 type: Carpet components: - parent: 853 pos: -6.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4192 +- uid: 4191 type: Carpet components: - parent: 853 pos: -5.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4193 +- uid: 4192 type: Carpet components: - parent: 853 pos: -5.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4194 +- uid: 4193 type: Carpet components: - parent: 853 pos: -4.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4195 +- uid: 4194 type: Carpet components: - parent: 853 pos: -4.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4196 +- uid: 4195 type: Carpet components: - parent: 853 pos: -3.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4197 +- uid: 4196 type: Carpet components: - parent: 853 pos: -3.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4198 +- uid: 4197 type: Carpet components: - parent: 853 pos: -2.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4199 +- uid: 4198 type: Carpet components: - parent: 853 pos: -2.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4200 +- uid: 4199 type: Carpet components: - parent: 853 pos: -1.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4201 +- uid: 4200 type: KitchenSpike components: - parent: 853 pos: -9.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4202 +- uid: 4201 type: LockerFreezer components: - parent: 853 @@ -45096,7 +45105,7 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4203 +- uid: 4202 type: LockerFreezer components: - parent: 853 @@ -45109,7 +45118,7 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4204 +- uid: 4203 type: Poweredlight components: - parent: 853 @@ -45122,140 +45131,140 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4205 +- uid: 4204 type: Carpet components: - parent: 853 pos: -8.5,-1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4206 +- uid: 4205 type: Carpet components: - parent: 853 pos: -7.5,-1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4207 +- uid: 4206 type: Carpet components: - parent: 853 pos: -6.5,-1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4208 +- uid: 4207 type: reinforced_wall components: - parent: 853 pos: -9.5,23.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4209 +- uid: 4208 type: reinforced_wall components: - parent: 853 pos: -8.5,23.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4210 +- uid: 4209 type: reinforced_wall components: - parent: 853 pos: -7.5,23.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4211 +- uid: 4210 type: SpawnPointHeadOfSecurity components: - parent: 853 pos: -7.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4212 +- uid: 4211 type: CarpetBlack components: - parent: 853 pos: -6.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4213 +- uid: 4212 type: CarpetBlack components: - parent: 853 pos: -6.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4214 +- uid: 4213 type: CarpetBlack components: - parent: 853 pos: -6.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4215 +- uid: 4214 type: CarpetBlack components: - parent: 853 pos: -7.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4216 +- uid: 4215 type: CarpetBlack components: - parent: 853 pos: -7.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4217 +- uid: 4216 type: CarpetBlack components: - parent: 853 pos: -7.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4218 +- uid: 4217 type: CarpetBlack components: - parent: 853 pos: -8.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4219 +- uid: 4218 type: CarpetBlack components: - parent: 853 pos: -8.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4220 +- uid: 4219 type: CarpetBlack components: - parent: 853 pos: -8.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4221 +- uid: 4220 type: Chair components: - parent: 853 pos: -7.5,20.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4222 +- uid: 4221 type: Chair components: - parent: 853 pos: -6.5,20.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4223 +- uid: 4222 type: TableWood components: - parent: 853 pos: -8.5,21.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4224 +- uid: 4223 type: WeaponCapacitorRecharger components: - parent: 853 @@ -45268,103 +45277,103 @@ entities: WeaponCapacitorCharger-powerCellContainer: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4225 +- uid: 4224 type: Table components: - parent: 853 pos: -4.5,14.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4226 +- uid: 4225 type: Table components: - parent: 853 pos: -4.5,13.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4227 +- uid: 4226 type: Table components: - parent: 853 pos: -5.5,13.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4228 +- uid: 4227 type: Table components: - parent: 853 pos: -6.5,13.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4229 +- uid: 4228 type: Table components: - parent: 853 pos: -7.5,13.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4230 +- uid: 4229 type: Table components: - parent: 853 pos: -7.5,14.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4231 +- uid: 4230 type: Chair components: - parent: 853 pos: -4.5,12.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4232 +- uid: 4231 type: Chair components: - parent: 853 pos: -5.5,12.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4233 +- uid: 4232 type: Chair components: - parent: 853 pos: -6.5,12.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4234 +- uid: 4233 type: Chair components: - parent: 853 pos: -7.5,12.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4235 +- uid: 4234 type: Chair components: - parent: 853 pos: -8.5,13.5 type: Transform -- uid: 4236 +- uid: 4235 type: Chair components: - parent: 853 pos: -8.5,14.5 type: Transform -- uid: 4237 +- uid: 4236 type: Chair components: - parent: 853 pos: -3.5,14.5 rot: 3.141592653589793 rad type: Transform -- uid: 4238 +- uid: 4237 type: Chair components: - parent: 853 pos: -3.5,13.5 rot: 3.141592653589793 rad type: Transform -- uid: 4239 +- uid: 4238 type: BoxHandcuff components: - parent: 853 @@ -45375,7 +45384,7 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4240 +- uid: 4239 type: WeaponCapacitorRecharger components: - parent: 853 @@ -45388,7 +45397,7 @@ entities: WeaponCapacitorCharger-powerCellContainer: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4241 +- uid: 4240 type: BoxDonkpocket components: - parent: 853 @@ -45399,49 +45408,49 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4242 +- uid: 4241 type: RadioHandheld components: - parent: 853 pos: -7.5,13.5 rot: 3.141592653589793 rad type: Transform -- uid: 4243 +- uid: 4242 type: RadioHandheld components: - parent: 853 pos: -4.5,13.5 rot: 3.141592653589793 rad type: Transform -- uid: 4244 +- uid: 4243 type: RadioHandheld components: - parent: 853 pos: 1.5,28.5 rot: 3.141592653589793 rad type: Transform -- uid: 4245 +- uid: 4244 type: RadioHandheld components: - parent: 853 pos: 26.5,8.5 rot: 3.141592653589793 rad type: Transform -- uid: 4246 +- uid: 4245 type: Table components: - parent: 853 pos: -7.5,-28.5 rot: 3.141592653589793 rad type: Transform -- uid: 4247 +- uid: 4246 type: Table components: - parent: 853 pos: -7.5,-29.5 rot: 3.141592653589793 rad type: Transform -- uid: 4248 +- uid: 4247 type: KitchenMicrowave components: - parent: 853 @@ -45452,14 +45461,14 @@ entities: microwave_entity_container: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4249 +- uid: 4248 type: ClothingHeadHelmetScaf components: - parent: 853 pos: 13.5,24.5 rot: 3.141592653589793 rad type: Transform -- uid: 4250 +- uid: 4249 type: ClothingBeltSecurityFilled components: - parent: 853 @@ -45470,35 +45479,35 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4251 +- uid: 4250 type: Shelf components: - parent: 853 pos: -20.5,7.5 rot: 3.141592653589793 rad type: Transform -- uid: 4252 +- uid: 4251 type: SprayBottleSpaceCleaner components: - parent: 853 pos: -20.5,7.5 rot: 3.141592653589793 rad type: Transform -- uid: 4253 +- uid: 4252 type: RCDAmmo components: - parent: 853 pos: 32.5,-2.5 rot: 3.141592653589793 rad type: Transform -- uid: 4254 +- uid: 4253 type: RCDAmmo components: - parent: 853 pos: 32.812416,-2.3740568 rot: 3.141592653589793 rad type: Transform -- uid: 4255 +- uid: 4254 type: SmgWt550 components: - parent: 853 @@ -45512,19 +45521,19 @@ entities: type: Content.Server.GameObjects.ContainerSlot MagazineBarrel-magazine: entities: - - 4256 + - 4255 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4256 +- uid: 4255 type: MagazinePistolSmgTopMounted components: - - parent: 4255 + - parent: 4254 type: Transform - containers: RangedMagazine-magazine: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4257 +- uid: 4256 type: BodyBag_Container components: - parent: 853 @@ -45537,7 +45546,7 @@ entities: body_bag_label: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4258 +- uid: 4257 type: BodyBag_Container components: - parent: 853 @@ -45550,7 +45559,7 @@ entities: body_bag_label: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4259 +- uid: 4258 type: Poweredlight components: - parent: 853 @@ -45563,19 +45572,19 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4260 +- uid: 4259 type: TableMetal components: - parent: 853 pos: -14.5,18.5 type: Transform -- uid: 4261 +- uid: 4260 type: TableMetal components: - parent: 853 pos: -14.5,19.5 type: Transform -- uid: 4262 +- uid: 4261 type: BoxFlashbang components: - parent: 853 @@ -45585,63 +45594,63 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4263 +- uid: 4262 type: CarpetBlue components: - parent: 853 pos: 8.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4264 +- uid: 4263 type: CarpetBlue components: - parent: 853 pos: 8.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4265 +- uid: 4264 type: CarpetBlue components: - parent: 853 pos: 8.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4266 +- uid: 4265 type: CarpetBlue components: - parent: 853 pos: 8.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4267 +- uid: 4266 type: CarpetBlue components: - parent: 853 pos: 9.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4268 +- uid: 4267 type: CarpetBlue components: - parent: 853 pos: 9.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4269 +- uid: 4268 type: CarpetBlue components: - parent: 853 pos: 9.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4270 +- uid: 4269 type: CarpetBlue components: - parent: 853 pos: 9.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4271 +- uid: 4270 type: LampGold components: - parent: 853 @@ -45652,25 +45661,30 @@ entities: cellslot_cell_container: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4272 +- uid: 4271 type: Table components: - parent: 853 pos: -10.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4273 +- uid: 4272 type: ProtolatheMachineCircuitboard components: - parent: 1043 type: Transform +- uid: 4273 + type: MatterBinStockPart + components: + - parent: 1043 + type: Transform - uid: 4274 type: MatterBinStockPart components: - parent: 1043 type: Transform - uid: 4275 - type: MatterBinStockPart + type: MicroManipulatorStockPart components: - parent: 1043 type: Transform @@ -45680,7 +45694,7 @@ entities: - parent: 1043 type: Transform - uid: 4277 - type: MicroManipulatorStockPart + type: Beaker components: - parent: 1043 type: Transform @@ -45690,291 +45704,286 @@ entities: - parent: 1043 type: Transform - uid: 4279 - type: Beaker - components: - - parent: 1043 - type: Transform -- uid: 4280 type: TraitorDMRedemptionMachineSpawner components: - parent: 853 pos: -18.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4281 +- uid: 4280 type: TraitorDMRedemptionMachineSpawner components: - parent: 853 pos: 10.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4282 +- uid: 4281 type: TraitorDMRedemptionMachineSpawner components: - parent: 853 pos: -9.5,-25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4283 +- uid: 4282 type: TraitorDMRedemptionMachineSpawner components: - parent: 853 pos: 27.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4284 +- uid: 4283 type: reinforced_wall components: - parent: 853 pos: 52.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4285 +- uid: 4284 type: reinforced_wall components: - parent: 853 pos: 52.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4286 +- uid: 4285 type: reinforced_wall components: - parent: 853 pos: 52.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4287 +- uid: 4286 type: reinforced_wall components: - parent: 853 pos: 52.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4288 +- uid: 4287 type: reinforced_wall components: - parent: 853 pos: 52.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4289 +- uid: 4288 type: reinforced_wall components: - parent: 853 pos: 52.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4290 +- uid: 4289 type: reinforced_wall components: - parent: 853 pos: 52.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4291 +- uid: 4290 type: SinguloGenerator components: - parent: 853 pos: 49.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4292 +- uid: 4291 type: LowWall components: - parent: 853 pos: 46.5,14.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4292 + type: LowWall + components: + - parent: 853 + pos: 47.5,14.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4293 type: LowWall components: - parent: 853 - pos: 47.5,14.5 + pos: 48.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4294 type: LowWall components: - parent: 853 - pos: 48.5,14.5 + pos: 49.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4295 type: LowWall components: - parent: 853 - pos: 49.5,14.5 + pos: 50.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4296 type: LowWall components: - parent: 853 - pos: 50.5,14.5 + pos: 51.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4297 type: LowWall components: - parent: 853 - pos: 51.5,14.5 + pos: 51.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 4298 type: LowWall components: - parent: 853 - pos: 51.5,13.5 + pos: 51.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 4299 type: LowWall components: - parent: 853 - pos: 51.5,12.5 + pos: 51.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 4300 type: LowWall components: - parent: 853 - pos: 51.5,11.5 + pos: 51.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 4301 type: LowWall components: - parent: 853 - pos: 51.5,10.5 + pos: 51.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 4302 type: LowWall components: - parent: 853 - pos: 51.5,9.5 + pos: 51.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 4303 - type: LowWall - components: - - parent: 853 - pos: 51.5,8.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4304 type: LowWall components: - parent: 853 pos: 51.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4305 +- uid: 4304 type: reinforced_wall components: - parent: 853 pos: 51.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4306 +- uid: 4305 type: reinforced_wall components: - parent: 853 pos: 45.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4307 +- uid: 4306 type: ReinforcedWindow components: - parent: 853 pos: 46.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4308 +- uid: 4307 type: ReinforcedWindow components: - parent: 853 pos: 47.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4309 +- uid: 4308 type: ReinforcedWindow components: - parent: 853 pos: 48.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4310 +- uid: 4309 type: ReinforcedWindow components: - parent: 853 pos: 49.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4311 +- uid: 4310 type: ReinforcedWindow components: - parent: 853 pos: 50.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4312 +- uid: 4311 type: ReinforcedWindow components: - parent: 853 pos: 51.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4313 +- uid: 4312 type: ReinforcedWindow components: - parent: 853 pos: 51.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4314 +- uid: 4313 type: ReinforcedWindow components: - parent: 853 pos: 51.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4315 +- uid: 4314 type: ReinforcedWindow components: - parent: 853 pos: 51.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4316 +- uid: 4315 type: ReinforcedWindow components: - parent: 853 pos: 51.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4317 +- uid: 4316 type: ReinforcedWindow components: - parent: 853 pos: 51.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4318 +- uid: 4317 type: ReinforcedWindow components: - parent: 853 pos: 51.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4319 +- uid: 4318 type: ReinforcedWindow components: - parent: 853 pos: 51.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4320 +- uid: 4319 type: AirlockEngineeringLocked components: - name: Antimatter Engine @@ -45983,7 +45992,7 @@ entities: pos: 45.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4321 +- uid: 4320 type: AirlockEngineeringLocked components: - name: Antimatter Engine @@ -45992,7 +46001,7 @@ entities: pos: 45.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4322 +- uid: 4321 type: Poweredlight components: - parent: 853 @@ -46004,119 +46013,119 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4323 +- uid: 4322 type: ApcExtensionCable components: - parent: 853 pos: 45.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4324 +- uid: 4323 type: ApcExtensionCable components: - parent: 853 pos: 46.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4325 +- uid: 4324 type: ApcExtensionCable components: - parent: 853 pos: 46.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4326 +- uid: 4325 type: ApcExtensionCable components: - parent: 853 pos: 47.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4327 +- uid: 4326 type: ApcExtensionCable components: - parent: 853 pos: 47.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4328 +- uid: 4327 type: ApcExtensionCable components: - parent: 853 pos: 47.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4329 +- uid: 4328 type: ApcExtensionCable components: - parent: 853 pos: 47.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4330 +- uid: 4329 type: ApcExtensionCable components: - parent: 853 pos: 47.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4331 +- uid: 4330 type: ApcExtensionCable components: - parent: 853 pos: 47.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4332 +- uid: 4331 type: ApcExtensionCable components: - parent: 853 pos: 49.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4333 +- uid: 4332 type: ApcExtensionCable components: - parent: 853 pos: 49.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4334 +- uid: 4333 type: ApcExtensionCable components: - parent: 853 pos: 49.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4335 +- uid: 4334 type: ApcExtensionCable components: - parent: 853 pos: 49.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4336 +- uid: 4335 type: ApcExtensionCable components: - parent: 853 pos: 49.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4337 +- uid: 4336 type: ApcExtensionCable components: - parent: 853 pos: 49.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4338 +- uid: 4337 type: ApcExtensionCable components: - parent: 853 pos: 48.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4339 +- uid: 4338 type: Poweredlight components: - parent: 853 @@ -46128,977 +46137,977 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4340 +- uid: 4339 type: HVWire components: - parent: 853 pos: 42.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4341 +- uid: 4340 type: HVWire components: - parent: 853 pos: 43.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4342 +- uid: 4341 type: HVWire components: - parent: 853 pos: 44.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4343 +- uid: 4342 type: HVWire components: - parent: 853 pos: 45.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4344 +- uid: 4343 type: HVWire components: - parent: 853 pos: 46.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4345 +- uid: 4344 type: HVWire components: - parent: 853 pos: 47.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4346 +- uid: 4345 type: HVWire components: - parent: 853 pos: 48.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4347 +- uid: 4346 type: HVWire components: - parent: 853 pos: 48.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4348 +- uid: 4347 type: HVWire components: - parent: 853 pos: 48.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4349 +- uid: 4348 type: HVWire components: - parent: 853 pos: 48.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4350 +- uid: 4349 type: HVWire components: - parent: 853 pos: 48.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4351 +- uid: 4350 type: HVWire components: - parent: 853 pos: 48.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4352 +- uid: 4351 type: reinforced_wall components: - parent: 853 pos: 46.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4353 +- uid: 4352 type: reinforced_wall components: - parent: 853 pos: 45.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4354 +- uid: 4353 type: reinforced_wall components: - parent: 853 pos: 44.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4355 +- uid: 4354 type: reinforced_wall components: - parent: 853 pos: 43.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4356 +- uid: 4355 type: reinforced_wall components: - parent: 853 pos: 43.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4357 +- uid: 4356 type: reinforced_wall components: - parent: 853 pos: 43.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4358 +- uid: 4357 type: reinforced_wall components: - parent: 853 pos: 43.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4359 +- uid: 4358 type: reinforced_wall components: - parent: 853 pos: 43.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4360 +- uid: 4359 type: reinforced_wall components: - parent: 853 pos: 43.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4361 +- uid: 4360 type: reinforced_wall components: - parent: 853 pos: 43.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4362 +- uid: 4361 type: reinforced_wall components: - parent: 853 pos: 55.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4363 +- uid: 4362 type: reinforced_wall components: - parent: 853 pos: 55.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4364 +- uid: 4363 type: reinforced_wall components: - parent: 853 pos: 55.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4365 +- uid: 4364 type: reinforced_wall components: - parent: 853 pos: 55.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4366 +- uid: 4365 type: reinforced_wall components: - parent: 853 pos: 55.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4367 +- uid: 4366 type: reinforced_wall components: - parent: 853 pos: 55.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4368 +- uid: 4367 type: reinforced_wall components: - parent: 853 pos: 55.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4369 +- uid: 4368 type: reinforced_wall components: - parent: 853 pos: 54.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4370 +- uid: 4369 type: reinforced_wall components: - parent: 853 pos: 53.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4371 +- uid: 4370 type: reinforced_wall components: - parent: 853 pos: 52.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4372 +- uid: 4371 type: reinforced_wall components: - parent: 853 pos: 46.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4373 +- uid: 4372 type: reinforced_wall components: - parent: 853 pos: 46.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4374 +- uid: 4373 type: reinforced_wall components: - parent: 853 pos: 46.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4375 +- uid: 4374 type: reinforced_wall components: - parent: 853 pos: 52.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4376 +- uid: 4375 type: reinforced_wall components: - parent: 853 pos: 52.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4377 +- uid: 4376 type: reinforced_wall components: - parent: 853 pos: 52.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4378 +- uid: 4377 type: LowWall components: - parent: 853 pos: 46.5,-13.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4378 + type: LowWall + components: + - parent: 853 + pos: 46.5,-14.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4379 type: LowWall components: - parent: 853 - pos: 46.5,-14.5 + pos: 45.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4380 type: LowWall components: - parent: 853 - pos: 45.5,-14.5 + pos: 47.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4381 type: LowWall components: - parent: 853 - pos: 47.5,-14.5 + pos: 48.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4382 type: LowWall components: - parent: 853 - pos: 48.5,-14.5 + pos: 49.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4383 type: LowWall components: - parent: 853 - pos: 49.5,-14.5 + pos: 50.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4384 type: LowWall components: - parent: 853 - pos: 50.5,-14.5 + pos: 51.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4385 type: LowWall components: - parent: 853 - pos: 51.5,-14.5 + pos: 52.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4386 type: LowWall components: - parent: 853 - pos: 52.5,-14.5 + pos: 52.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 4387 - type: LowWall - components: - - parent: 853 - pos: 52.5,-13.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4388 type: LowWall components: - parent: 853 pos: 53.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4389 +- uid: 4388 type: ReinforcedWindow components: - parent: 853 pos: 46.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4390 +- uid: 4389 type: ReinforcedWindow components: - parent: 853 pos: 46.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4391 +- uid: 4390 type: ReinforcedWindow components: - parent: 853 pos: 45.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4392 +- uid: 4391 type: ReinforcedWindow components: - parent: 853 pos: 47.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4393 +- uid: 4392 type: ReinforcedWindow components: - parent: 853 pos: 48.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4394 +- uid: 4393 type: ReinforcedWindow components: - parent: 853 pos: 52.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4395 +- uid: 4394 type: ReinforcedWindow components: - parent: 853 pos: 53.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4396 +- uid: 4395 type: ReinforcedWindow components: - parent: 853 pos: 52.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4397 +- uid: 4396 type: ReinforcedWindow components: - parent: 853 pos: 51.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4398 +- uid: 4397 type: ReinforcedWindow components: - parent: 853 pos: 50.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4399 +- uid: 4398 type: ReinforcedWindow components: - parent: 853 pos: 49.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4400 +- uid: 4399 type: AirlockExternalLocked components: - parent: 853 pos: 44.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4401 +- uid: 4400 type: AirlockExternalLocked components: - parent: 853 pos: 54.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4402 +- uid: 4401 type: Emitter components: - parent: 853 pos: 45.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4403 +- uid: 4402 type: Emitter components: - parent: 853 pos: 49.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4404 +- uid: 4403 type: Emitter components: - parent: 853 pos: 53.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4405 +- uid: 4404 type: Emitter components: - parent: 853 pos: 56.5,-20.5 rot: 3.141592653589793 rad type: Transform -- uid: 4406 +- uid: 4405 type: Emitter components: - parent: 853 pos: 56.5,-24.5 rot: 3.141592653589793 rad type: Transform -- uid: 4407 +- uid: 4406 type: Emitter components: - parent: 853 pos: 56.5,-28.5 rot: 3.141592653589793 rad type: Transform -- uid: 4408 +- uid: 4407 type: Emitter components: - parent: 853 pos: 53.5,-31.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4409 +- uid: 4408 type: Emitter components: - parent: 853 pos: 49.5,-31.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4410 +- uid: 4409 type: Emitter components: - parent: 853 pos: 45.5,-31.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4411 +- uid: 4410 type: Emitter components: - parent: 853 pos: 42.5,-28.5 type: Transform -- uid: 4412 +- uid: 4411 type: Emitter components: - parent: 853 pos: 42.5,-24.5 type: Transform -- uid: 4413 +- uid: 4412 type: Emitter components: - parent: 853 pos: 42.5,-20.5 type: Transform -- uid: 4414 +- uid: 4413 type: ApcExtensionCable components: - parent: 853 pos: 44.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4415 +- uid: 4414 type: ApcExtensionCable components: - parent: 853 pos: 44.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4416 +- uid: 4415 type: ApcExtensionCable components: - parent: 853 pos: 44.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4417 +- uid: 4416 type: ApcExtensionCable components: - parent: 853 pos: 44.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4418 +- uid: 4417 type: ApcExtensionCable components: - parent: 853 pos: 45.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4419 +- uid: 4418 type: ApcExtensionCable components: - parent: 853 pos: 46.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4420 +- uid: 4419 type: ApcExtensionCable components: - parent: 853 pos: 54.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4421 +- uid: 4420 type: ApcExtensionCable components: - parent: 853 pos: 54.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4422 +- uid: 4421 type: ApcExtensionCable components: - parent: 853 pos: 54.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4423 +- uid: 4422 type: ApcExtensionCable components: - parent: 853 pos: 54.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4424 +- uid: 4423 type: ApcExtensionCable components: - parent: 853 pos: 53.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4425 +- uid: 4424 type: ApcExtensionCable components: - parent: 853 pos: 52.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4426 +- uid: 4425 type: ApcExtensionCable components: - parent: 853 pos: 51.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4427 +- uid: 4426 type: ApcExtensionCable components: - parent: 853 pos: 47.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4428 +- uid: 4427 type: ApcExtensionCable components: - parent: 853 pos: 48.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4429 +- uid: 4428 type: ApcExtensionCable components: - parent: 853 pos: 49.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4430 +- uid: 4429 type: ApcExtensionCable components: - parent: 853 pos: 50.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4431 +- uid: 4430 type: ApcExtensionCable components: - parent: 853 pos: 49.5,-8.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4431 + type: ApcExtensionCable + components: + - parent: 853 + pos: 49.5,-7.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4432 type: ApcExtensionCable components: - parent: 853 - pos: 49.5,-7.5 + pos: 49.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4433 type: ApcExtensionCable components: - parent: 853 - pos: 49.5,-6.5 + pos: 48.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4434 type: ApcExtensionCable components: - parent: 853 - pos: 48.5,-6.5 + pos: 47.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4435 type: ApcExtensionCable components: - parent: 853 - pos: 47.5,-6.5 + pos: 47.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 4436 type: ApcExtensionCable components: - parent: 853 - pos: 47.5,-5.5 + pos: 47.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 4437 type: ApcExtensionCable components: - parent: 853 - pos: 47.5,-4.5 + pos: 49.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 4438 type: ApcExtensionCable components: - parent: 853 - pos: 49.5,-10.5 + pos: 49.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 4439 type: ApcExtensionCable components: - parent: 853 - pos: 49.5,-11.5 + pos: 49.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 4440 type: ApcExtensionCable components: - parent: 853 - pos: 49.5,-12.5 + pos: 48.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 4441 - type: ApcExtensionCable - components: - - parent: 853 - pos: 48.5,-11.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4442 type: ApcExtensionCable components: - parent: 853 pos: 50.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4443 +- uid: 4442 type: HVWire components: - parent: 853 pos: 45.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4444 +- uid: 4443 type: HVWire components: - parent: 853 pos: 45.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4445 +- uid: 4444 type: HVWire components: - parent: 853 pos: 45.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4446 +- uid: 4445 type: HVWire components: - parent: 853 pos: 46.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4447 +- uid: 4446 type: HVWire components: - parent: 853 pos: 47.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4448 +- uid: 4447 type: HVWire components: - parent: 853 pos: 48.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4449 +- uid: 4448 type: HVWire components: - parent: 853 pos: 48.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4450 +- uid: 4449 type: HVWire components: - parent: 853 pos: 49.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4451 +- uid: 4450 type: HVWire components: - parent: 853 pos: 50.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4452 +- uid: 4451 type: HVWire components: - parent: 853 pos: 49.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4453 +- uid: 4452 type: HVWire components: - parent: 853 pos: 51.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4454 +- uid: 4453 type: HVWire components: - parent: 853 pos: 52.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4455 +- uid: 4454 type: HVWire components: - parent: 853 pos: 53.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4456 +- uid: 4455 type: HVWire components: - parent: 853 pos: 53.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4457 +- uid: 4456 type: HVWire components: - parent: 853 pos: 53.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4458 +- uid: 4457 type: HVWire components: - parent: 853 pos: 49.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4459 +- uid: 4458 type: HVWire components: - parent: 853 pos: 49.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4460 +- uid: 4459 type: HVWire components: - parent: 853 pos: 49.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4461 +- uid: 4460 type: HVWire components: - parent: 853 pos: 49.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4462 +- uid: 4461 type: HVWire components: - parent: 853 pos: 48.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4463 +- uid: 4462 type: HVWire components: - parent: 853 pos: 47.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4464 +- uid: 4463 type: HVWire components: - parent: 853 pos: 47.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4465 +- uid: 4464 type: HVWire components: - parent: 853 pos: 47.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4466 +- uid: 4465 type: HVWire components: - parent: 853 pos: 47.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4467 +- uid: 4466 type: HVWire components: - parent: 853 pos: 47.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4468 +- uid: 4467 type: HVWire components: - parent: 853 pos: 48.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4469 +- uid: 4468 type: HVWire components: - parent: 853 pos: 48.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4470 +- uid: 4469 type: HVWire components: - parent: 853 pos: 48.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4471 +- uid: 4470 type: HVWire components: - parent: 853 pos: 48.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4472 +- uid: 4471 type: HVWire components: - parent: 853 pos: 48.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4473 +- uid: 4472 type: HVWire components: - parent: 853 pos: 47.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4474 +- uid: 4473 type: HVWire components: - parent: 853 pos: 46.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4475 +- uid: 4474 type: HVWire components: - parent: 853 pos: 45.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4476 +- uid: 4475 type: HVWire components: - parent: 853 pos: 44.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4477 +- uid: 4476 type: AirlockExternalLocked components: - parent: 853 pos: 46.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4478 +- uid: 4477 type: AirlockExternalLocked components: - parent: 853 pos: 52.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4479 +- uid: 4478 type: AirlockEngineeringLocked components: - name: Singularity Engine @@ -47107,47 +47116,47 @@ entities: pos: 49.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4480 +- uid: 4479 type: SalternSmes components: - parent: 853 pos: 45.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4481 +- uid: 4480 type: SalternSmes components: - parent: 853 pos: 53.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4482 +- uid: 4481 type: SalternSubstation components: - parent: 853 pos: 45.5,-10.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319414 + - startingCharge: 3200136 type: Battery - drawRate: 8000 type: PowerConsumer - supplyRate: 6000 type: PowerSupplier -- uid: 4483 +- uid: 4482 type: SalternSubstation components: - parent: 853 pos: 53.5,-10.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3319414 + - startingCharge: 3200136 type: Battery - drawRate: 8000 type: PowerConsumer - supplyRate: 6000 type: PowerSupplier -- uid: 4484 +- uid: 4483 type: Poweredlight components: - parent: 853 @@ -47160,7 +47169,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4485 +- uid: 4484 type: Poweredlight components: - parent: 853 @@ -47173,7 +47182,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4486 +- uid: 4485 type: Poweredlight components: - parent: 853 @@ -47186,7 +47195,7 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4487 +- uid: 4486 type: Poweredlight components: - parent: 853 @@ -47198,1596 +47207,1596 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4488 +- uid: 4487 type: MVWire components: - parent: 853 pos: 45.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4489 +- uid: 4488 type: MVWire components: - parent: 853 pos: 45.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4490 +- uid: 4489 type: MVWire components: - parent: 853 pos: 53.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4491 +- uid: 4490 type: MVWire components: - parent: 853 pos: 53.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4492 +- uid: 4491 type: MVWire components: - parent: 853 pos: 52.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4493 +- uid: 4492 type: MVWire components: - parent: 853 pos: 51.5,-11.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4493 + type: MVWire + components: + - parent: 853 + pos: 51.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4494 type: MVWire components: - parent: 853 - pos: 51.5,-12.5 + pos: 46.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 4495 type: MVWire components: - parent: 853 - pos: 46.5,-11.5 + pos: 47.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 4496 type: MVWire components: - parent: 853 - pos: 47.5,-11.5 + pos: 47.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 4497 type: MVWire components: - parent: 853 - pos: 47.5,-12.5 + pos: 47.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 4498 type: MVWire components: - parent: 853 - pos: 47.5,-13.5 + pos: 49.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 4499 type: MVWire components: - parent: 853 - pos: 49.5,-13.5 + pos: 48.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 4500 type: MVWire components: - parent: 853 - pos: 48.5,-13.5 + pos: 50.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 4501 type: MVWire components: - parent: 853 - pos: 50.5,-13.5 + pos: 51.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 4502 type: MVWire components: - parent: 853 - pos: 51.5,-13.5 + pos: 49.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 4503 type: MVWire components: - parent: 853 - pos: 49.5,-14.5 + pos: 49.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 4504 type: MVWire components: - parent: 853 - pos: 49.5,-15.5 + pos: 49.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 4505 type: MVWire components: - parent: 853 - pos: 49.5,-16.5 + pos: 49.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4506 type: MVWire components: - parent: 853 - pos: 49.5,-17.5 + pos: 48.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4507 type: MVWire components: - parent: 853 - pos: 48.5,-17.5 + pos: 47.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4508 type: MVWire components: - parent: 853 - pos: 47.5,-17.5 + pos: 46.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4509 type: MVWire components: - parent: 853 - pos: 46.5,-17.5 + pos: 45.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4510 type: MVWire components: - parent: 853 - pos: 45.5,-17.5 + pos: 50.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4511 type: MVWire components: - parent: 853 - pos: 50.5,-17.5 + pos: 51.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4512 type: MVWire components: - parent: 853 - pos: 51.5,-17.5 + pos: 52.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4513 type: MVWire components: - parent: 853 - pos: 52.5,-17.5 + pos: 53.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4514 type: MVWire components: - parent: 853 - pos: 53.5,-17.5 + pos: 54.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4515 type: MVWire components: - parent: 853 - pos: 54.5,-17.5 + pos: 55.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4516 type: MVWire components: - parent: 853 - pos: 55.5,-17.5 + pos: 56.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4517 type: MVWire components: - parent: 853 - pos: 56.5,-17.5 + pos: 56.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 4518 type: MVWire components: - parent: 853 - pos: 56.5,-18.5 + pos: 56.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 4519 type: MVWire components: - parent: 853 - pos: 56.5,-19.5 + pos: 56.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 4520 type: MVWire components: - parent: 853 - pos: 56.5,-20.5 + pos: 56.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 4521 type: MVWire components: - parent: 853 - pos: 56.5,-21.5 + pos: 56.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 4522 type: MVWire components: - parent: 853 - pos: 56.5,-22.5 + pos: 56.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 4523 type: MVWire components: - parent: 853 - pos: 56.5,-23.5 + pos: 56.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 4524 type: MVWire components: - parent: 853 - pos: 56.5,-24.5 + pos: 56.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 4525 type: MVWire components: - parent: 853 - pos: 56.5,-25.5 + pos: 56.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 4526 type: MVWire components: - parent: 853 - pos: 56.5,-26.5 + pos: 56.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 4527 type: MVWire components: - parent: 853 - pos: 56.5,-27.5 + pos: 56.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 4528 type: MVWire components: - parent: 853 - pos: 56.5,-28.5 + pos: 56.5,-29.5 rot: -1.5707963267948966 rad type: Transform - uid: 4529 type: MVWire components: - parent: 853 - pos: 56.5,-29.5 + pos: 56.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 4530 type: MVWire components: - parent: 853 - pos: 56.5,-30.5 + pos: 56.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4531 type: MVWire components: - parent: 853 - pos: 56.5,-31.5 + pos: 55.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4532 type: MVWire components: - parent: 853 - pos: 55.5,-31.5 + pos: 54.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4533 type: MVWire components: - parent: 853 - pos: 54.5,-31.5 + pos: 53.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4534 type: MVWire components: - parent: 853 - pos: 53.5,-31.5 + pos: 52.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4535 type: MVWire components: - parent: 853 - pos: 52.5,-31.5 + pos: 51.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4536 type: MVWire components: - parent: 853 - pos: 51.5,-31.5 + pos: 50.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4537 type: MVWire components: - parent: 853 - pos: 50.5,-31.5 + pos: 49.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4538 type: MVWire components: - parent: 853 - pos: 49.5,-31.5 + pos: 48.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4539 type: MVWire components: - parent: 853 - pos: 48.5,-31.5 + pos: 47.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4540 type: MVWire components: - parent: 853 - pos: 47.5,-31.5 + pos: 46.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4541 type: MVWire components: - parent: 853 - pos: 46.5,-31.5 + pos: 45.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4542 type: MVWire components: - parent: 853 - pos: 45.5,-31.5 + pos: 44.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4543 type: MVWire components: - parent: 853 - pos: 44.5,-31.5 + pos: 43.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4544 type: MVWire components: - parent: 853 - pos: 43.5,-31.5 + pos: 42.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4545 type: MVWire components: - parent: 853 - pos: 42.5,-31.5 + pos: 42.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 4546 type: MVWire components: - parent: 853 - pos: 42.5,-30.5 + pos: 42.5,-29.5 rot: -1.5707963267948966 rad type: Transform - uid: 4547 type: MVWire components: - parent: 853 - pos: 42.5,-29.5 + pos: 42.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 4548 type: MVWire components: - parent: 853 - pos: 42.5,-28.5 + pos: 42.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 4549 type: MVWire components: - parent: 853 - pos: 42.5,-27.5 + pos: 42.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 4550 type: MVWire components: - parent: 853 - pos: 42.5,-26.5 + pos: 42.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 4551 type: MVWire components: - parent: 853 - pos: 42.5,-25.5 + pos: 42.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 4552 type: MVWire components: - parent: 853 - pos: 42.5,-22.5 + pos: 42.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 4553 type: MVWire components: - parent: 853 - pos: 42.5,-23.5 + pos: 42.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 4554 type: MVWire components: - parent: 853 - pos: 42.5,-24.5 + pos: 42.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 4555 type: MVWire components: - parent: 853 - pos: 42.5,-21.5 + pos: 42.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 4556 type: MVWire components: - parent: 853 - pos: 42.5,-20.5 + pos: 42.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 4557 type: MVWire components: - parent: 853 - pos: 42.5,-19.5 + pos: 42.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 4558 type: MVWire components: - parent: 853 - pos: 42.5,-18.5 + pos: 42.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4559 type: MVWire components: - parent: 853 - pos: 42.5,-17.5 + pos: 43.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4560 - type: MVWire - components: - - parent: 853 - pos: 43.5,-17.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4561 type: MVWire components: - parent: 853 pos: 44.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4562 +- uid: 4561 type: ContainmentFieldGenerator components: - parent: 853 pos: 45.5,-20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4563 +- uid: 4562 type: ContainmentFieldGenerator components: - parent: 853 pos: 49.5,-20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4564 +- uid: 4563 type: ContainmentFieldGenerator components: - parent: 853 pos: 53.5,-20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4565 +- uid: 4564 type: ContainmentFieldGenerator components: - parent: 853 pos: 53.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4566 +- uid: 4565 type: ContainmentFieldGenerator components: - parent: 853 pos: 53.5,-28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4567 +- uid: 4566 type: ContainmentFieldGenerator components: - parent: 853 pos: 49.5,-28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4568 +- uid: 4567 type: ContainmentFieldGenerator components: - parent: 853 pos: 45.5,-28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4569 +- uid: 4568 type: ContainmentFieldGenerator components: - parent: 853 pos: 45.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4570 +- uid: 4569 type: Catwalk components: - parent: 853 pos: 53.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4571 +- uid: 4570 type: Catwalk components: - parent: 853 pos: 54.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4572 +- uid: 4571 type: Catwalk components: - parent: 853 pos: 54.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4573 +- uid: 4572 type: Catwalk components: - parent: 853 pos: 54.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4574 +- uid: 4573 type: Catwalk components: - parent: 853 pos: 54.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4575 +- uid: 4574 type: Catwalk components: - parent: 853 pos: 54.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4576 +- uid: 4575 type: Catwalk components: - parent: 853 pos: 53.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4577 +- uid: 4576 type: Catwalk components: - parent: 853 pos: 53.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4578 +- uid: 4577 type: Catwalk components: - parent: 853 pos: 45.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4579 +- uid: 4578 type: Catwalk components: - parent: 853 pos: 44.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4580 +- uid: 4579 type: Catwalk components: - parent: 853 pos: 44.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4581 +- uid: 4580 type: Catwalk components: - parent: 853 pos: 44.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4582 +- uid: 4581 type: Catwalk components: - parent: 853 pos: 45.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4583 +- uid: 4582 type: Catwalk components: - parent: 853 pos: 44.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4584 +- uid: 4583 type: Catwalk components: - parent: 853 pos: 44.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4585 +- uid: 4584 type: Catwalk components: - parent: 853 pos: 45.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4586 +- uid: 4585 type: Catwalk components: - parent: 853 pos: 47.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4587 +- uid: 4586 type: Catwalk components: - parent: 853 pos: 49.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4588 +- uid: 4587 type: Catwalk components: - parent: 853 pos: 48.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4589 +- uid: 4588 type: Catwalk components: - parent: 853 pos: 50.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4590 +- uid: 4589 type: Catwalk components: - parent: 853 pos: 51.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4591 +- uid: 4590 type: HVWire components: - parent: 853 pos: 49.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4592 +- uid: 4591 type: Catwalk components: - parent: 853 pos: 51.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4593 +- uid: 4592 type: Catwalk components: - parent: 853 pos: 51.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4594 +- uid: 4593 type: Catwalk components: - parent: 853 pos: 51.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4595 +- uid: 4594 type: Catwalk components: - parent: 853 pos: 51.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4596 +- uid: 4595 type: Catwalk components: - parent: 853 pos: 50.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4597 +- uid: 4596 type: Catwalk components: - parent: 853 pos: 49.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4598 +- uid: 4597 type: Catwalk components: - parent: 853 pos: 48.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4599 +- uid: 4598 type: Catwalk components: - parent: 853 pos: 47.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4600 +- uid: 4599 type: Catwalk components: - parent: 853 pos: 47.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4601 +- uid: 4600 type: Catwalk components: - parent: 853 pos: 47.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4602 +- uid: 4601 type: HVWire components: - parent: 853 pos: 50.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4603 +- uid: 4602 type: Catwalk components: - parent: 853 pos: 47.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4604 +- uid: 4603 type: RadiationCollector components: - parent: 853 pos: 42.5,-23.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4604 + type: RadiationCollector + components: + - parent: 853 + pos: 42.5,-22.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4605 type: RadiationCollector components: - parent: 853 - pos: 42.5,-22.5 + pos: 42.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 4606 type: RadiationCollector components: - parent: 853 - pos: 42.5,-21.5 + pos: 42.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 4607 type: RadiationCollector components: - parent: 853 - pos: 42.5,-27.5 + pos: 42.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 4608 type: RadiationCollector components: - parent: 853 - pos: 42.5,-26.5 + pos: 42.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 4609 type: RadiationCollector components: - parent: 853 - pos: 42.5,-25.5 + pos: 46.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4610 type: RadiationCollector components: - parent: 853 - pos: 46.5,-31.5 + pos: 47.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4611 type: RadiationCollector components: - parent: 853 - pos: 47.5,-31.5 + pos: 48.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4612 type: RadiationCollector components: - parent: 853 - pos: 48.5,-31.5 + pos: 50.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4613 type: RadiationCollector components: - parent: 853 - pos: 50.5,-31.5 + pos: 51.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4614 type: RadiationCollector components: - parent: 853 - pos: 51.5,-31.5 + pos: 52.5,-31.5 rot: -1.5707963267948966 rad type: Transform - uid: 4615 type: RadiationCollector components: - parent: 853 - pos: 52.5,-31.5 + pos: 56.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 4616 type: RadiationCollector components: - parent: 853 - pos: 56.5,-27.5 + pos: 56.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 4617 type: RadiationCollector components: - parent: 853 - pos: 56.5,-26.5 + pos: 56.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 4618 type: RadiationCollector components: - parent: 853 - pos: 56.5,-25.5 + pos: 56.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 4619 type: RadiationCollector components: - parent: 853 - pos: 56.5,-23.5 + pos: 56.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 4620 type: RadiationCollector components: - parent: 853 - pos: 56.5,-22.5 + pos: 56.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 4621 type: RadiationCollector components: - parent: 853 - pos: 56.5,-21.5 + pos: 46.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4622 type: RadiationCollector components: - parent: 853 - pos: 46.5,-17.5 + pos: 47.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4623 type: RadiationCollector components: - parent: 853 - pos: 47.5,-17.5 + pos: 48.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4624 type: RadiationCollector components: - parent: 853 - pos: 48.5,-17.5 + pos: 50.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4625 type: RadiationCollector components: - parent: 853 - pos: 50.5,-17.5 + pos: 51.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 4626 - type: RadiationCollector - components: - - parent: 853 - pos: 51.5,-17.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4627 type: RadiationCollector components: - parent: 853 pos: 52.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4628 +- uid: 4627 type: HVWire components: - parent: 853 pos: 46.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4629 +- uid: 4628 type: HVWire components: - parent: 853 pos: 47.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4630 +- uid: 4629 type: HVWire components: - parent: 853 pos: 48.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4631 +- uid: 4630 type: HVWire components: - parent: 853 pos: 49.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4632 +- uid: 4631 type: HVWire components: - parent: 853 pos: 50.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4633 +- uid: 4632 type: HVWire components: - parent: 853 pos: 51.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4634 +- uid: 4633 type: HVWire components: - parent: 853 pos: 52.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4635 +- uid: 4634 type: HVWire components: - parent: 853 pos: 53.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4636 +- uid: 4635 type: HVWire components: - parent: 853 pos: 45.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4637 +- uid: 4636 type: HVWire components: - parent: 853 pos: 44.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4638 +- uid: 4637 type: HVWire components: - parent: 853 pos: 43.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4639 +- uid: 4638 type: HVWire components: - parent: 853 pos: 42.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4640 +- uid: 4639 type: HVWire components: - parent: 853 pos: 54.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4641 +- uid: 4640 type: HVWire components: - parent: 853 pos: 55.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4642 +- uid: 4641 type: HVWire components: - parent: 853 pos: 56.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4643 +- uid: 4642 type: HVWire components: - parent: 853 pos: 57.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4644 +- uid: 4643 type: HVWire components: - parent: 853 pos: 58.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4645 +- uid: 4644 type: HVWire components: - parent: 853 pos: 58.5,-18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4646 +- uid: 4645 type: HVWire components: - parent: 853 pos: 58.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4647 +- uid: 4646 type: HVWire components: - parent: 853 pos: 58.5,-20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4648 +- uid: 4647 type: HVWire components: - parent: 853 pos: 58.5,-21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4649 +- uid: 4648 type: HVWire components: - parent: 853 pos: 58.5,-22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4650 +- uid: 4649 type: HVWire components: - parent: 853 pos: 57.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4651 +- uid: 4650 type: HVWire components: - parent: 853 pos: 58.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4652 +- uid: 4651 type: HVWire components: - parent: 853 pos: 58.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4653 +- uid: 4652 type: HVWire components: - parent: 853 pos: 41.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4654 +- uid: 4653 type: HVWire components: - parent: 853 pos: 40.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4655 +- uid: 4654 type: HVWire components: - parent: 853 pos: 40.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4656 +- uid: 4655 type: HVWire components: - parent: 853 pos: 40.5,-22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4657 +- uid: 4656 type: HVWire components: - parent: 853 pos: 40.5,-21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4658 +- uid: 4657 type: HVWire components: - parent: 853 pos: 40.5,-20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4659 +- uid: 4658 type: HVWire components: - parent: 853 pos: 40.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4660 +- uid: 4659 type: HVWire components: - parent: 853 pos: 40.5,-18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4661 +- uid: 4660 type: HVWire components: - parent: 853 pos: 40.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4662 +- uid: 4661 type: HVWire components: - parent: 853 pos: 41.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4663 +- uid: 4662 type: HVWire components: - parent: 853 pos: 42.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4664 +- uid: 4663 type: HVWire components: - parent: 853 pos: 42.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4665 +- uid: 4664 type: HVWire components: - parent: 853 pos: 42.5,-22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4666 +- uid: 4665 type: HVWire components: - parent: 853 pos: 42.5,-21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4667 +- uid: 4666 type: HVWire components: - parent: 853 pos: 42.5,-25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4668 +- uid: 4667 type: HVWire components: - parent: 853 pos: 42.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4669 +- uid: 4668 type: HVWire components: - parent: 853 pos: 42.5,-27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4670 +- uid: 4669 type: HVWire components: - parent: 853 pos: 56.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4671 +- uid: 4670 type: HVWire components: - parent: 853 pos: 56.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4672 +- uid: 4671 type: HVWire components: - parent: 853 pos: 56.5,-22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4673 +- uid: 4672 type: HVWire components: - parent: 853 pos: 56.5,-21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4674 +- uid: 4673 type: HVWire components: - parent: 853 pos: 56.5,-25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4675 +- uid: 4674 type: HVWire components: - parent: 853 pos: 56.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4676 +- uid: 4675 type: HVWire components: - parent: 853 pos: 56.5,-27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4677 +- uid: 4676 type: HVWire components: - parent: 853 pos: 49.5,-16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4678 +- uid: 4677 type: HVWire components: - parent: 853 pos: 49.5,-15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4679 +- uid: 4678 type: HVWire components: - parent: 853 pos: 49.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4680 +- uid: 4679 type: HVWire components: - parent: 853 pos: 49.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4681 +- uid: 4680 type: Catwalk components: - parent: 853 pos: 47.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4682 +- uid: 4681 type: Catwalk components: - parent: 853 pos: 51.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4683 +- uid: 4682 type: HVWire components: - parent: 853 pos: 49.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4684 +- uid: 4683 type: HVWire components: - parent: 853 pos: 48.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4685 +- uid: 4684 type: HVWire components: - parent: 853 pos: 47.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4686 +- uid: 4685 type: HVWire components: - parent: 853 pos: 46.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4687 +- uid: 4686 type: HVWire components: - parent: 853 pos: 50.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4688 +- uid: 4687 type: HVWire components: - parent: 853 pos: 51.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4689 +- uid: 4688 type: HVWire components: - parent: 853 pos: 52.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4690 +- uid: 4689 type: HVWire components: - parent: 853 pos: 49.5,-32.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4691 +- uid: 4690 type: HVWire components: - parent: 853 pos: 49.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4692 +- uid: 4691 type: HVWire components: - parent: 853 pos: 48.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4693 +- uid: 4692 type: HVWire components: - parent: 853 pos: 47.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4694 +- uid: 4693 type: HVWire components: - parent: 853 pos: 46.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4695 +- uid: 4694 type: HVWire components: - parent: 853 pos: 45.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4696 +- uid: 4695 type: HVWire components: - parent: 853 pos: 44.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4697 +- uid: 4696 type: HVWire components: - parent: 853 pos: 43.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4698 +- uid: 4697 type: HVWire components: - parent: 853 pos: 42.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4699 +- uid: 4698 type: HVWire components: - parent: 853 pos: 41.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4700 +- uid: 4699 type: HVWire components: - parent: 853 pos: 40.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4701 +- uid: 4700 type: HVWire components: - parent: 853 pos: 40.5,-32.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4702 +- uid: 4701 type: HVWire components: - parent: 853 pos: 40.5,-31.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4703 +- uid: 4702 type: HVWire components: - parent: 853 pos: 40.5,-30.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4704 +- uid: 4703 type: HVWire components: - parent: 853 pos: 40.5,-29.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4705 +- uid: 4704 type: HVWire components: - parent: 853 pos: 40.5,-28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4706 +- uid: 4705 type: HVWire components: - parent: 853 pos: 40.5,-27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4707 +- uid: 4706 type: HVWire components: - parent: 853 pos: 40.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4708 +- uid: 4707 type: HVWire components: - parent: 853 pos: 40.5,-25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4709 +- uid: 4708 type: HVWire components: - parent: 853 pos: 50.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4710 +- uid: 4709 type: HVWire components: - parent: 853 pos: 51.5,-33.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4711 +- uid: 4710 type: LowWall components: - parent: 853 pos: 20.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4712 +- uid: 4711 type: LowWall components: - parent: 853 pos: 22.5,14.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4712 + type: ReinforcedWindow + components: + - parent: 853 + pos: 20.5,14.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4713 - type: ReinforcedWindow - components: - - parent: 853 - pos: 20.5,14.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4714 type: ReinforcedWindow components: - parent: 853 pos: 22.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4715 +- uid: 4714 type: CrateMaterialsMetal components: - parent: 853 @@ -48800,7 +48809,7 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4716 +- uid: 4715 type: CrateServiceReplacementLights components: - parent: 853 @@ -48813,39 +48822,17 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4717 - type: CrateEmergencyFire +- uid: 4716 + type: SalternSubstation components: - parent: 853 - pos: 22.5,13.5 + pos: -15.5,16.5 rot: -1.5707963267948966 rad type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 4718 - type: AirlockMaintIntLocked - components: - - name: Waste Disposal - type: MetaData - - parent: 853 - pos: -24.5,-12.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4719 - type: PoweredSmallLight - components: - - parent: 853 - pos: -22.5,-16 - rot: -1.5707963267948966 rad - type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer + - startingCharge: 3969174 + type: Battery + - drawRate: 8000 + type: PowerConsumer + - supplyRate: 6000 + type: PowerSupplier ... diff --git a/Resources/Prototypes/Entities/Effects/Markers/bedsheet_spawner.yml b/Resources/Prototypes/Entities/Effects/Markers/bedsheet_spawner.yml new file mode 100644 index 0000000000..262fd2e7ba --- /dev/null +++ b/Resources/Prototypes/Entities/Effects/Markers/bedsheet_spawner.yml @@ -0,0 +1,36 @@ +- type: entity + name: Random Sheet Spawner + id: BedsheetSpawner + components: + - type: Sprite + netsync: false + visible: false + sprite: Objects/Misc/bedsheets.rsi + state: random_bedsheet + - type: Marker + - type: Clickable + - type: InteractionOutline + - type: Physics + - type: TrashSpawner + rarePrototypes: + - BedsheetIan + - BedsheetCosmos + rareChance: 0.03 + prototypes: + - BedsheetBlue + - BedsheetYellow + - BedsheetOrange + - BedsheetGreen + - BedsheetNT + - BedsheetRed + - BedsheetUSA + - BedsheetBrown + - BedsheetBlack + - BedsheetPurple + - BedsheetGrey + - BedsheetWhite + - BedsheetRainbow + chance: 0.97 + offset: 0 + placement: + mode: AlignTileAny diff --git a/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml b/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml index 014ca554bd..c00aa0dfa7 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml @@ -15,7 +15,7 @@ size: 10 QuickEquip: true Slots: - - back + - neck - type: SnapGrid offset: Center @@ -28,9 +28,6 @@ state: sheetblack - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/black.rsi - type: entity @@ -42,9 +39,6 @@ state: sheetblue - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/blue.rsi - type: entity @@ -56,9 +50,6 @@ state: sheetbrown - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/brown.rsi - type: entity @@ -71,93 +62,78 @@ state: sheetcaptain - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/captain.rsi - type: entity id: BedsheetCE parent: BedsheetBase - name: ce's bedsheet + name: CE's bedsheet + description: It is decorated with a wrench emblem. It's highly reflective and stain resistant, so you don't need to worry about ruining it with oil. components: - type: Sprite state: sheetce - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/ce.rsi - type: entity id: BedsheetCentcom parent: BedsheetBase - name: centcom bedsheet + name: Centcom bedsheet + description: Woven with advanced nanothread for warmth as well as being very decorated, essential for all officials. components: - type: Sprite state: sheetcentcom - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/centcom.rsi - type: entity id: BedsheetClown parent: BedsheetBase name: clown's bedsheet + description: A rainbow blanket with a clown mask woven in. It smells faintly of bananas. components: - type: Sprite state: sheetclown - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/rainbow.rsi - type: entity id: BedsheetCMO parent: BedsheetBase - name: cmo's bedsheet + name: CMO's bedsheet + description: It's a sterilized blanket that has a cross emblem. There's some cat fur on it, likely from Runtime. components: - type: Sprite state: sheetcmo - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/cmo.rsi - type: entity id: BedsheetCosmos parent: BedsheetBase name: cosmos bedsheet + description: Made from the dreams of those who wonder at the stars. components: - type: Sprite state: sheetcosmos - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/cosmos.rsi - type: entity id: BedsheetCult parent: BedsheetBase name: cult bedsheet + description: You might dream of Nar'Sie if you sleep with this. It seems rather tattered and glows of an eldritch presence. components: - type: Sprite state: sheetcult - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/cult.rsi - type: entity @@ -169,9 +145,6 @@ state: sheetgreen - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/green.rsi - type: entity @@ -183,93 +156,77 @@ state: sheetgrey - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/grey.rsi - type: entity id: BedsheetHOP parent: BedsheetBase - name: hop's bedsheet + name: HOP's bedsheet + description: It is decorated with a key emblem. For those rare moments when you can rest and cuddle with Ian without someone screaming for you over the radio. components: - type: Sprite state: sheethop - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/hop.rsi - type: entity id: BedsheetHOS parent: BedsheetBase - name: hos's bedsheet + name: HOS's bedsheet + description: It is decorated with a shield emblem. While crime doesn't sleep, you do, but you are still THE LAW! components: - type: Sprite state: sheethos - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/hos.rsi - type: entity id: BedsheetIan parent: BedsheetBase - name: ian bedsheet + name: Ian bedsheet components: - type: Sprite state: sheetian - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/ian.rsi - type: entity id: BedsheetMedical parent: BedsheetBase name: medical bedsheet + description: It's a sterilized* blanket commonly used in the Medbay. *Sterilization is voided if a virologist is present onboard the station. components: - type: Sprite state: sheetmedical - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/medical.rsi - type: entity id: BedsheetMime parent: BedsheetBase name: mime's bedsheet + description: A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this. components: - type: Sprite state: sheetmime - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/mime.rsi - type: entity id: BedsheetNT parent: BedsheetBase - name: nt bedsheet + name: NT bedsheet + description: It has the Nanotrasen logo on it and an aura of duty. components: - type: Sprite state: sheetNT - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/NT.rsi - type: entity @@ -281,9 +238,6 @@ state: sheetorange - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/orange.rsi - type: entity @@ -295,23 +249,17 @@ state: sheetpurple - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/purple.rsi - type: entity id: BedsheetQM parent: BedsheetBase - name: qm's bedsheet + name: QM's bedsheet components: - type: Sprite state: sheetqm - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/qm.rsi - type: entity @@ -323,23 +271,18 @@ state: sheetrainbow - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/rainbow.rsi - type: entity id: BedsheetRD parent: BedsheetBase - name: rd's bedsheet + name: RD's bedsheet + description: It appears to have a beaker emblem, and is made out of fire-resistant material, although it probably won't protect you in the event of fires you're familiar with every day. components: - type: Sprite state: sheetrd - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/rd.rsi - type: entity @@ -351,37 +294,29 @@ state: sheetred - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/red.rsi - type: entity id: BedsheetSyndie parent: BedsheetBase - name: syndie bedsheet + name: Syndie bedsheet + description: It has a syndicate emblem and it has an aura of evil. components: - type: Sprite state: sheetsyndie - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/syndie.rsi - type: entity id: BedsheetUSA parent: BedsheetBase - name: usa bedsheet + name: USA bedsheet components: - type: Sprite state: sheetUSA - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/USA.rsi - type: entity @@ -393,23 +328,18 @@ state: sheetwhite - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/white.rsi - type: entity id: BedsheetWiz parent: BedsheetBase name: wizard's bedsheet + description: A special fabric enchanted with magic so you can have an enchanted night. It even glows! components: - type: Sprite state: sheetwiz - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/wiz.rsi - type: entity @@ -421,7 +351,4 @@ state: sheetyellow - type: Clothing size: 10 - QuickEquip: true - Slots: - - neck sprite: Clothing/Neck/Bedsheets/yellow.rsi diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/NT.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/NT.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/NT.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/NT.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/USA.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/USA.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/USA.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/USA.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/black.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/black.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/black.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/black.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/blue.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/blue.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/blue.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/brown.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/brown.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/brown.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/brown.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/captain.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/captain.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/captain.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/ce.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/ce.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/ce.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/ce.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/centcom.rsi/meta.json b/Resources/Textures/Clothing/Neck/Bedsheets/centcom.rsi/meta.json index f21b1b6061..557c79a65d 100644 --- a/Resources/Textures/Clothing/Neck/Bedsheets/centcom.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Bedsheets/centcom.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0ec86b44b11f5e2f45137d9f6c851b8942a26aa3", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/clown.rsi/inhand-left.png b/Resources/Textures/Clothing/Neck/Bedsheets/clown.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ab0624f67e74c643567062fb1d4cbd6434ead2 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU@Z1@aSW-L^Y+%ptV0PRtPh-{ zyoFy~yQw&(LGNZ$^KAbM?jKmKO5ZGcFk|cN**iquJh%|~B5C=#R=rmd8Xlfr?3Wi_ z(p~F$F5hTQz95s_kBAD=DVG^b}$)egtTBIb}Zsp_c|$7`cUcJQz=U=)7Y*0nh)BzJh&-w{_)-5`BSFq zKi9v)*c1N!02haiwERc0#`MQ8Rsa3(u1>pa6kpc9kCCD1f9B;#n2VK^k`67*``u&L zbnbELeutYt2kKjOuC%V3wMdrf6+_i}TalM6DMw!@UtrrXr$=aV`5zNkYnCmH23Cxb zhQBzrFwWTbc)8{+#RakLk#if?bbS-dU`{Au+LZJK$k6!Qx1O)jBk%sj4~MG_0?zOQ PV}Zfb)z4*}Q$iB}N~XT1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Bedsheets/clown.rsi/inhand-right.png b/Resources/Textures/Clothing/Neck/Bedsheets/clown.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..01588bb5e777b2875efcf37c947e411135f942b0 GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV669aaSW-L^Y)gZ_u&Kqwg=NQ zj0;Ggll#KXo$@fA?$;o#dogGGhF^c2Hs1~6jS|g# zc8D$FpoDt*`5ESH8~FI^>Y6uZ-OvIlb&xs!!G{0yF@|~1SF)|`GWlG0)AxAch52qA zwbF+(KUJGvI1woc($AA#et-ukD1VY`VgBQns+v`M%r^DkH!FV0!f>Or|J?1PXI$Xm zYjRQgf>l;Fa^|uJObVHO-tqK^?G4$zYz3oQIoqaNd0Rqi*H Date: Mon, 11 Jan 2021 02:21:38 +0100 Subject: [PATCH 099/166] Fix ghosts throwing exception on round restart. Done by re-organizing the cleanup sequence so that players are moved back to lobby and have their mind wiped *before* entities are deleted. The mind system always tries to ensure players have a ghost even in the most wacky circumstances like entity deletion. This goes contrary to the fact that we need to delete all entities to clean the game state. So cleaning all the minds should be done first. --- Content.Server/GameTicking/GameTicker.cs | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index e4229c43f5..58434232e0 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -684,6 +684,19 @@ namespace Content.Server.GameTicking /// private void _resettingCleanup() { + // Move everybody currently in the server to lobby. + foreach (var player in PlayerManager.GetAllPlayers()) + { + _playerJoinLobby(player); + } + + // Delete the minds of everybody. + // TODO: Maybe move this into a separate manager? + foreach (var unCastData in PlayerManager.GetAllPlayerData()) + { + unCastData.ContentData()?.WipeMind(); + } + // Delete all entities. foreach (var entity in _entityManager.GetEntities().ToList()) { @@ -694,13 +707,6 @@ namespace Content.Server.GameTicking _mapManager.Restart(); - // Delete the minds of everybody. - // TODO: Maybe move this into a separate manager? - foreach (var unCastData in PlayerManager.GetAllPlayerData()) - { - unCastData.ContentData()?.WipeMind(); - } - // Clear up any game rules. foreach (var rule in _gameRules) { @@ -709,12 +715,6 @@ namespace Content.Server.GameTicking _gameRules.Clear(); - // Move everybody currently in the server to lobby. - foreach (var player in PlayerManager.GetAllPlayers()) - { - _playerJoinLobby(player); - } - foreach (var system in _entitySystemManager.AllSystems) { if (system is IResettingEntitySystem resetting) From 374b100a5e35f182920dc752a66f42d6ba603a57 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 09:03:58 +0100 Subject: [PATCH 100/166] Use IGameTiming for lobby timing instead of DateTime. Fixes #1681 --- .../GameTicking/ClientGameTicker.cs | 4 +-- .../Interfaces/IClientGameTicker.cs | 3 ++- Content.Client/State/LobbyState.cs | 16 ++++++----- Content.Server/GameTicking/GameTicker.cs | 27 +++++++++---------- .../GameTicking/SharedGameTicker.cs | 10 +++---- 5 files changed, 31 insertions(+), 29 deletions(-) diff --git a/Content.Client/GameTicking/ClientGameTicker.cs b/Content.Client/GameTicking/ClientGameTicker.cs index fb9a14ae76..a6bdc2b225 100644 --- a/Content.Client/GameTicking/ClientGameTicker.cs +++ b/Content.Client/GameTicking/ClientGameTicker.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using Content.Client.Interfaces; using Content.Client.State; using Content.Client.UserInterface; -using Content.Shared; using Content.Shared.GameTicking; using Content.Shared.Network.NetMessages; using Robust.Client.Interfaces.Graphics; @@ -11,6 +10,7 @@ using Robust.Client.Interfaces.State; using Robust.Shared.Interfaces.Network; using Robust.Shared.IoC; using Robust.Shared.Network; +using Robust.Shared.Timing; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; @@ -28,7 +28,7 @@ namespace Content.Client.GameTicking [ViewVariables] public bool IsGameStarted { get; private set; } [ViewVariables] public bool DisallowedLateJoin { get; private set; } [ViewVariables] public string ServerInfoBlob { get; private set; } - [ViewVariables] public DateTime StartTime { get; private set; } + [ViewVariables] public TimeSpan StartTime { get; private set; } [ViewVariables] public bool Paused { get; private set; } [ViewVariables] public Dictionary Status { get; private set; } [ViewVariables] public IReadOnlyList JobsAvailable => _jobsAvailable; diff --git a/Content.Client/Interfaces/IClientGameTicker.cs b/Content.Client/Interfaces/IClientGameTicker.cs index ecb54004b0..981c9a3448 100644 --- a/Content.Client/Interfaces/IClientGameTicker.cs +++ b/Content.Client/Interfaces/IClientGameTicker.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Robust.Shared.Network; +using Robust.Shared.Timing; using static Content.Shared.GameTicking.SharedGameTicker; namespace Content.Client.Interfaces @@ -11,7 +12,7 @@ namespace Content.Client.Interfaces string ServerInfoBlob { get; } bool AreWeReady { get; } bool DisallowedLateJoin { get; } - DateTime StartTime { get; } + TimeSpan StartTime { get; } bool Paused { get; } Dictionary Status { get; } IReadOnlyList JobsAvailable { get; } diff --git a/Content.Client/State/LobbyState.cs b/Content.Client/State/LobbyState.cs index d2e4f90ec8..866c65c463 100644 --- a/Content.Client/State/LobbyState.cs +++ b/Content.Client/State/LobbyState.cs @@ -13,6 +13,7 @@ using Robust.Client.Player; using Robust.Client.UserInterface.Controls; using Robust.Shared.Input.Binding; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Prototypes; @@ -35,6 +36,7 @@ namespace Content.Client.State [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; [Dependency] private readonly IClientPreferencesManager _preferencesManager = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; [ViewVariables] private CharacterSetupGui _characterSetup; [ViewVariables] private LobbyGui _lobby; @@ -144,10 +146,11 @@ namespace Content.Client.State } else { - var difference = _clientGameTicker.StartTime - DateTime.UtcNow; - if (difference.Ticks < 0) + var difference = _clientGameTicker.StartTime - _gameTiming.CurTime; + var seconds = difference.TotalSeconds; + if (seconds < 0) { - if (difference.TotalSeconds < -5) + if (seconds < -5) { text = Loc.GetString("Right Now?"); } @@ -158,7 +161,7 @@ namespace Content.Client.State } else { - text = $"{(int) Math.Floor(difference.TotalMinutes)}:{difference.Seconds:D2}"; + text = $"{(int) Math.Floor(difference.TotalMinutes / 60)}:{difference.Seconds:D2}"; } } @@ -178,8 +181,10 @@ namespace Content.Client.State _clientGameTicker.Status.Remove(p.Key); } } + UpdatePlayerList(); } + private void LobbyReadyUpdated() => UpdatePlayerList(); private void LobbyStatusUpdated() @@ -224,8 +229,6 @@ namespace Content.Client.State foreach (var session in _playerManager.Sessions.OrderBy(s => s.Name)) { - - var readyState = ""; // Don't show ready state if we're ingame if (!_clientGameTicker.IsGameStarted) @@ -244,6 +247,7 @@ namespace Content.Client.State _ => "", }; } + _lobby.OnlinePlayerList.AddItem(session.Name, readyState); } } diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index 58434232e0..9d7800bb1f 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -2,8 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Threading; -using Content.Server.Administration; -using Content.Server.Commands.Observer; using Content.Server.GameObjects.Components.Access; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; @@ -32,7 +30,6 @@ using Robust.Server.Interfaces.Maps; using Robust.Server.Interfaces.Player; using Robust.Server.Player; using Robust.Server.ServerStatus; -using Robust.Server.Interfaces.Console; using Robust.Shared.Enums; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.Configuration; @@ -71,7 +68,7 @@ namespace Content.Server.GameTicking public const float PresetFailedCooldownIncrease = 30f; private const string PlayerPrototypeName = "HumanMob_Content"; private const string ObserverPrototypeName = "MobObserver"; - private static TimeSpan _roundStartTimeSpan; + private TimeSpan _roundStartTimeSpan; [ViewVariables] private readonly List _gameRules = new(); [ViewVariables] private readonly List _manifest = new(); @@ -83,9 +80,9 @@ namespace Content.Server.GameTicking [ViewVariables] private Type _presetType; - [ViewVariables] private DateTime _pauseTime; + [ViewVariables] private TimeSpan _pauseTime; [ViewVariables] private bool _roundStartCountdownHasNotStartedYetDueToNoPlayers; - private DateTime _roundStartTimeUtc; + [ViewVariables] private TimeSpan _roundStartTime; [ViewVariables] private GameRunLevel _runLevel; [ViewVariables(VVAccess.ReadWrite)] private EntityCoordinates _spawnPoint; @@ -178,7 +175,7 @@ namespace Content.Server.GameTicking if (RunLevel != GameRunLevel.PreRoundLobby || Paused || - _roundStartTimeUtc > DateTime.UtcNow || + _roundStartTime > _gameTiming.CurTime || _roundStartCountdownHasNotStartedYetDueToNoPlayers) { return; @@ -217,7 +214,7 @@ namespace Content.Server.GameTicking if (PlayerManager.PlayerCount == 0) _roundStartCountdownHasNotStartedYetDueToNoPlayers = true; else - _roundStartTimeUtc = DateTime.UtcNow + LobbyDuration; + _roundStartTime = _gameTiming.CurTime + LobbyDuration; _sendStatusToAll(); @@ -532,10 +529,10 @@ namespace Content.Server.GameTicking return false; } - _roundStartTimeUtc += time; + _roundStartTime += time; var lobbyCountdownMessage = _netManager.CreateNetMessage(); - lobbyCountdownMessage.StartTime = _roundStartTimeUtc; + lobbyCountdownMessage.StartTime = _roundStartTime; lobbyCountdownMessage.Paused = Paused; _netManager.ServerSendToAll(lobbyCountdownMessage); @@ -555,15 +552,15 @@ namespace Content.Server.GameTicking if (pause) { - _pauseTime = DateTime.UtcNow; + _pauseTime = _gameTiming.CurTime; } else if (_pauseTime != default) { - _roundStartTimeUtc += DateTime.UtcNow - _pauseTime; + _roundStartTime += _gameTiming.CurTime - _pauseTime; } var lobbyCountdownMessage = _netManager.CreateNetMessage(); - lobbyCountdownMessage.StartTime = _roundStartTimeUtc; + lobbyCountdownMessage.StartTime = _roundStartTime; lobbyCountdownMessage.Paused = Paused; _netManager.ServerSendToAll(lobbyCountdownMessage); @@ -766,7 +763,7 @@ namespace Content.Server.GameTicking if (LobbyEnabled && _roundStartCountdownHasNotStartedYetDueToNoPlayers) { _roundStartCountdownHasNotStartedYetDueToNoPlayers = false; - _roundStartTimeUtc = DateTime.UtcNow + LobbyDuration; + _roundStartTime = _gameTiming.CurTime + LobbyDuration; } break; @@ -1020,7 +1017,7 @@ namespace Content.Server.GameTicking _playersInLobby.TryGetValue(session, out var status); var msg = _netManager.CreateNetMessage(); msg.IsRoundStarted = RunLevel != GameRunLevel.PreRoundLobby; - msg.StartTime = _roundStartTimeUtc; + msg.StartTime = _roundStartTime; msg.YouAreReady = status == PlayerStatus.Ready; msg.Paused = Paused; return msg; diff --git a/Content.Shared/GameTicking/SharedGameTicker.cs b/Content.Shared/GameTicking/SharedGameTicker.cs index 1251e6d3b4..ad8445656b 100644 --- a/Content.Shared/GameTicking/SharedGameTicker.cs +++ b/Content.Shared/GameTicking/SharedGameTicker.cs @@ -92,7 +92,7 @@ namespace Content.Shared.GameTicking public bool IsRoundStarted { get; set; } public bool YouAreReady { get; set; } // UTC. - public DateTime StartTime { get; set; } + public TimeSpan StartTime { get; set; } public bool Paused { get; set; } public override void ReadFromBuffer(NetIncomingMessage buffer) @@ -105,7 +105,7 @@ namespace Content.Shared.GameTicking } YouAreReady = buffer.ReadBoolean(); - StartTime = new DateTime(buffer.ReadInt64(), DateTimeKind.Utc); + StartTime = new TimeSpan(buffer.ReadInt64()); Paused = buffer.ReadBoolean(); } @@ -158,9 +158,9 @@ namespace Content.Shared.GameTicking #endregion /// - /// The total amount of seconds to go until the countdown finishes + /// The game time that the game will start at. /// - public DateTime StartTime { get; set; } + public TimeSpan StartTime { get; set; } /// /// Whether or not the countdown is paused @@ -169,7 +169,7 @@ namespace Content.Shared.GameTicking public override void ReadFromBuffer(NetIncomingMessage buffer) { - StartTime = new DateTime(buffer.ReadInt64(), DateTimeKind.Utc); + StartTime = new TimeSpan(buffer.ReadInt64()); Paused = buffer.ReadBoolean(); } From 1becff68b98fc95d73f6c746c4579de1fdcf5ecb Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 09:26:25 +0100 Subject: [PATCH 101/166] Fix warnings about lacking StorableComponent on map reset. --- .../Items/Storage/ServerStorageComponent.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs index 6397edfc50..fda487377c 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs @@ -22,14 +22,9 @@ using Robust.Shared.Enums; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Interfaces.Map; using Robust.Shared.Interfaces.Network; -using Robust.Shared.Interfaces.Random; -using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.Players; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -46,6 +41,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage private const string LoggerName = "Storage"; private Container? _storage; + private readonly Dictionary _sizeCache = new(); private bool _occludesLight; private bool _storageInitialCalculated; @@ -149,7 +145,12 @@ namespace Content.Server.GameObjects.Components.Items.Storage Logger.DebugS(LoggerName, $"Storage (UID {Owner.Uid}) had entity (UID {message.Entity.Uid}) inserted into it."); - _storageUsed += message.Entity.GetComponent().Size; + var size = 0; + if (message.Entity.TryGetComponent(out StorableComponent? storable)) + size = storable.Size; + + _storageUsed += size; + _sizeCache[message.Entity] = size; UpdateClientInventories(); } @@ -165,15 +166,15 @@ namespace Content.Server.GameObjects.Components.Items.Storage Logger.DebugS(LoggerName, $"Storage (UID {Owner}) had entity (UID {message.Entity}) removed from it."); - if (!message.Entity.TryGetComponent(out StorableComponent? storable)) + if (!_sizeCache.TryGetValue(message.Entity, out var size)) { - Logger.WarningS(LoggerName, $"Removed entity {message.Entity} without a StorableComponent from storage {Owner} at {Owner.Transform.MapPosition}"); + Logger.WarningS(LoggerName, $"Removed entity {message.Entity} without a cached size from storage {Owner} at {Owner.Transform.MapPosition}"); RecalculateStorageUsed(); return; } - _storageUsed -= storable.Size; + _storageUsed -= size; UpdateClientInventories(); } From 99727e8bc3b7115ae379a0642c23030d3c230fe8 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 09:30:18 +0100 Subject: [PATCH 102/166] Fix AfterInteract not being awaited correctly in InteractionSystem --- .../GameObjects/EntitySystems/Click/InteractionSystem.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs index 08119c5363..245d2eb308 100644 --- a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs @@ -401,7 +401,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click /// /// We didn't click on any entity, try doing an AfterInteract on the click location /// - private void InteractAfter(IEntity user, IEntity weapon, EntityCoordinates clickLocation, bool canReach) + private async void InteractAfter(IEntity user, IEntity weapon, EntityCoordinates clickLocation, bool canReach) { var message = new AfterInteractMessage(user, weapon, null, clickLocation, canReach); RaiseLocalEvent(message); @@ -415,7 +415,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click foreach (var afterInteract in afterInteracts) { - afterInteract.AfterInteract(afterInteractEventArgs); + await afterInteract.AfterInteract(afterInteractEventArgs); } } @@ -804,7 +804,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click /// Will have two behaviors, either "uses" the weapon at range on the entity if it is capable of accepting that action /// Or it will use the weapon itself on the position clicked, regardless of what was there /// - public void RangedInteraction(IEntity user, IEntity weapon, IEntity attacked, EntityCoordinates clickLocation) + public async void RangedInteraction(IEntity user, IEntity weapon, IEntity attacked, EntityCoordinates clickLocation) { var rangedMsg = new RangedInteractMessage(user, weapon, attacked, clickLocation); RaiseLocalEvent(rangedMsg); @@ -841,7 +841,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click //See if we have a ranged attack interaction foreach (var afterAttack in afterAttacks) { - afterAttack.AfterInteract(afterAttackEventArgs); + await afterAttack.AfterInteract(afterAttackEventArgs); } } From 96b21ffd1d913945e9ff032ee10d356796de8201 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 09:36:21 +0100 Subject: [PATCH 103/166] Fix nullable errors with AfterInteract in UtensilComponent. --- .../Components/Culinary/UtensilComponent.cs | 4 ++-- .../EntitySystems/Click/InteractionSystem.cs | 12 +++------- .../EntitySystems/ExamineSystemShared.cs | 3 +-- .../Components/Interaction/IAfterInteract.cs | 24 +++++++++++++------ 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs b/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs index e86a311463..d6c8629c6b 100644 --- a/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs +++ b/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs @@ -112,9 +112,9 @@ namespace Content.Server.GameObjects.Components.Culinary TryUseUtensil(eventArgs.User, eventArgs.Target); } - private void TryUseUtensil(IEntity user, IEntity target) + private void TryUseUtensil(IEntity user, IEntity? target) { - if (!target.TryGetComponent(out FoodComponent? food)) + if (target == null || !target.TryGetComponent(out FoodComponent? food)) { return; } diff --git a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs index 245d2eb308..5b774388e7 100644 --- a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs @@ -411,7 +411,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click } var afterInteracts = weapon.GetAllComponents().ToList(); - var afterInteractEventArgs = new AfterInteractEventArgs { User = user, ClickLocation = clickLocation, CanReach = canReach }; + var afterInteractEventArgs = new AfterInteractEventArgs(user, clickLocation, null, canReach); foreach (var afterInteract in afterInteracts) { @@ -460,10 +460,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click // If we aren't directly attacking the nearby object, lets see if our item has an after attack we can do var afterAttacks = weapon.GetAllComponents().ToList(); - var afterAttackEventArgs = new AfterInteractEventArgs - { - User = user, ClickLocation = clickLocation, Target = attacked, CanReach = true - }; + var afterAttackEventArgs = new AfterInteractEventArgs(user, clickLocation, attacked, canReach: true); foreach (var afterAttack in afterAttacks) { @@ -833,10 +830,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click return; var afterAttacks = weapon.GetAllComponents().ToList(); - var afterAttackEventArgs = new AfterInteractEventArgs - { - User = user, ClickLocation = clickLocation, Target = attacked, CanReach = false - }; + var afterAttackEventArgs = new AfterInteractEventArgs(user, clickLocation, attacked, canReach: false); //See if we have a ranged attack interaction foreach (var afterAttack in afterAttacks) diff --git a/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs b/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs index b052dc4ea9..0a20721eac 100644 --- a/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs +++ b/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs @@ -6,7 +6,6 @@ using Content.Shared.Utility; using JetBrains.Annotations; using Robust.Shared.Containers; using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; @@ -161,7 +160,7 @@ namespace Content.Shared.GameObjects.EntitySystems public static bool InRangeUnOccluded(AfterInteractEventArgs args, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = args.User.Transform.MapPosition; - var otherPos = args.Target.Transform.MapPosition; + var otherPos = args.Target?.Transform.MapPosition ?? args.ClickLocation.ToMap(args.User.EntityManager); return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } diff --git a/Content.Shared/Interfaces/GameObjects/Components/Interaction/IAfterInteract.cs b/Content.Shared/Interfaces/GameObjects/Components/Interaction/IAfterInteract.cs index 8225b0d4e9..16299a23c9 100644 --- a/Content.Shared/Interfaces/GameObjects/Components/Interaction/IAfterInteract.cs +++ b/Content.Shared/Interfaces/GameObjects/Components/Interaction/IAfterInteract.cs @@ -5,6 +5,8 @@ using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; +#nullable enable + namespace Content.Shared.Interfaces.GameObjects.Components { /// @@ -22,10 +24,18 @@ namespace Content.Shared.Interfaces.GameObjects.Components public class AfterInteractEventArgs : EventArgs { - public IEntity User { get; set; } - public EntityCoordinates ClickLocation { get; set; } - public IEntity Target { get; set; } - public bool CanReach { get; set; } + public IEntity User { get; } + public EntityCoordinates ClickLocation { get; } + public IEntity? Target { get; } + public bool CanReach { get; } + + public AfterInteractEventArgs(IEntity user, EntityCoordinates clickLocation, IEntity? target, bool canReach) + { + User = user; + ClickLocation = clickLocation; + Target = target; + CanReach = canReach; + } } /// @@ -52,7 +62,7 @@ namespace Content.Shared.Interfaces.GameObjects.Components /// /// Entity that was attacked. This can be null if the attack did not click on an entity. /// - public IEntity Attacked { get; } + public IEntity? Attacked { get; } /// /// Location that the user clicked outside of their interaction range. @@ -65,7 +75,8 @@ namespace Content.Shared.Interfaces.GameObjects.Components /// public bool CanReach { get; } - public AfterInteractMessage(IEntity user, IEntity itemInHand, IEntity attacked, EntityCoordinates clickLocation, bool canReach) + public AfterInteractMessage(IEntity user, IEntity itemInHand, IEntity? attacked, + EntityCoordinates clickLocation, bool canReach) { User = user; Attacked = attacked; @@ -74,5 +85,4 @@ namespace Content.Shared.Interfaces.GameObjects.Components CanReach = canReach; } } - } From f7a7303792bbf30780be912ae87e6d9bddbbdc39 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 09:57:59 +0100 Subject: [PATCH 104/166] Fix server exception on emptying a StackComponent.cs. --- .../Components/Stack/StackComponent.cs | 66 +++++++++---------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/Content.Server/GameObjects/Components/Stack/StackComponent.cs b/Content.Server/GameObjects/Components/Stack/StackComponent.cs index ffe054a9fa..5dbc8026f9 100644 --- a/Content.Server/GameObjects/Components/Stack/StackComponent.cs +++ b/Content.Server/GameObjects/Components/Stack/StackComponent.cs @@ -9,10 +9,8 @@ using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Map; -using Robust.Shared.Timers; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; @@ -86,42 +84,40 @@ namespace Content.Server.GameObjects.Components.Stack public async Task InteractUsing(InteractUsingEventArgs eventArgs) { - if (eventArgs.Using.TryGetComponent(out var stack)) + if (!eventArgs.Using.TryGetComponent(out var stack)) + return false; + + if (!stack.StackType.Equals(StackType)) { - if (!stack.StackType.Equals(StackType)) - { - return false; - } - - var toTransfer = Math.Min(Count, stack.AvailableSpace); - Count -= toTransfer; - stack.Add(toTransfer); - - var popupPos = eventArgs.ClickLocation; - if (popupPos == EntityCoordinates.Invalid) - { - popupPos = eventArgs.User.Transform.Coordinates; - } - - - if (toTransfer > 0) - { - popupPos.PopupMessage(eventArgs.User, $"+{toTransfer}"); - - if (stack.AvailableSpace == 0) - { - Owner.SpawnTimer(300, () => popupPos.PopupMessage(eventArgs.User, "Stack is now full.")); - } - - return true; - } - else if (toTransfer == 0 && stack.AvailableSpace == 0) - { - popupPos.PopupMessage(eventArgs.User, "Stack is already full."); - } + return false; } - return false; + var toTransfer = Math.Min(Count, stack.AvailableSpace); + Count -= toTransfer; + stack.Add(toTransfer); + + var popupPos = eventArgs.ClickLocation; + if (popupPos == EntityCoordinates.Invalid) + { + popupPos = eventArgs.User.Transform.Coordinates; + } + + + if (toTransfer > 0) + { + popupPos.PopupMessage(eventArgs.User, $"+{toTransfer}"); + + if (stack.AvailableSpace == 0) + { + eventArgs.Using.SpawnTimer(300, () => popupPos.PopupMessage(eventArgs.User, "Stack is now full.")); + } + } + else if (toTransfer == 0 && stack.AvailableSpace == 0) + { + popupPos.PopupMessage(eventArgs.User, "Stack is already full."); + } + + return true; } void IExamine.Examine(FormattedMessage message, bool inDetailsRange) From 3baea6856945b21bb2821012292c99f8cc7b52ba Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 09:58:11 +0100 Subject: [PATCH 105/166] Remove weird deletion from SharedStackComponent.cs --- Content.Shared/GameObjects/Components/SharedStackComponent.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Content.Shared/GameObjects/Components/SharedStackComponent.cs b/Content.Shared/GameObjects/Components/SharedStackComponent.cs index 90363daebc..bcd14e0053 100644 --- a/Content.Shared/GameObjects/Components/SharedStackComponent.cs +++ b/Content.Shared/GameObjects/Components/SharedStackComponent.cs @@ -27,10 +27,6 @@ namespace Content.Shared.GameObjects.Components _count = value; if (_count <= 0) { - if (Owner.TryGetContainerMan(out var containerManager)) - { - containerManager.Remove(Owner); - } Owner.Delete(); } From 62fa453a2059421d787842c5894e9869ea1e05a7 Mon Sep 17 00:00:00 2001 From: Swept Date: Mon, 11 Jan 2021 09:12:05 +0000 Subject: [PATCH 106/166] Changes lobby fluff text to be better worded. (#2855) Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com> --- Content.Shared/Preferences/HumanoidCharacterProfile.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index 6609591887..2c7ae05637 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -228,7 +228,7 @@ namespace Content.Shared.Preferences string name; if (string.IsNullOrEmpty(profile.Name)) { - name = "John Doe"; + name = "Urist McHands"; } else if (profile.Name.Length > MaxNameLength) { @@ -287,7 +287,7 @@ namespace Content.Shared.Preferences } public string Summary => - Loc.GetString("{0}, {1} years old human. {2:Their} pronouns are {2:they}/{2:them}.", Name, Age, this); + Loc.GetString(" This is {0}. {2:They} {2:are} {1} years old.", Name, Age, this); public bool MemberwiseEquals(ICharacterProfile maybeOther) { From 57b3e7780d644de6e35038ac27092c431b4d43a2 Mon Sep 17 00:00:00 2001 From: NuclearWinter Date: Mon, 11 Jan 2021 03:12:37 -0600 Subject: [PATCH 107/166] Fix tutorial button being weird (#2984) --- Content.Client/UserInterface/GameHud.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Client/UserInterface/GameHud.cs b/Content.Client/UserInterface/GameHud.cs index 05c664b44e..9050be9136 100644 --- a/Content.Client/UserInterface/GameHud.cs +++ b/Content.Client/UserInterface/GameHud.cs @@ -322,6 +322,7 @@ namespace Content.Client.UserInterface private void ButtonTutorialOnOnToggled() { + _buttonTutorial.StyleClasses.Remove(TopButton.StyleClassRedTopButton); if (_tutorialWindow.IsOpen) { if (!_tutorialWindow.IsAtFront()) From d950e5a5a0772943253cb11c70554bd58afe3980 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 10:39:40 +0100 Subject: [PATCH 108/166] Fix exception on looking up verbs for a laser gun with cell removed. --- .../Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs index 639ceae889..c6a7d7a178 100644 --- a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs @@ -8,7 +8,6 @@ using Content.Server.GameObjects.Components.Projectiles; using Content.Shared.Damage; using Content.Shared.GameObjects; using Content.Shared.GameObjects.Components.Weapons.Ranged.Barrels; -using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; using Content.Shared.GameObjects.Verbs; using Content.Shared.Interfaces.GameObjects.Components; @@ -39,7 +38,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels [ViewVariables] private string _ammoPrototype; [ViewVariables] public IEntity PowerCellEntity => _powerCellContainer.ContainedEntity; - public BatteryComponent PowerCell => _powerCellContainer.ContainedEntity.GetComponent(); + public BatteryComponent PowerCell => _powerCellContainer.ContainedEntity?.GetComponent(); private ContainerSlot _powerCellContainer; private ContainerSlot _ammoContainer; private string _powerCellPrototype; From d3dda274e36cf92b9217be88ec569d70497ac11c Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 11 Jan 2021 10:59:19 +0100 Subject: [PATCH 109/166] fixes blockgamearcadecomponent runtime --- .../Components/Arcade/BlockGameBoundUserInterface.cs | 1 - .../GameObjects/Components/Arcade/BlockGameArcadeComponent.cs | 4 +--- Content.Shared/Arcade/BlockGameMessages.cs | 3 --- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/Content.Client/GameObjects/Components/Arcade/BlockGameBoundUserInterface.cs b/Content.Client/GameObjects/Components/Arcade/BlockGameBoundUserInterface.cs index 4e27a40d3d..b43a1c763a 100644 --- a/Content.Client/GameObjects/Components/Arcade/BlockGameBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Arcade/BlockGameBoundUserInterface.cs @@ -21,7 +21,6 @@ namespace Content.Client.GameObjects.Components.Arcade base.Open(); _menu = new BlockGameMenu(this); - _menu.OnClose += () => SendMessage(new BlockGameMessages.BlockGameUserUnregisterMessage()); _menu.OnClose += Close; _menu.OpenCentered(); } diff --git a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs index 363fcd1faf..db6db84d8b 100644 --- a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs +++ b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs @@ -119,6 +119,7 @@ namespace Content.Server.GameObjects.Components.Arcade if (UserInterface != null) { UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; + UserInterface.OnClosed += UnRegisterPlayerSession; } _game = new BlockGame(this); } @@ -136,9 +137,6 @@ namespace Content.Server.GameObjects.Components.Arcade { switch (obj.Message) { - case BlockGameMessages.BlockGameUserUnregisterMessage unregisterMessage: - UnRegisterPlayerSession(obj.Session); - break; case BlockGameMessages.BlockGamePlayerActionMessage playerActionMessage: if (obj.Session != _player) break; diff --git a/Content.Shared/Arcade/BlockGameMessages.cs b/Content.Shared/Arcade/BlockGameMessages.cs index 8b98933db1..3110edd8dc 100644 --- a/Content.Shared/Arcade/BlockGameMessages.cs +++ b/Content.Shared/Arcade/BlockGameMessages.cs @@ -58,9 +58,6 @@ namespace Content.Shared.Arcade } } - [Serializable, NetSerializable] - public class BlockGameUserUnregisterMessage : BoundUserInterfaceMessage{} - [Serializable, NetSerializable] public class BlockGameSetScreenMessage : BoundUserInterfaceMessage { From 067397c71353c5abf0aa678ff803d62a12781146 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 11:10:05 +0100 Subject: [PATCH 110/166] Cache Enum.GetValues(typeof(Priority)) in PowerNetNodeGroup --- .../Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs index 6e6486b79e..59ff48ef1b 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs @@ -29,6 +29,8 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups [NodeGroup(NodeGroupID.HVPower, NodeGroupID.MVPower)] public class PowerNetNodeGroup : BaseNetConnectorNodeGroup, IPowerNet { + private static readonly Priority[] CachedPriorities = (Priority[]) Enum.GetValues(typeof(Priority)); + [Dependency] private readonly IPowerNetManager _powerNetManager = default!; [ViewVariables] @@ -121,7 +123,7 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups public void UpdateConsumerReceivedPower() { var remainingSupply = _totalSupply; - foreach (Priority priority in Enum.GetValues(typeof(Priority))) + foreach (var priority in CachedPriorities) { var categoryPowerDemand = _drawByPriority[priority]; if (remainingSupply >= categoryPowerDemand) //can fully power all in category From acb3c72d9990c9c7eb95ad33466c393e2ed55235 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 11 Jan 2021 22:14:01 +1100 Subject: [PATCH 111/166] Drag changes (#2487) * Drag changes * Higlights only show near cursor * Don't highlight un-droppable entities * Fixes invalid highlights issue * Also the scanner * 2 months fix * Address reviews Co-authored-by: Metal Gear Sloth --- .../Components/Body/BodyComponent.cs | 16 +- .../Components/Buckle/BuckleComponent.cs | 1 + .../Disposal/DisposalMailingUnitComponent.cs | 5 + .../Disposal/DisposalUnitComponent.cs | 5 + .../MedicalScanner/MedicalScannerComponent.cs | 5 + .../Components/Movement/ClimbableComponent.cs | 21 ++- .../Components/Movement/ClimbingComponent.cs | 1 + .../Components/Strap/StrapComponent.cs | 5 + .../EntitySystems/DragDropSystem.cs | 154 +++++++++++++----- Content.Client/State/GameScreenBase.cs | 16 +- Content.Client/State/OutlineToggleMessage.cs | 14 ++ .../Components/Buckle/BuckleComponent.cs | 11 +- .../Disposal/DisposalMailingUnitComponent.cs | 10 +- .../Disposal/DisposalUnitComponent.cs | 24 ++- .../Medical/MedicalScannerComponent.cs | 9 +- .../Components/Movement/ClimbableComponent.cs | 35 ++-- .../Components/Movement/ClimbingComponent.cs | 1 + .../Components/Strap/StrapComponent.cs | 10 +- .../AI/Pathfinding/PathfindingSystem.cs | 3 +- .../EntitySystems/Click/InteractionSystem.cs | 1 + .../Buckle/SharedBuckleComponent.cs | 13 ++ .../SharedDisposalMailingUnitComponent.cs | 2 +- .../Disposal/SharedDisposalUnitComponent.cs | 36 +++- .../Medical/SharedMedicalScannerComponent.cs | 10 +- .../Movement/SharedClimbableComponent.cs | 27 ++- .../Movement/SharedClimbingComponent.cs | 13 +- .../Components/Strap/SharedStrapComponent.cs | 16 +- .../Components/Interaction/IDragDropOn.cs | 2 +- 28 files changed, 335 insertions(+), 131 deletions(-) create mode 100644 Content.Client/State/OutlineToggleMessage.cs diff --git a/Content.Client/GameObjects/Components/Body/BodyComponent.cs b/Content.Client/GameObjects/Components/Body/BodyComponent.cs index 524513b372..aa23f069f9 100644 --- a/Content.Client/GameObjects/Components/Body/BodyComponent.cs +++ b/Content.Client/GameObjects/Components/Body/BodyComponent.cs @@ -1,6 +1,4 @@ #nullable enable -using Content.Client.GameObjects.Components.Disposal; -using Content.Client.GameObjects.Components.MedicalScanner; using Content.Shared.GameObjects.Components.Body; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; @@ -11,16 +9,14 @@ namespace Content.Client.GameObjects.Components.Body [ComponentReference(typeof(IBody))] public class BodyComponent : SharedBodyComponent, IDraggable { - public bool CanDrop(CanDropEventArgs eventArgs) + bool IDraggable.CanStartDrag(StartDragDropEventArgs args) { - if (eventArgs.Target.HasComponent() || - eventArgs.Target.HasComponent() || - eventArgs.Target.HasComponent()) - { - return true; - } + return true; + } - return false; + public bool CanDrop(CanDropEventArgs args) + { + return true; } } } diff --git a/Content.Client/GameObjects/Components/Buckle/BuckleComponent.cs b/Content.Client/GameObjects/Components/Buckle/BuckleComponent.cs index a3020c85bc..660d5517a8 100644 --- a/Content.Client/GameObjects/Components/Buckle/BuckleComponent.cs +++ b/Content.Client/GameObjects/Components/Buckle/BuckleComponent.cs @@ -6,6 +6,7 @@ using Robust.Shared.Interfaces.GameObjects; namespace Content.Client.GameObjects.Components.Buckle { [RegisterComponent] + [ComponentReference(typeof(SharedBuckleComponent))] public class BuckleComponent : SharedBuckleComponent { private bool _buckled; diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs index fd661f6afa..f3a7376cc3 100644 --- a/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs +++ b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.GameObjects.Components.Disposal; +using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; namespace Content.Client.GameObjects.Components.Disposal @@ -7,5 +8,9 @@ namespace Content.Client.GameObjects.Components.Disposal [ComponentReference(typeof(SharedDisposalMailingUnitComponent))] public class DisposalMailingUnitComponent : SharedDisposalMailingUnitComponent { + public override bool DragDropOn(DragDropEventArgs eventArgs) + { + return false; + } } } diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalUnitComponent.cs b/Content.Client/GameObjects/Components/Disposal/DisposalUnitComponent.cs index 1e28af762d..5451edc71d 100644 --- a/Content.Client/GameObjects/Components/Disposal/DisposalUnitComponent.cs +++ b/Content.Client/GameObjects/Components/Disposal/DisposalUnitComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.GameObjects.Components.Disposal; +using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; namespace Content.Client.GameObjects.Components.Disposal @@ -7,5 +8,9 @@ namespace Content.Client.GameObjects.Components.Disposal [ComponentReference(typeof(SharedDisposalUnitComponent))] public class DisposalUnitComponent : SharedDisposalUnitComponent { + public override bool DragDropOn(DragDropEventArgs eventArgs) + { + return false; + } } } diff --git a/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerComponent.cs b/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerComponent.cs index e48f4cc14b..6ba483832a 100644 --- a/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerComponent.cs +++ b/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.GameObjects.Components.Medical; +using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; namespace Content.Client.GameObjects.Components.MedicalScanner @@ -7,5 +8,9 @@ namespace Content.Client.GameObjects.Components.MedicalScanner [ComponentReference(typeof(SharedMedicalScannerComponent))] public class MedicalScannerComponent : SharedMedicalScannerComponent { + public override bool DragDropOn(DragDropEventArgs eventArgs) + { + return false; + } } } diff --git a/Content.Client/GameObjects/Components/Movement/ClimbableComponent.cs b/Content.Client/GameObjects/Components/Movement/ClimbableComponent.cs index fe92dc1896..311da1407e 100644 --- a/Content.Client/GameObjects/Components/Movement/ClimbableComponent.cs +++ b/Content.Client/GameObjects/Components/Movement/ClimbableComponent.cs @@ -1,5 +1,8 @@ using Content.Shared.GameObjects.Components.Movement; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; namespace Content.Client.GameObjects.Components.Movement { @@ -7,6 +10,22 @@ namespace Content.Client.GameObjects.Components.Movement [ComponentReference(typeof(IClimbable))] public class ClimbableComponent : SharedClimbableComponent { - + public override bool CanDragDropOn(DragDropEventArgs eventArgs) + { + if (!base.CanDragDropOn(eventArgs)) + return false; + + var user = eventArgs.User; + var target = eventArgs.Target; + var dragged = eventArgs.Dragged; + bool Ignored(IEntity entity) => entity == target || entity == user || entity == dragged; + + return user.InRangeUnobstructed(target, Range, predicate: Ignored) && user.InRangeUnobstructed(dragged, Range, predicate: Ignored); + } + + public override bool DragDropOn(DragDropEventArgs eventArgs) + { + return false; + } } } diff --git a/Content.Client/GameObjects/Components/Movement/ClimbingComponent.cs b/Content.Client/GameObjects/Components/Movement/ClimbingComponent.cs index 7db57f929e..92a76edd1f 100644 --- a/Content.Client/GameObjects/Components/Movement/ClimbingComponent.cs +++ b/Content.Client/GameObjects/Components/Movement/ClimbingComponent.cs @@ -4,6 +4,7 @@ using Robust.Shared.GameObjects; namespace Content.Client.GameObjects.Components.Movement { [RegisterComponent] + [ComponentReference(typeof(SharedClimbingComponent))] public class ClimbingComponent : SharedClimbingComponent { public override void HandleComponentState(ComponentState curState, ComponentState nextState) diff --git a/Content.Client/GameObjects/Components/Strap/StrapComponent.cs b/Content.Client/GameObjects/Components/Strap/StrapComponent.cs index 7da4776258..36e086f560 100644 --- a/Content.Client/GameObjects/Components/Strap/StrapComponent.cs +++ b/Content.Client/GameObjects/Components/Strap/StrapComponent.cs @@ -1,5 +1,6 @@ #nullable enable using Content.Shared.GameObjects.Components.Strap; +using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; namespace Content.Client.GameObjects.Components.Strap @@ -8,5 +9,9 @@ namespace Content.Client.GameObjects.Components.Strap [ComponentReference(typeof(SharedStrapComponent))] public class StrapComponent : SharedStrapComponent { + public override bool DragDropOn(DragDropEventArgs eventArgs) + { + return false; + } } } diff --git a/Content.Client/GameObjects/EntitySystems/DragDropSystem.cs b/Content.Client/GameObjects/EntitySystems/DragDropSystem.cs index 97c8aa37dd..ab4e1d601c 100644 --- a/Content.Client/GameObjects/EntitySystems/DragDropSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/DragDropSystem.cs @@ -1,24 +1,32 @@ +#nullable enable using System.Collections.Generic; -using System.Linq; using Content.Client.State; using Content.Client.Utility; -using Content.Shared.GameObjects; using Content.Shared.GameObjects.EntitySystemMessages; using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.GameObjects.EntitySystems; using Robust.Client.Graphics.Shaders; +using Robust.Client.Interfaces.GameObjects.Components; using Robust.Client.Interfaces.Graphics.ClientEye; +using Robust.Client.Interfaces.Input; using Robust.Client.Interfaces.State; +using Robust.Client.Player; +using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; +using Robust.Shared.Localization; using Robust.Shared.Log; +using Robust.Shared.Maths; using Robust.Shared.Prototypes; +using DrawDepth = Content.Shared.GameObjects.DrawDepth; namespace Content.Client.GameObjects.EntitySystems { @@ -29,7 +37,9 @@ namespace Content.Client.GameObjects.EntitySystems public class DragDropSystem : EntitySystem { [Dependency] private readonly IStateManager _stateManager = default!; + [Dependency] private readonly IInputManager _inputManager = default!; [Dependency] private readonly IEyeManager _eyeManager = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; // how often to recheck possible targets (prevents calling expensive @@ -45,9 +55,11 @@ namespace Content.Client.GameObjects.EntitySystems private const string ShaderDropTargetOutOfRange = "SelectionOutline"; // entity performing the drag action - private IEntity _dragger; + + private IEntity? _dragger; private readonly List _draggables = new(); - private IEntity _dragShadow; + private IEntity? _dragShadow; + // time since mouse down over the dragged entity private float _mouseDownTime; // how much time since last recheck of all possible targets @@ -58,14 +70,14 @@ namespace Content.Client.GameObjects.EntitySystems // can ignore any events sent to this system private bool _isReplaying; - private DragDropHelper _dragDropHelper; + private DragDropHelper _dragDropHelper = default!; - private ShaderInstance _dropTargetInRangeShader; - private ShaderInstance _dropTargetOutOfRangeShader; - private SharedInteractionSystem _interactionSystem; - private InputSystem _inputSystem; + private ShaderInstance? _dropTargetInRangeShader; + private ShaderInstance? _dropTargetOutOfRangeShader; + private SharedInteractionSystem _interactionSystem = default!; + private InputSystem _inputSystem = default!; - private readonly List _highlightedSprites = new(); + private readonly List _highlightedSprites = new(); public override void Initialize() { @@ -112,7 +124,7 @@ namespace Content.Client.GameObjects.EntitySystems private bool OnUseMouseDown(in PointerInputCmdHandler.PointerInputCmdArgs args) { - var dragger = args.Session.AttachedEntity; + var dragger = args.Session?.AttachedEntity; // cancel any current dragging if there is one (shouldn't be because they would've had to have lifted // the mouse, canceling the drag, but just being cautious) _dragDropHelper.EndDrag(); @@ -130,7 +142,7 @@ namespace Content.Client.GameObjects.EntitySystems var canDrag = false; foreach (var draggable in entity.GetAllComponents()) { - var dragEventArgs = new StartDragDropEventArgs(args.Session.AttachedEntity, entity); + var dragEventArgs = new StartDragDropEventArgs(dragger, entity); if (draggable.CanStartDrag(dragEventArgs)) { _draggables.Add(draggable); @@ -156,7 +168,6 @@ namespace Content.Client.GameObjects.EntitySystems return false; } - private bool OnBeginDrag() { if (_dragDropHelper.Dragged == null || _dragDropHelper.Dragged.Deleted) @@ -183,6 +194,7 @@ namespace Content.Client.GameObjects.EntitySystems } HighlightTargets(); + EntityManager.EventBus.RaiseEvent(EventSource.Local, new OutlineToggleMessage(false)); // drag initiated return true; @@ -209,6 +221,9 @@ namespace Content.Client.GameObjects.EntitySystems var mousePos = _eyeManager.ScreenToMap(_dragDropHelper.MouseScreenPosition); // TODO: would use MapPosition instead if it had a setter, but it has no setter. // is that intentional, or should we add a setter for Transform.MapPosition? + if (_dragShadow == null) + return false; + _dragShadow.Transform.WorldPosition = mousePos.Position; _targetRecheckTime += frameTime; @@ -229,6 +244,7 @@ namespace Content.Client.GameObjects.EntitySystems EntityManager.DeleteEntity(_dragShadow); } + EntityManager.EventBus.RaiseEvent(EventSource.Local, new OutlineToggleMessage(true)); _dragShadow = null; _draggables.Clear(); _dragger = null; @@ -238,7 +254,7 @@ namespace Content.Client.GameObjects.EntitySystems private bool OnUseMouseUp(in PointerInputCmdHandler.PointerInputCmdArgs args) { - if (!_dragDropHelper.IsDragging) + if (_dragDropHelper.IsDragging == false) { // haven't started the drag yet, quick mouseup, definitely treat it as a normal click by // replaying the original cmd @@ -251,40 +267,68 @@ namespace Content.Client.GameObjects.EntitySystems var adjustedInputMsg = new FullInputCmdMessage(args.OriginalMessage.Tick, args.OriginalMessage.SubTick, replayMsg.InputFunctionId, replayMsg.State, replayMsg.Coordinates, replayMsg.ScreenCoordinates, replayMsg.Uid); - _inputSystem.HandleInputCommand(savedValue.Session, EngineKeyFunctions.Use, - adjustedInputMsg, true); + if (savedValue.Session != null) + { + _inputSystem.HandleInputCommand(savedValue.Session, EngineKeyFunctions.Use, adjustedInputMsg, true); + } + _isReplaying = false; } _dragDropHelper.EndDrag(); return false; } - // now when ending the drag, we will not replay the click because - // by this time we've determined the input was actually a drag attempt + if (_dragger == null) + { + _dragDropHelper.EndDrag(); + return false; + } + // now when ending the drag, we will not replay the click because + // by this time we've determined the input was actually a drag attempt + var range = (args.Coordinates.ToMapPos(EntityManager) - _dragger.Transform.MapPosition.Position).Length + 0.01f; // tell the server we are dropping if we are over a valid drop target in range. // We don't use args.EntityUid here because drag interactions generally should // work even if there's something "on top" of the drop target if (!_interactionSystem.InRangeUnobstructed(_dragger, - args.Coordinates, ignoreInsideBlocker: true)) + args.Coordinates, range, ignoreInsideBlocker: true)) { _dragDropHelper.EndDrag(); return false; } var entities = GameScreenBase.GetEntitiesUnderPosition(_stateManager, args.Coordinates); + var outOfRange = false; foreach (var entity in entities) { // check if it's able to be dropped on by current dragged entity var dropArgs = new DragDropEventArgs(_dragger, args.Coordinates, _dragDropHelper.Dragged, entity); + var valid = true; + var anyDragDrop = false; + var dragDropOn = new List(); + + foreach (var comp in entity.GetAllComponents()) + { + anyDragDrop = true; + + if (!comp.CanDragDropOn(dropArgs)) + { + valid = false; + dragDropOn.Add(comp); + } + } + + if (!valid || !anyDragDrop) continue; + if (!dropArgs.InRangeUnobstructed(ignoreInsideBlocker: true)) + { + outOfRange = true; + continue; + } foreach (var draggable in _draggables) { - if (!draggable.CanDrop(dropArgs)) - { - continue; - } + if (!draggable.CanDrop(dropArgs)) continue; // tell the server about the drop attempt RaiseNetworkEvent(new DragDropMessage(args.Coordinates, _dragDropHelper.Dragged.Uid, @@ -292,11 +336,22 @@ namespace Content.Client.GameObjects.EntitySystems draggable.Drop(dropArgs); + // Don't fail if it isn't handled as server may do something with it + foreach (var comp in dragDropOn) + { + if (!comp.DragDropOn(dropArgs)) continue; + } + _dragDropHelper.EndDrag(); return true; } } + if (outOfRange) + { + _playerManager.LocalPlayer?.ControlledEntity?.PopupMessage(Loc.GetString("You can't reach there!")); + } + _dragDropHelper.EndDrag(); return false; } @@ -304,7 +359,9 @@ namespace Content.Client.GameObjects.EntitySystems private void HighlightTargets() { if (_dragDropHelper.Dragged == null || - _dragDropHelper.Dragged.Deleted || _dragShadow == null || _dragShadow.Deleted) + _dragDropHelper.Dragged.Deleted || + _dragShadow == null || + _dragShadow.Deleted) { Logger.Warning("Programming error. Can't highlight drag and drop targets, not currently " + "dragging anything or dragged entity / shadow was deleted."); @@ -319,28 +376,42 @@ namespace Content.Client.GameObjects.EntitySystems // find possible targets on screen even if not reachable // TODO: Duplicated in SpriteSystem - var pvsBounds = _eyeManager.GetWorldViewport().Enlarged(5); - var pvsEntities = EntityManager.GetEntitiesIntersecting(_eyeManager.CurrentMap, pvsBounds, true); + var mousePos = _eyeManager.ScreenToMap(_inputManager.MouseScreenPosition).Position; + var bounds = new Box2(mousePos - 1.5f, mousePos + 1.5f); + var pvsEntities = EntityManager.GetEntitiesIntersecting(_eyeManager.CurrentMap, bounds, true); foreach (var pvsEntity in pvsEntities) { - if (pvsEntity.TryGetComponent(out var inRangeSprite)) + if (!pvsEntity.TryGetComponent(out ISpriteComponent? inRangeSprite)) continue; + + // can't highlight if there's no sprite or it's not visible + if (inRangeSprite.Visible == false) continue; + + var valid = (bool?) null; + // check if it's able to be dropped on by current dragged entity + var dropArgs = new DragDropEventArgs(_dragger, pvsEntity.Transform.Coordinates, _dragDropHelper.Dragged, pvsEntity); + + foreach (var comp in pvsEntity.GetAllComponents()) { - // can't highlight if there's no sprite or it's not visible - if (inRangeSprite.Visible == false) continue; + valid = comp.CanDragDropOn(dropArgs); - // check if it's able to be dropped on by current dragged entity - var canDropArgs = new CanDropEventArgs(_dragger, _dragDropHelper.Dragged, pvsEntity); - var anyValidDraggable = _draggables.Any(draggable => draggable.CanDrop(canDropArgs)); - - if (anyValidDraggable) - { - // highlight depending on whether its in or out of range - var inRange = _interactionSystem.InRangeUnobstructed(_dragger, pvsEntity); - inRangeSprite.PostShader = inRange ? _dropTargetInRangeShader : _dropTargetOutOfRangeShader; - inRangeSprite.RenderOrder = EntityManager.CurrentTick.Value; - _highlightedSprites.Add(inRangeSprite); - } + if (valid.Value) + break; } + + // Can't do anything so no highlight + if (!valid.HasValue) + continue; + + // We'll do a final check given server-side does this before any dragdrop can take place. + if (valid.Value) + { + valid = dropArgs.InRangeUnobstructed(ignoreInsideBlocker: true); + } + + // highlight depending on whether its in or out of range + inRangeSprite.PostShader = valid.Value ? _dropTargetInRangeShader : _dropTargetOutOfRangeShader; + inRangeSprite.RenderOrder = EntityManager.CurrentTick.Value; + _highlightedSprites.Add(inRangeSprite); } } @@ -351,6 +422,7 @@ namespace Content.Client.GameObjects.EntitySystems highlightedSprite.PostShader = null; highlightedSprite.RenderOrder = 0; } + _highlightedSprites.Clear(); } diff --git a/Content.Client/State/GameScreenBase.cs b/Content.Client/State/GameScreenBase.cs index 00e836ffd0..3957c5576e 100644 --- a/Content.Client/State/GameScreenBase.cs +++ b/Content.Client/State/GameScreenBase.cs @@ -27,7 +27,7 @@ namespace Content.Client.State // OH GOD. // Ok actually it's fine. // Instantiated dynamically through the StateManager, Dependencies will be resolved. - public partial class GameScreenBase : Robust.Client.State.State + public partial class GameScreenBase : Robust.Client.State.State, IEntityEventSubscriber { [Dependency] protected readonly IClientEntityManager EntityManager = default!; [Dependency] protected readonly IInputManager InputManager = default!; @@ -38,17 +38,29 @@ namespace Content.Client.State [Dependency] protected readonly IMapManager MapManager = default!; [Dependency] protected readonly IUserInterfaceManager UserInterfaceManager = default!; [Dependency] protected readonly IConfigurationManager ConfigurationManager = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + + private IEventBus _eventBus => _entityManager.EventBus; private IEntity _lastHoveredEntity; + private bool _outlineEnabled = true; + public override void Startup() { InputManager.KeyBindStateChanged += OnKeyBindStateChanged; + _eventBus.SubscribeEvent(EventSource.Local, this, HandleOutlineToggle); } public override void Shutdown() { InputManager.KeyBindStateChanged -= OnKeyBindStateChanged; + _eventBus.UnsubscribeEvent(EventSource.Local, this); + } + + private void HandleOutlineToggle(OutlineToggleMessage message) + { + _outlineEnabled = message.Enabled; } public override void FrameUpdate(FrameEventArgs e) @@ -72,7 +84,7 @@ namespace Content.Client.State } InteractionOutlineComponent outline; - if(!ConfigurationManager.GetCVar(CCVars.OutlineEnabled)) + if(!_outlineEnabled || !ConfigurationManager.GetCVar(CCVars.OutlineEnabled)) { if(entityToClick != null && entityToClick.TryGetComponent(out outline)) { diff --git a/Content.Client/State/OutlineToggleMessage.cs b/Content.Client/State/OutlineToggleMessage.cs new file mode 100644 index 0000000000..bef225fda4 --- /dev/null +++ b/Content.Client/State/OutlineToggleMessage.cs @@ -0,0 +1,14 @@ +using Robust.Shared.GameObjects; + +namespace Content.Client.State +{ + public sealed class OutlineToggleMessage : EntitySystemMessage + { + public bool Enabled { get; } + + public OutlineToggleMessage(bool enabled) + { + Enabled = enabled; + } + } +} diff --git a/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs b/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs index f6f4c640f5..61f1539e22 100644 --- a/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs +++ b/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs @@ -33,6 +33,7 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Buckle { [RegisterComponent] + [ComponentReference(typeof(SharedBuckleComponent))] public class BuckleComponent : SharedBuckleComponent, IInteractHand { [Dependency] private readonly IGameTiming _gameTiming = default!; @@ -44,11 +45,6 @@ namespace Content.Server.GameObjects.Components.Buckle private int _size; - /// - /// The range from which this entity can buckle to a . - /// - [ViewVariables] - private float _range; /// /// The amount of time that must pass for this entity to /// be able to unbuckle after recently buckling. @@ -184,7 +180,7 @@ namespace Content.Server.GameObjects.Components.Buckle var component = strap; bool Ignored(IEntity entity) => entity == Owner || entity == user || entity == component.Owner; - if (!Owner.InRangeUnobstructed(strap, _range, predicate: Ignored, popup: true)) + if (!Owner.InRangeUnobstructed(strap, Range, predicate: Ignored, popup: true)) { return false; } @@ -319,7 +315,7 @@ namespace Content.Server.GameObjects.Components.Buckle return false; } - if (!user.InRangeUnobstructed(oldBuckledTo, _range, popup: true)) + if (!user.InRangeUnobstructed(oldBuckledTo, Range, popup: true)) { return false; } @@ -385,7 +381,6 @@ namespace Content.Server.GameObjects.Components.Buckle base.ExposeData(serializer); serializer.DataField(ref _size, "size", 100); - serializer.DataField(ref _range, "range", SharedInteractionSystem.InteractionRange / 1.4f); var seconds = 0.25f; serializer.DataField(ref seconds, "cooldown", 0.25f); diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs index 0bc3be51b7..072c584b04 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs @@ -10,13 +10,11 @@ using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.EntitySystems.DeviceNetwork; using Content.Server.GameObjects.EntitySystems.DoAfter; -using Content.Server.Interfaces; using Content.Server.Interfaces.GameObjects.Components.Items; using Content.Server.Utility; using Content.Shared.GameObjects.Components; using Content.Shared.GameObjects.Components.Body; using Content.Shared.GameObjects.Components.Disposal; -using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; using Content.Shared.GameObjects.Verbs; using Content.Shared.Interfaces; @@ -47,7 +45,7 @@ namespace Content.Server.GameObjects.Components.Disposal [ComponentReference(typeof(SharedDisposalMailingUnitComponent))] [ComponentReference(typeof(IActivate))] [ComponentReference(typeof(IInteractUsing))] - public class DisposalMailingUnitComponent : SharedDisposalMailingUnitComponent, IInteractHand, IActivate, IInteractUsing, IDragDropOn + public class DisposalMailingUnitComponent : SharedDisposalMailingUnitComponent, IInteractHand, IActivate, IInteractUsing { [Dependency] private readonly IGameTiming _gameTiming = default!; @@ -145,7 +143,7 @@ namespace Content.Server.GameObjects.Components.Disposal /// private (PressureState State, string Localized) _locState; - public bool CanInsert(IEntity entity) + public override bool CanInsert(IEntity entity) { if (!Anchored) { @@ -763,12 +761,12 @@ namespace Content.Server.GameObjects.Components.Disposal return TryDrop(eventArgs.User, eventArgs.Using); } - bool IDragDropOn.CanDragDropOn(DragDropEventArgs eventArgs) + public override bool CanDragDropOn(DragDropEventArgs eventArgs) { return CanInsert(eventArgs.Dragged); } - bool IDragDropOn.DragDropOn(DragDropEventArgs eventArgs) + public override bool DragDropOn(DragDropEventArgs eventArgs) { _ = TryInsert(eventArgs.Dragged, eventArgs.User); return true; diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs index d3f1b3230b..d1612da8e5 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs @@ -6,20 +6,17 @@ using System.Threading; using System.Threading.Tasks; using Content.Server.Atmos; using Content.Server.GameObjects.Components.GUI; -using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.EntitySystems; using Content.Server.GameObjects.EntitySystems.DoAfter; using Content.Server.Interfaces; using Content.Server.Interfaces.GameObjects.Components.Items; using Content.Server.Utility; +using Content.Shared.GameObjects.Components.Disposal; using Content.Shared.Atmos; using Content.Shared.GameObjects.Components.Body; -using Content.Shared.GameObjects.Components.Damage; -using Content.Shared.GameObjects.Components.Disposal; -using Content.Shared.GameObjects.Components.Items; using Content.Shared.GameObjects.Components.Mobs.State; -using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; using Content.Shared.GameObjects.Verbs; using Content.Shared.Interfaces; @@ -51,7 +48,7 @@ namespace Content.Server.GameObjects.Components.Disposal [ComponentReference(typeof(SharedDisposalUnitComponent))] [ComponentReference(typeof(IActivate))] [ComponentReference(typeof(IInteractUsing))] - public class DisposalUnitComponent : SharedDisposalUnitComponent, IInteractHand, IActivate, IInteractUsing, IDragDropOn, IThrowCollide, IGasMixtureHolder + public class DisposalUnitComponent : SharedDisposalUnitComponent, IInteractHand, IActivate, IInteractUsing, IThrowCollide, IGasMixtureHolder { [Dependency] private readonly IGameTiming _gameTiming = default!; @@ -137,17 +134,16 @@ namespace Content.Server.GameObjects.Components.Disposal public GasMixture Air { get; set; } = default!; - public bool CanInsert(IEntity entity) + public override bool CanInsert(IEntity entity) { - if (!Anchored) - { + if (!base.CanInsert(entity)) return false; - } if (!entity.TryGetComponent(out IPhysicsComponent? physics) || !physics.CanCollide) { - if (!(entity.TryGetComponent(out IMobStateComponent? state) && state.IsDead())) { + if (entity.TryGetComponent(out IMobStateComponent? state) && state.IsDead()) + { return false; } } @@ -676,12 +672,14 @@ namespace Content.Server.GameObjects.Components.Disposal return TryDrop(eventArgs.User, eventArgs.Using); } - bool IDragDropOn.CanDragDropOn(DragDropEventArgs eventArgs) + public override bool CanDragDropOn(DragDropEventArgs eventArgs) { + // Base is redundant given this already calls the base CanInsert + // If that changes then update this return CanInsert(eventArgs.Dragged); } - bool IDragDropOn.DragDropOn(DragDropEventArgs eventArgs) + public override bool DragDropOn(DragDropEventArgs eventArgs) { _ = TryInsert(eventArgs.Dragged, eventArgs.User); return true; diff --git a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs index b5c5f8d9ee..45fe55e65f 100644 --- a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs +++ b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs @@ -35,7 +35,7 @@ namespace Content.Server.GameObjects.Components.Medical [RegisterComponent] [ComponentReference(typeof(IActivate))] [ComponentReference(typeof(SharedMedicalScannerComponent))] - public class MedicalScannerComponent : SharedMedicalScannerComponent, IActivate, IDragDropOn, IDestroyAct + public class MedicalScannerComponent : SharedMedicalScannerComponent, IActivate, IDestroyAct { [Dependency] private readonly IGameTiming _gameTiming = default!; @@ -292,12 +292,7 @@ namespace Content.Server.GameObjects.Components.Medical } } - public bool CanDragDropOn(DragDropEventArgs eventArgs) - { - return eventArgs.Dragged.HasComponent(); - } - - public bool DragDropOn(DragDropEventArgs eventArgs) + public override bool DragDropOn(DragDropEventArgs eventArgs) { _bodyContainer.Insert(eventArgs.Dragged); return true; diff --git a/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs b/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs index 97f9d4e21d..0b6e78f4f7 100644 --- a/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs @@ -27,41 +27,36 @@ namespace Content.Server.GameObjects.Components.Movement { [RegisterComponent] [ComponentReference(typeof(IClimbable))] - public class ClimbableComponent : SharedClimbableComponent, IDragDropOn + public class ClimbableComponent : SharedClimbableComponent { - /// - /// The range from which this entity can be climbed. - /// - [ViewVariables] - private float _range; - /// /// The time it takes to climb onto the entity. /// [ViewVariables] private float _climbDelay; - private DoAfterSystem _doAfterSystem; - public override void Initialize() { base.Initialize(); - Owner.EnsureComponentWarn(out PhysicsComponent _); - - _doAfterSystem = EntitySystem.Get(); + if (!Owner.EnsureComponent(out PhysicsComponent _)) + { + Logger.Warning($"Entity {Owner.Name} at {Owner.Transform.MapPosition} didn't have a {nameof(PhysicsComponent)}"); + } } public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(ref _range, "range", SharedInteractionSystem.InteractionRange / 1.4f); serializer.DataField(ref _climbDelay, "delay", 0.8f); } - bool IDragDropOn.CanDragDropOn(DragDropEventArgs eventArgs) + public override bool CanDragDropOn(DragDropEventArgs eventArgs) { + if (!base.CanDragDropOn(eventArgs)) + return false; + string reason; bool canVault; @@ -105,7 +100,7 @@ namespace Content.Server.GameObjects.Components.Movement return false; } - if (!user.InRangeUnobstructed(target, _range)) + if (!user.InRangeUnobstructed(target, Range)) { reason = Loc.GetString("You can't reach there!"); return false; @@ -139,8 +134,8 @@ namespace Content.Server.GameObjects.Components.Movement bool Ignored(IEntity entity) => entity == target || entity == user || entity == dragged; - if (!user.InRangeUnobstructed(target, _range, predicate: Ignored) || - !user.InRangeUnobstructed(dragged, _range, predicate: Ignored)) + if (!user.InRangeUnobstructed(target, Range, predicate: Ignored) || + !user.InRangeUnobstructed(dragged, Range, predicate: Ignored)) { reason = Loc.GetString("You can't reach there!"); return false; @@ -150,7 +145,7 @@ namespace Content.Server.GameObjects.Components.Movement return true; } - bool IDragDropOn.DragDropOn(DragDropEventArgs eventArgs) + public override bool DragDropOn(DragDropEventArgs eventArgs) { if (eventArgs.User == eventArgs.Dragged) { @@ -174,7 +169,7 @@ namespace Content.Server.GameObjects.Components.Movement BreakOnStun = true }; - var result = await _doAfterSystem.DoAfter(doAfterEventArgs); + var result = await EntitySystem.Get().DoAfter(doAfterEventArgs); if (result != DoAfterStatus.Cancelled && entityToMove.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1) { @@ -219,7 +214,7 @@ namespace Content.Server.GameObjects.Components.Movement BreakOnStun = true }; - var result = await _doAfterSystem.DoAfter(doAfterEventArgs); + var result = await EntitySystem.Get().DoAfter(doAfterEventArgs); if (result != DoAfterStatus.Cancelled && user.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1) { diff --git a/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs b/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs index 8c3a5e84e2..a924f93d96 100644 --- a/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs @@ -9,6 +9,7 @@ using Robust.Shared.Maths; namespace Content.Server.GameObjects.Components.Movement { [RegisterComponent] + [ComponentReference(typeof(SharedClimbingComponent))] public class ClimbingComponent : SharedClimbingComponent { private bool _isClimbing; diff --git a/Content.Server/GameObjects/Components/Strap/StrapComponent.cs b/Content.Server/GameObjects/Components/Strap/StrapComponent.cs index 253a299ca7..a9a08ec31a 100644 --- a/Content.Server/GameObjects/Components/Strap/StrapComponent.cs +++ b/Content.Server/GameObjects/Components/Strap/StrapComponent.cs @@ -207,9 +207,7 @@ namespace Content.Server.GameObjects.Components.Strap parent = parent.Parent; } - var range = SharedInteractionSystem.InteractionRange / 2; - - if (!user.InRangeUnobstructed(component, range)) + if (!user.InRangeUnobstructed(component, buckle.Range)) { return; } @@ -228,5 +226,11 @@ namespace Content.Server.GameObjects.Components.Strap buckle.ToggleBuckle(user, component.Owner); } } + + public override bool DragDropOn(DragDropEventArgs eventArgs) + { + if (!eventArgs.Dragged.TryGetComponent(out BuckleComponent? buckleComponent)) return false; + return buckleComponent.TryBuckle(eventArgs.User, Owner); + } } } diff --git a/Content.Server/GameObjects/EntitySystems/AI/Pathfinding/PathfindingSystem.cs b/Content.Server/GameObjects/EntitySystems/AI/Pathfinding/PathfindingSystem.cs index 0c86d38db0..4c39b8b4fe 100644 --- a/Content.Server/GameObjects/EntitySystems/AI/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/AI/Pathfinding/PathfindingSystem.cs @@ -306,7 +306,8 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding // If we've moved to space or the likes then remove us. if (moveEvent.Sender.Deleted || !moveEvent.Sender.TryGetComponent(out IPhysicsComponent physics) || - !PathfindingNode.IsRelevant(moveEvent.Sender, physics)) + !PathfindingNode.IsRelevant(moveEvent.Sender, physics) || + moveEvent.NewPosition.GetGridId(EntityManager) == GridId.Invalid) { HandleEntityRemove(moveEvent.Sender); return; diff --git a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs index 5b774388e7..dde99dbddd 100644 --- a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs @@ -71,6 +71,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click var interactionArgs = new DragDropEventArgs(performer, msg.DropLocation, dropped, target); // must be in range of both the target and the object they are drag / dropping + // Client also does this check but ya know we gotta validate it. if (!interactionArgs.InRangeUnobstructed(ignoreInsideBlocker: true, popup: true)) return; // trigger dragdrops on the dropped entity diff --git a/Content.Shared/GameObjects/Components/Buckle/SharedBuckleComponent.cs b/Content.Shared/GameObjects/Components/Buckle/SharedBuckleComponent.cs index a78bd4a35c..4d86409a72 100644 --- a/Content.Shared/GameObjects/Components/Buckle/SharedBuckleComponent.cs +++ b/Content.Shared/GameObjects/Components/Buckle/SharedBuckleComponent.cs @@ -11,6 +11,7 @@ using Robust.Shared.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Physics; using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Buckle { @@ -19,6 +20,18 @@ namespace Content.Shared.GameObjects.Components.Buckle public sealed override string Name => "Buckle"; public sealed override uint? NetID => ContentNetIDs.BUCKLE; + /// + /// The range from which this entity can buckle to a . + /// + [ViewVariables] + public float Range { get; protected set; } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataReadWriteFunction("range", SharedInteractionSystem.InteractionRange / 1.4f, value => Range = value, () => Range); + } + /// /// True if the entity is buckled, false otherwise. /// diff --git a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalMailingUnitComponent.cs b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalMailingUnitComponent.cs index 5c9def4322..da67e8d4d5 100644 --- a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalMailingUnitComponent.cs +++ b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalMailingUnitComponent.cs @@ -7,7 +7,7 @@ using Robust.Shared.Utility; namespace Content.Shared.GameObjects.Components.Disposal { - public abstract class SharedDisposalMailingUnitComponent : SharedDisposalUnitComponent, ICollideSpecial + public abstract class SharedDisposalMailingUnitComponent : SharedDisposalUnitComponent { public override string Name => "DisposalMailingUnit"; diff --git a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalUnitComponent.cs b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalUnitComponent.cs index d777c2d786..af7a801728 100644 --- a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalUnitComponent.cs +++ b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalUnitComponent.cs @@ -1,6 +1,11 @@ #nullable enable using System; using System.Collections.Generic; +using Content.Shared.GameObjects.Components.Body; +using Content.Shared.GameObjects.Components.Damage; +using Content.Shared.GameObjects.Components.Mobs.State; +using Content.Shared.GameObjects.Components.Storage; +using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Components.UserInterface; @@ -12,7 +17,7 @@ using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Disposal { - public abstract class SharedDisposalUnitComponent : Component, ICollideSpecial + public abstract class SharedDisposalUnitComponent : Component, ICollideSpecial, IDragDropOn { public override string Name => "DisposalUnit"; @@ -160,5 +165,34 @@ namespace Content.Shared.GameObjects.Components.Disposal { Key } + + public virtual bool CanInsert(IEntity entity) + { + if (!Anchored) + return false; + + if (!entity.TryGetComponent(out IPhysicsComponent? physics) || + !physics.CanCollide) + { + if (!(entity.TryGetComponent(out IMobStateComponent? damageState) && damageState.IsDead())) { + return false; + } + } + + if (!entity.HasComponent() && + !entity.HasComponent()) + { + return false; + } + + return true; + } + + public virtual bool CanDragDropOn(DragDropEventArgs eventArgs) + { + return CanInsert(eventArgs.Dragged); + } + + public abstract bool DragDropOn(DragDropEventArgs eventArgs); } } diff --git a/Content.Shared/GameObjects/Components/Medical/SharedMedicalScannerComponent.cs b/Content.Shared/GameObjects/Components/Medical/SharedMedicalScannerComponent.cs index 10262d1fd2..e330d12b93 100644 --- a/Content.Shared/GameObjects/Components/Medical/SharedMedicalScannerComponent.cs +++ b/Content.Shared/GameObjects/Components/Medical/SharedMedicalScannerComponent.cs @@ -1,13 +1,15 @@ using System; using System.Collections.Generic; using Content.Shared.Damage; +using Content.Shared.GameObjects.Components.Body; +using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.UserInterface; using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components.Medical { - public class SharedMedicalScannerComponent : Component + public abstract class SharedMedicalScannerComponent : Component, IDragDropOn { public override string Name => "MedicalScanner"; @@ -78,5 +80,11 @@ namespace Content.Shared.GameObjects.Components.Medical } + public bool CanDragDropOn(DragDropEventArgs eventArgs) + { + return eventArgs.Dragged.HasComponent(); + } + + public abstract bool DragDropOn(DragDropEventArgs eventArgs); } } diff --git a/Content.Shared/GameObjects/Components/Movement/SharedClimbableComponent.cs b/Content.Shared/GameObjects/Components/Movement/SharedClimbableComponent.cs index 951d051ac1..5aec1e46df 100644 --- a/Content.Shared/GameObjects/Components/Movement/SharedClimbableComponent.cs +++ b/Content.Shared/GameObjects/Components/Movement/SharedClimbableComponent.cs @@ -1,11 +1,34 @@ -using Robust.Shared.GameObjects; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Movement { public interface IClimbable { }; - public class SharedClimbableComponent : Component, IClimbable + public abstract class SharedClimbableComponent : Component, IClimbable, IDragDropOn { public sealed override string Name => "Climbable"; + + /// + /// The range from which this entity can be climbed. + /// + [ViewVariables] + protected float Range; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref Range, "range", SharedInteractionSystem.InteractionRange / 1.4f); + } + + public virtual bool CanDragDropOn(DragDropEventArgs eventArgs) + { + return eventArgs.Dragged.HasComponent(); + } + + public abstract bool DragDropOn(DragDropEventArgs eventArgs); } } diff --git a/Content.Shared/GameObjects/Components/Movement/SharedClimbingComponent.cs b/Content.Shared/GameObjects/Components/Movement/SharedClimbingComponent.cs index e55e599f63..db39b8d368 100644 --- a/Content.Shared/GameObjects/Components/Movement/SharedClimbingComponent.cs +++ b/Content.Shared/GameObjects/Components/Movement/SharedClimbingComponent.cs @@ -6,11 +6,10 @@ using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; using Robust.Shared.Physics; using Robust.Shared.Serialization; -using Content.Shared.Interfaces.GameObjects.Components; namespace Content.Shared.GameObjects.Components.Movement { - public abstract class SharedClimbingComponent : Component, IActionBlocker, ICollideSpecial, IDraggable + public abstract class SharedClimbingComponent : Component, IActionBlocker, ICollideSpecial { public sealed override string Name => "Climbing"; public sealed override uint? NetID => ContentNetIDs.CLIMBING; @@ -47,16 +46,6 @@ namespace Content.Shared.GameObjects.Components.Movement return false; } - bool IDraggable.CanDrop(CanDropEventArgs args) - { - return args.Target.HasComponent(); - } - - bool IDraggable.Drop(DragDropEventArgs args) - { - return false; - } - public override void Initialize() { base.Initialize(); diff --git a/Content.Shared/GameObjects/Components/Strap/SharedStrapComponent.cs b/Content.Shared/GameObjects/Components/Strap/SharedStrapComponent.cs index cd07ec0942..66a5aa73d3 100644 --- a/Content.Shared/GameObjects/Components/Strap/SharedStrapComponent.cs +++ b/Content.Shared/GameObjects/Components/Strap/SharedStrapComponent.cs @@ -1,4 +1,8 @@ using System; +using Content.Shared.GameObjects.Components.Buckle; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Serialization; @@ -23,11 +27,21 @@ namespace Content.Shared.GameObjects.Components.Strap Down } - public abstract class SharedStrapComponent : Component + public abstract class SharedStrapComponent : Component, IDragDropOn { public sealed override string Name => "Strap"; public sealed override uint? NetID => ContentNetIDs.STRAP; + + public virtual bool CanDragDropOn(DragDropEventArgs eventArgs) + { + if (!eventArgs.Dragged.TryGetComponent(out SharedBuckleComponent buckleComponent)) return false; + bool Ignored(IEntity entity) => entity == eventArgs.User || entity == eventArgs.Dragged || entity == eventArgs.Target; + + return eventArgs.Target.InRangeUnobstructed(eventArgs.Dragged, buckleComponent.Range, predicate: Ignored); + } + + public abstract bool DragDropOn(DragDropEventArgs eventArgs); } [Serializable, NetSerializable] diff --git a/Content.Shared/Interfaces/GameObjects/Components/Interaction/IDragDropOn.cs b/Content.Shared/Interfaces/GameObjects/Components/Interaction/IDragDropOn.cs index 1100bdb3d3..761fbe86de 100644 --- a/Content.Shared/Interfaces/GameObjects/Components/Interaction/IDragDropOn.cs +++ b/Content.Shared/Interfaces/GameObjects/Components/Interaction/IDragDropOn.cs @@ -7,7 +7,7 @@ namespace Content.Shared.Interfaces.GameObjects.Components public interface IDragDropOn { /// - /// Invoked server-side when another entity is being dragged and dropped + /// Invoked when another entity is being dragged and dropped /// onto this one before invoking . /// Note that other drag and drop interactions may be attempted if /// this one fails. From 97aa40e813eebc9396a679958fe715db623940e4 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 11 Jan 2021 22:43:24 +1100 Subject: [PATCH 112/166] Content layered placement (#2543) * Content layered placement * Cache this hijack Co-authored-by: Metal Gear Sloth --- .../Construction/ConstructionPlacementHijack.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Content.Client/Construction/ConstructionPlacementHijack.cs b/Content.Client/Construction/ConstructionPlacementHijack.cs index ed5003e8e9..678b1c0c22 100644 --- a/Content.Client/Construction/ConstructionPlacementHijack.cs +++ b/Content.Client/Construction/ConstructionPlacementHijack.cs @@ -1,7 +1,9 @@ #nullable enable +using System.Collections.Generic; using Content.Client.GameObjects.Components.Construction; using Content.Client.GameObjects.EntitySystems; using Content.Shared.Construction; +using Robust.Client.Graphics; using Robust.Client.Placement; using Robust.Client.Utility; using Robust.Shared.Interfaces.GameObjects; @@ -49,7 +51,15 @@ namespace Content.Client.Construction { base.StartHijack(manager); - manager.CurrentBaseSprite = _prototype?.Icon.DirFrame0(); + var frame = _prototype?.Icon.DirFrame0(); + if (frame == null) + { + manager.CurrentTextures = null; + } + else + { + manager.CurrentTextures = new List {frame}; + } } } } From 5355161220ea515d4379737ffeb351154ef63cd5 Mon Sep 17 00:00:00 2001 From: Metal Gear Sloth Date: Mon, 11 Jan 2021 22:49:46 +1100 Subject: [PATCH 113/166] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 792179657b..50981ad1a1 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 792179657bd536882f41662ea23a3b5d471e6e70 +Subproject commit 50981ad1a1140cb72acccfc101c1e38935d104d9 From 32c14b0e51c63095c826f44595c9b415109d72c7 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 17:43:44 +0100 Subject: [PATCH 114/166] CE gets wirecutters/crowbar instead of jaws. These actually fit in the damn belt. --- Resources/Prototypes/Catalog/Fills/belt.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/Fills/belt.yml b/Resources/Prototypes/Catalog/Fills/belt.yml index e24225aeea..976b2cdcd5 100644 --- a/Resources/Prototypes/Catalog/Fills/belt.yml +++ b/Resources/Prototypes/Catalog/Fills/belt.yml @@ -21,7 +21,8 @@ - type: StorageFill contents: - name: PowerDrill - - name: JawsOfLife + - name: Wirecutter + - name: Crowbar - name: WelderExperimental - name: Multitool - name: ApcExtensionCableStack From 052ea49884ac5d82a3032200634ddbaab619f01e Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 Jan 2021 19:24:09 +0100 Subject: [PATCH 115/166] Implement magboots. (#2988) Got an alert and action and everything. --- .../HUD/Inventory/ClientInventoryComponent.cs | 49 +++++- .../Components/MagbootsComponent.cs | 22 +++ .../Components/GUI/InventoryComponent.cs | 72 +++++++- .../Components/MagbootsComponent.cs | 157 ++++++++++++++++++ Content.Shared/Actions/ActionType.cs | 1 + Content.Shared/Alert/AlertType.cs | 1 + .../Inventory/SharedInventoryComponent.cs | 6 +- .../MovementSpeedModifierComponent.cs | 13 +- .../Components/SharedMagbootsComponent.cs | 35 ++++ Content.Shared/GameObjects/ContentNetIDs.cs | 1 + Resources/Prototypes/Actions/magboots.yml | 13 ++ Resources/Prototypes/Alerts/alerts.yml | 1 + Resources/Prototypes/Alerts/magboots.yml | 5 + .../Entities/Clothing/Shoes/boots.yml | 12 -- .../Entities/Clothing/Shoes/magboots.yml | 15 ++ 15 files changed, 380 insertions(+), 23 deletions(-) create mode 100644 Content.Client/GameObjects/Components/MagbootsComponent.cs create mode 100644 Content.Server/GameObjects/Components/MagbootsComponent.cs create mode 100644 Content.Shared/GameObjects/Components/SharedMagbootsComponent.cs create mode 100644 Resources/Prototypes/Actions/magboots.yml create mode 100644 Resources/Prototypes/Alerts/magboots.yml create mode 100644 Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml diff --git a/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs b/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs index d6458ee8f5..a7ac7c22ad 100644 --- a/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs +++ b/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs @@ -4,15 +4,13 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Client.GameObjects.Components.Clothing; using Content.Shared.GameObjects.Components.Inventory; -using Content.Shared.GameObjects.Verbs; +using Content.Shared.GameObjects.Components.Movement; using Content.Shared.Preferences.Appearance; -using Robust.Client.Console; using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; -using Robust.Shared.Localization; using Robust.Shared.ViewVariables; using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefines; using static Content.Shared.GameObjects.Components.Inventory.SharedInventoryComponent.ClientInventoryMessage; @@ -81,6 +79,46 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory return item != null && _slots.Values.Any(e => e == item); } + public override float WalkSpeedModifier + { + get + { + var mod = 1f; + foreach (var slot in _slots.Values) + { + if (slot != null) + { + foreach (var modifier in slot.GetAllComponents()) + { + mod *= modifier.WalkSpeedModifier; + } + } + } + + return mod; + } + } + + public override float SprintSpeedModifier + { + get + { + var mod = 1f; + foreach (var slot in _slots.Values) + { + if (slot != null) + { + foreach (var modifier in slot.GetAllComponents()) + { + mod *= modifier.SprintSpeedModifier; + } + } + } + + return mod; + } + } + public override void HandleComponentState(ComponentState? curState, ComponentState? nextState) { base.HandleComponentState(curState, nextState); @@ -120,6 +158,11 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory _slots.Remove(slot); } } + + if (Owner.TryGetComponent(out MovementSpeedModifierComponent? mod)) + { + mod.RefreshMovementSpeedModifiers(); + } } private void _setSlot(Slots slot, IEntity entity) diff --git a/Content.Client/GameObjects/Components/MagbootsComponent.cs b/Content.Client/GameObjects/Components/MagbootsComponent.cs new file mode 100644 index 0000000000..4beda719cc --- /dev/null +++ b/Content.Client/GameObjects/Components/MagbootsComponent.cs @@ -0,0 +1,22 @@ +using Content.Shared.GameObjects.Components; +using Robust.Shared.GameObjects; + +#nullable enable + +namespace Content.Client.GameObjects.Components +{ + [RegisterComponent] + public sealed class MagbootsComponent : SharedMagbootsComponent + { + public override bool On { get; set; } + + public override void HandleComponentState(ComponentState? curState, ComponentState? nextState) + { + if (curState is not MagbootsComponentState compState) + return; + + On = compState.On; + OnChanged(); + } + } +} diff --git a/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs b/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs index f6ea424c1f..3527e9fcfb 100644 --- a/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs @@ -7,6 +7,7 @@ using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.EntitySystems.Click; using Content.Server.Interfaces.GameObjects; using Content.Shared.GameObjects.Components.Inventory; +using Content.Shared.GameObjects.Components.Movement; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; using Content.Shared.GameObjects.EntitySystems.EffectBlocker; @@ -105,6 +106,46 @@ namespace Content.Server.GameObjects.Components.GUI } } + public override float WalkSpeedModifier + { + get + { + var mod = 1f; + foreach (var slot in _slotContainers.Values) + { + if (slot.ContainedEntity != null) + { + foreach (var modifier in slot.ContainedEntity.GetAllComponents()) + { + mod *= modifier.WalkSpeedModifier; + } + } + } + + return mod; + } + } + + public override float SprintSpeedModifier + { + get + { + var mod = 1f; + foreach (var slot in _slotContainers.Values) + { + if (slot.ContainedEntity != null) + { + foreach (var modifier in slot.ContainedEntity.GetAllComponents()) + { + mod *= modifier.SprintSpeedModifier; + } + } + } + + return mod; + } + } + bool IEffectBlocker.CanSlip() { if (Owner.TryGetComponent(out InventoryComponent inventoryComponent) && @@ -165,7 +206,7 @@ namespace Content.Server.GameObjects.Components.GUI return GetSlotItem(slot); } - public IEnumerable LookupItems() where T: Component + public IEnumerable LookupItems() where T : Component { return _slotContainers.Values.SelectMany(x => x.ContainedEntities.Select(e => e.GetComponentOrNull())) .Where(x => x != null); @@ -185,6 +226,7 @@ namespace Content.Server.GameObjects.Components.GUI containedEntity = null; Dirty(); } + return containedEntity?.GetComponent(); } @@ -230,12 +272,16 @@ namespace Content.Server.GameObjects.Components.GUI Dirty(); + UpdateMovementSpeed(); + return true; } - public bool Equip(Slots slot, ItemComponent item, bool mobCheck = true) => Equip(slot, item, mobCheck, out var _); + public bool Equip(Slots slot, ItemComponent item, bool mobCheck = true) => + Equip(slot, item, mobCheck, out var _); - public bool Equip(Slots slot, IEntity entity, bool mobCheck = true) => Equip(slot, entity.GetComponent(), mobCheck); + public bool Equip(Slots slot, IEntity entity, bool mobCheck = true) => + Equip(slot, entity.GetComponent(), mobCheck); /// /// Checks whether an item can be put in the specified slot. @@ -314,9 +360,19 @@ namespace Content.Server.GameObjects.Components.GUI Dirty(); + UpdateMovementSpeed(); + return true; } + private void UpdateMovementSpeed() + { + if (Owner.TryGetComponent(out MovementSpeedModifierComponent mod)) + { + mod.RefreshMovementSpeedModifiers(); + } + } + public void ForceUnequip(Slots slot) { var inventorySlot = _slotContainers[slot]; @@ -452,7 +508,7 @@ namespace Content.Server.GameObjects.Components.GUI var activeHand = hands.GetActiveHand; if (activeHand != null && activeHand.Owner.TryGetComponent(out ItemComponent clothing)) { - hands.Drop(hands.ActiveHand, doDropInteraction:false); + hands.Drop(hands.ActiveHand, doDropInteraction: false); if (!Equip(msg.Inventoryslot, clothing, true, out var reason)) { hands.PutInHand(clothing); @@ -461,6 +517,7 @@ namespace Content.Server.GameObjects.Components.GUI Owner.PopupMessageCursor(reason); } } + break; } case ClientInventoryUpdate.Use: @@ -491,7 +548,9 @@ namespace Content.Server.GameObjects.Components.GUI if (activeHand != null && GetSlotItem(msg.Inventoryslot) == null) { var canEquip = CanEquip(msg.Inventoryslot, activeHand, true, out var reason); - _hoverEntity = new KeyValuePair(msg.Inventoryslot, (activeHand.Owner.Uid, canEquip)); + _hoverEntity = + new KeyValuePair(msg.Inventoryslot, + (activeHand.Owner.Uid, canEquip)); Dirty(); } @@ -519,7 +578,8 @@ namespace Content.Server.GameObjects.Components.GUI } /// - public override void HandleNetworkMessage(ComponentMessage message, INetChannel netChannel, ICommonSession session = null) + public override void HandleNetworkMessage(ComponentMessage message, INetChannel netChannel, + ICommonSession session = null) { base.HandleNetworkMessage(message, netChannel, session); diff --git a/Content.Server/GameObjects/Components/MagbootsComponent.cs b/Content.Server/GameObjects/Components/MagbootsComponent.cs new file mode 100644 index 0000000000..49e6eb25f1 --- /dev/null +++ b/Content.Server/GameObjects/Components/MagbootsComponent.cs @@ -0,0 +1,157 @@ +#nullable enable +using Content.Server.GameObjects.Components.Atmos; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.GameObjects.Components.Mobs; +using Content.Shared.Actions; +using Content.Shared.Alert; +using Content.Shared.GameObjects.Components; +using Content.Shared.GameObjects.Components.Mobs; +using Content.Shared.GameObjects.EntitySystems.ActionBlocker; +using Content.Shared.GameObjects.Verbs; +using Content.Shared.Interfaces.GameObjects.Components; +using JetBrains.Annotations; +using Robust.Server.GameObjects; +using Robust.Shared.Containers; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefines; + +namespace Content.Server.GameObjects.Components +{ + [RegisterComponent] + [ComponentReference(typeof(IActivate))] + public sealed class MagbootsComponent : SharedMagbootsComponent, IUnequipped, IEquipped, IUse, IActivate + { + [ComponentDependency] private ItemComponent? _item = null; + [ComponentDependency] private ItemActionsComponent? _itemActions = null; + [ComponentDependency] private SpriteComponent? _sprite = null; + private bool _on; + + [ViewVariables] + public override bool On + { + get => _on; + set + { + _on = value; + + UpdateContainer(); + _itemActions?.Toggle(ItemActionType.ToggleMagboots, On); + if (_item != null) + _item.EquippedPrefix = On ? "on" : null; + _sprite?.LayerSetState(0, On ? "icon-on" : "icon"); + OnChanged(); + Dirty(); + } + } + + public void Toggle(IEntity user) + { + On = !On; + } + + void IUnequipped.Unequipped(UnequippedEventArgs eventArgs) + { + if (On && eventArgs.Slot == Slots.SHOES) + { + if (eventArgs.User.TryGetComponent(out MovedByPressureComponent? movedByPressure)) + { + movedByPressure.Enabled = true; + } + + if (eventArgs.User.TryGetComponent(out ServerAlertsComponent? alerts)) + { + alerts.ClearAlert(AlertType.Magboots); + } + } + } + + void IEquipped.Equipped(EquippedEventArgs eventArgs) + { + UpdateContainer(); + } + + private void UpdateContainer() + { + if (!Owner.TryGetContainer(out var container)) + return; + + if (container.Owner.TryGetComponent(out InventoryComponent? inventoryComponent) + && inventoryComponent.GetSlotItem(Slots.SHOES)?.Owner == Owner) + { + if (container.Owner.TryGetComponent(out MovedByPressureComponent? movedByPressure)) + { + movedByPressure.Enabled = false; + } + + if (container.Owner.TryGetComponent(out ServerAlertsComponent? alerts)) + { + if (On) + { + alerts.ShowAlert(AlertType.Magboots); + } + else + { + alerts.ClearAlert(AlertType.Magboots); + } + } + } + } + + bool IUse.UseEntity(UseEntityEventArgs eventArgs) + { + Toggle(eventArgs.User); + return true; + } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + Toggle(eventArgs.User); + } + + public override ComponentState GetComponentState() + { + return new MagbootsComponentState(On); + } + + [UsedImplicitly] + public sealed class ToggleMagbootsVerb : Verb + { + protected override void GetData(IEntity user, MagbootsComponent component, VerbData data) + { + if (!ActionBlockerSystem.CanInteract(user)) + { + data.Visibility = VerbVisibility.Invisible; + return; + } + + data.Text = Loc.GetString("Toggle Magboots"); + } + + protected override void Activate(IEntity user, MagbootsComponent component) + { + component.Toggle(user); + } + } + } + + [UsedImplicitly] + public sealed class ToggleMagbootsAction : IToggleItemAction + { + public void ExposeData(ObjectSerializer serializer) { } + + public bool DoToggleAction(ToggleItemActionEventArgs args) + { + if (!args.Item.TryGetComponent(out var magboots)) + return false; + + magboots.Toggle(args.Performer); + return true; + } + } +} diff --git a/Content.Shared/Actions/ActionType.cs b/Content.Shared/Actions/ActionType.cs index 90160db3d4..80690d8117 100644 --- a/Content.Shared/Actions/ActionType.cs +++ b/Content.Shared/Actions/ActionType.cs @@ -24,6 +24,7 @@ Error, ToggleInternals, ToggleLight, + ToggleMagboots, DebugInstant, DebugToggle, DebugTargetPoint, diff --git a/Content.Shared/Alert/AlertType.cs b/Content.Shared/Alert/AlertType.cs index 95da080a50..a4962a1d36 100644 --- a/Content.Shared/Alert/AlertType.cs +++ b/Content.Shared/Alert/AlertType.cs @@ -45,6 +45,7 @@ Parched, Pulled, Pulling, + Magboots, Debug1, Debug2, Debug3, diff --git a/Content.Shared/GameObjects/Components/Inventory/SharedInventoryComponent.cs b/Content.Shared/GameObjects/Components/Inventory/SharedInventoryComponent.cs index 608941b390..90dcf2d808 100644 --- a/Content.Shared/GameObjects/Components/Inventory/SharedInventoryComponent.cs +++ b/Content.Shared/GameObjects/Components/Inventory/SharedInventoryComponent.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Content.Shared.GameObjects.Components.Movement; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Reflection; @@ -11,7 +12,7 @@ using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefine namespace Content.Shared.GameObjects.Components.Inventory { - public abstract class SharedInventoryComponent : Component + public abstract class SharedInventoryComponent : Component, IMoveSpeedModifier { // ReSharper disable UnassignedReadonlyField [Dependency] protected readonly IReflectionManager ReflectionManager; @@ -100,5 +101,8 @@ namespace Content.Shared.GameObjects.Components.Inventory Slot = slot; } } + + public abstract float WalkSpeedModifier { get; } + public abstract float SprintSpeedModifier { get; } } } diff --git a/Content.Shared/GameObjects/Components/Movement/MovementSpeedModifierComponent.cs b/Content.Shared/GameObjects/Components/Movement/MovementSpeedModifierComponent.cs index dd9a1e391a..a978f31769 100644 --- a/Content.Shared/GameObjects/Components/Movement/MovementSpeedModifierComponent.cs +++ b/Content.Shared/GameObjects/Components/Movement/MovementSpeedModifierComponent.cs @@ -1,4 +1,6 @@ -using Robust.Shared.GameObjects; +using Robust.Shared.Containers; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -54,6 +56,15 @@ namespace Content.Shared.GameObjects.Components.Movement _movespeedModifiersNeedRefresh = true; } + public static void RefreshItemModifiers(IEntity item) + { + if (item.TryGetContainer(out var container) && + container.Owner.TryGetComponent(out MovementSpeedModifierComponent mod)) + { + mod.RefreshMovementSpeedModifiers(); + } + } + public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); diff --git a/Content.Shared/GameObjects/Components/SharedMagbootsComponent.cs b/Content.Shared/GameObjects/Components/SharedMagbootsComponent.cs new file mode 100644 index 0000000000..02f19e4350 --- /dev/null +++ b/Content.Shared/GameObjects/Components/SharedMagbootsComponent.cs @@ -0,0 +1,35 @@ +using System; +using Content.Shared.GameObjects.Components.Movement; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components +{ + public abstract class SharedMagbootsComponent : Component, IMoveSpeedModifier + { + public sealed override string Name => "Magboots"; + public sealed override uint? NetID => ContentNetIDs.MAGBOOTS; + + public abstract bool On { get; set; } + + + protected void OnChanged() + { + MovementSpeedModifierComponent.RefreshItemModifiers(Owner); + } + + public float WalkSpeedModifier => On ? 0.85f : 1; + public float SprintSpeedModifier => On ? 0.65f : 1; + + [Serializable, NetSerializable] + public sealed class MagbootsComponentState : ComponentState + { + public bool On { get; } + + public MagbootsComponentState(bool @on) : base(ContentNetIDs.MAGBOOTS) + { + On = on; + } + } + } +} diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index 3c54d324ed..0fe7b87c6c 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -88,6 +88,7 @@ public const uint REAGENT_GRINDER = 1082; public const uint ACTIONS = 1083; public const uint DAMAGEABLE = 1084; + public const uint MAGBOOTS = 1085; // Net IDs for integration tests. public const uint PREDICTION_TEST = 10001; diff --git a/Resources/Prototypes/Actions/magboots.yml b/Resources/Prototypes/Actions/magboots.yml new file mode 100644 index 0000000000..1002510087 --- /dev/null +++ b/Resources/Prototypes/Actions/magboots.yml @@ -0,0 +1,13 @@ +- type: itemAction + actionType: ToggleMagboots + icon: Clothing/Shoes/Boots/magboots.rsi/icon.png + iconOn: Clothing/Shoes/Boots/magboots.rsi/icon-on.png + name: "Toggle Magboots" + description: "Turn your magboots on." + filters: + - tools + keywords: + - atmos + - air + behaviorType: Toggle + behavior: !type:ToggleMagbootsAction { } diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml index a12d8ccca7..d8f71e1d8e 100644 --- a/Resources/Prototypes/Alerts/alerts.yml +++ b/Resources/Prototypes/Alerts/alerts.yml @@ -15,6 +15,7 @@ - category: Temperature - category: Hunger - category: Thirst + - alertType: Magboots - type: alert alertType: LowOxygen diff --git a/Resources/Prototypes/Alerts/magboots.yml b/Resources/Prototypes/Alerts/magboots.yml new file mode 100644 index 0000000000..a39374c762 --- /dev/null +++ b/Resources/Prototypes/Alerts/magboots.yml @@ -0,0 +1,5 @@ +- type: alert + alertType: Magboots + icon: { sprite: "/Textures/Clothing/Shoes/Boots/magboots.rsi", state: "icon-on" } + name: "Magboots" + description: You are immume to airflow, but slightly slower. diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml index b007d8e761..7600d0814d 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml @@ -1,15 +1,3 @@ -- type: entity - parent: ClothingShoesBase - id: ClothingShoesBootsMag - name: magboots - description: Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. - components: - - type: Sprite - sprite: Clothing/Shoes/Boots/magboots.rsi - state: icon - - type: Clothing - sprite: Clothing/Shoes/Boots/magboots.rsi - - type: entity parent: ClothingShoesBase id: ClothingShoesBootsWork diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml new file mode 100644 index 0000000000..11a647d703 --- /dev/null +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -0,0 +1,15 @@ +- type: entity + parent: ClothingShoesBase + id: ClothingShoesBootsMag + name: magboots + description: Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. + components: + - type: Sprite + sprite: Clothing/Shoes/Boots/magboots.rsi + state: icon + - type: Clothing + sprite: Clothing/Shoes/Boots/magboots.rsi + - type: Magboots + - type: ItemActions + actions: + - actionType: ToggleMagboots From 9165dfa670ba913587c2916ec02a2047f73fbdd3 Mon Sep 17 00:00:00 2001 From: bgare89 Date: Tue, 12 Jan 2021 06:29:20 -0600 Subject: [PATCH 116/166] Job Preference Selection Now Painless (#2919) * # UI Win. This is my PR that requires an engine change. * Added RadioOptionButton * Made JobPrioritySelector easier to use. Requires space-wizards/RobustToolbox#1484 * Better nam. * Updated to use the new version that isn't a mess. Co-authored-by: Metal Gear Sloth --- .../UserInterface/HumanoidProfileEditor.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Content.Client/UserInterface/HumanoidProfileEditor.cs b/Content.Client/UserInterface/HumanoidProfileEditor.cs index 7558832b0d..58fa5f0431 100644 --- a/Content.Client/UserInterface/HumanoidProfileEditor.cs +++ b/Content.Client/UserInterface/HumanoidProfileEditor.cs @@ -21,6 +21,7 @@ using Robust.Shared.Localization.Macros; using System; using System.Collections.Generic; using System.Linq; +using Content.Client.UserInterface.Stylesheets; namespace Content.Client.UserInterface { @@ -820,12 +821,12 @@ namespace Content.Client.UserInterface private class JobPrioritySelector : Control { public JobPrototype Job { get; } - private readonly OptionButton _optionButton; + private readonly RadioOptions _optionButton; public JobPriority Priority { - get => (JobPriority) _optionButton.SelectedId; - set => _optionButton.SelectId((int) value); + get => (JobPriority) _optionButton.SelectedValue; + set => _optionButton.SelectByValue((int) value); } public event Action PriorityChanged; @@ -833,7 +834,14 @@ namespace Content.Client.UserInterface public JobPrioritySelector(JobPrototype job) { Job = job; - _optionButton = new OptionButton(); + _optionButton = new RadioOptions(RadioOptionsLayout.Horizontal); + + _optionButton.FirstButtonStyle = StyleBase.ButtonOpenRight; + _optionButton.ButtonStyle = StyleBase.ButtonOpenBoth; + _optionButton.LastButtonStyle = StyleBase.ButtonOpenLeft; + + + // Text, Value _optionButton.AddItem(Loc.GetString("High"), (int) JobPriority.High); _optionButton.AddItem(Loc.GetString("Medium"), (int) JobPriority.Medium); _optionButton.AddItem(Loc.GetString("Low"), (int) JobPriority.Low); @@ -841,7 +849,7 @@ namespace Content.Client.UserInterface _optionButton.OnItemSelected += args => { - _optionButton.SelectId(args.Id); + _optionButton.Select(args.Id); PriorityChanged?.Invoke(Priority); }; From ec492a0d6af487b66b4da4a278270c89581a596e Mon Sep 17 00:00:00 2001 From: Metal Gear Sloth Date: Tue, 12 Jan 2021 23:49:32 +1100 Subject: [PATCH 117/166] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 50981ad1a1..39541639c5 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 50981ad1a1140cb72acccfc101c1e38935d104d9 +Subproject commit 39541639c5ce3680dded7b94b86098d1ca824285 From af1838c641bc1d20bc60f4de5381c3aad563f533 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 12 Jan 2021 21:24:11 +0100 Subject: [PATCH 118/166] Fix hunger not updating thresholds correctly from rejuvenate. --- .../Components/Nutrition/HungerComponent.cs | 26 ++++++++++-------- .../Components/Nutrition/ThirstComponent.cs | 27 ++++++++++--------- .../Nutrition/SharedHungerComponent.cs | 3 +++ .../Nutrition/SharedThirstComponent.cs | 3 +++ 4 files changed, 36 insertions(+), 23 deletions(-) diff --git a/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs b/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs index 8a434ca6f8..2c24a5dbb7 100644 --- a/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs @@ -178,14 +178,7 @@ namespace Content.Server.GameObjects.Components.Nutrition public void OnUpdate(float frametime) { _currentHunger -= frametime * ActualDecayRate; - var calculatedHungerThreshold = GetHungerThreshold(_currentHunger); - // _trySound(calculatedThreshold); - if (calculatedHungerThreshold != _currentHungerThreshold) - { - _currentHungerThreshold = calculatedHungerThreshold; - HungerThresholdEffect(); - Dirty(); - } + UpdateCurrentThreshold(); if (_currentHungerThreshold != HungerThreshold.Dead) return; @@ -202,11 +195,22 @@ namespace Content.Server.GameObjects.Components.Nutrition } } + private void UpdateCurrentThreshold() + { + var calculatedHungerThreshold = GetHungerThreshold(_currentHunger); + // _trySound(calculatedThreshold); + if (calculatedHungerThreshold != _currentHungerThreshold) + { + _currentHungerThreshold = calculatedHungerThreshold; + HungerThresholdEffect(); + Dirty(); + } + } + public void ResetFood() { - _currentHungerThreshold = HungerThreshold.Okay; - _currentHunger = HungerThresholds[_currentHungerThreshold]; - HungerThresholdEffect(); + _currentHunger = HungerThresholds[HungerThreshold.Okay]; + UpdateCurrentThreshold(); } public override ComponentState GetComponentState() diff --git a/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs b/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs index b6a7b031ce..2c4fc1e90a 100644 --- a/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs @@ -4,7 +4,6 @@ using Content.Server.GameObjects.Components.Mobs; using Content.Shared.Alert; using Content.Shared.Damage; using Content.Shared.GameObjects.Components.Damage; -using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.GameObjects.Components.Mobs.State; using Content.Shared.GameObjects.Components.Movement; using Content.Shared.GameObjects.Components.Nutrition; @@ -175,14 +174,7 @@ namespace Content.Server.GameObjects.Components.Nutrition public void OnUpdate(float frametime) { _currentThirst -= frametime * ActualDecayRate; - var calculatedThirstThreshold = GetThirstThreshold(_currentThirst); - // _trySound(calculatedThreshold); - if (calculatedThirstThreshold != _currentThirstThreshold) - { - _currentThirstThreshold = calculatedThirstThreshold; - ThirstThresholdEffect(); - Dirty(); - } + UpdateCurrentThreshold(); if (_currentThirstThreshold != ThirstThreshold.Dead) return; @@ -199,11 +191,22 @@ namespace Content.Server.GameObjects.Components.Nutrition } } + private void UpdateCurrentThreshold() + { + var calculatedThirstThreshold = GetThirstThreshold(_currentThirst); + // _trySound(calculatedThreshold); + if (calculatedThirstThreshold != _currentThirstThreshold) + { + _currentThirstThreshold = calculatedThirstThreshold; + ThirstThresholdEffect(); + Dirty(); + } + } + public void ResetThirst() { - _currentThirstThreshold = ThirstThreshold.Okay; - _currentThirst = ThirstThresholds[_currentThirstThreshold]; - ThirstThresholdEffect(); + _currentThirst = ThirstThresholds[ThirstThreshold.Okay]; + UpdateCurrentThreshold(); } public override ComponentState GetComponentState() diff --git a/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs b/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs index c5e7dc21d5..451e49b2b5 100644 --- a/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs +++ b/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs @@ -2,6 +2,7 @@ using System; using Content.Shared.GameObjects.Components.Movement; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Nutrition { @@ -11,6 +12,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition public sealed override uint? NetID => ContentNetIDs.HUNGER; + [ViewVariables] public abstract HungerThreshold CurrentHungerThreshold { get; } @@ -49,6 +51,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition } } + [Serializable, NetSerializable] public enum HungerThreshold : byte { Overfed, diff --git a/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs b/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs index 3372566550..404586d76e 100644 --- a/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs +++ b/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs @@ -2,6 +2,7 @@ using System; using Content.Shared.GameObjects.Components.Movement; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Nutrition { @@ -11,6 +12,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition public sealed override uint? NetID => ContentNetIDs.THIRST; + [ViewVariables] public abstract ThirstThreshold CurrentThirstThreshold { get; } float IMoveSpeedModifier.SprintSpeedModifier @@ -49,6 +51,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition } + [NetSerializable, Serializable] public enum ThirstThreshold : byte { // Hydrohomies From 66c359770bb6f0a7135c7a5cd36d71899d4b1909 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Wed, 13 Jan 2021 03:32:39 +0100 Subject: [PATCH 119/166] Fix placement of some right click menus with UI scaling. --- Content.Client/UserInterface/ItemSlotManager.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Client/UserInterface/ItemSlotManager.cs b/Content.Client/UserInterface/ItemSlotManager.cs index 19ccaa4977..cbb7b57375 100644 --- a/Content.Client/UserInterface/ItemSlotManager.cs +++ b/Content.Client/UserInterface/ItemSlotManager.cs @@ -7,6 +7,7 @@ using Robust.Client.GameObjects.EntitySystems; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Client.Interfaces.Graphics.ClientEye; using Robust.Client.Interfaces.Input; +using Robust.Client.Interfaces.UserInterface; using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Shared.Input; @@ -25,6 +26,7 @@ namespace Content.Client.UserInterface [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IInputManager _inputManager = default!; [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; + [Dependency] private readonly IUserInterfaceManager _uiMgr = default!; [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IMapManager _mapManager = default!; @@ -61,7 +63,7 @@ namespace Content.Client.UserInterface else if (args.Function == ContentKeyFunctions.OpenContextMenu) { _entitySystemManager.GetEntitySystem() - .OpenContextMenu(item, new ScreenCoordinates(args.PointerLocation.Position)); + .OpenContextMenu(item, new ScreenCoordinates(_uiMgr.ScreenToUIPosition(args.PointerLocation))); } else if (args.Function == ContentKeyFunctions.ActivateItemInWorld) { From 0397a2e40ba0aafee01c448248806df3e327a61d Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Wed, 13 Jan 2021 03:39:07 +0100 Subject: [PATCH 120/166] Enable bilinear filtering on some UI icons. --- Resources/Textures/Interface/character.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/fist.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/gavel.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/hamburger.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/hammer.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/handsbox.png.yml | 2 ++ Resources/Textures/Interface/inventory.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/sandbox.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/students-cap.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml | 2 ++ .../Textures/Interface/target-doll-middle.svg.96dpi.png.yml | 2 ++ Resources/Textures/Interface/tutorial.svg.96dpi.png.yml | 2 ++ 13 files changed, 26 insertions(+) create mode 100644 Resources/Textures/Interface/character.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/fist.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/gavel.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/hamburger.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/hammer.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/handsbox.png.yml create mode 100644 Resources/Textures/Interface/inventory.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/sandbox.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/students-cap.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml create mode 100644 Resources/Textures/Interface/tutorial.svg.96dpi.png.yml diff --git a/Resources/Textures/Interface/character.svg.96dpi.png.yml b/Resources/Textures/Interface/character.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/character.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/fist.svg.96dpi.png.yml b/Resources/Textures/Interface/fist.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/fist.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/gavel.svg.96dpi.png.yml b/Resources/Textures/Interface/gavel.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/gavel.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/hamburger.svg.96dpi.png.yml b/Resources/Textures/Interface/hamburger.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/hamburger.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/hammer.svg.96dpi.png.yml b/Resources/Textures/Interface/hammer.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/hammer.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/handsbox.png.yml b/Resources/Textures/Interface/handsbox.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/handsbox.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/inventory.svg.96dpi.png.yml b/Resources/Textures/Interface/inventory.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/inventory.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/sandbox.svg.96dpi.png.yml b/Resources/Textures/Interface/sandbox.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/sandbox.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/students-cap.svg.96dpi.png.yml b/Resources/Textures/Interface/students-cap.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/students-cap.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml b/Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml b/Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml b/Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/tutorial.svg.96dpi.png.yml b/Resources/Textures/Interface/tutorial.svg.96dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/tutorial.svg.96dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true From a57db852089ef30e991b5e62815b94cb27047de1 Mon Sep 17 00:00:00 2001 From: Swept Date: Wed, 13 Jan 2021 12:04:38 +0000 Subject: [PATCH 121/166] Swept commits JSON genocide. (#2991) * Clothing Folder Complete * All Textures 1st Pass * All Textures 2nd Pass * All Textures 3rd Pass PLUS Manual Tweaking * 5th Pass MORE MANUAL * Fixes flares * 4th Pass (I skipped over) * The 6th Pass (Finality) - With Manual Fixes --- .../Back/Backpacks/backpack.rsi/meta.json | 3 +- .../Back/Backpacks/botany.rsi/meta.json | 3 +- .../Back/Backpacks/captain.rsi/meta.json | 3 +- .../Back/Backpacks/chemistry.rsi/meta.json | 3 +- .../Back/Backpacks/clown.rsi/meta.json | 3 +- .../Back/Backpacks/engineering.rsi/meta.json | 3 +- .../Back/Backpacks/holding.rsi/meta.json | 5 +- .../Back/Backpacks/medical.rsi/meta.json | 3 +- .../Back/Backpacks/mime.rsi/meta.json | 3 +- .../Back/Backpacks/science.rsi/meta.json | 3 +- .../Back/Backpacks/security.rsi/meta.json | 3 +- .../Back/Duffels/captain.rsi/meta.json | 3 +- .../Clothing/Back/Duffels/clown.rsi/meta.json | 3 +- .../Back/Duffels/duffel.rsi/meta.json | 3 +- .../Back/Duffels/engineering.rsi/meta.json | 3 +- .../Back/Duffels/holding.rsi/meta.json | 3 - .../Back/Duffels/medical.rsi/meta.json | 3 +- .../Back/Duffels/security.rsi/meta.json | 3 +- .../Back/Duffels/syndicate.rsi/meta.json | 9 +- .../Back/Satchels/captain.rsi/meta.json | 3 +- .../Back/Satchels/chemistry.rsi/meta.json | 3 +- .../Back/Satchels/engineering.rsi/meta.json | 3 +- .../Back/Satchels/holding.rsi/meta.json | 3 - .../Back/Satchels/hydroponics.rsi/meta.json | 3 +- .../Back/Satchels/medical.rsi/meta.json | 3 +- .../Back/Satchels/satchel.rsi/meta.json | 3 +- .../Back/Satchels/science.rsi/meta.json | 3 +- .../Back/Satchels/security.rsi/meta.json | 3 +- .../Clothing/Belt/assault.rsi/meta.json | 3 +- .../Clothing/Belt/bandolier.rsi/meta.json | 3 +- .../Belt/belt_icon_overlay.rsi/meta.json | 25 - .../Textures/Clothing/Belt/ce.rsi/meta.json | 3 +- .../Clothing/Belt/champion.rsi/meta.json | 3 +- .../Clothing/Belt/holster.rsi/meta.json | 3 +- .../Clothing/Belt/janitor.rsi/meta.json | 3 +- .../Clothing/Belt/medical.rsi/meta.json | 3 +- .../Belt/militarywebbing.rsi/meta.json | 3 +- .../Clothing/Belt/security.rsi/meta.json | 3 +- .../Belt/securitywebbing.rsi/meta.json | 3 +- .../Clothing/Belt/sheath.rsi/meta.json | 48 +- .../Clothing/Belt/suspenders.rsi/meta.json | 3 +- .../Clothing/Belt/utility.rsi/meta.json | 3 +- .../Clothing/Ears/Headsets/base.rsi/meta.json | 3 +- .../Ears/Headsets/cargo.rsi/meta.json | 3 +- .../Ears/Headsets/centcom.rsi/meta.json | 6 +- .../Ears/Headsets/command.rsi/meta.json | 6 +- .../Ears/Headsets/engineering.rsi/meta.json | 3 +- .../Ears/Headsets/medical.rsi/meta.json | 6 +- .../Headsets/medicalscience.rsi/meta.json | 3 +- .../Ears/Headsets/mining.rsi/meta.json | 3 +- .../Ears/Headsets/robotics.rsi/meta.json | 3 +- .../Ears/Headsets/science.rsi/meta.json | 3 +- .../Ears/Headsets/security.rsi/meta.json | 6 +- .../Ears/Headsets/service.rsi/meta.json | 3 +- .../Headsets/servicesecurity.rsi/meta.json | 3 +- .../Ears/Headsets/syndicate.rsi/meta.json | 3 +- .../Eyes/Glasses/beergoggles.rsi/meta.json | 3 +- .../Clothing/Eyes/Glasses/gar.rsi/meta.json | 9 +- .../Eyes/Glasses/glasses.rsi/meta.json | 3 +- .../Clothing/Eyes/Glasses/meson.rsi/meta.json | 3 +- .../Eyes/Glasses/secglasses.rsi/meta.json | 3 +- .../Eyes/Glasses/sunglasses.rsi/meta.json | 3 +- .../Eyes/Glasses/thermal.rsi/meta.json | 3 +- .../Clothing/Eyes/Hud/diag.rsi/meta.json | 3 +- .../Clothing/Eyes/Hud/med.rsi/meta.json | 3 +- .../Clothing/Eyes/Hud/sec.rsi/meta.json | 3 +- .../Clothing/Eyes/Misc/eyepatch.rsi/meta.json | 3 +- .../Hands/Gloves/Color/black.rsi/meta.json | 3 +- .../Hands/Gloves/Color/blue.rsi/meta.json | 3 +- .../Hands/Gloves/Color/brown.rsi/meta.json | 3 +- .../Hands/Gloves/Color/gray.rsi/meta.json | 3 +- .../Hands/Gloves/Color/green.rsi/meta.json | 3 +- .../Gloves/Color/lightbrown.rsi/meta.json | 3 +- .../Hands/Gloves/Color/orange.rsi/meta.json | 3 +- .../Hands/Gloves/Color/purple.rsi/meta.json | 3 +- .../Hands/Gloves/Color/red.rsi/meta.json | 3 +- .../Hands/Gloves/Color/white.rsi/meta.json | 3 +- .../Hands/Gloves/Color/yellow.rsi/meta.json | 3 +- .../Hands/Gloves/boxing.rsi/meta.json | 12 +- .../Hands/Gloves/captain.rsi/meta.json | 3 +- .../Hands/Gloves/ihscombat.rsi/meta.json | 3 +- .../Clothing/Hands/Gloves/latex.rsi/meta.json | 3 +- .../Hands/Gloves/leather.rsi/meta.json | 3 +- .../Hands/Gloves/powerglove.rsi/meta.json | 6 +- .../Hands/Gloves/robohands.rsi/meta.json | 3 +- .../Hands/Gloves/spaceninja.rsi/meta.json | 9 +- .../Clothing/Head/Animals/cat.rsi/meta.json | 3 +- .../Clothing/Head/Animals/cat2.rsi/meta.json | 3 +- .../Clothing/Head/Animals/cat3.rsi/meta.json | 3 +- .../Head/Animals/headslime.rsi/meta.json | 3 +- .../Head/Animals/monkey.rsi/meta.json | 3 +- .../Head/Animals/mouse_brown.rsi/meta.json | 3 +- .../Head/Animals/mouse_gray.rsi/meta.json | 3 +- .../Head/Animals/mouse_white.rsi/meta.json | 3 +- .../Head/Bandanas/black.rsi/meta.json | 6 +- .../Clothing/Head/Bandanas/blue.rsi/meta.json | 6 +- .../Head/Bandanas/botany.rsi/meta.json | 6 +- .../Clothing/Head/Bandanas/gold.rsi/meta.json | 6 +- .../Head/Bandanas/green.rsi/meta.json | 6 +- .../Clothing/Head/Bandanas/grey.rsi/meta.json | 6 +- .../Clothing/Head/Bandanas/red.rsi/meta.json | 6 +- .../Head/Bandanas/skull.rsi/meta.json | 6 +- .../Clothing/Head/Hardhats/blue.rsi/meta.json | 6 +- .../Head/Hardhats/orange.rsi/meta.json | 6 +- .../Clothing/Head/Hardhats/red.rsi/meta.json | 6 +- .../Head/Hardhats/white.rsi/meta.json | 6 +- .../Head/Hardhats/yellow.rsi/meta.json | 6 +- .../Head/Hardsuits/atmospherics.rsi/meta.json | 6 +- .../Head/Hardsuits/capspace.rsi/meta.json | 3 +- .../Head/Hardsuits/deathsquad.rsi/meta.json | 3 +- .../Hardsuits/engineering-white.rsi/meta.json | 6 +- .../Head/Hardsuits/engineering.rsi/meta.json | 6 +- .../Head/Hardsuits/ihsvoid.rsi/meta.json | 6 +- .../Head/Hardsuits/medical.rsi/meta.json | 6 +- .../Clothing/Head/Hardsuits/rd.rsi/meta.json | 6 +- .../Head/Hardsuits/salvage.rsi/meta.json | 6 +- .../Head/Hardsuits/security-red.rsi/meta.json | 6 +- .../Head/Hardsuits/security.rsi/meta.json | 6 +- .../Head/Hardsuits/syndicate.rsi/meta.json | 6 +- .../Head/Hardsuits/wizard.rsi/meta.json | 6 +- .../Head/Hats/beaver_hat.rsi/meta.json | 3 +- .../Clothing/Head/Hats/beret.rsi/meta.json | 3 +- .../Head/Hats/beret_engineering.rsi/meta.json | 3 +- .../Head/Hats/beret_hos.rsi/meta.json | 3 +- .../Head/Hats/beret_warden.rsi/meta.json | 3 +- .../Head/Hats/bowler_hat.rsi/meta.json | 3 +- .../Head/Hats/brownfedora.rsi/meta.json | 3 +- .../Clothing/Head/Hats/captain.rsi/meta.json | 3 +- .../Head/Hats/cardborg_h.rsi/meta.json | 3 +- .../Clothing/Head/Hats/centcom.rsi/meta.json | 3 +- .../Clothing/Head/Hats/chefhat.rsi/meta.json | 3 +- .../Clothing/Head/Hats/fez.rsi/meta.json | 3 +- .../Head/Hats/greyfedora.rsi/meta.json | 3 +- .../Clothing/Head/Hats/hopcap.rsi/meta.json | 3 +- .../Clothing/Head/Hats/hoshat.rsi/meta.json | 3 +- .../Clothing/Head/Hats/paper.rsi/meta.json | 3 +- .../Clothing/Head/Hats/pirate.rsi/meta.json | 3 +- .../Head/Hats/plaguedoctor.rsi/meta.json | 3 +- .../Head/Hats/redwizard.rsi/meta.json | 3 +- .../Clothing/Head/Hats/santahat.rsi/meta.json | 3 +- .../Clothing/Head/Hats/sombrero.rsi/meta.json | 3 +- .../Head/Hats/surgcap_blue.rsi/meta.json | 3 +- .../Head/Hats/surgcap_green.rsi/meta.json | 3 +- .../Head/Hats/surgcap_purple.rsi/meta.json | 3 +- .../Clothing/Head/Hats/tophat.rsi/meta.json | 3 +- .../Clothing/Head/Hats/ushanka.rsi/meta.json | 6 +- .../Head/Hats/violetwizard.rsi/meta.json | 3 +- .../Clothing/Head/Hats/warden.rsi/meta.json | 3 +- .../Clothing/Head/Hats/witch.rsi/meta.json | 3 +- .../Clothing/Head/Hats/witchhat.rsi/meta.json | 3 +- .../Head/Hats/wizard_fake.rsi/meta.json | 3 +- .../Head/Hats/wizardhat.rsi/meta.json | 3 +- .../Head/Hats/xmascrown.rsi/meta.json | 3 +- .../Head/Helmets/bombsuit.rsi/meta.json | 3 +- .../Head/Helmets/cosmonaut.rsi/meta.json | 3 +- .../Clothing/Head/Helmets/cult.rsi/meta.json | 3 +- .../Head/Helmets/ihvoid.rsi/meta.json | 3 +- .../Head/Helmets/light_riot.rsi/meta.json | 6 +- .../Clothing/Head/Helmets/scaf.rsi/meta.json | 3 +- .../Head/Helmets/security.rsi/meta.json | 3 +- .../Head/Helmets/securityold.rsi/meta.json | 3 +- .../Head/Helmets/spaceninja.rsi/meta.json | 3 +- .../Head/Helmets/syndicate.rsi/meta.json | 9 +- .../Head/Helmets/templar.rsi/meta.json | 3 +- .../Head/Helmets/thunderdome.rsi/meta.json | 3 +- .../Head/Helmets/wizardhelm.rsi/meta.json | 3 +- .../Clothing/Head/Hoods/Bio/bio.rsi/meta.json | 3 +- .../Clothing/Head/Hoods/Bio/cmo.rsi/meta.json | 3 +- .../Head/Hoods/Bio/general.rsi/meta.json | 3 +- .../Head/Hoods/Bio/janitor.rsi/meta.json | 3 +- .../Head/Hoods/Bio/scientist.rsi/meta.json | 3 +- .../Head/Hoods/Bio/security.rsi/meta.json | 3 +- .../Head/Hoods/Bio/virology.rsi/meta.json | 3 +- .../Head/Hoods/chaplain.rsi/meta.json | 3 +- .../Clothing/Head/Hoods/cult.rsi/meta.json | 3 +- .../Clothing/Head/Hoods/nun.rsi/meta.json | 3 +- .../Clothing/Head/Hoods/rad.rsi/meta.json | 3 +- .../Clothing/Head/Misc/bearpelt.rsi/meta.json | 3 +- .../Clothing/Head/Misc/bunny.rsi/meta.json | 3 +- .../Clothing/Head/Misc/cake.rsi/meta.json | 6 +- .../Head/Misc/chickenhead.rsi/meta.json | 3 +- .../Head/Misc/hairflower.rsi/meta.json | 3 +- .../Clothing/Head/Misc/pumpkin.rsi/meta.json | 6 +- .../Clothing/Head/Misc/pwig.rsi/meta.json | 3 +- .../Clothing/Head/Misc/richard.rsi/meta.json | 3 +- .../Clothing/Head/Misc/skubhead.rsi/meta.json | 3 +- .../Clothing/Head/Misc/xenom.rsi/meta.json | 3 +- .../Clothing/Head/Misc/xenos.rsi/meta.json | 3 +- .../Clothing/Head/Soft/bluesoft.rsi/meta.json | 3 +- .../Head/Soft/bluesoft_flipped.rsi/meta.json | 3 +- .../Head/Soft/cargosoft.rsi/meta.json | 3 +- .../Head/Soft/cargosoft_flipped.rsi/meta.json | 3 +- .../Clothing/Head/Soft/corpsoft.rsi/meta.json | 3 +- .../Head/Soft/corpsoft_flipped.rsi/meta.json | 3 +- .../Head/Soft/greensoft.rsi/meta.json | 3 +- .../Head/Soft/greensoft_flipped.rsi/meta.json | 3 +- .../Clothing/Head/Soft/greysoft.rsi/meta.json | 3 +- .../Head/Soft/greysoft_flipped.rsi/meta.json | 3 +- .../Clothing/Head/Soft/mimesoft.rsi/meta.json | 3 +- .../Head/Soft/mimesoft_flipped.rsi/meta.json | 3 +- .../Head/Soft/orangesoft.rsi/meta.json | 3 +- .../Soft/orangesoft_flipped.rsi/meta.json | 3 +- .../Head/Soft/purplesoft.rsi/meta.json | 3 +- .../Soft/purplesoft_flipped.rsi/meta.json | 3 +- .../Clothing/Head/Soft/redsoft.rsi/meta.json | 3 +- .../Head/Soft/redsoft_flipped.rsi/meta.json | 3 +- .../Clothing/Head/Soft/secsoft.rsi/meta.json | 3 +- .../Head/Soft/secsoft_flipped.rsi/meta.json | 3 +- .../Head/Soft/yellowsoft.rsi/meta.json | 3 +- .../Soft/yellowsoft_flipped.rsi/meta.json | 3 +- .../blue_flame_welding_mask.rsi/meta.json | 6 +- .../Welding/flame_welding_mask.rsi/meta.json | 6 +- .../Head/Welding/paintedwelding.rsi/meta.json | 6 +- .../Head/Welding/welding.rsi/meta.json | 6 +- .../Clothing/Mask/breath.rsi/meta.json | 3 +- .../Clothing/Mask/clown.rsi/meta.json | 3 +- .../Textures/Clothing/Mask/gas.rsi/meta.json | 3 +- .../Textures/Clothing/Mask/joy.rsi/meta.json | 3 +- .../Textures/Clothing/Mask/mime.rsi/meta.json | 3 +- .../Clothing/Mask/sterile.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/cap.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/ce.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/cmo.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/herald.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/hop.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/hos.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/qm.rsi/meta.json | 3 +- .../Clothing/Neck/Cloaks/rd.rsi/meta.json | 3 +- .../Clothing/Neck/Misc/bling.rsi/meta.json | 3 +- .../Neck/Misc/headphones.rsi/meta.json | 6 +- .../Neck/Misc/stethoscope.rsi/meta.json | 3 +- .../Clothing/Neck/Scarfs/blue.rsi/meta.json | 3 +- .../Clothing/Neck/Scarfs/green.rsi/meta.json | 3 +- .../Clothing/Neck/Scarfs/red.rsi/meta.json | 3 +- .../Clothing/Neck/Scarfs/zebra.rsi/meta.json | 3 +- .../Clothing/Neck/Ties/dettie.rsi/meta.json | 3 +- .../Clothing/Neck/Ties/redtie.rsi/meta.json | 3 +- .../Armor/armor_reflec.rsi/meta.json | 3 +- .../Armor/bulletproof.rsi/meta.json | 3 +- .../Armor/cult_armour.rsi/meta.json | 3 +- .../OuterClothing/Armor/heavy.rsi/meta.json | 3 +- .../Armor/heavygreen.rsi/meta.json | 3 +- .../Armor/heavyred.rsi/meta.json | 3 +- .../Armor/magusblue.rsi/meta.json | 3 +- .../Armor/magusred.rsi/meta.json | 3 +- .../OuterClothing/Armor/riot.rsi/meta.json | 3 +- .../OuterClothing/Armor/scaf.rsi/meta.json | 3 +- .../OuterClothing/Bio/cmo.rsi/meta.json | 3 +- .../OuterClothing/Bio/general.rsi/meta.json | 3 +- .../OuterClothing/Bio/janitor.rsi/meta.json | 3 +- .../OuterClothing/Bio/scientist.rsi/meta.json | 3 +- .../OuterClothing/Bio/security.rsi/meta.json | 3 +- .../OuterClothing/Bio/virology.rsi/meta.json | 3 +- .../OuterClothing/Coats/bomber.rsi/meta.json | 6 +- .../Coats/detective.rsi/meta.json | 3 +- .../Coats/gentlecoat.rsi/meta.json | 3 +- .../Coats/hos_trenchcoat.rsi/meta.json | 3 +- .../Coats/insp_coat.rsi/meta.json | 3 +- .../Coats/jensencoat.rsi/meta.json | 3 +- .../OuterClothing/Coats/labcoat.rsi/meta.json | 6 +- .../Coats/labcoat_chem.rsi/meta.json | 6 +- .../Coats/labcoat_cmo.rsi/meta.json | 6 +- .../OuterClothing/Coats/pirate.rsi/meta.json | 3 +- .../OuterClothing/Coats/warden.rsi/meta.json | 3 +- .../Hardsuits/atmospherics.rsi/meta.json | 3 +- .../Hardsuits/capspace.rsi/meta.json | 3 +- .../Hardsuits/deathsquad.rsi/meta.json | 3 +- .../Hardsuits/engineering-white.rsi/meta.json | 3 +- .../Hardsuits/engineering.rsi/meta.json | 3 +- .../Hardsuits/ihsvoid.rsi/meta.json | 3 +- .../Hardsuits/medical.rsi/meta.json | 3 +- .../OuterClothing/Hardsuits/rd.rsi/meta.json | 3 +- .../Hardsuits/salvage.rsi/meta.json | 3 +- .../Hardsuits/security-red.rsi/meta.json | 3 +- .../Hardsuits/security.rsi/meta.json | 3 +- .../Hardsuits/syndicate.rsi/meta.json | 3 +- .../Hardsuits/wizard.rsi/meta.json | 3 +- .../OuterClothing/Misc/apron.rsi/meta.json | 3 +- .../Misc/apronbotanist.rsi/meta.json | 3 +- .../Misc/apronchef.rsi/meta.json | 3 +- .../Misc/black_hoodie.rsi/meta.json | 6 +- .../OuterClothing/Misc/cardborg.rsi/meta.json | 3 +- .../Misc/chaplain_hoodie.rsi/meta.json | 3 +- .../OuterClothing/Misc/chef.rsi/meta.json | 3 +- .../Misc/classicponcho.rsi/meta.json | 3 +- .../Misc/cultrobes.rsi/meta.json | 3 +- .../Misc/grey_hoodie.rsi/meta.json | 6 +- .../OuterClothing/Misc/judge.rsi/meta.json | 3 +- .../OuterClothing/Misc/poncho.rsi/meta.json | 3 +- .../Misc/redwizard.rsi/meta.json | 3 +- .../OuterClothing/Misc/santa.rsi/meta.json | 3 +- .../OuterClothing/Misc/skubbody.rsi/meta.json | 3 +- .../Misc/straight_jacket.rsi/meta.json | 3 +- .../Misc/violetwizard.rsi/meta.json | 3 +- .../OuterClothing/Misc/wizard.rsi/meta.json | 3 +- .../OuterClothing/Misc/xenos.rsi/meta.json | 3 +- .../Suits/bombsuit.rsi/meta.json | 3 +- .../OuterClothing/Suits/chicken.rsi/meta.json | 3 +- .../Suits/emergency.rsi/meta.json | 3 +- .../OuterClothing/Suits/fire.rsi/meta.json | 3 +- .../OuterClothing/Suits/monkey.rsi/meta.json | 3 +- .../OuterClothing/Suits/rad.rsi/meta.json | 3 +- .../Suits/spaceninja.rsi/meta.json | 3 +- .../Suits/syndicate.rsi/meta.json | 3 +- .../OuterClothing/Vests/detvest.rsi/meta.json | 3 +- .../OuterClothing/Vests/hazard.rsi/meta.json | 3 +- .../OuterClothing/Vests/kevlar.rsi/meta.json | 3 +- .../Vests/mercwebvest.rsi/meta.json | 3 +- .../Vests/oldarmor.rsi/meta.json | 3 +- .../OuterClothing/Vests/vest.rsi/meta.json | 3 +- .../OuterClothing/Vests/webvest.rsi/meta.json | 3 +- .../Shoes/Boots/jackboots.rsi/meta.json | 3 +- .../Shoes/Boots/magboots.rsi/meta.json | 6 +- .../Shoes/Boots/workboots.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/black.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/blue.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/brown.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/green.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/orange.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/purple.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/red.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/white.rsi/meta.json | 3 +- .../Clothing/Shoes/Color/yellow.rsi/meta.json | 3 +- .../Shoes/Misc/flippers.rsi/meta.json | 3 +- .../Clothing/Shoes/Misc/leather.rsi/meta.json | 3 +- .../Shoes/Misc/slippers.rsi/meta.json | 3 +- .../Clothing/Shoes/Misc/tourist.rsi/meta.json | 3 +- .../Shoes/Specific/chef.rsi/meta.json | 3 +- .../Shoes/Specific/clown.rsi/meta.json | 3 +- .../Shoes/Specific/cult.rsi/meta.json | 3 +- .../Shoes/Specific/galoshes.rsi/meta.json | 3 +- .../Shoes/Specific/spaceninja.rsi/meta.json | 3 +- .../Shoes/Specific/swat.rsi/meta.json | 3 +- .../Shoes/Specific/wizard.rsi/meta.json | 3 +- .../Clothing/Under/Socks/bee.rsi/meta.json | 3 +- .../Clothing/Under/Socks/coder.rsi/meta.json | 3 +- .../Jumpskirt/Color/black.rsi/meta.json | 3 +- .../Jumpskirt/Color/blue.rsi/meta.json | 3 +- .../Jumpskirt/Color/brown.rsi/meta.json | 3 +- .../Jumpskirt/Color/darkblue.rsi/meta.json | 3 +- .../Jumpskirt/Color/darkgreen.rsi/meta.json | 3 +- .../Jumpskirt/Color/green.rsi/meta.json | 3 +- .../Jumpskirt/Color/grey.rsi/meta.json | 3 +- .../Jumpskirt/Color/lightbrown.rsi/meta.json | 3 +- .../Jumpskirt/Color/lightpurple.rsi/meta.json | 3 +- .../Jumpskirt/Color/maroon.rsi/meta.json | 3 +- .../Jumpskirt/Color/orange.rsi/meta.json | 3 +- .../Jumpskirt/Color/pink.rsi/meta.json | 3 +- .../Jumpskirt/Color/red.rsi/meta.json | 3 +- .../Jumpskirt/Color/teal.rsi/meta.json | 3 +- .../Jumpskirt/Color/white.rsi/meta.json | 3 +- .../Jumpskirt/Color/yellow.rsi/meta.json | 3 +- .../Jumpskirt/bartender.rsi/meta.json | 3 +- .../Jumpskirt/cargotech.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/ce.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/chaplain.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/chef.rsi/meta.json | 3 +- .../Jumpskirt/chemistry.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/cmo.rsi/meta.json | 3 +- .../Jumpskirt/detective.rsi/meta.json | 3 +- .../Jumpskirt/detective_grey.rsi/meta.json | 3 +- .../Jumpskirt/engineering.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/hop.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/hos.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/hos_alt.rsi/meta.json | 3 +- .../Jumpskirt/hos_parade.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/hydro.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/janitor.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/medical.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/mime.rsi/meta.json | 3 +- .../Jumpskirt/paramedic.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/prisoner.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/qm.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/rnd.rsi/meta.json | 3 +- .../Jumpskirt/scientist.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/security.rsi/meta.json | 3 +- .../Uniforms/Jumpskirt/warden.rsi/meta.json | 3 +- .../Jumpsuit/Color/black.rsi/meta.json | 3 +- .../Jumpsuit/Color/blue.rsi/meta.json | 3 +- .../Jumpsuit/Color/brown.rsi/meta.json | 3 +- .../Jumpsuit/Color/darkblue.rsi/meta.json | 3 +- .../Jumpsuit/Color/darkgreen.rsi/meta.json | 3 +- .../Jumpsuit/Color/green.rsi/meta.json | 3 +- .../Jumpsuit/Color/grey.rsi/meta.json | 3 +- .../Jumpsuit/Color/lightbrown.rsi/meta.json | 3 +- .../Jumpsuit/Color/lightpurple.rsi/meta.json | 3 +- .../Jumpsuit/Color/maroon.rsi/meta.json | 3 +- .../Jumpsuit/Color/orange.rsi/meta.json | 3 +- .../Jumpsuit/Color/pink.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/Color/red.rsi/meta.json | 3 +- .../Jumpsuit/Color/teal.rsi/meta.json | 3 +- .../Jumpsuit/Color/white.rsi/meta.json | 3 +- .../Jumpsuit/Color/yellow.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/ancient.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/bartender.rsi/meta.json | 3 +- .../Jumpsuit/bartender_purple.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/captain.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/cargotech.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/ce.rsi/meta.json | 6 +- .../Jumpsuit/centcom_officer.rsi/meta.json | 3 +- .../Jumpsuit/centcom_official.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/chaplain.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/chef.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/chemistry.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/clown.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/cmo.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/detective.rsi/meta.json | 3 +- .../Jumpsuit/detective_grey.rsi/meta.json | 3 +- .../Jumpsuit/engineering.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/hop.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/hos.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/hos_alt.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/hos_blue.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/hos_grey.rsi/meta.json | 3 +- .../Jumpsuit/hos_parade.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/hydro.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/janitor.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/medical.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/mime.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/paramedic.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/prisoner.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/qm.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/rainbow.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/rnd.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/scientist.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/security.rsi/meta.json | 3 +- .../Jumpsuit/security_blue.rsi/meta.json | 3 +- .../Jumpsuit/security_grey.rsi/meta.json | 3 +- .../Uniforms/Jumpsuit/warden.rsi/meta.json | 3 +- .../Uniforms/Scrubs/blue.rsi/meta.json | 3 +- .../Uniforms/Scrubs/green.rsi/meta.json | 3 +- .../Uniforms/Scrubs/purple.rsi/meta.json | 3 +- .../Atmos/canister.rsi/meta.json | 85 +- .../Carpets/black_carpet.rsi/meta.json | 21 +- .../Carpets/blue_carpet.rsi/meta.json | 21 +- .../Carpets/gay_carpet.rsi/meta.json | 21 +- .../Carpets/green_carpet.rsi/meta.json | 21 +- .../Carpets/orange_carpet.rsi/meta.json | 21 +- .../Carpets/purple_carpet.rsi/meta.json | 21 +- .../Carpets/red_carpet.rsi/meta.json | 21 +- .../Carpets/skyblue_carpet.rsi/meta.json | 21 +- .../Hydroponics/hydro_tools.rsi/meta.json | 2 +- .../Constructible/Misc/barsign.rsi/meta.json | 25 - .../Misc/bookshelf.rsi/meta.json | 6 - .../Misc/crayondecals.rsi/meta.json | 931 +++--------------- .../Constructible/Misc/decals.rsi/meta.json | 84 -- .../Misc/extinguisher_cabinet.rsi/meta.json | 28 +- .../Misc/furniture.rsi/meta.json | 10 - .../Constructible/Misc/mirror.rsi/meta.json | 2 +- .../Constructible/Misc/module.rsi/meta.json | 2 +- .../Misc/potted_plants.rsi/meta.json | 31 - .../Misc/stock_parts.rsi/meta.json | 2 +- .../Constructible/Misc/sylphs.rsi/meta.json | 1 - .../Constructible/Misc/tanks.rsi/meta.json | 2 - .../Power/PA/control_box.rsi/meta.json | 2 +- .../VendingMachines/boozeomat.rsi/meta.json | 8 +- .../Power/VendingMachines/cart.rsi/meta.json | 14 +- .../VendingMachines/chapel.rsi/meta.json | 8 +- .../Power/VendingMachines/cigs.rsi/meta.json | 14 +- .../VendingMachines/coffee.rsi/meta.json | 16 +- .../Power/VendingMachines/cola.rsi/meta.json | 25 +- .../VendingMachines/dinnerware.rsi/meta.json | 10 +- .../VendingMachines/discount.rsi/meta.json | 7 +- .../Power/VendingMachines/empty.rsi/meta.json | 9 +- .../VendingMachines/engivend.rsi/meta.json | 14 +- .../Power/VendingMachines/hats.rsi/meta.json | 7 +- .../VendingMachines/magivend.rsi/meta.json | 9 +- .../VendingMachines/medical.rsi/meta.json | 14 +- .../VendingMachines/mining.rsi/meta.json | 10 +- .../Power/VendingMachines/nutri.rsi/meta.json | 13 +- .../VendingMachines/robotics.rsi/meta.json | 10 +- .../Power/VendingMachines/sale.rsi/meta.json | 8 +- .../Power/VendingMachines/sec.rsi/meta.json | 14 +- .../Power/VendingMachines/seeds.rsi/meta.json | 10 +- .../Power/VendingMachines/shoes.rsi/meta.json | 7 +- .../VendingMachines/smartfridge.rsi/meta.json | 9 +- .../Power/VendingMachines/snack.rsi/meta.json | 12 +- .../VendingMachines/sovietsoda.rsi/meta.json | 14 +- .../Power/VendingMachines/suits.rsi/meta.json | 7 +- .../VendingMachines/theater.rsi/meta.json | 15 +- .../VendingMachines/vendomat.rsi/meta.json | 14 +- .../Power/VendingMachines/vox.rsi/meta.json | 9 +- .../VendingMachines/wallmed.rsi/meta.json | 10 +- .../VendingMachines/youtool.rsi/meta.json | 15 +- .../Power/ame_controller.rsi/meta.json | 10 +- .../Power/ame_shielding.rsi/meta.json | 121 +-- .../Constructible/Power/apc.rsi/meta.json | 255 +---- .../Power/autolathe.rsi/meta.json | 28 +- .../Power/cell_recharger.rsi/meta.json | 15 +- .../Power/circuit_printer.rsi/meta.json | 15 +- .../Power/conveyor.rsi/meta.json | 2 +- .../Power/d_analyzer.rsi/meta.json | 23 +- .../Power/dispensers.rsi/meta.json | 3 - .../Power/disposal.rsi/meta.json | 38 +- .../Power/field_generator.rsi/meta.json | 2 +- .../Power/gravity_generator.rsi/meta.json | 9 +- .../gravity_generator_core.rsi/meta.json | 4 - .../Power/hv_cable.rsi/meta.json | 112 +-- .../Constructible/Power/juicer.rsi/meta.json | 2 +- .../Power/lv_cable.rsi/meta.json | 112 +-- .../Power/microwave.rsi/meta.json | 46 +- .../Constructible/Power/mixer.rsi/meta.json | 5 - .../Power/mv_cable.rsi/meta.json | 112 +-- .../Constructible/Power/power.rsi/meta.json | 6 - .../Power/power_cable.rsi/meta.json | 48 +- .../Power/protolathe.rsi/meta.json | 32 +- .../Power/radiation_collector.rsi/meta.json | 2 +- .../Power/recharger.rsi/meta.json | 18 +- .../Power/recycling.rsi/meta.json | 76 +- .../Power/rndpointsource.rsi/meta.json | 15 +- .../Constructible/Power/server.rsi/meta.json | 35 +- .../Power/substation.rsi/meta.json | 13 +- .../Power/wall_recharger.rsi/meta.json | 18 +- .../Specific/Medical/cloning.rsi/meta.json | 6 +- .../Specific/Medical/scanner.rsi/meta.json | 22 +- .../Crates/electricalcrate.rsi/meta.json | 21 +- .../Storage/Crates/engicrate.rsi/meta.json | 21 +- .../Crates/engicrate_secure.rsi/meta.json | 30 +- .../Storage/Crates/freezer.rsi/meta.json | 21 +- .../Storage/Crates/generic.rsi/meta.json | 21 +- .../Storage/Crates/hydro.rsi/meta.json | 21 +- .../Storage/Crates/hydro_secure.rsi/meta.json | 30 +- .../Storage/Crates/medical.rsi/meta.json | 21 +- .../Crates/medicalcrate_secure.rsi/meta.json | 30 +- .../Storage/Crates/o2.rsi/meta.json | 21 +- .../Storage/Crates/phoron.rsi/meta.json | 30 +- .../Storage/Crates/plastic.rsi/meta.json | 21 +- .../Crates/privatecrate_secure.rsi/meta.json | 30 +- .../Storage/Crates/radiation.rsi/meta.json | 21 +- .../Storage/Crates/scicrate.rsi/meta.json | 21 +- .../Crates/scicrate_secure.rsi/meta.json | 30 +- .../Storage/Crates/sec_gear.rsi/meta.json | 30 +- .../Storage/Crates/secure.rsi/meta.json | 30 +- .../Storage/Crates/surgerycrate.rsi/meta.json | 21 +- .../Storage/Crates/weapon.rsi/meta.json | 30 +- .../Doors/airlock_basic.rsi/meta.json | 18 - .../Doors/airlock_cargo.rsi/meta.json | 18 - .../Doors/airlock_cargo_glass.rsi/meta.json | 18 - .../Doors/airlock_command.rsi/meta.json | 18 - .../Doors/airlock_command_glass.rsi/meta.json | 18 - .../Doors/airlock_engineering.rsi/meta.json | 18 - .../airlock_engineering_glass.rsi/meta.json | 18 - .../Doors/airlock_external.rsi/meta.json | 20 +- .../Doors/airlock_freezer.rsi/meta.json | 18 - .../Doors/airlock_glass.rsi/meta.json | 18 - .../Doors/airlock_maint.rsi/meta.json | 18 - .../Doors/airlock_medical.rsi/meta.json | 18 - .../Doors/airlock_medical_glass.rsi/meta.json | 18 - .../Doors/airlock_science.rsi/meta.json | 18 - .../Doors/airlock_science_glass.rsi/meta.json | 18 - .../Doors/airlock_security.rsi/meta.json | 18 - .../airlock_security_glass.rsi/meta.json | 18 - .../Doors/edge_door_hazard.rsi/meta.json | 9 +- .../Structures/Doors/firelock.rsi/meta.json | 92 +- .../Doors/firelock_glass.rsi/meta.json | 16 - .../Structures/Tables/bar.rsi/meta.json | 1 - .../Structures/Tables/carpet.rsi/meta.json | 1 - .../Structures/Tables/debug.rsi/meta.json | 1 - .../Structures/Tables/frame.rsi/meta.json | 1 - .../Structures/Tables/generic.rsi/meta.json | 1 - .../Structures/Tables/glass.rsi/meta.json | 1 - .../Structures/Tables/metal.rsi/meta.json | 1 - .../Structures/Tables/r_glass.rsi/meta.json | 1 - .../Tables/reinforced.rsi/meta.json | 1 - .../Structures/Tables/stone.rsi/meta.json | 1 - .../Structures/Tables/wood.rsi/meta.json | 1 - .../Walls/asteroid_rock.rsi/meta.json | 2 +- .../Structures/Walls/brick.rsi/meta.json | 2 +- .../Structures/Walls/clock.rsi/meta.json | 2 +- .../Structures/Walls/clown.rsi/meta.json | 2 +- .../Structures/Walls/cult.rsi/meta.json | 2 +- .../Structures/Walls/debug.rsi/meta.json | 23 +- .../Structures/Walls/diamond.rsi/meta.json | 2 +- .../Structures/Walls/gold.rsi/meta.json | 2 +- .../Structures/Walls/ice.rsi/meta.json | 2 +- .../Structures/Walls/low_wall.rsi/meta.json | 2 +- .../Structures/Walls/metal.rsi/meta.json | 2 +- .../Structures/Walls/plasma.rsi/meta.json | 2 +- .../Structures/Walls/plastic.rsi/meta.json | 2 +- .../Structures/Walls/riveted.rsi/meta.json | 2 +- .../Structures/Walls/sandstone.rsi/meta.json | 2 +- .../Structures/Walls/silver.rsi/meta.json | 2 +- .../Structures/Walls/solid.rsi/meta.json | 15 +- .../Structures/Walls/uranium.rsi/meta.json | 2 +- .../Structures/Walls/wood.rsi/meta.json | 2 +- .../Windows/phoron_window.rsi/meta.json | 1 - .../Windows/reinforced_window.rsi/meta.json | 1 - .../Structures/Windows/window.rsi/meta.json | 1 - .../Structures/closet.rsi/meta.json | 417 +++----- .../Constructible/Tiles/catwalk.rsi/meta.json | 3 +- Resources/Textures/Effects/arcs.rsi/meta.json | 15 +- .../Effects/atmospherics.rsi/meta.json | 2 +- .../Textures/Effects/chempuff.rsi/meta.json | 1 - .../Textures/Effects/creampie.rsi/meta.json | 2 +- .../Textures/Effects/explosion.rsi/meta.json | 1 - .../Effects/extinguisherSpray.rsi/meta.json | 1 - Resources/Textures/Effects/fire.rsi/meta.json | 2 +- .../Textures/Effects/portal.rsi/meta.json | 2 - .../Textures/Fluids/gibblet.rsi/meta.json | 15 +- Resources/Textures/Fluids/smear.rsi/meta.json | 21 +- .../Textures/Fluids/splatter.rsi/meta.json | 18 +- Resources/Textures/Fluids/vomit.rsi/meta.json | 12 +- .../Textures/Fluids/vomit_toxin.rsi/meta.json | 12 +- .../Textures/Fluids/writing.rsi/meta.json | 15 +- .../Textures/Interface/Actions/meta.json | 12 +- .../Interface/Alerts/Pressure/meta.json | 28 +- .../Interface/Alerts/breathing.rsi/meta.json | 2 +- .../Interface/Misc/job_icons.rsi/meta.json | 238 +---- .../Interface/Misc/markers.rsi/meta.json | 420 ++------ .../Interface/Misc/pointing.rsi/meta.json | 1 - .../Interface/Misc/progress_bar.rsi/meta.json | 3 +- .../Mobs/Aliens/Carps/carp_holo.rsi/meta.json | 2 - .../Aliens/Carps/carp_magic.rsi/meta.json | 3 - .../Aliens/Carps/carp_space.rsi/meta.json | 3 - .../Mobs/Aliens/Xenos/xeno.rsi/meta.json | 9 +- .../Textures/Mobs/Animals/bat.rsi/meta.json | 1 - .../Textures/Mobs/Animals/bear.rsi/meta.json | 5 - .../Textures/Mobs/Animals/bee.rsi/meta.json | 6 - .../Mobs/Animals/butterfly.rsi/meta.json | 1 - .../Textures/Mobs/Animals/chick.rsi/meta.json | 2 - .../Mobs/Animals/chicken.rsi/meta.json | 6 - .../Textures/Mobs/Animals/cow.rsi/meta.json | 2 - .../Textures/Mobs/Animals/crab.rsi/meta.json | 1 - .../Textures/Mobs/Animals/frog.rsi/meta.json | 1 - .../Textures/Mobs/Animals/goat.rsi/meta.json | 1 - .../Textures/Mobs/Animals/goose.rsi/meta.json | 1 - .../Mobs/Animals/gorilla.rsi/meta.json | 2 - .../Mobs/Animals/lizard.rsi/meta.json | 2 - .../Mobs/Animals/monkey.rsi/meta.json | 1 - .../Textures/Mobs/Animals/mouse.rsi/meta.json | 9 - .../Mobs/Animals/parrot.rsi/meta.json | 2 - .../Mobs/Animals/penguin.rsi/meta.json | 2 +- .../Textures/Mobs/Animals/snake.rsi/meta.json | 2 - .../Mobs/Animals/spider.rsi/meta.json | 6 - .../human_facial_hair.rsi/meta.json | 2 +- .../Mobs/Ghosts/ghost_human.rsi/meta.json | 2 - .../Textures/Mobs/Pets/cat.rsi/meta.json | 23 - .../Textures/Mobs/Pets/corgi.rsi/meta.json | 14 - .../Textures/Mobs/Pets/fox.rsi/meta.json | 3 - .../Textures/Mobs/Pets/sloth.rsi/meta.json | 1 - .../Mobs/Species/Human/organs.rsi/meta.json | 78 +- .../Mobs/Species/Human/parts.rsi/meta.json | 7 +- .../Drinks/(mdr)grapejuice.rsi/meta.json | 2 +- .../Drinks/absinthebottle.rsi/meta.json | 3 +- .../Drinks/absintheglass.rsi/meta.json | 2 +- .../Drinks/acidspitglass.rsi/meta.json | 2 +- .../Consumable/Drinks/alco-blue.rsi/meta.json | 2 +- .../Drinks/alco-green.rsi/meta.json | 2 +- .../Consumable/Drinks/alco-red.rsi/meta.json | 2 +- .../Drinks/alco-white.rsi/meta.json | 2 +- .../Consumable/Drinks/alebottle.rsi/meta.json | 2 +- .../Consumable/Drinks/aleglass.rsi/meta.json | 2 +- .../Drinks/alliescocktail.rsi/meta.json | 2 +- .../Consumable/Drinks/aloe.rsi/meta.json | 2 +- .../Drinks/amasecglass.rsi/meta.json | 2 +- .../Consumable/Drinks/andalusia.rsi/meta.json | 2 +- .../Drinks/antifreeze.rsi/meta.json | 2 +- .../Drinks/atomicbombglass.rsi/meta.json | 2 +- .../Consumable/Drinks/b&p.rsi/meta.json | 2 +- .../Consumable/Drinks/b52glass.rsi/meta.json | 2 +- .../Drinks/bahama_mama.rsi/meta.json | 2 +- .../Consumable/Drinks/banana.rsi/meta.json | 2 +- .../Drinks/bananahonkglass.rsi/meta.json | 2 +- .../Consumable/Drinks/barflask.rsi/meta.json | 2 +- .../Drinks/beepskysmashglass.rsi/meta.json | 2 +- .../Consumable/Drinks/beer.rsi/meta.json | 2 +- .../Consumable/Drinks/beerglass.rsi/meta.json | 2 +- .../Drinks/berryjuice.rsi/meta.json | 2 +- .../Consumable/Drinks/bigteacup.rsi/meta.json | 2 +- .../Drinks/blackrussianglass.rsi/meta.json | 2 +- .../Drinks/bloodymaryglass.rsi/meta.json | 2 +- .../Consumable/Drinks/booger.rsi/meta.json | 2 +- .../Drinks/bottleofnothing.rsi/meta.json | 2 +- .../Drinks/bravebullglass.rsi/meta.json | 2 +- .../Consumable/Drinks/britmug.rsi/meta.json | 2 +- .../Consumable/Drinks/broken.rsi/meta.json | 2 +- .../Consumable/Drinks/brownstar.rsi/meta.json | 2 +- .../Drinks/cafe_latte.rsi/meta.json | 2 +- .../Consumable/Drinks/carafe.rsi/meta.json | 33 +- .../Drinks/carrotjuice.rsi/meta.json | 2 +- .../Drinks/changelingsting.rsi/meta.json | 2 +- .../Drinks/chocolateglass.rsi/meta.json | 2 +- .../Consumable/Drinks/coffee.rsi/meta.json | 3 +- .../Drinks/cognacbottle.rsi/meta.json | 2 +- .../Drinks/cognacglass.rsi/meta.json | 2 +- .../Consumable/Drinks/cola.rsi/meta.json | 3 +- .../Drinks/colabottle.rsi/meta.json | 2 +- .../Consumable/Drinks/cream.rsi/meta.json | 2 +- .../Drinks/cubalibreglass.rsi/meta.json | 2 +- .../Consumable/Drinks/cup.rsi/meta.json | 6 +- .../Drinks/curacaoglass.rsi/meta.json | 2 +- .../Drinks/demonsblood.rsi/meta.json | 2 +- .../Consumable/Drinks/detflask.rsi/meta.json | 2 +- .../Drinks/devilskiss.rsi/meta.json | 2 +- .../Drinks/doctorsdelightglass.rsi/meta.json | 2 +- .../Consumable/Drinks/dr_gibb.rsi/meta.json | 3 +- .../Drinks/dr_gibb_glass.rsi/meta.json | 2 +- .../Drinks/driestmartiniglass.rsi/meta.json | 2 +- .../Drinks/emeraldglass.rsi/meta.json | 2 +- .../Drinks/energy_drink.rsi/meta.json | 3 +- .../Drinks/erikasurprise.rsi/meta.json | 2 +- .../Consumable/Drinks/flask.rsi/meta.json | 2 +- .../Consumable/Drinks/flask_old.rsi/meta.json | 2 +- .../Drinks/gargleblasterglass.rsi/meta.json | 2 +- .../Consumable/Drinks/ginbottle.rsi/meta.json | 2 +- .../Drinks/ginfizzglass.rsi/meta.json | 2 +- .../Drinks/gintonicglass.rsi/meta.json | 2 +- .../Drinks/ginvodkaglass.rsi/meta.json | 2 +- .../Drinks/glass_brown.rsi/meta.json | 2 +- .../Drinks/glass_brown2.rsi/meta.json | 2 +- .../Drinks/glass_clear.rsi/meta.json | 2 +- .../Drinks/glass_green.rsi/meta.json | 2 +- .../Drinks/glass_orange.rsi/meta.json | 2 +- .../Consumable/Drinks/glass_red.rsi/meta.json | 2 +- .../Drinks/glass_white.rsi/meta.json | 2 +- .../Drinks/glass_yellow.rsi/meta.json | 2 +- .../Drinks/golden_cup.rsi/meta.json | 2 +- .../Drinks/goldschlagerbottle.rsi/meta.json | 2 +- .../Drinks/goldschlagerglass.rsi/meta.json | 2 +- .../Drinks/grapejuice.rsi/meta.json | 2 +- .../Consumable/Drinks/grapesoda.rsi/meta.json | 2 +- .../Drinks/grenadinebottle.rsi/meta.json | 2 +- .../Drinks/grenadineglass.rsi/meta.json | 2 +- .../Consumable/Drinks/grogglass.rsi/meta.json | 2 +- .../Drinks/gsodaglass.rsi/meta.json | 2 +- .../Consumable/Drinks/hell.rsi/meta.json | 2 +- .../Drinks/hippiesdelightglass.rsi/meta.json | 2 +- .../Consumable/Drinks/hot_coco.rsi/meta.json | 2 +- .../Drinks/hot_coffee.rsi/meta.json | 2 +- .../Drinks/ice_tea_can.rsi/meta.json | 2 +- .../Drinks/iced_beerglass.rsi/meta.json | 2 +- .../Drinks/icedcoffeeglass.rsi/meta.json | 2 +- .../Drinks/icedteaglass.rsi/meta.json | 2 +- .../Consumable/Drinks/iceglass.rsi/meta.json | 2 +- .../Drinks/irishcarbomb.rsi/meta.json | 2 +- .../Drinks/irishcoffeeglass.rsi/meta.json | 2 +- .../Drinks/irishcreamglass.rsi/meta.json | 2 +- .../Consumable/Drinks/jar.rsi/meta.json | 2 +- .../Drinks/jar_metroid.rsi/meta.json | 2 +- .../Consumable/Drinks/jar_what.rsi/meta.json | 2 +- .../Drinks/kahluabottle.rsi/meta.json | 2 +- .../Drinks/kahluaglass.rsi/meta.json | 2 +- .../Drinks/kiraspecial.rsi/meta.json | 2 +- .../Consumable/Drinks/lean.rsi/meta.json | 3 +- .../Drinks/lemon-lime.rsi/meta.json | 3 +- .../Consumable/Drinks/lemonade.rsi/meta.json | 2 +- .../Drinks/lemonadeglass.rsi/meta.json | 2 +- .../Drinks/lemonglass.rsi/meta.json | 2 +- .../Drinks/lemonjuice.rsi/meta.json | 2 +- .../Consumable/Drinks/lemonlime.rsi/meta.json | 2 +- .../Consumable/Drinks/limejuice.rsi/meta.json | 2 +- .../Drinks/lithiumflask.rsi/meta.json | 2 +- .../longislandicedteaglass.rsi/meta.json | 2 +- .../Drinks/manhattanglass.rsi/meta.json | 2 +- .../Drinks/manlydorfglass.rsi/meta.json | 2 +- .../Drinks/margaritaglass.rsi/meta.json | 2 +- .../Drinks/martiniglass.rsi/meta.json | 2 +- .../Consumable/Drinks/meadglass.rsi/meta.json | 2 +- .../Consumable/Drinks/milk.rsi/meta.json | 2 +- .../Consumable/Drinks/milkshake.rsi/meta.json | 2 +- .../Consumable/Drinks/mojito.rsi/meta.json | 2 +- .../Consumable/Drinks/mug.rsi/meta.json | 12 +- .../Consumable/Drinks/mug_black.rsi/meta.json | 12 +- .../Consumable/Drinks/mug_blue.rsi/meta.json | 12 +- .../Consumable/Drinks/mug_green.rsi/meta.json | 12 +- .../Consumable/Drinks/mug_heart.rsi/meta.json | 12 +- .../Consumable/Drinks/mug_metal.rsi/meta.json | 12 +- .../Drinks/mug_moebius.rsi/meta.json | 12 +- .../Consumable/Drinks/mug_one.rsi/meta.json | 12 +- .../Drinks/mug_rainbow.rsi/meta.json | 12 +- .../Consumable/Drinks/mug_red.rsi/meta.json | 12 +- .../Drinks/neurotoxinglass.rsi/meta.json | 2 +- .../Consumable/Drinks/nothing.rsi/meta.json | 2 +- .../Consumable/Drinks/ntcahors.rsi/meta.json | 2 +- .../Drinks/nuka_colaglass.rsi/meta.json | 2 +- .../Drinks/orangejuice.rsi/meta.json | 2 +- .../Drinks/patronbottle.rsi/meta.json | 2 +- .../Drinks/patronglass.rsi/meta.json | 2 +- .../Consumable/Drinks/pitcher.rsi/meta.json | 21 +- .../Drinks/poisonberryjuice.rsi/meta.json | 2 +- .../Drinks/proj_manhattanglass.rsi/meta.json | 2 +- .../Drinks/purple_can.rsi/meta.json | 3 +- .../Drinks/pwinebottle.rsi/meta.json | 2 +- .../Drinks/pwineglass.rsi/meta.json | 2 +- .../Consumable/Drinks/ramen.rsi/meta.json | 2 +- .../Drinks/red_meadglass.rsi/meta.json | 2 +- .../Consumable/Drinks/rewriter.rsi/meta.json | 2 +- .../Consumable/Drinks/rumbottle.rsi/meta.json | 2 +- .../Consumable/Drinks/rumglass.rsi/meta.json | 2 +- .../Drinks/sbitenglass.rsi/meta.json | 2 +- .../Drinks/screwdriverglass.rsi/meta.json | 2 +- .../Drinks/sdreamglass.rsi/meta.json | 2 +- .../Drinks/shake-blue.rsi/meta.json | 2 +- .../Drinks/shake-empty.rsi/meta.json | 2 +- .../Drinks/shake-meat.rsi/meta.json | 2 +- .../Drinks/shake-robo.rsi/meta.json | 2 +- .../Drinks/shake-white.rsi/meta.json | 2 +- .../Consumable/Drinks/shaker.rsi/meta.json | 2 +- .../Drinks/shinyflask.rsi/meta.json | 2 +- .../Consumable/Drinks/shotglass.rsi/meta.json | 2 +- .../Drinks/silencerglass.rsi/meta.json | 2 +- .../Consumable/Drinks/singulo.rsi/meta.json | 2 +- .../Consumable/Drinks/snowwhite.rsi/meta.json | 2 +- .../Consumable/Drinks/sodawater.rsi/meta.json | 3 +- .../Consumable/Drinks/soy_latte.rsi/meta.json | 2 +- .../Consumable/Drinks/soymilk.rsi/meta.json | 2 +- .../Consumable/Drinks/space-up.rsi/meta.json | 3 +- .../Drinks/space-up_bottle.rsi/meta.json | 2 +- .../Drinks/space-up_glass.rsi/meta.json | 2 +- .../Drinks/space_mountain_wind.rsi/meta.json | 3 +- .../space_mountain_wind_bottle.rsi/meta.json | 2 +- .../space_mountain_wind_glass.rsi/meta.json | 2 +- .../Consumable/Drinks/starkist.rsi/meta.json | 3 +- .../Drinks/syndicatebomb.rsi/meta.json | 2 +- .../Consumable/Drinks/teacup.rsi/meta.json | 6 +- .../Consumable/Drinks/teaglass.rsi/meta.json | 2 +- .../Consumable/Drinks/teapot.rsi/meta.json | 2 +- .../Drinks/tequillabottle.rsi/meta.json | 2 +- .../Drinks/tequillaglass.rsi/meta.json | 2 +- .../Drinks/tequillasunriseglass.rsi/meta.json | 2 +- .../Drinks/thirteen_loko.rsi/meta.json | 3 +- .../Drinks/thirteen_loko_glass.rsi/meta.json | 2 +- .../Drinks/threemileislandglass.rsi/meta.json | 2 +- .../Drinks/tomatojuice.rsi/meta.json | 2 +- .../Consumable/Drinks/tonic.rsi/meta.json | 3 +- .../Drinks/toxinsspecialglass.rsi/meta.json | 2 +- .../Drinks/vacuumflask.rsi/meta.json | 2 +- .../Drinks/vermouthbottle.rsi/meta.json | 2 +- .../Drinks/vermouthglass.rsi/meta.json | 2 +- .../Drinks/vodkabottle.rsi/meta.json | 2 +- .../Drinks/vodkatonicglass.rsi/meta.json | 2 +- .../Consumable/Drinks/water.rsi/meta.json | 2 +- .../Consumable/Drinks/water_cup.rsi/meta.json | 6 +- .../Drinks/waterbottle.rsi/meta.json | 2 +- .../Drinks/watermelon.rsi/meta.json | 2 +- .../Drinks/whiskeybottle.rsi/meta.json | 2 +- .../Drinks/whiskeycolaglass.rsi/meta.json | 2 +- .../Drinks/whiskeyglass.rsi/meta.json | 2 +- .../Drinks/whiskeysodaglass.rsi/meta.json | 2 +- .../Drinks/whiskeysodaglass2.rsi/meta.json | 2 +- .../Drinks/whiterussianglass.rsi/meta.json | 2 +- .../Drinks/winebottle.rsi/meta.json | 2 +- .../Consumable/Drinks/wineglass.rsi/meta.json | 2 +- .../Consumable/Fancy/cigarettes.rsi/meta.json | 9 +- .../Consumable/Fancy/mask_cig.rsi/meta.json | 7 +- .../Consumable/Food/4no_raisins.rsi/meta.json | 3 +- .../Consumable/Food/aesirsalad.rsi/meta.json | 2 +- .../Consumable/Food/amanita_pie.rsi/meta.json | 2 +- .../Food/amanitajelly.rsi/meta.json | 2 +- .../ambrosiavulgariscrushed.rsi/meta.json | 2 +- .../Consumable/Food/apple_cake.rsi/meta.json | 3 +- .../Food/apple_cake_slice.rsi/meta.json | 2 +- .../Consumable/Food/apple_pie.rsi/meta.json | 2 +- .../Consumable/Food/bacon.rsi/meta.json | 2 +- .../Consumable/Food/badrecipe.rsi/meta.json | 2 +- .../Consumable/Food/baguette.rsi/meta.json | 2 +- .../Consumable/Food/bananabread.rsi/meta.json | 2 +- .../Food/bananabreadslice.rsi/meta.json | 2 +- .../Consumable/Food/bearmeat.rsi/meta.json | 2 +- .../Consumable/Food/beetsoup.rsi/meta.json | 2 +- .../Food/berryclafoutis.rsi/meta.json | 2 +- .../Food/bigbiteburger.rsi/meta.json | 3 +- .../Food/birthday_cake_slice.rsi/meta.json | 2 +- .../Food/birthdaycake.rsi/meta.json | 2 +- .../Consumable/Food/boiledrice.rsi/meta.json | 2 +- .../Food/boiledrorocore.rsi/meta.json | 2 +- .../Food/brain_cake_slice.rsi/meta.json | 2 +- .../Consumable/Food/brainburger.rsi/meta.json | 3 +- .../Consumable/Food/braincake.rsi/meta.json | 2 +- .../Consumable/Food/bread.rsi/meta.json | 2 +- .../braincakeslice.rsi/meta.json | 2 +- .../Consumable/Food/breadslice.rsi/meta.json | 2 +- .../Consumable/Food/burger.rsi/meta.json | 3 +- .../Food/candiedapple.rsi/meta.json | 2 +- .../Consumable/Food/candy.rsi/meta.json | 3 +- .../Consumable/Food/candy_corn.rsi/meta.json | 2 +- .../Consumable/Food/carrotcake.rsi/meta.json | 2 +- .../Food/carrotcake_slice.rsi/meta.json | 2 +- .../Consumable/Food/carrotfries.rsi/meta.json | 2 +- .../Consumable/Food/chawanmushi.rsi/meta.json | 2 +- .../Food/cheeseburger.rsi/meta.json | 3 +- .../Consumable/Food/cheesecake.rsi/meta.json | 2 +- .../Food/cheesecake_slice.rsi/meta.json | 2 +- .../Consumable/Food/cheesewedge.rsi/meta.json | 2 +- .../Consumable/Food/cheesewheel.rsi/meta.json | 2 +- .../Food/cheesie_honkers.rsi/meta.json | 2 +- .../Consumable/Food/cheesyfries.rsi/meta.json | 2 +- .../Consumable/Food/cherrypie.rsi/meta.json | 2 +- .../Consumable/Food/chips.rsi/meta.json | 3 +- .../Food/chocolatebar.rsi/meta.json | 2 +- .../Food/chocolatecake.rsi/meta.json | 2 +- .../Food/chocolatecake_slice.rsi/meta.json | 2 +- .../Food/chocolateegg.rsi/meta.json | 2 +- .../Consumable/Food/clownburger.rsi/meta.json | 3 +- .../Consumable/Food/clownstears.rsi/meta.json | 2 +- .../Consumable/Food/cocoa.rsi/meta.json | 2 +- .../Consumable/Food/coldchili.rsi/meta.json | 2 +- .../Consumable/Food/coldsauce.rsi/meta.json | 2 +- .../Consumable/Food/cookie!!!.rsi/meta.json | 2 +- .../Consumable/Food/cracker.rsi/meta.json | 2 +- .../Food/creamcheesebread.rsi/meta.json | 2 +- .../Food/creamcheesebreadslice.rsi/meta.json | 2 +- .../Consumable/Food/cubancarp.rsi/meta.json | 2 +- .../Consumable/Food/dionaroast.rsi/meta.json | 2 +- .../Consumable/Food/donkpocket.rsi/meta.json | 2 +- .../Consumable/Food/donut1.rsi/meta.json | 3 +- .../Consumable/Food/donut2.rsi/meta.json | 3 +- .../Consumable/Food/egg-blue.rsi/meta.json | 3 +- .../Consumable/Food/egg-green.rsi/meta.json | 3 +- .../Consumable/Food/egg-mime.rsi/meta.json | 3 +- .../Consumable/Food/egg-orange.rsi/meta.json | 3 +- .../Consumable/Food/egg-purple.rsi/meta.json | 3 +- .../Consumable/Food/egg-rainbow.rsi/meta.json | 3 +- .../Consumable/Food/egg-red.rsi/meta.json | 3 +- .../Consumable/Food/egg-yellow.rsi/meta.json | 3 +- .../Objects/Consumable/Food/egg.rsi/meta.json | 3 +- .../Food/eggplantparm.rsi/meta.json | 2 +- .../Food/emptycondiment.rsi/meta.json | 2 +- .../Consumable/Food/enchiladas.rsi/meta.json | 2 +- .../Food/enchiladasold.rsi/meta.json | 2 +- .../Consumable/Food/enzyme.rsi/meta.json | 2 +- .../Food/fishandchips.rsi/meta.json | 2 +- .../Consumable/Food/fishburger.rsi/meta.json | 3 +- .../Consumable/Food/fishfillet.rsi/meta.json | 2 +- .../Consumable/Food/fishfingers.rsi/meta.json | 2 +- .../Consumable/Food/flour.rsi/meta.json | 2 +- .../Food/fortune_cookie.rsi/meta.json | 2 +- .../Consumable/Food/friedegg.rsi/meta.json | 2 +- .../Consumable/Food/fries.rsi/meta.json | 2 +- .../Consumable/Food/gappletart.rsi/meta.json | 2 +- .../Consumable/Food/hburger.rsi/meta.json | 3 +- .../Consumable/Food/herbsalad.rsi/meta.json | 2 +- .../Consumable/Food/honeycomb.rsi/meta.json | 2 +- .../Consumable/Food/hotchili.rsi/meta.json | 2 +- .../Consumable/Food/hotdog.rsi/meta.json | 2 +- .../Consumable/Food/hotsauce.rsi/meta.json | 2 +- .../Food/hugemushroomslice.rsi/meta.json | 2 +- .../Consumable/Food/jdonut1.rsi/meta.json | 2 +- .../Consumable/Food/jdonut2.rsi/meta.json | 2 +- .../Consumable/Food/jellyburger.rsi/meta.json | 3 +- .../Food/jellysandwich.rsi/meta.json | 2 +- .../Consumable/Food/jellytoast.rsi/meta.json | 2 +- .../Consumable/Food/kabob.rsi/meta.json | 2 +- .../Consumable/Food/ketchup.rsi/meta.json | 2 +- .../Consumable/Food/ketchupold.rsi/meta.json | 2 +- .../Consumable/Food/lemoncake.rsi/meta.json | 2 +- .../Food/lemoncake_slice.rsi/meta.json | 2 +- .../Consumable/Food/limecake.rsi/meta.json | 2 +- .../Food/limecake_slice.rsi/meta.json | 2 +- .../Consumable/Food/liquidfood.rsi/meta.json | 2 +- .../Food/loadedbakedpotato.rsi/meta.json | 2 +- .../Consumable/Food/meat.rsi/meta.json | 2 +- .../Food/meat_pizza_slice.rsi/meta.json | 3 +- .../Consumable/Food/meatball.rsi/meta.json | 3 +- .../Food/meatballsoup.rsi/meta.json | 2 +- .../Food/meatballspaghetti.rsi/meta.json | 2 +- .../Consumable/Food/meatbread.rsi/meta.json | 2 +- .../Food/meatbreadslice.rsi/meta.json | 2 +- .../Consumable/Food/meatpie.rsi/meta.json | 2 +- .../Consumable/Food/meatpizza.rsi/meta.json | 2 +- .../Food/meatpizzaslice.rsi/meta.json | 2 +- .../Consumable/Food/meatsteak.rsi/meta.json | 2 +- .../Consumable/Food/memoryleek.rsi/meta.json | 1 - .../Consumable/Food/milkape.rsi/meta.json | 2 +- .../Consumable/Food/milosoup.rsi/meta.json | 2 +- .../Consumable/Food/mimeburger.rsi/meta.json | 3 +- .../Consumable/Food/mint.rsi/meta.json | 2 +- .../Food/mixedcondiments.rsi/meta.json | 2 +- .../Consumable/Food/monkeycube.rsi/meta.json | 2 +- .../Food/monkeysdelight.rsi/meta.json | 2 +- .../Consumable/Food/mtearp.rsi/meta.json | 2 +- .../Consumable/Food/muffin.rsi/meta.json | 2 +- .../Food/mushroompizza.rsi/meta.json | 2 +- .../Food/mushroompizzaslice.rsi/meta.json | 2 +- .../Food/mushroomsoup.rsi/meta.json | 2 +- .../Consumable/Food/mysterysoup.rsi/meta.json | 2 +- .../Consumable/Food/nettlesoup.rsi/meta.json | 2 +- .../Consumable/Food/oliveoil.rsi/meta.json | 2 +- .../Consumable/Food/omelette.rsi/meta.json | 2 +- .../Consumable/Food/orangecake.rsi/meta.json | 2 +- .../Food/orangecake_slice.rsi/meta.json | 2 +- .../Consumable/Food/pastatomato.rsi/meta.json | 2 +- .../Food/peppermillsmall.rsi/meta.json | 2 +- .../Food/phelmbiscuit.rsi/meta.json | 2 +- .../Objects/Consumable/Food/pie.rsi/meta.json | 3 +- .../Food/pizzamargherita.rsi/meta.json | 2 +- .../Food/pizzamargheritaslice.rsi/meta.json | 2 +- .../Consumable/Food/plaincake.rsi/meta.json | 2 +- .../Food/plaincake_slice.rsi/meta.json | 2 +- .../Consumable/Food/plump_pie.rsi/meta.json | 2 +- .../Consumable/Food/popcorn.rsi/meta.json | 2 +- .../Food/poppypretzel.rsi/meta.json | 2 +- .../Consumable/Food/pumpkinpie.rsi/meta.json | 3 +- .../Food/pumpkinpieslice.rsi/meta.json | 2 +- .../Consumable/Food/rice.rsi/meta.json | 2 +- .../Consumable/Food/roburger.rsi/meta.json | 3 +- .../Food/rofflewaffles.rsi/meta.json | 2 +- .../Consumable/Food/rorosoup.rsi/meta.json | 2 +- .../Consumable/Food/rottenmeat.rsi/meta.json | 2 +- .../Consumable/Food/rpudding.rsi/meta.json | 2 +- .../Food/saltshakersmall.rsi/meta.json | 2 +- .../Consumable/Food/sandwich.rsi/meta.json | 3 +- .../Food/sandwich_filling.rsi/meta.json | 2 +- .../Food/sandwich_top.rsi/meta.json | 2 +- .../Consumable/Food/sausage.rsi/meta.json | 2 +- .../Consumable/Food/shandp.rsi/meta.json | 2 +- .../Food/skrellsnacks.rsi/meta.json | 2 +- .../Consumable/Food/sosjerky.rsi/meta.json | 3 +- .../Consumable/Food/soydope.rsi/meta.json | 2 +- .../Food/soylent_green.rsi/meta.json | 2 +- .../Food/soylent_yellow.rsi/meta.json | 2 +- .../Consumable/Food/soysauce.rsi/meta.json | 2 +- .../Food/space_twinkie.rsi/meta.json | 2 +- .../Food/spacylibertyduff.rsi/meta.json | 2 +- .../Consumable/Food/spaghetti.rsi/meta.json | 3 +- .../Food/spaghettiboiled.rsi/meta.json | 2 +- .../Consumable/Food/spellburger.rsi/meta.json | 3 +- .../Consumable/Food/spesslaw.rsi/meta.json | 2 +- .../Consumable/Food/stew.rsi/meta.json | 2 +- .../Food/stewedsoymeat.rsi/meta.json | 2 +- .../Consumable/Food/stuffing.rsi/meta.json | 2 +- .../Consumable/Food/sugar.rsi/meta.json | 2 +- .../Consumable/Food/sugarsmall.rsi/meta.json | 2 +- .../Food/superbiteburger.rsi/meta.json | 2 +- .../Consumable/Food/syndi_cakes.rsi/meta.json | 2 +- .../Consumable/Food/taco.rsi/meta.json | 2 +- .../Consumable/Food/tastybread.rsi/meta.json | 2 +- .../Food/toastedsandwich.rsi/meta.json | 2 +- .../Consumable/Food/tofu.rsi/meta.json | 2 +- .../Consumable/Food/tofubread.rsi/meta.json | 2 +- .../Food/tofubreadslice.rsi/meta.json | 2 +- .../Consumable/Food/tofuburger.rsi/meta.json | 3 +- .../Consumable/Food/tofurkey.rsi/meta.json | 2 +- .../Consumable/Food/tomatomeat.rsi/meta.json | 2 +- .../Consumable/Food/tomatosoup.rsi/meta.json | 2 +- .../Consumable/Food/twobread.rsi/meta.json | 2 +- .../Consumable/Food/validsalad.rsi/meta.json | 2 +- .../Food/vegetablepizza.rsi/meta.json | 2 +- .../Food/vegetablepizzaslice.rsi/meta.json | 2 +- .../Food/vegetablesoup.rsi/meta.json | 2 +- .../Consumable/Food/waffles.rsi/meta.json | 2 +- .../Food/watermelonslice.rsi/meta.json | 2 +- .../Consumable/Food/wingfangchu.rsi/meta.json | 2 +- .../Consumable/Food/wishsoup.rsi/meta.json | 2 +- .../Consumable/Food/xburger.rsi/meta.json | 3 +- .../Food/xenobreadslice.rsi/meta.json | 2 +- .../Consumable/Food/xenomeat.rsi/meta.json | 2 +- .../Food/xenomeatbread.rsi/meta.json | 2 +- .../Consumable/Food/xenomeatpie.rsi/meta.json | 2 +- .../FoodContainers/donutbox.rsi/meta.json | 24 +- .../FoodContainers/eggbox.rsi/meta.json | 39 +- .../FoodContainers/eggbox_shut.rsi/meta.json | 3 +- .../monkeycubebox.rsi/meta.json | 2 +- .../monkeycubewrap.rsi/meta.json | 2 +- .../FoodContainers/pizzabox.rsi/meta.json | 3 +- .../FoodContainers/pizzabox_tag.rsi/meta.json | 2 +- .../pizzaboxstack.rsi/meta.json | 18 +- .../Trash/4no_raisins.rsi/meta.json | 2 +- .../Consumable/Trash/ash.rsi/meta.json | 2 +- .../Consumable/Trash/candy.rsi/meta.json | 2 +- .../Trash/cheesie_honkers.rsi/meta.json | 2 +- .../Consumable/Trash/chips.rsi/meta.json | 2 +- .../Consumable/Trash/corncob.rsi/meta.json | 2 +- .../Consumable/Trash/liquidfood.rsi/meta.json | 2 +- .../Trash/pistachios_pack.rsi/meta.json | 2 +- .../Trash/pizzabox_messy.rsi/meta.json | 2 +- .../Consumable/Trash/plasticbag.rsi/meta.json | 2 +- .../Consumable/Trash/plate.rsi/meta.json | 2 +- .../Consumable/Trash/popcorn.rsi/meta.json | 2 +- .../Consumable/Trash/semki_pack.rsi/meta.json | 2 +- .../Consumable/Trash/snack_bowl.rsi/meta.json | 2 +- .../Consumable/Trash/sosjerky.rsi/meta.json | 2 +- .../Trash/syndi_cakes.rsi/meta.json | 2 +- .../Consumable/Trash/tastybread.rsi/meta.json | 2 +- .../Consumable/Trash/trashbag.rsi/meta.json | 15 +- .../Consumable/Trash/tray.rsi/meta.json | 2 +- .../Consumable/Trash/waffles.rsi/meta.json | 2 +- .../absinthebottle_empty.rsi/meta.json | 2 +- .../TrashDrinks/alco-clear.rsi/meta.json | 2 +- .../TrashDrinks/alebottle_empty.rsi/meta.json | 2 +- .../TrashDrinks/beer_empty.rsi/meta.json | 2 +- .../TrashDrinks/broken_bottle.rsi/meta.json | 2 +- .../cognacbottle_empty.rsi/meta.json | 2 +- .../TrashDrinks/ginbottle_empty.rsi/meta.json | 2 +- .../TrashDrinks/glass_empty.rsi/meta.json | 2 +- .../goldschlagerbottle_empty.rsi/meta.json | 2 +- .../kahluabottle_empty.rsi/meta.json | 2 +- .../TrashDrinks/ntcahors_empty.rsi/meta.json | 2 +- .../patronbottle_empty.rsi/meta.json | 2 +- .../pwinebottle_empty.rsi/meta.json | 2 +- .../TrashDrinks/rumbottle_empty.rsi/meta.json | 2 +- .../tequillabottle_empty.rsi/meta.json | 2 +- .../vermouthbottle_empty.rsi/meta.json | 2 +- .../vodkabottle_empty.rsi/meta.json | 2 +- .../whiskeybottle_empty.rsi/meta.json | 2 +- .../winebottle_empty.rsi/meta.json | 2 +- .../Devices/communication.rsi/meta.json | 5 - .../Objects/Devices/pda.rsi/meta.json | 39 - .../Fun/Instruments/accordion.rsi/meta.json | 1 - .../Fun/Instruments/banjo.rsi/meta.json | 42 +- .../Fun/Instruments/bike_horn.rsi/meta.json | 1 - .../Fun/Instruments/eguitar.rsi/meta.json | 1 - .../Instruments/glockenspiel.rsi/meta.json | 1 - .../Fun/Instruments/guitar.rsi/meta.json | 1 - .../Instruments/h_synthesizer.rsi/meta.json | 1 - .../Fun/Instruments/harmonica.rsi/meta.json | 1 - .../otherinstruments.rsi/meta.json | 5 - .../Fun/Instruments/recorder.rsi/meta.json | 1 - .../Fun/Instruments/saxophone.rsi/meta.json | 1 - .../Fun/Instruments/trombone.rsi/meta.json | 1 - .../Fun/Instruments/violin.rsi/meta.json | 1 - .../Objects/Fun/bikehorn.rsi/meta.json | 1 - .../Textures/Objects/Fun/caps.rsi/meta.json | 24 +- .../Textures/Objects/Fun/dice.rsi/meta.json | 2 +- .../Textures/Objects/Fun/toys.rsi/meta.json | 41 - .../Materials/Shards/piece.rsi/meta.json | 21 +- .../Materials/Shards/shard.rsi/meta.json | 21 +- .../Materials/Shards/shrapnel.rsi/meta.json | 21 +- .../Materials/Shards/splinters.rsi/meta.json | 21 +- .../Objects/Materials/materials.rsi/meta.json | 66 +- .../Objects/Materials/sheets.rsi/meta.json | 154 +-- .../Objects/Misc/bedsheets.rsi/meta.json | 88 +- .../Objects/Misc/bureaucracy.rsi/meta.json | 2 +- .../Objects/Misc/cablecuffs.rsi/meta.json | 2 - .../Objects/Misc/carvings.rsi/meta.json | 5 - .../Objects/Misc/crayons.rsi/meta.json | 266 +---- .../Misc/fire_extinguisher.rsi/meta.json | 14 +- .../Textures/Objects/Misc/flare.rsi/meta.json | 178 +--- .../Objects/Misc/glowstick.rsi/meta.json | 28 +- .../Objects/Misc/hand_tele.rsi/meta.json | 2 - .../Objects/Misc/handcuffs.rsi/meta.json | 2 +- .../Objects/Misc/id_cards.rsi/meta.json | 159 +-- .../Objects/Misc/lights.rsi/meta.json | 10 - .../Objects/Misc/markers.rsi/meta.json | 25 - .../Objects/Misc/nukedisk.rsi/meta.json | 1 - .../Textures/Objects/Misc/skub.rsi/meta.json | 2 +- .../Textures/Objects/Misc/torch.rsi/meta.json | 15 +- .../Objects/Power/AME/ame_jar.rsi/meta.json | 7 +- .../Objects/Power/AME/ame_part.rsi/meta.json | 7 +- .../PowerCells/potato_battery.rsi/meta.json | 7 +- .../power_cell_large_hi.rsi/meta.json | 36 +- .../power_cell_large_hy.rsi/meta.json | 36 +- .../power_cell_large_st.rsi/meta.json | 36 +- .../power_cell_large_sup.rsi/meta.json | 36 +- .../power_cell_medium_hi.rsi/meta.json | 36 +- .../power_cell_medium_hy.rsi/meta.json | 36 +- .../power_cell_medium_st.rsi/meta.json | 36 +- .../power_cell_medium_sup.rsi/meta.json | 36 +- .../meta.json | 36 +- .../power_cell_small_hi.rsi/meta.json | 2 +- .../power_cell_small_hy.rsi/meta.json | 2 +- .../power_cell_small_st.rsi/meta.json | 2 +- .../power_cell_small_sup.rsi/meta.json | 2 +- .../Objects/Power/light_bulb.rsi/meta.json | 33 +- .../Objects/Power/light_tube.rsi/meta.json | 33 +- .../Specific/Atmos/gasanalyzer.rsi/meta.json | 8 +- .../Chemistry/autoinjector.rsi/meta.json | 2 +- .../Specific/Chemistry/fillings.rsi/meta.json | 2 +- .../Chemistry/hypospray.rsi/meta.json | 2 +- .../Specific/Chemistry/syringe.rsi/meta.json | 2 +- .../Specific/Hydroponics/apple.rsi/meta.json | 2 +- .../Specific/Hydroponics/banana.rsi/meta.json | 2 +- .../Specific/Hydroponics/carrot.rsi/meta.json | 2 +- .../Hydroponics/chanterelle.rsi/meta.json | 2 +- .../Specific/Hydroponics/corn.rsi/meta.json | 2 +- .../Hydroponics/eggplant.rsi/meta.json | 2 +- .../Specific/Hydroponics/eggy.rsi/meta.json | 2 +- .../Specific/Hydroponics/lemon.rsi/meta.json | 2 +- .../Specific/Hydroponics/potato.rsi/meta.json | 2 +- .../Specific/Hydroponics/seeds.rsi/meta.json | 2 +- .../Hydroponics/sugarcane.rsi/meta.json | 2 +- .../Specific/Hydroponics/tomato.rsi/meta.json | 2 +- .../Hydroponics/towercap.rsi/meta.json | 2 +- .../Specific/Hydroponics/wheat.rsi/meta.json | 2 +- .../Janitorial/janitorial.rsi/meta.json | 5 - .../Specific/Janitorial/mop.rsi/meta.json | 2 +- .../Specific/Janitorial/soap.rsi/meta.json | 42 +- .../Janitorial/wet_floor_sign.rsi/meta.json | 2 +- .../Specific/Medical/medical.rsi/meta.json | 36 +- .../Medical/surgery_tools.rsi/meta.json | 44 +- .../Specific/Morgue/bodybags.rsi/meta.json | 28 +- .../Objects/Storage/boxes.rsi/meta.json | 93 +- .../Objects/Storage/boxicons.rsi/meta.json | 23 - .../Objects/Storage/donkpocket.rsi/meta.json | 1 - .../Objects/Tanks/anesthetic.rsi/meta.json | 3 +- .../Objects/Tanks/emergency.rsi/meta.json | 3 +- .../Tanks/emergency_double.rsi/meta.json | 3 +- .../Tanks/emergency_yellow.rsi/meta.json | 3 +- .../Objects/Tanks/generic.rsi/meta.json | 3 +- .../Objects/Tanks/oxygen.rsi/meta.json | 3 +- .../Objects/Tanks/phoron.rsi/meta.json | 3 +- .../Objects/Tanks/plasmaman.rsi/meta.json | 3 +- .../Textures/Objects/Tanks/red.rsi/meta.json | 3 +- .../Objects/Tanks/yellow.rsi/meta.json | 3 +- .../Objects/Tiles/cevtile.rsi/meta.json | 2 +- .../Textures/Objects/Tiles/tile.rsi/meta.json | 17 - .../Tools/Cowtools/cow_toolbox.rsi/meta.json | 1 - .../Tools/Cowtools/cowbar.rsi/meta.json | 1 - .../Tools/Cowtools/cowelder.rsi/meta.json | 2 - .../Tools/Cowtools/haycutters.rsi/meta.json | 1 - .../Tools/Cowtools/milkalyzer.rsi/meta.json | 1 - .../Tools/Cowtools/moodriver.rsi/meta.json | 1 - .../Tools/Cowtools/mooltitool.rsi/meta.json | 1 - .../Tools/Cowtools/wronch.rsi/meta.json | 1 - .../Toolboxes/toolbox_blue.rsi/meta.json | 1 - .../Toolboxes/toolbox_gold.rsi/meta.json | 1 - .../Toolboxes/toolbox_green.rsi/meta.json | 1 - .../Tools/Toolboxes/toolbox_red.rsi/meta.json | 1 - .../Tools/Toolboxes/toolbox_syn.rsi/meta.json | 1 - .../Toolboxes/toolbox_yellow.rsi/meta.json | 1 - .../Objects/Tools/cables.rsi/meta.json | 13 - .../Objects/Tools/crowbar.rsi/meta.json | 1 - .../Objects/Tools/crowbar_red.rsi/meta.json | 1 - .../Objects/Tools/drill.rsi/meta.json | 2 - .../Objects/Tools/flashlight.rsi/meta.json | 90 +- .../Objects/Tools/jaws_of_life.rsi/meta.json | 4 - .../Objects/Tools/lantern.rsi/meta.json | 14 +- .../Objects/Tools/matches.rsi/meta.json | 19 +- .../Objects/Tools/multitool.rsi/meta.json | 12 +- .../Textures/Objects/Tools/rcd.rsi/meta.json | 14 +- .../Textures/Objects/Tools/rcl.rsi/meta.json | 4 - .../Objects/Tools/screwdriver.rsi/meta.json | 2 +- .../Objects/Tools/welder.rsi/meta.json | 2 - .../Tools/welder_experimental.rsi/meta.json | 2 - .../Objects/Tools/welder_mini.rsi/meta.json | 2 - .../Objects/Tools/wrench.rsi/meta.json | 1 - .../Weapons/Grenades/flashbang.rsi/meta.json | 4 +- .../Weapons/Grenades/grenade.rsi/meta.json | 2 - .../Weapons/Grenades/nukenade.rsi/meta.json | 2 - .../Grenades/syndgrenade.rsi/meta.json | 2 - .../AntiMaterial/anti_material.rsi/meta.json | 9 +- .../Boxes/ClRifle/10x24_box.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_big_box.rsi/meta.json | 9 +- .../cl_rifle_big_box_rubber.rsi/meta.json | 9 +- .../Boxes/ClRifle/cl_rifle_box.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_box_flash.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_box_hv.rsi/meta.json | 9 +- .../cl_rifle_box_practice.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_box_rubber.rsi/meta.json | 9 +- .../LRifle/l_rifle_big_box.rsi/meta.json | 9 +- .../Boxes/LRifle/l_rifle_box.rsi/meta.json | 9 +- .../Boxes/LRifle/l_rifle_box_hv.rsi/meta.json | 9 +- .../LRifle/l_rifle_box_practice.rsi/meta.json | 9 +- .../LRifle/l_rifle_box_rubber.rsi/meta.json | 9 +- .../Boxes/Magnum/magnum_box.rsi/meta.json | 9 +- .../Magnum/magnum_box_flash.rsi/meta.json | 9 +- .../Boxes/Magnum/magnum_box_hv.rsi/meta.json | 9 +- .../Magnum/magnum_box_practice.rsi/meta.json | 9 +- .../Magnum/magnum_box_rubber.rsi/meta.json | 9 +- .../Boxes/Pistol/pistol_box.rsi/meta.json | 9 +- .../Pistol/pistol_box_flash.rsi/meta.json | 9 +- .../Boxes/Pistol/pistol_box_hv.rsi/meta.json | 9 +- .../Pistol/pistol_box_practice.rsi/meta.json | 9 +- .../Pistol/pistol_box_rubber.rsi/meta.json | 9 +- .../SRifle/s_rifle_big_box.rsi/meta.json | 9 +- .../s_rifle_big_box_rubber.rsi/meta.json | 9 +- .../Boxes/SRifle/s_rifle_box.rsi/meta.json | 9 +- .../SRifle/s_rifle_box_flash.rsi/meta.json | 9 +- .../Boxes/SRifle/s_rifle_box_hv.rsi/meta.json | 9 +- .../SRifle/s_rifle_box_practice.rsi/meta.json | 9 +- .../SRifle/s_rifle_box_rubber.rsi/meta.json | 9 +- .../Casings/ammo_casing.rsi/meta.json | 6 +- .../Casings/large_casing.rsi/meta.json | 6 +- .../Casings/rocket_shell.rsi/meta.json | 3 +- .../Casings/shotgun_shell.rsi/meta.json | 6 +- .../shotgun_shell_beanbag.rsi/meta.json | 6 +- .../Casings/shotgun_shell_blank.rsi/meta.json | 6 +- .../shotgun_shell_beanbag.rsi/meta.json | 6 +- .../Casings/shotgun_shell_flash.rsi/meta.json | 6 +- .../shotgun_shell_incendiary.rsi/meta.json | 6 +- .../shotgun_shell_practice.rsi/meta.json | 6 +- .../Casings/shotgun_shell_slug.rsi/meta.json | 6 +- .../Explosives/grenade_baton.rsi/meta.json | 6 +- .../Explosives/grenade_blast.rsi/meta.json | 6 +- .../Explosives/grenade_flash.rsi/meta.json | 6 +- .../Explosives/grenade_frag.rsi/meta.json | 6 +- .../Ammunition/Explosives/rpg.rsi/meta.json | 3 +- .../Magazine/ClRifle/10x24.rsi/meta.json | 27 +- .../ClRifle/cl_pistol_mag.rsi/meta.json | 21 +- .../ClRifle/cl_pistol_mag_base.rsi/meta.json | 21 +- .../ClRifle/cl_pistol_mag_hv.rsi/meta.json | 21 +- .../cl_pistol_mag_practice.rsi/meta.json | 21 +- .../cl_pistol_mag_rubber.rsi/meta.json | 21 +- .../ClRifle/cl_rifle_mag.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_mag_base.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_mag_flash.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_mag_hv.rsi/meta.json | 9 +- .../cl_rifle_mag_practice.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_mag_rubber.rsi/meta.json | 9 +- .../ClRifle/cl_rifle_mag_short.rsi/meta.json | 9 +- .../cl_rifle_mag_short_base.rsi/meta.json | 9 +- .../cl_rifle_mag_short_flash.rsi/meta.json | 9 +- .../cl_rifle_mag_short_hv.rsi/meta.json | 9 +- .../cl_rifle_mag_short_practice.rsi/meta.json | 9 +- .../cl_rifle_mag_short_rubber.rsi/meta.json | 9 +- .../Magazine/Dart/darts.rsi/meta.json | 21 +- .../Magazine/LRifle/l_rifle_box.rsi/meta.json | 27 +- .../Magazine/LRifle/l_rifle_mag.rsi/meta.json | 9 +- .../LRifle/l_rifle_mag_base.rsi/meta.json | 9 +- .../LRifle/l_rifle_mag_flash.rsi/meta.json | 9 +- .../LRifle/l_rifle_mag_hv.rsi/meta.json | 9 +- .../LRifle/l_rifle_mag_practice.rsi/meta.json | 9 +- .../LRifle/l_rifle_mag_rubber.rsi/meta.json | 9 +- .../Magazine/LRifle/maxim.rsi/meta.json | 9 +- .../Magazine/LRifle/pk_box.rsi/meta.json | 27 +- .../Magazine/Magnum/magnum_mag.rsi/meta.json | 18 +- .../Magnum/magnum_mag_base.rsi/meta.json | 18 +- .../Magnum/magnum_mag_flash.rsi/meta.json | 18 +- .../Magnum/magnum_mag_hv.rsi/meta.json | 18 +- .../Magnum/magnum_mag_practice.rsi/meta.json | 18 +- .../Magnum/magnum_mag_rubber.rsi/meta.json | 18 +- .../Magnum/magnum_smg_mag.rsi/meta.json | 9 +- .../Magnum/magnum_smg_mag_base.rsi/meta.json | 9 +- .../Magnum/magnum_smg_mag_hv.rsi/meta.json | 9 +- .../magnum_smg_mag_practice.rsi/meta.json | 9 +- .../magnum_smg_mag_rubber.rsi/meta.json | 9 +- .../Magazine/Pistol/calico_mag.rsi/meta.json | 9 +- .../Pistol/pistol_hc_mag.rsi/meta.json | 24 +- .../Pistol/pistol_hc_mag_base.rsi/meta.json | 24 +- .../Pistol/pistol_hc_mag_hv.rsi/meta.json | 24 +- .../pistol_hc_mag_practice.rsi/meta.json | 24 +- .../Pistol/pistol_hc_mag_rubber.rsi/meta.json | 24 +- .../Magazine/Pistol/pistol_mag.rsi/meta.json | 18 +- .../Pistol/pistol_mag_base.rsi/meta.json | 18 +- .../Pistol/pistol_mag_flash.rsi/meta.json | 18 +- .../Pistol/pistol_mag_h.rsi/meta.json | 24 +- .../Pistol/pistol_mag_h_base.rsi/meta.json | 24 +- .../Pistol/pistol_mag_h_flash.rsi/meta.json | 24 +- .../Pistol/pistol_mag_h_hv.rsi/meta.json | 24 +- .../pistol_mag_h_practice.rsi/meta.json | 24 +- .../Pistol/pistol_mag_h_rubber.rsi/meta.json | 24 +- .../Pistol/pistol_mag_hv.rsi/meta.json | 18 +- .../Pistol/pistol_mag_practice.rsi/meta.json | 18 +- .../Pistol/pistol_mag_rubber.rsi/meta.json | 18 +- .../Magazine/Pistol/smg_mag.rsi/meta.json | 9 +- .../Pistol/smg_mag_base.rsi/meta.json | 9 +- .../Pistol/smg_mag_flash.rsi/meta.json | 9 +- .../Magazine/Pistol/smg_mag_hv.rsi/meta.json | 9 +- .../Pistol/smg_mag_practice.rsi/meta.json | 9 +- .../Pistol/smg_mag_rubber.rsi/meta.json | 9 +- .../Pistol/smg_mag_top_mounted.rsi/meta.json | 21 +- .../Magazine/SRifle/s_rifle_mag.rsi/meta.json | 9 +- .../SRifle/s_rifle_mag_base.rsi/meta.json | 9 +- .../SRifle/s_rifle_mag_flash.rsi/meta.json | 9 +- .../SRifle/s_rifle_mag_hv.rsi/meta.json | 9 +- .../SRifle/s_rifle_mag_practice.rsi/meta.json | 9 +- .../SRifle/s_rifle_mag_rubber.rsi/meta.json | 9 +- .../Magazine/Shotgun/m12.rsi/meta.json | 9 +- .../Shotgun/m12_beanbag.rsi/meta.json | 9 +- .../Shotgun/m12_pellets.rsi/meta.json | 9 +- .../Magazine/Shotgun/m12_slug.rsi/meta.json | 9 +- .../LRifle/l_rifle_sl.rsi/meta.json | 21 +- .../Magnum/magnum_sl.rsi/meta.json | 24 +- .../Magnum/magnum_sl_flash.rsi/meta.json | 24 +- .../Magnum/magnum_sl_hv.rsi/meta.json | 24 +- .../Magnum/magnum_sl_practice.rsi/meta.json | 24 +- .../Magnum/magnum_sl_rubber.rsi/meta.json | 24 +- .../Pistol/pistol_sl.rsi/meta.json | 24 +- .../Pistol/pistol_sl_flash.rsi/meta.json | 24 +- .../Pistol/pistol_sl_hv.rsi/meta.json | 24 +- .../Pistol/pistol_sl_practice.rsi/meta.json | 24 +- .../Pistol/pistol_sl_rubber.rsi/meta.json | 24 +- .../Guns/Battery/laser_cannon.rsi/meta.json | 18 +- .../Guns/Battery/laser_retro.rsi/meta.json | 97 +- .../Weapons/Guns/Battery/taser.rsi/meta.json | 19 +- .../Weapons/Guns/Battery/xray.rsi/meta.json | 19 +- .../Weapons/Guns/LMGs/l6.rsi/meta.json | 24 +- .../Weapons/Guns/LMGs/pk.rsi/meta.json | 30 +- .../Guns/Launchers/china_lake.rsi/meta.json | 12 +- .../Guns/Launchers/rocket.rsi/meta.json | 9 +- .../Guns/Pistols/clarissa.rsi/meta.json | 15 +- .../Weapons/Guns/Pistols/colt.rsi/meta.json | 12 +- .../Guns/Pistols/giskard.rsi/meta.json | 18 +- .../Guns/Pistols/gyro_pistol.rsi/meta.json | 9 +- .../Guns/Pistols/hm_pistol.rsi/meta.json | 12 +- .../Weapons/Guns/Pistols/lamia.rsi/meta.json | 24 +- .../Guns/Pistols/mandella.rsi/meta.json | 15 +- .../Weapons/Guns/Pistols/mk58.rsi/meta.json | 12 +- .../Guns/Pistols/mk58_wood.rsi/meta.json | 12 +- .../Weapons/Guns/Pistols/molly.rsi/meta.json | 18 +- .../Guns/Pistols/olivaw_civil.rsi/meta.json | 12 +- .../Weapons/Guns/Pistols/paco.rsi/meta.json | 18 +- .../Guns/Projectiles/buckshot.rsi/meta.json | 3 +- .../Guns/Projectiles/bullet.rsi/meta.json | 1 - .../Guns/Projectiles/grenade.rsi/meta.json | 1 - .../Guns/Projectiles/rocket.rsi/meta.json | 6 +- .../Guns/Projectiles/slug.rsi/meta.json | 3 +- .../Guns/Projectiles/spark.rsi/meta.json | 1 - .../Guns/Revolvers/deckard.rsi/meta.json | 24 +- .../Guns/Revolvers/inspector.rsi/meta.json | 3 +- .../Guns/Revolvers/mateba.rsi/meta.json | 3 +- .../Weapons/Guns/Rifles/ak.rsi/meta.json | 9 +- .../Guns/Rifles/black_ak.rsi/meta.json | 9 +- .../Weapons/Guns/Rifles/calico.rsi/meta.json | 9 +- .../Weapons/Guns/Rifles/carbine.rsi/meta.json | 15 +- .../Weapons/Guns/Rifles/dallas.rsi/meta.json | 9 +- .../Weapons/Guns/Rifles/sts.rsi/meta.json | 15 +- .../Guns/Rifles/vintorez.rsi/meta.json | 15 +- .../Guns/Rifles/wintermute.rsi/meta.json | 15 +- .../Weapons/Guns/SMGs/atreides.rsi/meta.json | 18 +- .../Weapons/Guns/SMGs/c20r.rsi/meta.json | 18 +- .../Weapons/Guns/SMGs/drozd.rsi/meta.json | 18 +- .../Weapons/Guns/SMGs/wt550.rsi/meta.json | 17 +- .../Weapons/Guns/SMGs/zoric.rsi/meta.json | 15 +- .../Guns/Shotguns/bojevic.rsi/meta.json | 15 +- .../Weapons/Guns/Shotguns/bull.rsi/meta.json | 18 +- .../Guns/Shotguns/db_shotgun.rsi/meta.json | 12 +- .../Guns/Shotguns/gladstone.rsi/meta.json | 3 +- .../Weapons/Guns/Shotguns/pump.rsi/meta.json | 3 +- .../Guns/Shotguns/regulator.rsi/meta.json | 3 +- .../Weapons/Guns/Shotguns/sawn.rsi/meta.json | 12 +- .../Guns/Snipers/bolt_gun.rsi/meta.json | 12 +- .../Guns/Snipers/bolt_gun_wood.rsi/meta.json | 12 +- .../Guns/Snipers/heavy_sniper.rsi/meta.json | 12 +- .../Weapons/Melee/cleaver.rsi/meta.json | 2 +- .../Objects/Weapons/Melee/flash.rsi/meta.json | 15 +- .../Weapons/Melee/kitchen_knife.rsi/meta.json | 3 +- .../Weapons/Melee/pickaxe.rsi/meta.json | 2 +- .../Objects/Weapons/Melee/spear.rsi/meta.json | 3 +- .../Weapons/Melee/stunbaton.rsi/meta.json | 15 +- .../Weapons/Melee/xeno_claw.rsi/meta.json | 9 +- 1421 files changed, 3192 insertions(+), 9696 deletions(-) diff --git a/Resources/Textures/Clothing/Back/Backpacks/backpack.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/backpack.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/backpack.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/backpack.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/botany.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/botany.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/botany.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/botany.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/captain.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/captain.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/captain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/chemistry.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/chemistry.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/chemistry.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/chemistry.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/clown.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/clown.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/clown.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/clown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/engineering.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/engineering.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/meta.json index 10b79435ee..d37f719e33 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/holding.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "holding", - "directions": 1, "delays": [ [ 0.1, @@ -65,7 +64,6 @@ }, { "name": "holding-unlit", - "directions": 1, "delays": [ [ 0.1, @@ -82,8 +80,7 @@ "directions": 4 }, { - "name": "holding-broken", - "directions": 1 + "name": "holding-broken" }, { "name": "inhand-left", diff --git a/Resources/Textures/Clothing/Back/Backpacks/medical.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/medical.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/medical.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/mime.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/mime.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/mime.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/mime.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/science.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/science.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/science.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/science.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Backpacks/security.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/security.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/captain.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/captain.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Duffels/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/captain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/clown.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/clown.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Duffels/clown.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/clown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/duffel.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/duffel.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Duffels/duffel.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/duffel.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/engineering.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/engineering.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Duffels/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/holding.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/holding.rsi/meta.json index dfb945ceb9..e5e5eb78fa 100644 --- a/Resources/Textures/Clothing/Back/Duffels/holding.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/holding.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 0.1, @@ -24,7 +23,6 @@ }, { "name": "icon-unlit", - "directions": 1, "delays": [ [ 0.1, @@ -39,7 +37,6 @@ }, { "name": "broken", - "directions": 1, }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/security.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/security.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Duffels/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json index dfc3a3dff4..d7e2b6c3fe 100644 --- a/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/syndicate.rsi/meta.json @@ -8,16 +8,13 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-ammo", - "directions": 1 + "name": "icon-ammo" }, { - "name": "icon-med", - "directions": 1 + "name": "icon-med" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/captain.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/captain.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/captain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/chemistry.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/chemistry.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/chemistry.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/chemistry.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/engineering.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/engineering.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/holding.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/holding.rsi/meta.json index 18ad2f284d..b114502075 100644 --- a/Resources/Textures/Clothing/Back/Satchels/holding.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/holding.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 0.1, @@ -24,7 +23,6 @@ }, { "name": "icon-unlit", - "directions": 1, "delays": [ [ 0.1, @@ -39,7 +37,6 @@ }, { "name": "broken", - "directions": 1, }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/hydroponics.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/hydroponics.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/hydroponics.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/hydroponics.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/medical.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/medical.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/medical.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/satchel.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/satchel.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/satchel.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/satchel.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/science.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/science.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/science.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/science.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Satchels/security.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/security.rsi/meta.json index 89236692cc..fce8c90ce8 100644 --- a/Resources/Textures/Clothing/Back/Satchels/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Belt/assault.rsi/meta.json b/Resources/Textures/Clothing/Belt/assault.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/assault.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/assault.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/bandolier.rsi/meta.json b/Resources/Textures/Clothing/Belt/bandolier.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/bandolier.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/bandolier.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/belt_icon_overlay.rsi/meta.json b/Resources/Textures/Clothing/Belt/belt_icon_overlay.rsi/meta.json index bf73608815..11c6787f8e 100644 --- a/Resources/Textures/Clothing/Belt/belt_icon_overlay.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/belt_icon_overlay.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "crowbar", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "crowbar_brass", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "crowbar_large", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "crowbar_red", - "directions": 1, "delays": [ [ 1 @@ -45,7 +41,6 @@ }, { "name": "cutters_brass", - "directions": 1, "delays": [ [ 1 @@ -54,7 +49,6 @@ }, { "name": "cutters_red", - "directions": 1, "delays": [ [ 1 @@ -63,7 +57,6 @@ }, { "name": "cutters_yellow", - "directions": 1, "delays": [ [ 1 @@ -72,7 +65,6 @@ }, { "name": "drill_bolt", - "directions": 1, "delays": [ [ 1 @@ -81,7 +73,6 @@ }, { "name": "drill_screw", - "directions": 1, "delays": [ [ 1 @@ -90,7 +81,6 @@ }, { "name": "flashbang", - "directions": 1, "delays": [ [ 1 @@ -99,7 +89,6 @@ }, { "name": "jaws_cutter", - "directions": 1, "delays": [ [ 1 @@ -108,7 +97,6 @@ }, { "name": "jaws_pry", - "directions": 1, "delays": [ [ 1 @@ -117,7 +105,6 @@ }, { "name": "multitool", - "directions": 1, "delays": [ [ 1 @@ -126,7 +113,6 @@ }, { "name": "multitool_red", - "directions": 1, "delays": [ [ 1 @@ -135,7 +121,6 @@ }, { "name": "multitool_yellow", - "directions": 1, "delays": [ [ 1 @@ -144,7 +129,6 @@ }, { "name": "screwdriver", - "directions": 1, "delays": [ [ 1 @@ -153,7 +137,6 @@ }, { "name": "screwdriver_brass", - "directions": 1, "delays": [ [ 1 @@ -162,7 +145,6 @@ }, { "name": "screwdriver_head", - "directions": 1, "delays": [ [ 1 @@ -171,7 +153,6 @@ }, { "name": "screwdriver_nuke", - "directions": 1, "delays": [ [ 1 @@ -180,7 +161,6 @@ }, { "name": "stunbaton", - "directions": 1, "delays": [ [ 1 @@ -189,7 +169,6 @@ }, { "name": "stunbaton_active", - "directions": 1, "delays": [ [ 1 @@ -198,7 +177,6 @@ }, { "name": "stunbaton_nocell", - "directions": 1, "delays": [ [ 1 @@ -207,7 +185,6 @@ }, { "name": "wrench", - "directions": 1, "delays": [ [ 1 @@ -216,7 +193,6 @@ }, { "name": "wrench_brass", - "directions": 1, "delays": [ [ 1 @@ -225,7 +201,6 @@ }, { "name": "wrench_medical", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Clothing/Belt/ce.rsi/meta.json b/Resources/Textures/Clothing/Belt/ce.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/ce.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/ce.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/champion.rsi/meta.json b/Resources/Textures/Clothing/Belt/champion.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/champion.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/champion.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/holster.rsi/meta.json b/Resources/Textures/Clothing/Belt/holster.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/holster.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/holster.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/janitor.rsi/meta.json b/Resources/Textures/Clothing/Belt/janitor.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/janitor.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/janitor.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/medical.rsi/meta.json b/Resources/Textures/Clothing/Belt/medical.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/medical.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/militarywebbing.rsi/meta.json b/Resources/Textures/Clothing/Belt/militarywebbing.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/militarywebbing.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/militarywebbing.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/security.rsi/meta.json b/Resources/Textures/Clothing/Belt/security.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/securitywebbing.rsi/meta.json b/Resources/Textures/Clothing/Belt/securitywebbing.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/securitywebbing.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/securitywebbing.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/sheath.rsi/meta.json b/Resources/Textures/Clothing/Belt/sheath.rsi/meta.json index fa6033a032..13c88a8821 100644 --- a/Resources/Textures/Clothing/Belt/sheath.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/sheath.rsi/meta.json @@ -9,57 +9,17 @@ "states": [ { "name": "sheath-equipped-BELT", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "sheath-sabre-equipped-BELT", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { - "name": "sheath-sabre", - "directions": 1, - "delays": [ - [ - 1 - ] - ] + "name": "sheath-sabre" }, { - "name": "sheath", - "directions": 1, - "delays": [ - [ - 1 - ] - ] + "name": "sheath" } ] } diff --git a/Resources/Textures/Clothing/Belt/suspenders.rsi/meta.json b/Resources/Textures/Clothing/Belt/suspenders.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/suspenders.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/suspenders.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Belt/utility.rsi/meta.json b/Resources/Textures/Clothing/Belt/utility.rsi/meta.json index 49dac66974..a01a9c6cb9 100644 --- a/Resources/Textures/Clothing/Belt/utility.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/utility.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json index 3ced4137a7..df6ee47d08 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EARS", diff --git a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json index 3ced4137a7..df6ee47d08 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EARS", diff --git a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json index b5cb116fa1..bfa84ad2fc 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_alt", - "directions": 1 + "name": "icon_alt" } ] } diff --git a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json index cf7927b708..2918dff3d1 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_alt", - "directions": 1 + "name": "icon_alt" }, { "name": "equipped-EARS", diff --git a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json index 3ced4137a7..df6ee47d08 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EARS", diff --git a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json index cf7927b708..2918dff3d1 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_alt", - "directions": 1 + "name": "icon_alt" }, { "name": "equipped-EARS", diff --git a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json index 8fd3c8e332..79395547c5 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json index 8fd3c8e332..79395547c5 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json index 8fd3c8e332..79395547c5 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json index 8fd3c8e332..79395547c5 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json index cf7927b708..2918dff3d1 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_alt", - "directions": 1 + "name": "icon_alt" }, { "name": "equipped-EARS", diff --git a/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json index 8fd3c8e332..79395547c5 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json index 8fd3c8e332..79395547c5 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json index 666069abd8..c4b73b7d03 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon_alt", - "directions": 1 + "name": "icon_alt" }, { "name": "equipped-EARS", diff --git a/Resources/Textures/Clothing/Eyes/Glasses/beergoggles.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/beergoggles.rsi/meta.json index 7a84103841..c6895c9583 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/beergoggles.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/beergoggles.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json index db2e9f2a37..2a1583c008 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/meta.json @@ -8,16 +8,13 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-alt", - "directions": 1 + "name": "icon-alt" }, { - "name": "icon-super", - "directions": 1 + "name": "icon-super" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json index 2a9fd063af..541bdfbedc 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Eyes/Misc/eyepatch.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Misc/eyepatch.rsi/meta.json index 7a84103841..c6895c9583 100644 --- a/Resources/Textures/Clothing/Eyes/Misc/eyepatch.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Misc/eyepatch.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-EYES", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/boxing.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/boxing.rsi/meta.json index 1c1f4260c3..d9a6fdb267 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/boxing.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/boxing.rsi/meta.json @@ -8,20 +8,16 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-blue", - "directions": 1 + "name": "icon-blue" }, { - "name": "icon-green", - "directions": 1 + "name": "icon-green" }, { - "name": "icon-yellow", - "directions": 1 + "name": "icon-yellow" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json index 339c9f36a1..dd95d95446 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json index 8b037ebbd2..fb8682d39a 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-on", - "directions": 1 + "name": "icon-on" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json index b9bb10dcb9..88e3ebd509 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json index b4acff37db..ca6ed489fe 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json @@ -8,16 +8,13 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-red", - "directions": 1 + "name": "icon-red" }, { - "name": "icon-green", - "directions": 1 + "name": "icon-green" }, { "name": "equipped-HAND", diff --git a/Resources/Textures/Clothing/Head/Animals/cat.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/cat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/cat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/cat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Animals/cat2.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/cat2.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/cat2.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/cat2.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Animals/cat3.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/cat3.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/cat3.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/cat3.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Animals/headslime.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/headslime.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/headslime.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/headslime.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Animals/monkey.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/monkey.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/monkey.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/monkey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/black.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/black.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/black.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/black.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/blue.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/blue.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/blue.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/botany.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/botany.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/botany.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/botany.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/gold.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/gold.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/gold.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/gold.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/green.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/green.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/green.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/green.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/grey.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/grey.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/grey.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/red.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/red.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/red.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/red.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Bandanas/skull.rsi/meta.json b/Resources/Textures/Clothing/Head/Bandanas/skull.rsi/meta.json index c9b83c852b..66dc616e52 100644 --- a/Resources/Textures/Clothing/Head/Bandanas/skull.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Bandanas/skull.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon_mask", - "directions": 1 + "name": "icon_mask" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardhats/blue.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardhats/blue.rsi/meta.json index ce1c5b7db5..02f235207e 100644 --- a/Resources/Textures/Clothing/Head/Hardhats/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardhats/blue.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "light-icon", - "directions": 1 + "name": "light-icon" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardhats/orange.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardhats/orange.rsi/meta.json index ce1c5b7db5..02f235207e 100644 --- a/Resources/Textures/Clothing/Head/Hardhats/orange.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardhats/orange.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "light-icon", - "directions": 1 + "name": "light-icon" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardhats/red.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardhats/red.rsi/meta.json index ce1c5b7db5..02f235207e 100644 --- a/Resources/Textures/Clothing/Head/Hardhats/red.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardhats/red.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "light-icon", - "directions": 1 + "name": "light-icon" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardhats/white.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardhats/white.rsi/meta.json index ce1c5b7db5..02f235207e 100644 --- a/Resources/Textures/Clothing/Head/Hardhats/white.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardhats/white.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "light-icon", - "directions": 1 + "name": "light-icon" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardhats/yellow.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardhats/yellow.rsi/meta.json index ce1c5b7db5..02f235207e 100644 --- a/Resources/Textures/Clothing/Head/Hardhats/yellow.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardhats/yellow.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "light-icon", - "directions": 1 + "name": "light-icon" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/deathsquad.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/deathsquad.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/deathsquad.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/deathsquad.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", 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 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/ihsvoid.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/ihsvoid.rsi/meta.json index 136bb3f4b3..9477f6d30a 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/ihsvoid.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/ihsvoid.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-on", - "directions": 1 + "name": "icon-on" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json index 22a5d5a234..7bea2d1a86 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-flash", - "directions": 1 + "name": "icon-flash" }, { "name": "off-equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/beaver_hat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beaver_hat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/beaver_hat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/beaver_hat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/beret.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beret.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/beret.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/beret.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/beret_engineering.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beret_engineering.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/beret_engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/beret_engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/beret_hos.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beret_hos.rsi/meta.json index 8c5451aa66..7bd2e3e22a 100644 --- a/Resources/Textures/Clothing/Head/Hats/beret_hos.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/beret_hos.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json index 8c5451aa66..7bd2e3e22a 100644 --- a/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/bowler_hat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/bowler_hat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/bowler_hat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/bowler_hat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/brownfedora.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/brownfedora.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/brownfedora.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/brownfedora.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/cardborg_h.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/cardborg_h.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/cardborg_h.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/cardborg_h.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/centcom.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/centcom.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/centcom.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/centcom.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/chefhat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/chefhat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/chefhat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/chefhat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/fez.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/fez.rsi/meta.json index c5d232e46b..e0ee93d642 100644 --- a/Resources/Textures/Clothing/Head/Hats/fez.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/fez.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/greyfedora.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/greyfedora.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/greyfedora.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/greyfedora.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/hopcap.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/hopcap.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/hopcap.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/hopcap.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/hoshat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/hoshat.rsi/meta.json index c5d232e46b..e0ee93d642 100644 --- a/Resources/Textures/Clothing/Head/Hats/hoshat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/hoshat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/paper.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/paper.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/paper.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/paper.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/pirate.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/pirate.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/pirate.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/pirate.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/plaguedoctor.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/plaguedoctor.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/plaguedoctor.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/plaguedoctor.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/sombrero.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/sombrero.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/sombrero.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/sombrero.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/surgcap_blue.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/surgcap_blue.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/surgcap_blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/surgcap_blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/surgcap_green.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/surgcap_green.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/surgcap_green.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/surgcap_green.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/surgcap_purple.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/surgcap_purple.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/surgcap_purple.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/surgcap_purple.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/tophat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/tophat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/tophat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/tophat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/ushanka.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/ushanka.rsi/meta.json index 4ce08759e2..b3f2f7457d 100644 --- a/Resources/Textures/Clothing/Head/Hats/ushanka.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/ushanka.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-up", - "directions": 1 + "name": "icon-up" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/violetwizard.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/violetwizard.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/violetwizard.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/violetwizard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/warden.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/warden.rsi/meta.json index 8c5451aa66..7bd2e3e22a 100644 --- a/Resources/Textures/Clothing/Head/Hats/warden.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/warden.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/witch.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/witch.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/witch.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/witch.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/witchhat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/witchhat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/witchhat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/witchhat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/wizard_fake.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/wizard_fake.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/wizard_fake.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/wizard_fake.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hats/xmascrown.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/xmascrown.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hats/xmascrown.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/xmascrown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/bombsuit.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/bombsuit.rsi/meta.json index c5d232e46b..e0ee93d642 100644 --- a/Resources/Textures/Clothing/Head/Helmets/bombsuit.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/bombsuit.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/cosmonaut.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/cosmonaut.rsi/meta.json index c5d232e46b..e0ee93d642 100644 --- a/Resources/Textures/Clothing/Head/Helmets/cosmonaut.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/cosmonaut.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/cult.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/cult.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Helmets/cult.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/cult.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/ihvoid.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/ihvoid.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Helmets/ihvoid.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/ihvoid.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/meta.json index db3d1d0cfe..5c8d904e76 100644 --- a/Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-on", - "directions": 1 + "name": "icon-on" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/scaf.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/scaf.rsi/meta.json index c5d232e46b..e0ee93d642 100644 --- a/Resources/Textures/Clothing/Head/Helmets/scaf.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/scaf.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/security.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/security.rsi/meta.json index c5d232e46b..e0ee93d642 100644 --- a/Resources/Textures/Clothing/Head/Helmets/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/securityold.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/securityold.rsi/meta.json index 7a2c9310f4..db2bbfafd4 100644 --- a/Resources/Textures/Clothing/Head/Helmets/securityold.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/securityold.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/spaceninja.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/spaceninja.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Helmets/spaceninja.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/spaceninja.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/syndicate.rsi/meta.json index 54a62c6dc7..ae541b4e9e 100644 --- a/Resources/Textures/Clothing/Head/Helmets/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/syndicate.rsi/meta.json @@ -8,16 +8,13 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "visorlit", - "directions": 1 + "name": "visorlit" }, { - "name": "headlight", - "directions": 1 + "name": "headlight" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/templar.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/templar.rsi/meta.json index 8c5451aa66..7bd2e3e22a 100644 --- a/Resources/Textures/Clothing/Head/Helmets/templar.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/templar.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/thunderdome.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/thunderdome.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Helmets/thunderdome.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/thunderdome.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Helmets/wizardhelm.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/wizardhelm.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Helmets/wizardhelm.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/wizardhelm.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/Bio/bio.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/Bio/bio.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/Bio/bio.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/Bio/bio.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/Bio/cmo.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/Bio/cmo.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/Bio/cmo.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/Bio/cmo.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/Bio/general.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/Bio/general.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/Bio/general.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/Bio/general.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/Bio/janitor.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/Bio/janitor.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/Bio/janitor.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/Bio/janitor.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/Bio/scientist.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/Bio/scientist.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/Bio/scientist.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/Bio/scientist.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/Bio/security.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/Bio/security.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/Bio/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/Bio/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/Bio/virology.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/Bio/virology.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/Bio/virology.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/Bio/virology.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/chaplain.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/chaplain.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/chaplain.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/chaplain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/cult.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/cult.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/cult.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/cult.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/nun.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/nun.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Hoods/nun.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/nun.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Hoods/rad.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/rad.rsi/meta.json index bafbdefc41..920a78a535 100644 --- a/Resources/Textures/Clothing/Head/Hoods/rad.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/rad.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/bearpelt.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/bearpelt.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Misc/bearpelt.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/bearpelt.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/bunny.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/bunny.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Misc/bunny.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/bunny.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/cake.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/cake.rsi/meta.json index c2986361fe..b399f8db81 100644 --- a/Resources/Textures/Clothing/Head/Misc/cake.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/cake.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-on", - "directions": 1 + "name": "icon-on" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/chickenhead.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/chickenhead.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Misc/chickenhead.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/chickenhead.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/hairflower.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/hairflower.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Misc/hairflower.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/hairflower.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/pumpkin.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/pumpkin.rsi/meta.json index 2299bc22a1..f1c7bacf20 100644 --- a/Resources/Textures/Clothing/Head/Misc/pumpkin.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/pumpkin.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-on", - "directions": 1 + "name": "icon-on" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/pwig.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/pwig.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Misc/pwig.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/pwig.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/richard.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/richard.rsi/meta.json index c5d232e46b..e0ee93d642 100644 --- a/Resources/Textures/Clothing/Head/Misc/richard.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/richard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/skubhead.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/skubhead.rsi/meta.json index 8c0eb52e01..5868e6f365 100644 --- a/Resources/Textures/Clothing/Head/Misc/skubhead.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/skubhead.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/xenom.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/xenom.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Misc/xenom.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/xenom.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Misc/xenos.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/xenos.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Misc/xenos.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Misc/xenos.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/bluesoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/bluesoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/bluesoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/bluesoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/bluesoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/bluesoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/bluesoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/bluesoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/cargosoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/cargosoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/cargosoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/cargosoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/cargosoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/cargosoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/cargosoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/cargosoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/corpsoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/corpsoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/corpsoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/corpsoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/corpsoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/corpsoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/corpsoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/corpsoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/greensoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/greensoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/greensoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/greensoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/greensoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/greensoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/greensoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/greensoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/greysoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/greysoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/greysoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/greysoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/greysoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/greysoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/greysoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/greysoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/mimesoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/mimesoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/mimesoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/mimesoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/mimesoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/mimesoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/mimesoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/mimesoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/orangesoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/orangesoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/orangesoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/orangesoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/orangesoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/orangesoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/orangesoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/orangesoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/purplesoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/purplesoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/purplesoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/purplesoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/purplesoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/purplesoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/purplesoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/purplesoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/redsoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/redsoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/redsoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/redsoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/redsoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/redsoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/redsoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/redsoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/secsoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/secsoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/secsoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/secsoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/secsoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/secsoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/secsoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/secsoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/yellowsoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/yellowsoft.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/yellowsoft.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/yellowsoft.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Soft/yellowsoft_flipped.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/yellowsoft_flipped.rsi/meta.json index adaa2fb070..a470e00944 100644 --- a/Resources/Textures/Clothing/Head/Soft/yellowsoft_flipped.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Soft/yellowsoft_flipped.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Welding/blue_flame_welding_mask.rsi/meta.json b/Resources/Textures/Clothing/Head/Welding/blue_flame_welding_mask.rsi/meta.json index 5f11a5c573..954d46b9e9 100644 --- a/Resources/Textures/Clothing/Head/Welding/blue_flame_welding_mask.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Welding/blue_flame_welding_mask.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-up", - "directions": 1 + "name": "icon-up" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Welding/flame_welding_mask.rsi/meta.json b/Resources/Textures/Clothing/Head/Welding/flame_welding_mask.rsi/meta.json index 5f11a5c573..954d46b9e9 100644 --- a/Resources/Textures/Clothing/Head/Welding/flame_welding_mask.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Welding/flame_welding_mask.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-up", - "directions": 1 + "name": "icon-up" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Welding/paintedwelding.rsi/meta.json b/Resources/Textures/Clothing/Head/Welding/paintedwelding.rsi/meta.json index 5f11a5c573..954d46b9e9 100644 --- a/Resources/Textures/Clothing/Head/Welding/paintedwelding.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Welding/paintedwelding.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-up", - "directions": 1 + "name": "icon-up" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Head/Welding/welding.rsi/meta.json b/Resources/Textures/Clothing/Head/Welding/welding.rsi/meta.json index 5f11a5c573..954d46b9e9 100644 --- a/Resources/Textures/Clothing/Head/Welding/welding.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Welding/welding.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-up", - "directions": 1 + "name": "icon-up" }, { "name": "equipped-HELMET", diff --git a/Resources/Textures/Clothing/Mask/breath.rsi/meta.json b/Resources/Textures/Clothing/Mask/breath.rsi/meta.json index 3d9f681c4b..2e57ae2151 100644 --- a/Resources/Textures/Clothing/Mask/breath.rsi/meta.json +++ b/Resources/Textures/Clothing/Mask/breath.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-MASK", diff --git a/Resources/Textures/Clothing/Mask/clown.rsi/meta.json b/Resources/Textures/Clothing/Mask/clown.rsi/meta.json index 3d9f681c4b..2e57ae2151 100644 --- a/Resources/Textures/Clothing/Mask/clown.rsi/meta.json +++ b/Resources/Textures/Clothing/Mask/clown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-MASK", diff --git a/Resources/Textures/Clothing/Mask/gas.rsi/meta.json b/Resources/Textures/Clothing/Mask/gas.rsi/meta.json index 3d9f681c4b..2e57ae2151 100644 --- a/Resources/Textures/Clothing/Mask/gas.rsi/meta.json +++ b/Resources/Textures/Clothing/Mask/gas.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-MASK", diff --git a/Resources/Textures/Clothing/Mask/joy.rsi/meta.json b/Resources/Textures/Clothing/Mask/joy.rsi/meta.json index 87ca8625bc..c98cf38d35 100644 --- a/Resources/Textures/Clothing/Mask/joy.rsi/meta.json +++ b/Resources/Textures/Clothing/Mask/joy.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-MASK", diff --git a/Resources/Textures/Clothing/Mask/mime.rsi/meta.json b/Resources/Textures/Clothing/Mask/mime.rsi/meta.json index 87ca8625bc..c98cf38d35 100644 --- a/Resources/Textures/Clothing/Mask/mime.rsi/meta.json +++ b/Resources/Textures/Clothing/Mask/mime.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-MASK", diff --git a/Resources/Textures/Clothing/Mask/sterile.rsi/meta.json b/Resources/Textures/Clothing/Mask/sterile.rsi/meta.json index 48c2d3d38e..ff664dffd4 100644 --- a/Resources/Textures/Clothing/Mask/sterile.rsi/meta.json +++ b/Resources/Textures/Clothing/Mask/sterile.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-MASK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/cap.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/cap.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/cap.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/cap.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/ce.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/ce.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/ce.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/ce.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/cmo.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/cmo.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/cmo.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/cmo.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/herald.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/herald.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/herald.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/herald.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/hop.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/hop.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/hop.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/hop.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/hos.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/hos.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/hos.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/hos.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/qm.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/qm.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/qm.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/qm.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Cloaks/rd.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/rd.rsi/meta.json index 7920dfbd39..af717a8905 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/rd.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/rd.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-NECK", diff --git a/Resources/Textures/Clothing/Neck/Misc/bling.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/bling.rsi/meta.json index cc8b8f54f0..8570594128 100644 --- a/Resources/Textures/Clothing/Neck/Misc/bling.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Misc/bling.rsi/meta.json @@ -13,8 +13,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Neck/Misc/headphones.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/headphones.rsi/meta.json index efdcf97059..cb02ab5e25 100644 --- a/Resources/Textures/Clothing/Neck/Misc/headphones.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Misc/headphones.rsi/meta.json @@ -62,12 +62,10 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-on", - "directions": 1 + "name": "icon-on" } ] } diff --git a/Resources/Textures/Clothing/Neck/Misc/stethoscope.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/stethoscope.rsi/meta.json index bc5ec2dee3..1f012b2beb 100644 --- a/Resources/Textures/Clothing/Neck/Misc/stethoscope.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Misc/stethoscope.rsi/meta.json @@ -12,8 +12,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Neck/Scarfs/blue.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/blue.rsi/meta.json index bc5ec2dee3..1f012b2beb 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/blue.rsi/meta.json @@ -12,8 +12,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Neck/Scarfs/green.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/green.rsi/meta.json index bc5ec2dee3..1f012b2beb 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/green.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/green.rsi/meta.json @@ -12,8 +12,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Neck/Scarfs/red.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/red.rsi/meta.json index bc5ec2dee3..1f012b2beb 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/red.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/red.rsi/meta.json @@ -12,8 +12,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Neck/Scarfs/zebra.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/zebra.rsi/meta.json index bc5ec2dee3..1f012b2beb 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/zebra.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/zebra.rsi/meta.json @@ -12,8 +12,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Neck/Ties/dettie.rsi/meta.json b/Resources/Textures/Clothing/Neck/Ties/dettie.rsi/meta.json index bc5ec2dee3..1f012b2beb 100644 --- a/Resources/Textures/Clothing/Neck/Ties/dettie.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Ties/dettie.rsi/meta.json @@ -12,8 +12,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/Neck/Ties/redtie.rsi/meta.json b/Resources/Textures/Clothing/Neck/Ties/redtie.rsi/meta.json index bc5ec2dee3..1f012b2beb 100644 --- a/Resources/Textures/Clothing/Neck/Ties/redtie.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Ties/redtie.rsi/meta.json @@ -12,8 +12,7 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" } ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/armor_reflec.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/armor_reflec.rsi/meta.json index 940cc63fd5..659ed1dddf 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/armor_reflec.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/armor_reflec.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/bulletproof.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/bulletproof.rsi/meta.json index 940cc63fd5..659ed1dddf 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/bulletproof.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/bulletproof.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/cult_armour.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/cult_armour.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/cult_armour.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/cult_armour.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/heavy.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/heavy.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/heavy.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/heavy.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/heavygreen.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/heavygreen.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/heavygreen.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/heavygreen.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/heavyred.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/heavyred.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/heavyred.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/heavyred.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/magusblue.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/magusblue.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/magusblue.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/magusblue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/magusred.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/magusred.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/magusred.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/magusred.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json index 940cc63fd5..659ed1dddf 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/meta.json index 940cc63fd5..659ed1dddf 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Bio/cmo.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Bio/cmo.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Bio/cmo.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Bio/cmo.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Bio/general.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Bio/general.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Bio/general.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Bio/general.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Bio/janitor.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Bio/janitor.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Bio/janitor.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Bio/janitor.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Bio/scientist.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Bio/scientist.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Bio/scientist.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Bio/scientist.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Bio/security.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Bio/security.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Bio/security.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Bio/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Bio/virology.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Bio/virology.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Bio/virology.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Bio/virology.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/bomber.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/bomber.rsi/meta.json index 70d61b867c..442bfb2920 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/bomber.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/bomber.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-open", - "directions": 1 + "name": "icon-open" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/gentlecoat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/gentlecoat.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/gentlecoat.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/gentlecoat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/insp_coat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/insp_coat.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/insp_coat.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/insp_coat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/jensencoat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/jensencoat.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/jensencoat.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/jensencoat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/meta.json index 70d61b867c..442bfb2920 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-open", - "directions": 1 + "name": "icon-open" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/meta.json index 70d61b867c..442bfb2920 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-open", - "directions": 1 + "name": "icon-open" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/meta.json index 12c0d9c5e3..0420fe0799 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-open", - "directions": 1 + "name": "icon-open" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/pirate.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/pirate.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/pirate.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/pirate.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/deathsquad.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/deathsquad.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/deathsquad.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/deathsquad.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", 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 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/ihsvoid.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/ihsvoid.rsi/meta.json index 940cc63fd5..659ed1dddf 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/ihsvoid.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/ihsvoid.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security-red.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security-red.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security-red.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security-red.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/apron.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/apron.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/apron.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/apron.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/apronbotanist.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/apronbotanist.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/apronbotanist.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/apronbotanist.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/apronchef.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/apronchef.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/apronchef.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/apronchef.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/black_hoodie.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/black_hoodie.rsi/meta.json index 70d61b867c..442bfb2920 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/black_hoodie.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/black_hoodie.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-open", - "directions": 1 + "name": "icon-open" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/cardborg.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/cardborg.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/cardborg.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/cardborg.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/chaplain_hoodie.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/chaplain_hoodie.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/chaplain_hoodie.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/chaplain_hoodie.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/chef.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/chef.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/chef.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/chef.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/classicponcho.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/classicponcho.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/classicponcho.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/classicponcho.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/cultrobes.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/cultrobes.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/cultrobes.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/cultrobes.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/grey_hoodie.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/grey_hoodie.rsi/meta.json index 70d61b867c..442bfb2920 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/grey_hoodie.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/grey_hoodie.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-open", - "directions": 1 + "name": "icon-open" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/judge.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/judge.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/judge.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/judge.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/poncho.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/poncho.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/poncho.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/poncho.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/redwizard.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/redwizard.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/redwizard.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/redwizard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/santa.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/santa.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/santa.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/santa.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/skubbody.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/skubbody.rsi/meta.json index f071bbafba..9a00c5741a 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/skubbody.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/skubbody.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/straight_jacket.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/straight_jacket.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/straight_jacket.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/straight_jacket.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/violetwizard.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/violetwizard.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/violetwizard.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/violetwizard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/xenos.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/xenos.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/xenos.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/xenos.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/bombsuit.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/bombsuit.rsi/meta.json index 940cc63fd5..659ed1dddf 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/bombsuit.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/bombsuit.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/chicken.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/chicken.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/chicken.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/chicken.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/emergency.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/emergency.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/emergency.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/emergency.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/fire.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/fire.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/fire.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/fire.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/monkey.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/monkey.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/monkey.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/monkey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/rad.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/rad.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/rad.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/rad.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/spaceninja.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/spaceninja.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/spaceninja.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/spaceninja.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/syndicate.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/syndicate.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/syndicate.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/kevlar.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/kevlar.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Vests/kevlar.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Vests/kevlar.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/oldarmor.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/oldarmor.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Vests/oldarmor.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Vests/oldarmor.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/vest.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/vest.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Vests/vest.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Vests/vest.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/webvest.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/webvest.rsi/meta.json index 8f2d1b6bdc..e482264df5 100644 --- a/Resources/Textures/Clothing/OuterClothing/Vests/webvest.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Vests/webvest.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-OUTERCLOTHING", diff --git a/Resources/Textures/Clothing/Shoes/Boots/jackboots.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/jackboots.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Boots/jackboots.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Boots/jackboots.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Boots/magboots.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/magboots.rsi/meta.json index bc7d1e0a9b..96b3f4109e 100644 --- a/Resources/Textures/Clothing/Shoes/Boots/magboots.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Boots/magboots.rsi/meta.json @@ -16,12 +16,10 @@ "directions": 4 }, { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-on", - "directions": 1 + "name": "icon-on" }, { "name": "inhand-left", diff --git a/Resources/Textures/Clothing/Shoes/Boots/workboots.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/workboots.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Boots/workboots.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Boots/workboots.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Misc/flippers.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Misc/flippers.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Misc/flippers.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Misc/flippers.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Misc/leather.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Misc/leather.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Misc/leather.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Misc/leather.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Misc/slippers.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Misc/slippers.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Misc/slippers.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Misc/slippers.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Misc/tourist.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Misc/tourist.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Misc/tourist.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Misc/tourist.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Specific/chef.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/chef.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/chef.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/chef.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Specific/clown.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/clown.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/clown.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/clown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Specific/cult.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/cult.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/cult.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/cult.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Specific/galoshes.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/galoshes.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/galoshes.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/galoshes.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Specific/spaceninja.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/spaceninja.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/spaceninja.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/spaceninja.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Specific/swat.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/swat.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/swat.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/swat.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Shoes/Specific/wizard.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/wizard.rsi/meta.json index 8fa0b839b0..54b1191d42 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/wizard.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/wizard.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Under/Socks/bee.rsi/meta.json b/Resources/Textures/Clothing/Under/Socks/bee.rsi/meta.json index 37b5dad294..194b8c4f0f 100644 --- a/Resources/Textures/Clothing/Under/Socks/bee.rsi/meta.json +++ b/Resources/Textures/Clothing/Under/Socks/bee.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Under/Socks/coder.rsi/meta.json b/Resources/Textures/Clothing/Under/Socks/coder.rsi/meta.json index 37b5dad294..194b8c4f0f 100644 --- a/Resources/Textures/Clothing/Under/Socks/coder.rsi/meta.json +++ b/Resources/Textures/Clothing/Under/Socks/coder.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-FEET", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/bartender.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/bartender.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/bartender.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/bartender.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cargotech.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cargotech.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cargotech.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cargotech.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/ce.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/ce.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/ce.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/ce.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/chaplain.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/chaplain.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/chaplain.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/chaplain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/chef.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/chef.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/chef.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/chef.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/chemistry.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/chemistry.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/chemistry.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/chemistry.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective_grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective_grey.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective_grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/detective_grey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/engineering.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/engineering.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hop.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hop.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hop.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hop.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_alt.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_alt.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_alt.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_alt.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_parade.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_parade.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_parade.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_parade.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hydro.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hydro.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/hydro.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/hydro.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/janitor.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/janitor.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/janitor.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/janitor.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/medical.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/medical.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/medical.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/mime.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/mime.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/mime.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/mime.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/paramedic.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/paramedic.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/paramedic.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/paramedic.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/qm.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/qm.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/qm.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/qm.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/rnd.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/rnd.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/rnd.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/rnd.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/scientist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/scientist.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/scientist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/scientist.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/security.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/security.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/ancient.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/ancient.rsi/meta.json index b361c3328c..653724d398 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/ancient.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/ancient.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender_purple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender_purple.rsi/meta.json index 6a86edc4ec..4b10de708e 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender_purple.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender_purple.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cargotech.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cargotech.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cargotech.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cargotech.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/ce.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/ce.rsi/meta.json index ade35e41ad..6c3e26f041 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/ce.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/ce.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "s", - "directions": 1 + "name": "s" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_officer.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_officer.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_officer.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_officer.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_official.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_official.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_official.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_official.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/chaplain.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/chaplain.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/chaplain.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/chaplain.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/chef.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/chef.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/chef.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/chef.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/chemistry.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/chemistry.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/chemistry.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/chemistry.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/clown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/clown.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/clown.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/clown.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective_grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective_grey.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective_grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/detective_grey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/engineering.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/engineering.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/engineering.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hop.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hop.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hop.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hop.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_alt.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_alt.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_alt.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_alt.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_blue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_blue.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_grey.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_grey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_parade.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_parade.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_parade.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_parade.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hydro.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hydro.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/hydro.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/hydro.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/janitor.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/janitor.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/janitor.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/janitor.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/medical.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/medical.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/medical.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/mime.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/mime.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/mime.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/mime.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/paramedic.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/paramedic.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/paramedic.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/paramedic.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/qm.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/qm.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/qm.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/qm.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/rainbow.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/rainbow.rsi/meta.json index 18ff64cc68..13e829951d 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/rainbow.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/rainbow.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/rnd.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/rnd.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/rnd.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/rnd.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/scientist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/scientist.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/scientist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/scientist.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_blue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_blue.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_grey.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/security_grey.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/meta.json index d01e147030..a0e86f87fd 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Scrubs/blue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Scrubs/blue.rsi/meta.json index 6a86edc4ec..4b10de708e 100644 --- a/Resources/Textures/Clothing/Uniforms/Scrubs/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Scrubs/blue.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Scrubs/green.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Scrubs/green.rsi/meta.json index 6a86edc4ec..4b10de708e 100644 --- a/Resources/Textures/Clothing/Uniforms/Scrubs/green.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Scrubs/green.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Clothing/Uniforms/Scrubs/purple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Scrubs/purple.rsi/meta.json index 6a86edc4ec..4b10de708e 100644 --- a/Resources/Textures/Clothing/Uniforms/Scrubs/purple.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Scrubs/purple.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-INNERCLOTHING", diff --git a/Resources/Textures/Constructible/Atmos/canister.rsi/meta.json b/Resources/Textures/Constructible/Atmos/canister.rsi/meta.json index 1ed2f81b91..a0531e33d0 100644 --- a/Resources/Textures/Constructible/Atmos/canister.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/canister.rsi/meta.json @@ -8,28 +8,22 @@ }, "states": [ { - "name": "black", - "directions": 1 + "name": "black" }, { - "name": "black-1", - "directions": 1 + "name": "black-1" }, { - "name": "blue", - "directions": 1 + "name": "blue" }, { - "name": "blue-1", - "directions": 1 + "name": "blue-1" }, { - "name": "can-connector", - "directions": 1 + "name": "can-connector" }, { "name": "can-o0", - "directions": 1, "delays": [ [ 0.2, @@ -38,96 +32,73 @@ ] }, { - "name": "can-o1", - "directions": 1 + "name": "can-o1" }, { - "name": "can-o2", - "directions": 1 + "name": "can-o2" }, { - "name": "can-o3", - "directions": 1 + "name": "can-o3" }, { - "name": "can-oa1", - "directions": 1 + "name": "can-oa1" }, { - "name": "can-open", - "directions": 1 + "name": "can-open" }, { - "name": "grey", - "directions": 1 + "name": "grey" }, { - "name": "grey-1", - "directions": 1 + "name": "grey-1" }, { - "name": "orange", - "directions": 1 + "name": "orange" }, { - "name": "orange-1", - "directions": 1 + "name": "orange-1" }, { - "name": "red", - "directions": 1 + "name": "red" }, { - "name": "red-1", - "directions": 1 + "name": "red-1" }, { - "name": "redws", - "directions": 1 + "name": "redws" }, { - "name": "redws-1", - "directions": 1 + "name": "redws-1" }, { - "name": "yellow", - "directions": 1 + "name": "yellow" }, { - "name": "yellow-1", - "directions": 1 + "name": "yellow-1" }, { - "name": "green", - "directions": 1 + "name": "green" }, { - "name": "green-1", - "directions": 1 + "name": "green-1" }, { - "name": "darkblue", - "directions": 1 + "name": "darkblue" }, { - "name": "darkblue-1", - "directions": 1 + "name": "darkblue-1" }, { - "name": "freon", - "directions": 1 + "name": "freon" }, { - "name": "freon-1", - "directions": 1 + "name": "freon-1" }, { - "name": "water_vapor", - "directions": 1 + "name": "water_vapor" }, { - "name": "water_vapor-1", - "directions": 1 + "name": "water_vapor-1" } ] } diff --git a/Resources/Textures/Constructible/Carpets/black_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/black_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/black_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/black_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Carpets/blue_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/blue_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/blue_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/blue_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Carpets/gay_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/gay_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/gay_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/gay_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Carpets/green_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/green_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/green_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/green_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Carpets/orange_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/orange_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/orange_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/orange_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Carpets/purple_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/purple_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/purple_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/purple_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Carpets/red_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/red_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/red_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/red_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Carpets/skyblue_carpet.rsi/meta.json b/Resources/Textures/Constructible/Carpets/skyblue_carpet.rsi/meta.json index 5490ce510e..15f1cbb81c 100644 --- a/Resources/Textures/Constructible/Carpets/skyblue_carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Carpets/skyblue_carpet.rsi/meta.json @@ -8,57 +8,38 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "carpet_0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "carpet_7", - "select": [], - "flags": {}, "directions": 4 } ] diff --git a/Resources/Textures/Constructible/Hydroponics/hydro_tools.rsi/meta.json b/Resources/Textures/Constructible/Hydroponics/hydro_tools.rsi/meta.json index a7f175b169..7c0496334f 100644 --- a/Resources/Textures/Constructible/Hydroponics/hydro_tools.rsi/meta.json +++ b/Resources/Textures/Constructible/Hydroponics/hydro_tools.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "claypot", "directions": 1, "delays": [[1.0]]}, {"name": "claypot-item", "directions": 1, "delays": [[1.0]]}, {"name": "claypot-large", "directions": 1, "delays": [[1.0]]}, {"name": "cyan", "directions": 1, "delays": [[1.0]]}, {"name": "cyan black stripe", "directions": 1, "delays": [[1.0]]}, {"name": "cyan blue stripe", "directions": 1, "delays": [[1.0]]}, {"name": "cyan lime stripe", "directions": 1, "delays": [[1.0]]}, {"name": "cyan purple stripe", "directions": 1, "delays": [[1.0]]}, {"name": "cyan red stripe", "directions": 1, "delays": [[1.0]]}, {"name": "cyan white stripe", "directions": 1, "delays": [[1.0]]}, {"name": "cyan yellow stripe", "directions": 1, "delays": [[1.0]]}, {"name": "deathspray", "directions": 1, "delays": [[1.0]]}, {"name": "disk", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "green black stripe", "directions": 1, "delays": [[1.0]]}, {"name": "green blue stripe", "directions": 1, "delays": [[1.0]]}, {"name": "green lime stripe", "directions": 1, "delays": [[1.0]]}, {"name": "green purple stripe", "directions": 1, "delays": [[1.0]]}, {"name": "green red stripe", "directions": 1, "delays": [[1.0]]}, {"name": "green white stripe", "directions": 1, "delays": [[1.0]]}, {"name": "green yellow stripe", "directions": 1, "delays": [[1.0]]}, {"name": "hydrocover", "directions": 1, "delays": [[1.0]]}, {"name": "hydrotray", "directions": 1, "delays": [[1.0]]}, {"name": "hydrotray2", "directions": 1, "delays": [[1.0]]}, {"name": "hydrotray3", "directions": 1, "delays": [[1.0]]}, {"name": "moldcreep0", "directions": 1, "delays": [[1.0]]}, {"name": "moldcreep1", "directions": 1, "delays": [[1.0]]}, {"name": "moldcreep2", "directions": 1, "delays": [[1.0]]}, {"name": "nolabelspray", "directions": 1, "delays": [[1.0]]}, {"name": "over_alert3", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_harvest3", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_lowhealth3", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_lownutri", "directions": 1, "delays": [[1.0]]}, {"name": "over_lownutri3", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_lowwater3", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "pestspray", "directions": 1, "delays": [[1.0]]}, {"name": "plantbag", "directions": 1, "delays": [[1.0]]}, {"name": "plantbgone", "directions": 1, "delays": [[1.0]]}, {"name": "portaseeder", "directions": 1, "delays": [[1.0]]}, {"name": "seedbag", "directions": 1, "delays": [[1.0]]}, {"name": "sextractor", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "soil", "directions": 1, "delays": [[1.0]]}, {"name": "spaceworms", "directions": 1, "delays": [[0.4, 0.4, 0.4, 0.4]]}, {"name": "spawner", "directions": 1, "delays": [[1.0]]}, {"name": "sprayparts", "directions": 1, "delays": [[1.0]]}, {"name": "traitcopier", "directions": 1, "delays": [[1.0]]}, {"name": "traitgun", "directions": 1, "delays": [[1.0]]}, {"name": "traitscanner", "directions": 1, "delays": [[1.0]]}, {"name": "vine_flowers", "directions": 1, "delays": [[1.0]]}, {"name": "vine_fruit", "directions": 1, "delays": [[1.0]]}, {"name": "weedspray", "directions": 1, "delays": [[1.0]]}, {"name": "scythe", "directions": 1, "delays": [[1.0]]}, {"name": "hoe", "directions": 1, "delays": [[1.0]]}, {"name": "hatchet", "directions": 1, "delays": [[1.0]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "claypot", "delays": [[1.0]]}, {"name": "claypot-item", "delays": [[1.0]]}, {"name": "claypot-large", "delays": [[1.0]]}, {"name": "cyan", "delays": [[1.0]]}, {"name": "cyan black stripe", "delays": [[1.0]]}, {"name": "cyan blue stripe", "delays": [[1.0]]}, {"name": "cyan lime stripe", "delays": [[1.0]]}, {"name": "cyan purple stripe", "delays": [[1.0]]}, {"name": "cyan red stripe", "delays": [[1.0]]}, {"name": "cyan white stripe", "delays": [[1.0]]}, {"name": "cyan yellow stripe", "delays": [[1.0]]}, {"name": "deathspray", "delays": [[1.0]]}, {"name": "disk", "delays": [[0.1, 0.1, 0.1]]}, {"name": "green black stripe", "delays": [[1.0]]}, {"name": "green blue stripe", "delays": [[1.0]]}, {"name": "green lime stripe", "delays": [[1.0]]}, {"name": "green purple stripe", "delays": [[1.0]]}, {"name": "green red stripe", "delays": [[1.0]]}, {"name": "green white stripe", "delays": [[1.0]]}, {"name": "green yellow stripe", "delays": [[1.0]]}, {"name": "hydrocover", "delays": [[1.0]]}, {"name": "hydrotray", "delays": [[1.0]]}, {"name": "hydrotray2", "delays": [[1.0]]}, {"name": "hydrotray3", "delays": [[1.0]]}, {"name": "moldcreep0", "delays": [[1.0]]}, {"name": "moldcreep1", "delays": [[1.0]]}, {"name": "moldcreep2", "delays": [[1.0]]}, {"name": "nolabelspray", "delays": [[1.0]]}, {"name": "over_alert3", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_harvest3", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_lowhealth3", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_lownutri", "delays": [[1.0]]}, {"name": "over_lownutri3", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "over_lowwater3", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "pestspray", "delays": [[1.0]]}, {"name": "plantbag", "delays": [[1.0]]}, {"name": "plantbgone", "delays": [[1.0]]}, {"name": "portaseeder", "delays": [[1.0]]}, {"name": "seedbag", "delays": [[1.0]]}, {"name": "sextractor", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "soil", "delays": [[1.0]]}, {"name": "spaceworms", "delays": [[0.4, 0.4, 0.4, 0.4]]}, {"name": "spawner", "delays": [[1.0]]}, {"name": "sprayparts", "delays": [[1.0]]}, {"name": "traitcopier", "delays": [[1.0]]}, {"name": "traitgun", "delays": [[1.0]]}, {"name": "traitscanner", "delays": [[1.0]]}, {"name": "vine_flowers", "delays": [[1.0]]}, {"name": "vine_fruit", "delays": [[1.0]]}, {"name": "weedspray", "delays": [[1.0]]}, {"name": "scythe", "delays": [[1.0]]}, {"name": "hoe", "delays": [[1.0]]}, {"name": "hatchet", "delays": [[1.0]]}]} diff --git a/Resources/Textures/Constructible/Misc/barsign.rsi/meta.json b/Resources/Textures/Constructible/Misc/barsign.rsi/meta.json index 764787ab0f..93bb0f2cf1 100644 --- a/Resources/Textures/Constructible/Misc/barsign.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/barsign.rsi/meta.json @@ -10,7 +10,6 @@ "states": [ { "name": "combocafe", - "directions": 1, "delays": [ [ 0.1, @@ -34,7 +33,6 @@ }, { "name": "thewiggleroom", - "directions": 1, "delays": [ [ 0.4, @@ -46,7 +44,6 @@ }, { "name": "thesun", - "directions": 1, "delays": [ [ 0.1, @@ -62,7 +59,6 @@ }, { "name": "lv426", - "directions": 1, "delays": [ [ 1, @@ -72,7 +68,6 @@ }, { "name": "birdcage", - "directions": 1, "delays": [ [ 0.4, @@ -82,7 +77,6 @@ }, { "name": "zocalo", - "directions": 1, "delays": [ [ 1, @@ -92,7 +86,6 @@ }, { "name": "emergencyrumparty", - "directions": 1, "delays": [ [ 1, @@ -108,7 +101,6 @@ }, { "name": "empbarsign", - "directions": 1, "delays": [ [ 0.1, @@ -168,7 +160,6 @@ }, { "name": "empty", - "directions": 1, "delays": [ [ 1 @@ -177,7 +168,6 @@ }, { "name": "goose", - "directions": 1, "delays": [ [ 0.5, @@ -197,7 +187,6 @@ }, { "name": "maidcafe", - "directions": 1, "delays": [ [ 1, @@ -221,7 +210,6 @@ }, { "name": "officerbeersky", - "directions": 1, "delays": [ [ 3, @@ -238,7 +226,6 @@ }, { "name": "the_lightbulb", - "directions": 1, "delays": [ [ 0.3, @@ -260,7 +247,6 @@ }, { "name": "thealenath", - "directions": 1, "delays": [ [ 1.8, @@ -295,7 +281,6 @@ }, { "name": "thecoderbus", - "directions": 1, "delays": [ [ 2.5, @@ -305,7 +290,6 @@ }, { "name": "thedrunkcarp", - "directions": 1, "delays": [ [ 0.5, @@ -321,7 +305,6 @@ }, { "name": "theharmbaton", - "directions": 1, "delays": [ [ 3, @@ -338,7 +321,6 @@ }, { "name": "thenet", - "directions": 1, "delays": [ [ 0.1, @@ -406,7 +388,6 @@ }, { "name": "theouterspess", - "directions": 1, "delays": [ [ 1, @@ -416,7 +397,6 @@ }, { "name": "emprah", - "directions": 1, "delays": [ [ 1, @@ -426,7 +406,6 @@ }, { "name": "thesingulo", - "directions": 1, "delays": [ [ 0.1, @@ -442,7 +421,6 @@ }, { "name": "robustacafe", - "directions": 1, "delays": [ [ 1.8, @@ -469,7 +447,6 @@ }, { "name": "maltesefalcon", - "directions": 1, "delays": [ [ 3.8, @@ -485,7 +462,6 @@ }, { "name": "thewretchedhive", - "directions": 1, "delays": [ [ 0.4, @@ -509,7 +485,6 @@ }, { "name": "enginechange", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Constructible/Misc/bookshelf.rsi/meta.json b/Resources/Textures/Constructible/Misc/bookshelf.rsi/meta.json index 45314d7ee0..948cf6fa3c 100644 --- a/Resources/Textures/Constructible/Misc/bookshelf.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/bookshelf.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "book-0", - "directions": 1, "delays": [ [ 1.0 @@ -18,7 +17,6 @@ }, { "name": "book-1", - "directions": 1, "delays": [ [ 1.0 @@ -27,7 +25,6 @@ }, { "name": "book-2", - "directions": 1, "delays": [ [ 1.0 @@ -36,7 +33,6 @@ }, { "name": "book-3", - "directions": 1, "delays": [ [ 1.0 @@ -45,7 +41,6 @@ }, { "name": "book-4", - "directions": 1, "delays": [ [ 1.0 @@ -54,7 +49,6 @@ }, { "name": "book-5", - "directions": 1, "delays": [ [ 1.0 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/meta.json b/Resources/Textures/Constructible/Misc/crayondecals.rsi/meta.json index 34393fefea..2f35a33945 100644 --- a/Resources/Textures/Constructible/Misc/crayondecals.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/crayondecals.rsi/meta.json @@ -9,1200 +9,535 @@ "states": [ { "name": "0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "4", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "5", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "6", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "7", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "8", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "9", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Blasto", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Clandestine", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Cyber", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Diablo", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Donk", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Gene", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Gib", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Max", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Newton", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "North", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Omni", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Osiron", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Prima", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Psyke", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Sirius", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Sleeping Carp", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Tunnel", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Waffle", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Zero-G", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "a", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "ampersand", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "amyjon", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "antilizard", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "arrow", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "b", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "beepsky", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "biohazard", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "blueprint", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "body", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "bottle", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "brush", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "c", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "carp", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "cat", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "chevron", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "clawprint", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "clown", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "comma", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "corgi", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "credit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "cyka", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "d", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "danger", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "disk", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "dot", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "dwarf", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "e", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "electricdanger", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "end", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "engie", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "equals", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "evac", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "exclamationmark", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "f", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "face", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "fireaxe", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "firedanger", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "food", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "footprint", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "g", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "ghost", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "guy", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "h", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "heart", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "i", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "j", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "k", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "largebrush", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "like", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "line", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "matt", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "med", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "minus", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "n", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "nay", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "o", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "p", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "pawprint", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "peace", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "percent", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "plus", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "pound", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "prolizard", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "q", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "questionmark", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "r", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "radiation", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "revolution", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rune1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rune2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rune3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rune4", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rune5", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rune6", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "s", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "safe", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "scroll", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shop", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shortline", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shotgun", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "skull", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "slash", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "smallbrush", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "snake", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "space", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "splatter", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "star", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "stickman", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "t", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "taser", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "thinline", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "toilet", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "toolbox", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "trade", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "u", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "uboa", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "v", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "w", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "x", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "y", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "z", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Constructible/Misc/decals.rsi/meta.json b/Resources/Textures/Constructible/Misc/decals.rsi/meta.json index c411301312..353e0d413d 100644 --- a/Resources/Textures/Constructible/Misc/decals.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/decals.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "ai", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "anomaly", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "armory", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "ass", - "directions": 1, "delays": [ [ 1 @@ -45,7 +41,6 @@ }, { "name": "atmos", - "directions": 1, "delays": [ [ 1 @@ -54,7 +49,6 @@ }, { "name": "atmos_air", - "directions": 1, "delays": [ [ 1 @@ -63,7 +57,6 @@ }, { "name": "atmos_co2", - "directions": 1, "delays": [ [ 1 @@ -72,7 +65,6 @@ }, { "name": "atmos_n2", - "directions": 1, "delays": [ [ 1 @@ -81,7 +73,6 @@ }, { "name": "atmos_n2o", - "directions": 1, "delays": [ [ 1 @@ -90,7 +81,6 @@ }, { "name": "atmos_o2", - "directions": 1, "delays": [ [ 1 @@ -99,7 +89,6 @@ }, { "name": "atmos_phoron", - "directions": 1, "delays": [ [ 1 @@ -108,7 +97,6 @@ }, { "name": "atmos_waste", - "directions": 1, "delays": [ [ 1 @@ -117,7 +105,6 @@ }, { "name": "atmosplaque", - "directions": 1, "delays": [ [ 1 @@ -126,7 +113,6 @@ }, { "name": "zumosplaque", - "directions": 1, "delays": [ [ 1 @@ -135,7 +121,6 @@ }, { "name": "bar", - "directions": 1, "delays": [ [ 1 @@ -144,7 +129,6 @@ }, { "name": "biblio", - "directions": 1, "delays": [ [ 1 @@ -153,7 +137,6 @@ }, { "name": "bio", - "directions": 1, "delays": [ [ 1 @@ -162,7 +145,6 @@ }, { "name": "biohazard", - "directions": 1, "delays": [ [ 1 @@ -171,7 +153,6 @@ }, { "name": "bridge", - "directions": 1, "delays": [ [ 1 @@ -180,7 +161,6 @@ }, { "name": "canisters", - "directions": 1, "delays": [ [ 1 @@ -189,7 +169,6 @@ }, { "name": "cargo", - "directions": 1, "delays": [ [ 1 @@ -198,7 +177,6 @@ }, { "name": "cargo_dock", - "directions": 1, "delays": [ [ 1 @@ -207,7 +185,6 @@ }, { "name": "chapel", - "directions": 1, "delays": [ [ 1 @@ -216,7 +193,6 @@ }, { "name": "chem", - "directions": 1, "delays": [ [ 1 @@ -225,7 +201,6 @@ }, { "name": "chemistry1", - "directions": 1, "delays": [ [ 1 @@ -234,7 +209,6 @@ }, { "name": "chemistry2", - "directions": 1, "delays": [ [ 1 @@ -243,7 +217,6 @@ }, { "name": "commander", - "directions": 1, "delays": [ [ 1 @@ -252,7 +225,6 @@ }, { "name": "conference_room", - "directions": 1, "delays": [ [ 1 @@ -261,7 +233,6 @@ }, { "name": "corrosives", - "directions": 1, "delays": [ [ 1 @@ -270,7 +241,6 @@ }, { "name": "cryogenics", - "directions": 1, "delays": [ [ 1 @@ -279,7 +249,6 @@ }, { "name": "danger", - "directions": 1, "delays": [ [ 1 @@ -288,7 +257,6 @@ }, { "name": "deathsposal", - "directions": 1, "delays": [ [ 1 @@ -423,7 +391,6 @@ }, { "name": "dock", - "directions": 1, "delays": [ [ 1 @@ -432,7 +399,6 @@ }, { "name": "doors", - "directions": 1, "delays": [ [ 1 @@ -441,7 +407,6 @@ }, { "name": "drones", - "directions": 1, "delays": [ [ 1 @@ -450,7 +415,6 @@ }, { "name": "electrical", - "directions": 1, "delays": [ [ 1 @@ -459,7 +423,6 @@ }, { "name": "eng", - "directions": 1, "delays": [ [ 1 @@ -468,7 +431,6 @@ }, { "name": "engine", - "directions": 1, "delays": [ [ 1 @@ -477,7 +439,6 @@ }, { "name": "eva", - "directions": 1, "delays": [ [ 1 @@ -486,7 +447,6 @@ }, { "name": "examroom", - "directions": 1, "delays": [ [ 1 @@ -495,7 +455,6 @@ }, { "name": "explosives", - "directions": 1, "delays": [ [ 1 @@ -504,7 +463,6 @@ }, { "name": "fire", - "directions": 1, "delays": [ [ 1 @@ -513,7 +471,6 @@ }, { "name": "flammable", - "directions": 1, "delays": [ [ 1 @@ -522,7 +479,6 @@ }, { "name": "cloning", - "directions": 1, "delays": [ [ 1 @@ -531,7 +487,6 @@ }, { "name": "gravi", - "directions": 1, "delays": [ [ 1 @@ -540,7 +495,6 @@ }, { "name": "hydro1", - "directions": 1, "delays": [ [ 1 @@ -549,7 +503,6 @@ }, { "name": "hydro2", - "directions": 1, "delays": [ [ 1 @@ -558,7 +511,6 @@ }, { "name": "hydro3", - "directions": 1, "delays": [ [ 1 @@ -567,7 +519,6 @@ }, { "name": "interrogation", - "directions": 1, "delays": [ [ 1 @@ -576,7 +527,6 @@ }, { "name": "laser", - "directions": 1, "delays": [ [ 1 @@ -585,7 +535,6 @@ }, { "name": "magnetics", - "directions": 1, "delays": [ [ 1 @@ -594,7 +543,6 @@ }, { "name": "mail", - "directions": 1, "delays": [ [ 1 @@ -603,7 +551,6 @@ }, { "name": "medbay", - "directions": 1, "delays": [ [ 1 @@ -612,7 +559,6 @@ }, { "name": "memetic", - "directions": 1, "delays": [ [ 1 @@ -621,7 +567,6 @@ }, { "name": "miner_dock", - "directions": 1, "delays": [ [ 1 @@ -630,7 +575,6 @@ }, { "name": "monkey_painting", - "directions": 1, "delays": [ [ 1 @@ -639,7 +583,6 @@ }, { "name": "morgue", - "directions": 1, "delays": [ [ 1 @@ -648,7 +591,6 @@ }, { "name": "nosmoking", - "directions": 1, "delays": [ [ 1 @@ -657,7 +599,6 @@ }, { "name": "nosmoking2", - "directions": 1, "delays": [ [ 1 @@ -666,7 +607,6 @@ }, { "name": "surgery", - "directions": 1, "delays": [ [ 1 @@ -675,7 +615,6 @@ }, { "name": "optical", - "directions": 1, "delays": [ [ 1 @@ -684,7 +623,6 @@ }, { "name": "oxidants", - "directions": 1, "delays": [ [ 1 @@ -693,7 +631,6 @@ }, { "name": "pods", - "directions": 1, "delays": [ [ 1 @@ -702,7 +639,6 @@ }, { "name": "prison", - "directions": 1, "delays": [ [ 1 @@ -711,7 +647,6 @@ }, { "name": "radiation", - "directions": 1, "delays": [ [ 1 @@ -720,7 +655,6 @@ }, { "name": "rnd", - "directions": 1, "delays": [ [ 1 @@ -729,7 +663,6 @@ }, { "name": "robo", - "directions": 1, "delays": [ [ 1 @@ -738,7 +671,6 @@ }, { "name": "sci", - "directions": 1, "delays": [ [ 1 @@ -747,7 +679,6 @@ }, { "name": "science1", - "directions": 1, "delays": [ [ 1 @@ -756,7 +687,6 @@ }, { "name": "science2", - "directions": 1, "delays": [ [ 1 @@ -765,7 +695,6 @@ }, { "name": "secure", - "directions": 1, "delays": [ [ 1 @@ -774,7 +703,6 @@ }, { "name": "securearea", - "directions": 1, "delays": [ [ 1 @@ -783,7 +711,6 @@ }, { "name": "shield", - "directions": 1, "delays": [ [ 1 @@ -792,7 +719,6 @@ }, { "name": "shock", - "directions": 1, "delays": [ [ 1 @@ -801,7 +727,6 @@ }, { "name": "something-old1", - "directions": 1, "delays": [ [ 1 @@ -810,7 +735,6 @@ }, { "name": "something-old2", - "directions": 1, "delays": [ [ 1 @@ -819,7 +743,6 @@ }, { "name": "space", - "directions": 1, "delays": [ [ 1 @@ -828,7 +751,6 @@ }, { "name": "telecoms", - "directions": 1, "delays": [ [ 1 @@ -837,7 +759,6 @@ }, { "name": "toxin_res", - "directions": 1, "delays": [ [ 1 @@ -846,7 +767,6 @@ }, { "name": "toxins", - "directions": 1, "delays": [ [ 1 @@ -855,7 +775,6 @@ }, { "name": "virology", - "directions": 1, "delays": [ [ 1 @@ -864,7 +783,6 @@ }, { "name": "xenobio", - "directions": 1, "delays": [ [ 1 @@ -873,7 +791,6 @@ }, { "name": "xenobio2", - "directions": 1, "delays": [ [ 1 @@ -882,7 +799,6 @@ }, { "name": "xenolab", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Misc/extinguisher_cabinet.rsi/meta.json b/Resources/Textures/Constructible/Misc/extinguisher_cabinet.rsi/meta.json index f27ae0220e..ea99c1e06e 100644 --- a/Resources/Textures/Constructible/Misc/extinguisher_cabinet.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/extinguisher_cabinet.rsi/meta.json @@ -9,39 +9,19 @@ "states": [ { "name": "extinguisher_closed", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "extinguisher_empty", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "extinguisher_full", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "extinguisher_mini", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Misc/furniture.rsi/meta.json b/Resources/Textures/Constructible/Misc/furniture.rsi/meta.json index 353a5c697a..dfe717092d 100644 --- a/Resources/Textures/Constructible/Misc/furniture.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/furniture.rsi/meta.json @@ -61,7 +61,6 @@ }, { "name": "bar_stool", - "directions": 1, "delays": [ [ 1 @@ -70,7 +69,6 @@ }, { "name": "bed", - "directions": 1, "delays": [ [ 1 @@ -259,7 +257,6 @@ }, { "name": "psychbed", - "directions": 1, "delays": [ [ 1 @@ -268,7 +265,6 @@ }, { "name": "psychbed_padding", - "directions": 1, "delays": [ [ 1 @@ -295,7 +291,6 @@ }, { "name": "stool_base", - "directions": 1, "delays": [ [ 1 @@ -304,7 +299,6 @@ }, { "name": "stool_padded_preview", - "directions": 1, "delays": [ [ 1 @@ -313,7 +307,6 @@ }, { "name": "stool_padding", - "directions": 1, "delays": [ [ 1 @@ -322,7 +315,6 @@ }, { "name": "stool_preview", - "directions": 1, "delays": [ [ 1 @@ -421,7 +413,6 @@ }, { "name": "shelf", - "directions": 1, "delays": [ [ 1 @@ -430,7 +421,6 @@ }, { "name": "rack", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Misc/mirror.rsi/meta.json b/Resources/Textures/Constructible/Misc/mirror.rsi/meta.json index fc8db81682..bd18defd6b 100644 --- a/Resources/Textures/Constructible/Misc/mirror.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/mirror.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "mirror", "directions": 1, "delays": [[1.0]]}, {"name": "mirror_broke", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "mirror", "delays": [[1.0]]}, {"name": "mirror_broke", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Misc/module.rsi/meta.json b/Resources/Textures/Constructible/Misc/module.rsi/meta.json index e253c76bfc..b6372efd1d 100644 --- a/Resources/Textures/Constructible/Misc/module.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/module.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0", "states": [{"name": "abductor_mod", "directions": 1, "delays": [[1.0]]}, {"name": "airalarm_electronics", "directions": 1, "delays": [[1.0]]}, {"name": "ash_plating", "directions": 1, "delays": [[1.0]]}, {"name": "beaker_holder", "directions": 1, "delays": [[1.0]]}, {"name": "blank_mod", "directions": 1, "delays": [[1.0]]}, {"name": "bluespacearray", "directions": 1, "delays": [[1.0]]}, {"name": "boris", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "boris_recharging", "directions": 1, "delays": [[1.0, 1.0]]}, {"name": "card_mini", "directions": 1, "delays": [[1.0]]}, {"name": "card_mod", "directions": 1, "delays": [[1.0]]}, {"name": "cargodisk", "directions": 1, "delays": [[1.0]]}, {"name": "cart_connector", "directions": 1, "delays": [[1.0]]}, {"name": "cddrive", "directions": 1, "delays": [[1.0]]}, {"name": "cell", "directions": 1, "delays": [[1.0]]}, {"name": "cell_con", "directions": 1, "delays": [[1.0]]}, {"name": "cell_con_micro", "directions": 1, "delays": [[1.0]]}, {"name": "cell_micro", "directions": 1, "delays": [[1.0]]}, {"name": "cell_mini", "directions": 1, "delays": [[1.0]]}, {"name": "charger_APC", "directions": 1, "delays": [[1.0]]}, {"name": "charger_lambda", "directions": 1, "delays": [[1.0]]}, {"name": "charger_pda", "directions": 1, "delays": [[1.0]]}, {"name": "charger_wire", "directions": 1, "delays": [[1.0]]}, {"name": "clock_mod", "directions": 1, "delays": [[0.6, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "command", "directions": 1, "delays": [[1.0]]}, {"name": "cpu", "directions": 1, "delays": [[1.0]]}, {"name": "cpu_adv", "directions": 1, "delays": [[1.0]]}, {"name": "cpu_super", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "cpuboard", "directions": 1, "delays": [[1.0]]}, {"name": "cpuboard_adv", "directions": 1, "delays": [[1.0]]}, {"name": "cpuboard_super", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "cyborg_upgrade", "directions": 1, "delays": [[1.0]]}, {"name": "cyborg_upgrade1", "directions": 1, "delays": [[1.0]]}, {"name": "cyborg_upgrade2", "directions": 1, "delays": [[1.0]]}, {"name": "cyborg_upgrade3", "directions": 1, "delays": [[1.0]]}, {"name": "cyborg_upgrade4", "directions": 1, "delays": [[1.0]]}, {"name": "cyborg_upgrade5", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk0", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk1", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk2", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk3", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk4", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk5", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk6", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk_gene", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk_hydro", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "depositbox", "directions": 1, "delays": [[1.0]]}, {"name": "door_electronics", "directions": 1, "delays": [[1.0]]}, {"name": "engineering", "directions": 1, "delays": [[1.0]]}, {"name": "flopdrive", "directions": 1, "delays": [[1.0]]}, {"name": "generic", "directions": 1, "delays": [[1.0]]}, {"name": "harddisk", "directions": 1, "delays": [[1.0]]}, {"name": "harddisk_micro", "directions": 1, "delays": [[1.0]]}, {"name": "harddisk_mini", "directions": 1, "delays": [[1.0]]}, {"name": "holodisk", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "id_mod", "directions": 1, "delays": [[1.0]]}, {"name": "mainboard", "directions": 1, "delays": [[1.0]]}, {"name": "mcontroller", "directions": 1, "delays": [[1.0]]}, {"name": "medical", "directions": 1, "delays": [[1.0]]}, {"name": "net_wired", "directions": 1, "delays": [[1.0]]}, {"name": "nucleardisk", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "power_mod", "directions": 1, "delays": [[1.0]]}, {"name": "printer", "directions": 1, "delays": [[1.0]]}, {"name": "printer_mini", "directions": 1, "delays": [[1.0]]}, {"name": "prizevendor", "directions": 1, "delays": [[1.0]]}, {"name": "radio", "directions": 1, "delays": [[1.0]]}, {"name": "radio_micro", "directions": 1, "delays": [[1.0]]}, {"name": "radio_mini", "directions": 1, "delays": [[1.0]]}, {"name": "ram", "directions": 1, "delays": [[1.0]]}, {"name": "rndmajordisk", "directions": 1, "delays": [[1.0]]}, {"name": "science", "directions": 1, "delays": [[1.0]]}, {"name": "secmodschematic", "directions": 1, "delays": [[1.0]]}, {"name": "security", "directions": 1, "delays": [[1.0]]}, {"name": "selfrepair_off", "directions": 1, "delays": [[1.0]]}, {"name": "selfrepair_on", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "service", "directions": 1, "delays": [[1.0]]}, {"name": "servo", "directions": 1, "delays": [[1.0]]}, {"name": "ssd", "directions": 1, "delays": [[1.0]]}, {"name": "ssd_large", "directions": 1, "delays": [[1.0]]}, {"name": "ssd_micro", "directions": 1, "delays": [[1.0]]}, {"name": "ssd_mini", "directions": 1, "delays": [[1.0]]}, {"name": "std_mod", "directions": 1, "delays": [[1.0]]}, {"name": "supply", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0", "states": [{"name": "abductor_mod", "delays": [[1.0]]}, {"name": "airalarm_electronics", "delays": [[1.0]]}, {"name": "ash_plating", "delays": [[1.0]]}, {"name": "beaker_holder", "delays": [[1.0]]}, {"name": "blank_mod", "delays": [[1.0]]}, {"name": "bluespacearray", "delays": [[1.0]]}, {"name": "boris", "delays": [[0.1, 0.1]]}, {"name": "boris_recharging", "delays": [[1.0, 1.0]]}, {"name": "card_mini", "delays": [[1.0]]}, {"name": "card_mod", "delays": [[1.0]]}, {"name": "cargodisk", "delays": [[1.0]]}, {"name": "cart_connector", "delays": [[1.0]]}, {"name": "cddrive", "delays": [[1.0]]}, {"name": "cell", "delays": [[1.0]]}, {"name": "cell_con", "delays": [[1.0]]}, {"name": "cell_con_micro", "delays": [[1.0]]}, {"name": "cell_micro", "delays": [[1.0]]}, {"name": "cell_mini", "delays": [[1.0]]}, {"name": "charger_APC", "delays": [[1.0]]}, {"name": "charger_lambda", "delays": [[1.0]]}, {"name": "charger_pda", "delays": [[1.0]]}, {"name": "charger_wire", "delays": [[1.0]]}, {"name": "clock_mod", "delays": [[0.6, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "command", "delays": [[1.0]]}, {"name": "cpu", "delays": [[1.0]]}, {"name": "cpu_adv", "delays": [[1.0]]}, {"name": "cpu_super", "delays": [[0.1, 0.1]]}, {"name": "cpuboard", "delays": [[1.0]]}, {"name": "cpuboard_adv", "delays": [[1.0]]}, {"name": "cpuboard_super", "delays": [[0.1, 0.1]]}, {"name": "cyborg_upgrade", "delays": [[1.0]]}, {"name": "cyborg_upgrade1", "delays": [[1.0]]}, {"name": "cyborg_upgrade2", "delays": [[1.0]]}, {"name": "cyborg_upgrade3", "delays": [[1.0]]}, {"name": "cyborg_upgrade4", "delays": [[1.0]]}, {"name": "cyborg_upgrade5", "delays": [[1.0]]}, {"name": "datadisk0", "delays": [[1.0]]}, {"name": "datadisk1", "delays": [[1.0]]}, {"name": "datadisk2", "delays": [[1.0]]}, {"name": "datadisk3", "delays": [[1.0]]}, {"name": "datadisk4", "delays": [[1.0]]}, {"name": "datadisk5", "delays": [[1.0]]}, {"name": "datadisk6", "delays": [[1.0]]}, {"name": "datadisk_gene", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk_hydro", "delays": [[0.1, 0.1, 0.1]]}, {"name": "depositbox", "delays": [[1.0]]}, {"name": "door_electronics", "delays": [[1.0]]}, {"name": "engineering", "delays": [[1.0]]}, {"name": "flopdrive", "delays": [[1.0]]}, {"name": "generic", "delays": [[1.0]]}, {"name": "harddisk", "delays": [[1.0]]}, {"name": "harddisk_micro", "delays": [[1.0]]}, {"name": "harddisk_mini", "delays": [[1.0]]}, {"name": "holodisk", "delays": [[0.1, 0.1]]}, {"name": "id_mod", "delays": [[1.0]]}, {"name": "mainboard", "delays": [[1.0]]}, {"name": "mcontroller", "delays": [[1.0]]}, {"name": "medical", "delays": [[1.0]]}, {"name": "net_wired", "delays": [[1.0]]}, {"name": "nucleardisk", "delays": [[0.1, 0.1]]}, {"name": "power_mod", "delays": [[1.0]]}, {"name": "printer", "delays": [[1.0]]}, {"name": "printer_mini", "delays": [[1.0]]}, {"name": "prizevendor", "delays": [[1.0]]}, {"name": "radio", "delays": [[1.0]]}, {"name": "radio_micro", "delays": [[1.0]]}, {"name": "radio_mini", "delays": [[1.0]]}, {"name": "ram", "delays": [[1.0]]}, {"name": "rndmajordisk", "delays": [[1.0]]}, {"name": "science", "delays": [[1.0]]}, {"name": "secmodschematic", "delays": [[1.0]]}, {"name": "security", "delays": [[1.0]]}, {"name": "selfrepair_off", "delays": [[1.0]]}, {"name": "selfrepair_on", "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "service", "delays": [[1.0]]}, {"name": "servo", "delays": [[1.0]]}, {"name": "ssd", "delays": [[1.0]]}, {"name": "ssd_large", "delays": [[1.0]]}, {"name": "ssd_micro", "delays": [[1.0]]}, {"name": "ssd_mini", "delays": [[1.0]]}, {"name": "std_mod", "delays": [[1.0]]}, {"name": "supply", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Misc/potted_plants.rsi/meta.json b/Resources/Textures/Constructible/Misc/potted_plants.rsi/meta.json index f822214960..468bc7b304 100644 --- a/Resources/Textures/Constructible/Misc/potted_plants.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/potted_plants.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "random", - "directions": 1, "delays": [ [ 1.0 @@ -16,7 +15,6 @@ }, { "name": "applebush", - "directions": 1, "delays": [ [ 1.0 @@ -25,7 +23,6 @@ }, { "name": "plant-01", - "directions": 1, "delays": [ [ 1.0 @@ -34,7 +31,6 @@ }, { "name": "plant-02", - "directions": 1, "delays": [ [ 1.0 @@ -43,7 +39,6 @@ }, { "name": "plant-03", - "directions": 1, "delays": [ [ 1.0 @@ -52,7 +47,6 @@ }, { "name": "plant-04", - "directions": 1, "delays": [ [ 1.0 @@ -61,7 +55,6 @@ }, { "name": "plant-05", - "directions": 1, "delays": [ [ 1.0 @@ -70,7 +63,6 @@ }, { "name": "plant-06", - "directions": 1, "delays": [ [ 1.0 @@ -79,7 +71,6 @@ }, { "name": "plant-07", - "directions": 1, "delays": [ [ 1.0 @@ -88,7 +79,6 @@ }, { "name": "plant-08", - "directions": 1, "delays": [ [ 1.0 @@ -97,7 +87,6 @@ }, { "name": "plant-09", - "directions": 1, "delays": [ [ 1.0 @@ -106,7 +95,6 @@ }, { "name": "plant-10", - "directions": 1, "delays": [ [ 1.0 @@ -115,7 +103,6 @@ }, { "name": "plant-11", - "directions": 1, "delays": [ [ 1.0 @@ -124,7 +111,6 @@ }, { "name": "plant-12", - "directions": 1, "delays": [ [ 1.0 @@ -133,7 +119,6 @@ }, { "name": "plant-13", - "directions": 1, "delays": [ [ 1.0 @@ -142,7 +127,6 @@ }, { "name": "plant-14", - "directions": 1, "delays": [ [ 1.0 @@ -151,7 +135,6 @@ }, { "name": "plant-15", - "directions": 1, "delays": [ [ 1.0 @@ -160,7 +143,6 @@ }, { "name": "plant-16", - "directions": 1, "delays": [ [ 1.0 @@ -169,7 +151,6 @@ }, { "name": "plant-17", - "directions": 1, "delays": [ [ 1.0 @@ -178,7 +159,6 @@ }, { "name": "plant-18", - "directions": 1, "delays": [ [ 1.0 @@ -187,7 +167,6 @@ }, { "name": "plant-19", - "directions": 1, "delays": [ [ 1.0 @@ -196,7 +175,6 @@ }, { "name": "plant-20", - "directions": 1, "delays": [ [ 1.0 @@ -205,7 +183,6 @@ }, { "name": "plant-21", - "directions": 1, "delays": [ [ 1.0 @@ -214,7 +191,6 @@ }, { "name": "plant-22", - "directions": 1, "delays": [ [ 1.0 @@ -223,7 +199,6 @@ }, { "name": "plant-23", - "directions": 1, "delays": [ [ 1.0 @@ -232,7 +207,6 @@ }, { "name": "plant-24", - "directions": 1, "delays": [ [ 1.0 @@ -241,7 +215,6 @@ }, { "name": "plant-25", - "directions": 1, "delays": [ [ 1.0 @@ -250,7 +223,6 @@ }, { "name": "plant-26", - "directions": 1, "delays": [ [ 1.0 @@ -259,7 +231,6 @@ }, { "name": "plant-27", - "directions": 1, "delays": [ [ 1.0 @@ -268,7 +239,6 @@ }, { "name": "plant-28", - "directions": 1, "delays": [ [ 1.0 @@ -277,7 +247,6 @@ }, { "name": "plant-29", - "directions": 1, "delays": [ [ 1.0 diff --git a/Resources/Textures/Constructible/Misc/stock_parts.rsi/meta.json b/Resources/Textures/Constructible/Misc/stock_parts.rsi/meta.json index 474c1ebd28..ee66da7812 100644 --- a/Resources/Textures/Constructible/Misc/stock_parts.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/stock_parts.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0", "states": [{"name": "0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "4", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "adv_capacitor", "directions": 1, "delays": [[1.0]]}, {"name": "adv_electrolite", "directions": 1, "delays": [[0.13, 0.13]]}, {"name": "adv_scan_module", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "advanced_matter_bin", "directions": 1, "delays": [[1.0]]}, {"name": "ansible_crystal", "directions": 1, "delays": [[1.0]]}, {"name": "bluespace_electrolite", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "bluespace_matter_bin", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "box_0", "directions": 1, "delays": [[1.0]]}, {"name": "box_1", "directions": 1, "delays": [[1.0]]}, {"name": "box_2", "directions": 1, "delays": [[1.0]]}, {"name": "capacitor", "directions": 1, "delays": [[1.0]]}, {"name": "card_reader", "directions": 1, "delays": [[1.0]]}, {"name": "datadisk0", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk1", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk2", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk3", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk4", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk5", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk6", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "electrolite", "directions": 1, "delays": [[0.16, 0.16]]}, {"name": "femto_mani", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "hdd1", "directions": 1, "delays": [[1.0]]}, {"name": "hdd2", "directions": 1, "delays": [[1.0]]}, {"name": "high_micro_laser", "directions": 1, "delays": [[1.0]]}, {"name": "hyperwave_filter", "directions": 1, "delays": [[1.0]]}, {"name": "matter_bin", "directions": 1, "delays": [[1.0]]}, {"name": "micro_laser", "directions": 1, "delays": [[1.0]]}, {"name": "micro_mani", "directions": 1, "delays": [[1.0]]}, {"name": "nano_mani", "directions": 1, "delays": [[1.0]]}, {"name": "pico_mani", "directions": 1, "delays": [[1.0]]}, {"name": "quadratic_capacitor", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "quadultra_micro_laser", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "rom1", "directions": 1, "delays": [[1.0]]}, {"name": "rom2", "directions": 1, "delays": [[1.0]]}, {"name": "romos1", "directions": 1, "delays": [[1.0]]}, {"name": "romos2", "directions": 1, "delays": [[1.0]]}, {"name": "scan_module", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "subspace_amplifier", "directions": 1, "delays": [[0.2, 0.4, 0.2, 0.4]]}, {"name": "subspace_ansible", "directions": 1, "delays": [[1.0]]}, {"name": "subspace_transmitter", "directions": 1, "delays": [[1.0]]}, {"name": "super_capacitor", "directions": 1, "delays": [[1.0]]}, {"name": "super_electrolite", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "super_matter_bin", "directions": 1, "delays": [[1.0]]}, {"name": "super_scan_module", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "treatment_disk", "directions": 1, "delays": [[1.0]]}, {"name": "triphasic_scan_module", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ultra_high_micro_laser", "directions": 1, "delays": [[1.0]]}, {"name": "vbox_0", "directions": 1, "delays": [[1.0]]}, {"name": "vbox_1", "directions": 1, "delays": [[1.0]]}, {"name": "vbox_2", "directions": 1, "delays": [[1.0]]}, {"name": "vbox_3", "directions": 1, "delays": [[1.0]]}, {"name": "wavelength_analyzer", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0", "states": [{"name": "0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "4", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "adv_capacitor", "delays": [[1.0]]}, {"name": "adv_electrolite", "delays": [[0.13, 0.13]]}, {"name": "adv_scan_module", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "advanced_matter_bin", "delays": [[1.0]]}, {"name": "ansible_crystal", "delays": [[1.0]]}, {"name": "bluespace_electrolite", "delays": [[0.1, 0.1]]}, {"name": "bluespace_matter_bin", "delays": [[0.1, 0.1]]}, {"name": "box_0", "delays": [[1.0]]}, {"name": "box_1", "delays": [[1.0]]}, {"name": "box_2", "delays": [[1.0]]}, {"name": "capacitor", "delays": [[1.0]]}, {"name": "card_reader", "delays": [[1.0]]}, {"name": "datadisk0", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk1", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk2", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk3", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk4", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk5", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk6", "delays": [[0.1, 0.1, 0.1]]}, {"name": "electrolite", "delays": [[0.16, 0.16]]}, {"name": "femto_mani", "delays": [[0.1, 0.1]]}, {"name": "hdd1", "delays": [[1.0]]}, {"name": "hdd2", "delays": [[1.0]]}, {"name": "high_micro_laser", "delays": [[1.0]]}, {"name": "hyperwave_filter", "delays": [[1.0]]}, {"name": "matter_bin", "delays": [[1.0]]}, {"name": "micro_laser", "delays": [[1.0]]}, {"name": "micro_mani", "delays": [[1.0]]}, {"name": "nano_mani", "delays": [[1.0]]}, {"name": "pico_mani", "delays": [[1.0]]}, {"name": "quadratic_capacitor", "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "quadultra_micro_laser", "delays": [[0.1, 0.1]]}, {"name": "rom1", "delays": [[1.0]]}, {"name": "rom2", "delays": [[1.0]]}, {"name": "romos1", "delays": [[1.0]]}, {"name": "romos2", "delays": [[1.0]]}, {"name": "scan_module", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "subspace_amplifier", "delays": [[0.2, 0.4, 0.2, 0.4]]}, {"name": "subspace_ansible", "delays": [[1.0]]}, {"name": "subspace_transmitter", "delays": [[1.0]]}, {"name": "super_capacitor", "delays": [[1.0]]}, {"name": "super_electrolite", "delays": [[0.1, 0.1]]}, {"name": "super_matter_bin", "delays": [[1.0]]}, {"name": "super_scan_module", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "treatment_disk", "delays": [[1.0]]}, {"name": "triphasic_scan_module", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ultra_high_micro_laser", "delays": [[1.0]]}, {"name": "vbox_0", "delays": [[1.0]]}, {"name": "vbox_1", "delays": [[1.0]]}, {"name": "vbox_2", "delays": [[1.0]]}, {"name": "vbox_3", "delays": [[1.0]]}, {"name": "wavelength_analyzer", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Misc/sylphs.rsi/meta.json b/Resources/Textures/Constructible/Misc/sylphs.rsi/meta.json index eeacdaf161..9bd7fc5a3a 100644 --- a/Resources/Textures/Constructible/Misc/sylphs.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/sylphs.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "sylph", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Misc/tanks.rsi/meta.json b/Resources/Textures/Constructible/Misc/tanks.rsi/meta.json index 9d8a0345cc..883bf68016 100644 --- a/Resources/Textures/Constructible/Misc/tanks.rsi/meta.json +++ b/Resources/Textures/Constructible/Misc/tanks.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "watertank", - "directions": 1, "delays": [ [ 1 @@ -16,7 +15,6 @@ }, { "name": "fueltank", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/control_box.rsi/meta.json index 1e22cb2d96..265538bb67 100644 --- a/Resources/Textures/Constructible/Power/PA/control_box.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/PA/control_box.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "control_box", "directions": 1, "delays": [[1.0]]},{"name": "control_boxc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_boxw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "control_box", "delays": [[1.0]]},{"name": "control_boxc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_boxw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/VendingMachines/boozeomat.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/boozeomat.rsi/meta.json index 88196b331c..340942d10d 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/boozeomat.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/boozeomat.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.2, @@ -29,7 +27,6 @@ }, { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 0.2, @@ -44,8 +41,7 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/cart.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/cart.rsi/meta.json index 07adf4e804..3f073d2b47 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/cart.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/cart.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -31,16 +28,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.5, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/chapel.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/chapel.rsi/meta.json index a097122ca1..01399c435f 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/chapel.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/chapel.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.05, @@ -49,7 +47,6 @@ }, { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 2.0, @@ -119,8 +116,7 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/cigs.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/cigs.rsi/meta.json index 29e93fb3ef..368ff80848 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/cigs.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/cigs.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -27,16 +24,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/coffee.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/coffee.rsi/meta.json index a6e22752ac..4ea385ba22 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/coffee.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/coffee.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -28,7 +25,6 @@ }, { "name": "hellfire", - "directions": 1, "delays": [ [ 0.25, @@ -38,16 +34,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "screen", - "directions": 1, "delays": [ [ 0.6, @@ -59,7 +52,6 @@ }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/cola.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/cola.rsi/meta.json index 89b9a58fa2..dd08f20d21 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/cola.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/cola.rsi/meta.json @@ -9,25 +9,14 @@ "states": [ { "name": "broken", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "normal", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.5, @@ -40,7 +29,6 @@ }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -50,16 +38,13 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/dinnerware.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/dinnerware.rsi/meta.json index d1f1da23c0..a1a4cfba89 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/dinnerware.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/dinnerware.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -30,12 +28,10 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/discount.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/discount.rsi/meta.json index ad5abb7d69..e1731ae274 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/discount.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/discount.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 4.0, @@ -23,8 +21,7 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/empty.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/empty.rsi/meta.json index 92aee55bb4..82487c99a9 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/empty.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/empty.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/engivend.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/engivend.rsi/meta.json index 52e45bdc98..ad6128228b 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/engivend.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/engivend.rsi/meta.json @@ -7,12 +7,10 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -26,7 +24,6 @@ }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -36,16 +33,13 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" } ], "version": 1 diff --git a/Resources/Textures/Constructible/Power/VendingMachines/hats.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/hats.rsi/meta.json index 96ad51b296..19725837ef 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/hats.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/hats.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 2.0, @@ -24,8 +22,7 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/magivend.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/magivend.rsi/meta.json index 92aee55bb4..82487c99a9 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/magivend.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/magivend.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/medical.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/medical.rsi/meta.json index 2798539692..275205a433 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/medical.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/medical.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -30,16 +27,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/mining.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/mining.rsi/meta.json index 0d0c8a222b..6bacc6bc49 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/mining.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/mining.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -22,12 +20,10 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/nutri.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/nutri.rsi/meta.json index 295f5467fa..915493755c 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/nutri.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/nutri.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { - "name": "deny-unshaded", - "directions": 1 + "name": "deny-unshaded" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 1.0, @@ -36,12 +33,10 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/robotics.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/robotics.rsi/meta.json index 74a652e3c4..a9eef5edc3 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/robotics.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/robotics.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -27,12 +25,10 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/sale.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/sale.rsi/meta.json index 67feef3131..53ea80e9ac 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/sale.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/sale.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "broken-unshaded", - "directions": 1, "delays": [ [ 1.0, @@ -25,7 +23,6 @@ }, { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 0.2, @@ -44,8 +41,7 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/sec.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/sec.rsi/meta.json index 2798539692..275205a433 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/sec.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/sec.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -30,16 +27,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/seeds.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/seeds.rsi/meta.json index b75062afcf..8a9cc9ce4c 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/seeds.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/seeds.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -30,12 +28,10 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/shoes.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/shoes.rsi/meta.json index aec9da4eaa..f6b8ff02d1 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/shoes.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/shoes.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 3.0, @@ -24,8 +22,7 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/smartfridge.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/smartfridge.rsi/meta.json index 92aee55bb4..82487c99a9 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/smartfridge.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/smartfridge.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/snack.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/snack.rsi/meta.json index cd0be6613e..116fe5799a 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/snack.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/snack.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 0.8, @@ -19,12 +18,10 @@ ] }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -34,16 +31,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/sovietsoda.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/sovietsoda.rsi/meta.json index f8c1c9f822..36fe024ae0 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/sovietsoda.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/sovietsoda.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.4, @@ -26,16 +23,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/suits.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/suits.rsi/meta.json index 66964fb02a..365a54db4e 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/suits.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/suits.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "normal-unshaded", - "directions": 1, "delays": [ [ 1.9, @@ -24,8 +22,7 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/theater.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/theater.rsi/meta.json index 4f791ae991..c6ac9a17eb 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/theater.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/theater.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -27,12 +24,10 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { "name": "screen", - "directions": 1, "delays": [ [ 3.0, @@ -41,12 +36,10 @@ ] }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/vendomat.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/vendomat.rsi/meta.json index 29e93fb3ef..368ff80848 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/vendomat.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/vendomat.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/commit/e107a20eb3e8def075a7d967dbf91426accabcbe", "states": [ { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -27,16 +24,13 @@ ] }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/VendingMachines/vox.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/vox.rsi/meta.json index 92aee55bb4..82487c99a9 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/vox.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/vox.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/wallmed.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/wallmed.rsi/meta.json index efebc20fb2..dbd2422646 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/wallmed.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/wallmed.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/a7290010020e541ed6b57817a07023ca6bef26fe", "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -32,12 +30,10 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" } ] } diff --git a/Resources/Textures/Constructible/Power/VendingMachines/youtool.rsi/meta.json b/Resources/Textures/Constructible/Power/VendingMachines/youtool.rsi/meta.json index 70d2bb6b55..92c7cc67bb 100644 --- a/Resources/Textures/Constructible/Power/VendingMachines/youtool.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/VendingMachines/youtool.rsi/meta.json @@ -8,12 +8,10 @@ "states": [ { - "name": "broken", - "directions": 1 + "name": "broken" }, { "name": "deny-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -27,7 +25,6 @@ }, { "name": "eject", - "directions": 1, "delays": [ [ 0.1, @@ -39,7 +36,6 @@ }, { "name": "eject-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -50,16 +46,13 @@ ] }, { - "name": "normal-unshaded", - "directions": 1 + "name": "normal-unshaded" }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "panel", - "directions": 1 + "name": "panel" } ], "version": 1 diff --git a/Resources/Textures/Constructible/Power/ame_controller.rsi/meta.json b/Resources/Textures/Constructible/Power/ame_controller.rsi/meta.json index 6bf6b7f12e..92dbb97139 100644 --- a/Resources/Textures/Constructible/Power/ame_controller.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/ame_controller.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "control", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "control_critical", - "directions": 1, "delays": [ [ 0.1, @@ -45,7 +39,6 @@ }, { "name": "control_fuck", - "directions": 1, "delays": [ [ 0.1, @@ -91,7 +84,6 @@ }, { "name": "control_on", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/ame_shielding.rsi/meta.json b/Resources/Textures/Constructible/Power/ame_shielding.rsi/meta.json index 1ce0d8402b..93fb103cdd 100644 --- a/Resources/Textures/Constructible/Power/ame_shielding.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/ame_shielding.rsi/meta.json @@ -9,160 +9,74 @@ "states": [ { "name": "shield_0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_10", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_11", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_12", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_13", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_14", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_15", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_4", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_5", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_6", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_7", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_8", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "core", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shield_9", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "core_weak", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +90,6 @@ }, { "name": "core_strong", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/apc.rsi/meta.json b/Resources/Textures/Constructible/Power/apc.rsi/meta.json index 9ecb0668ac..d6406feec7 100644 --- a/Resources/Textures/Constructible/Power/apc.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/apc.rsi/meta.json @@ -8,21 +8,10 @@ }, "states": [ { - "name": "apc-b", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc-b" }, { "name": "apc-spark", - "select": [], - "flags": {}, - "directions": 1, "delays": [ [ 0.1, @@ -36,87 +25,28 @@ ] }, { - "name": "apc0", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc0" }, { - "name": "apc1", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc1" }, { - "name": "apc1-b-nocover", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc1-b-nocover" }, { - "name": "apc1-nocover", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc1-nocover" }, { - "name": "apc2", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc2" }, { - "name": "apc2-b-nocover", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc2-b-nocover" }, { - "name": "apc2-nocover", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apc2-nocover" }, { "name": "apcemag", - "select": [], - "flags": {}, - "directions": 1, "delays": [ [ 0.5, @@ -125,164 +55,49 @@ ] }, { - "name": "apcewires", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apcewires" }, { - "name": "apcmaint", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apcmaint" }, { - "name": "apco0-0", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco0-0" }, { - "name": "apco0-1", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco0-1" }, { - "name": "apco0-2", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco0-2" }, { - "name": "apco0-3", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco0-3" }, { - "name": "apco1-0", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco1-0" }, { - "name": "apco1-1", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco1-1" }, { - "name": "apco1-2", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco1-2" }, { - "name": "apco1-3", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco1-3" }, { - "name": "apco2-0", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco2-0" }, { - "name": "apco2-1", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco2-1" }, { - "name": "apco2-2", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco2-2" }, { - "name": "apco2-3", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apco2-3" }, { "name": "apco3-0", - "select": [], - "flags": {}, - "directions": 1, "delays": [ [ 1.0, @@ -292,9 +107,6 @@ }, { "name": "apco3-1", - "select": [], - "flags": {}, - "directions": 1, "delays": [ [ 0.1, @@ -308,9 +120,6 @@ }, { "name": "apco3-2", - "select": [], - "flags": {}, - "directions": 1, "delays": [ [ 1.0, @@ -319,26 +128,10 @@ ] }, { - "name": "apcox-0", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apcox-0" }, { - "name": "apcox-1", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "apcox-1" } ] } diff --git a/Resources/Textures/Constructible/Power/autolathe.rsi/meta.json b/Resources/Textures/Constructible/Power/autolathe.rsi/meta.json index 774336ea07..6df05acbda 100644 --- a/Resources/Textures/Constructible/Power/autolathe.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/autolathe.rsi/meta.json @@ -7,25 +7,14 @@ "states": [ { "name": "autolathe", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "autolathe_unlit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "autolathe_building", - "directions": 1, "delays": [ [ 0.055, @@ -42,7 +31,6 @@ }, { "name": "autolathe_building_unlit", - "directions": 1, "delays": [ [ 0.055, @@ -59,7 +47,6 @@ }, { "name": "autolathe_inserting_metal_plate", - "directions": 1, "delays": [ [ 0.1, @@ -76,7 +63,6 @@ }, { "name": "autolathe_inserting_glass_plate", - "directions": 1, "delays": [ [ 0.1, @@ -93,7 +79,6 @@ }, { "name": "autolathe_inserting_phoron_sheet", - "directions": 1, "delays": [ [ 0.1, @@ -110,7 +95,6 @@ }, { "name": "autolathe_inserting_gold_plate", - "directions": 1, "delays": [ [ 0.1, @@ -127,7 +111,6 @@ }, { "name": "autolathe_inserting_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -144,12 +127,7 @@ }, { "name": "autolathe_panel", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/cell_recharger.rsi/meta.json b/Resources/Textures/Constructible/Power/cell_recharger.rsi/meta.json index e2e018ddc0..124b4052a5 100644 --- a/Resources/Textures/Constructible/Power/cell_recharger.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/cell_recharger.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/vgstation-coders/vgstation13/raw/78a32d846158a67dcd0ca2375e408fec298b46a0/icons/obj/power.dmi", "states": [ { - "name": "light-off", - "directions": 1 + "name": "light-off" }, { - "name": "empty", - "directions": 1 + "name": "empty" }, { - "name": "full", - "directions": 1 + "name": "full" }, { - "name": "open", - "directions": 1 + "name": "open" }, { "name": "light-charging", - "directions": 1, "delays": [ [ 0.2, @@ -37,7 +32,6 @@ }, { "name": "light-charged", - "directions": 1, "delays": [ [ 0.5, @@ -47,7 +41,6 @@ }, { "name": "light-empty", - "directions": 1, "delays": [ [ 0.5, diff --git a/Resources/Textures/Constructible/Power/circuit_printer.rsi/meta.json b/Resources/Textures/Constructible/Power/circuit_printer.rsi/meta.json index 5398c75b53..1515c2951b 100644 --- a/Resources/Textures/Constructible/Power/circuit_printer.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/circuit_printer.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "circuit_imprinter", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "circuit_imprinter_ani", - "directions": 1, "delays": [ [ 0.08, @@ -51,12 +45,7 @@ }, { "name": "circuit_imprinter_t", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/conveyor.rsi/meta.json b/Resources/Textures/Constructible/Power/conveyor.rsi/meta.json index 34f444aea9..5f14ace1b4 100644 --- a/Resources/Textures/Constructible/Power/conveyor.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/conveyor.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/blob/a846799c53f8ee9dcec4b075d7645f591f3ec19d/icons/obj/machines/conveyor.dmi", "states": [{"name": "conveyor_loose", "directions": 1, "delays": [[1.0]]}, {"name": "conveyor_started_ccw", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_started_ccw_r", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_started_cw", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_started_cw_r", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_stopped_ccw", "directions": 8, "delays": [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]]}, {"name": "conveyor_stopped_cw", "directions": 8, "delays": [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]]}, {"name": "greenlight", "directions": 1, "delays": [[1.0]]}, {"name": "redlight", "directions": 1, "delays": [[1.0]]}, {"name": "switch", "directions": 1, "delays": [[1.0]]}, {"name": "switch-fwd", "directions": 1, "delays": [[1.0]]}, {"name": "switch-off", "directions": 1, "delays": [[1.0]]}, {"name": "switch-rev", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/blob/a846799c53f8ee9dcec4b075d7645f591f3ec19d/icons/obj/machines/conveyor.dmi", "states": [{"name": "conveyor_loose", "delays": [[1.0]]}, {"name": "conveyor_started_ccw", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_started_ccw_r", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_started_cw", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_started_cw_r", "directions": 8, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "conveyor_stopped_ccw", "directions": 8, "delays": [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]]}, {"name": "conveyor_stopped_cw", "directions": 8, "delays": [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]]}, {"name": "greenlight", "delays": [[1.0]]}, {"name": "redlight", "delays": [[1.0]]}, {"name": "switch", "delays": [[1.0]]}, {"name": "switch-fwd", "delays": [[1.0]]}, {"name": "switch-off", "delays": [[1.0]]}, {"name": "switch-rev", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Power/d_analyzer.rsi/meta.json b/Resources/Textures/Constructible/Power/d_analyzer.rsi/meta.json index 9b87075df2..d8e78fe6d3 100644 --- a/Resources/Textures/Constructible/Power/d_analyzer.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/d_analyzer.rsi/meta.json @@ -9,25 +9,14 @@ "states": [ { "name": "d_analyzer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "d_analyzer_l", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "d_analyzer_la", - "directions": 1, "delays": [ [ 0.1, @@ -45,7 +34,6 @@ }, { "name": "d_analyzer_process", - "directions": 1, "delays": [ [ 0.09, @@ -80,12 +68,7 @@ }, { "name": "d_analyzer_t", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/dispensers.rsi/meta.json b/Resources/Textures/Constructible/Power/dispensers.rsi/meta.json index f2a0fa068e..763c13fbcb 100644 --- a/Resources/Textures/Constructible/Power/dispensers.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/dispensers.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "booze_dispenser", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "soda_dispenser", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "dispenser", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Power/disposal.rsi/meta.json b/Resources/Textures/Constructible/Power/disposal.rsi/meta.json index f11b589795..4597e4bbaf 100644 --- a/Resources/Textures/Constructible/Power/disposal.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/disposal.rsi/meta.json @@ -9,12 +9,7 @@ "states": [ { "name": "condisposal", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "conpipe-c", @@ -180,25 +175,14 @@ }, { "name": "disposal", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "disposal-charging", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "disposal-flush", - "directions": 1, "delays": [ [ 0.1, @@ -215,7 +199,6 @@ }, { "name": "dispover-charge", - "directions": 1, "delays": [ [ 0.4, @@ -225,7 +208,6 @@ }, { "name": "dispover-full", - "directions": 1, "delays": [ [ 0.2, @@ -235,21 +217,11 @@ }, { "name": "dispover-handle", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "dispover-ready", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "intake", diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/meta.json b/Resources/Textures/Constructible/Power/field_generator.rsi/meta.json index 5afd9bc022..5850bdbd5c 100644 --- a/Resources/Textures/Constructible/Power/field_generator.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/field_generator.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation", "states": [{"name": "+a1", "directions": 1, "delays": [[1.0]]}, {"name": "+a2", "directions": 1, "delays": [[1.0]]}, {"name": "+a3", "directions": 1, "delays": [[1.0]]}, {"name": "+on", "directions": 1, "delays": [[1.0]]}, {"name": "+p1", "directions": 1, "delays": [[1.0]]}, {"name": "+p2", "directions": 1, "delays": [[1.0]]}, {"name": "+p3", "directions": 1, "delays": [[1.0]]}, {"name": "+p4", "directions": 1, "delays": [[1.0]]}, {"name": "+p5", "directions": 1, "delays": [[1.0]]}, {"name": "+p6", "directions": 1, "delays": [[1.0]]}, {"name": "Field_Gen", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation", "states": [{"name": "+a1", "delays": [[1.0]]}, {"name": "+a2", "delays": [[1.0]]}, {"name": "+a3", "delays": [[1.0]]}, {"name": "+on", "delays": [[1.0]]}, {"name": "+p1", "delays": [[1.0]]}, {"name": "+p2", "delays": [[1.0]]}, {"name": "+p3", "delays": [[1.0]]}, {"name": "+p4", "delays": [[1.0]]}, {"name": "+p5", "delays": [[1.0]]}, {"name": "+p6", "delays": [[1.0]]}, {"name": "Field_Gen", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Power/gravity_generator.rsi/meta.json b/Resources/Textures/Constructible/Power/gravity_generator.rsi/meta.json index 4d6f697ad5..09b86f3c30 100755 --- a/Resources/Textures/Constructible/Power/gravity_generator.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/gravity_generator.rsi/meta.json @@ -8,16 +8,13 @@ "copyright":"Taken from https://github.com/tgstation/tgstation", "states":[ { - "name":"on", - "directions": 1 + "name":"on" }, { - "name": "off", - "directions": 1 + "name": "off" }, { - "name": "broken", - "directions": 1 + "name": "broken" } ] } diff --git a/Resources/Textures/Constructible/Power/gravity_generator_core.rsi/meta.json b/Resources/Textures/Constructible/Power/gravity_generator_core.rsi/meta.json index 383938bbde..c4313395a0 100644 --- a/Resources/Textures/Constructible/Power/gravity_generator_core.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/gravity_generator_core.rsi/meta.json @@ -9,7 +9,6 @@ "states":[ { "name": "activated", - "directions": 1, "delays": [ [ 0.1, @@ -21,7 +20,6 @@ }, { "name": "activating", - "directions": 1, "delays": [ [ 0.1, @@ -32,7 +30,6 @@ }, { "name": "idle", - "directions": 1, "delays": [ [ 0.1, @@ -47,7 +44,6 @@ }, { "name": "startup", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/hv_cable.rsi/meta.json b/Resources/Textures/Constructible/Power/hv_cable.rsi/meta.json index 975ba9d079..f31c816f02 100644 --- a/Resources/Textures/Constructible/Power/hv_cable.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/hv_cable.rsi/meta.json @@ -9,147 +9,67 @@ "states": [ { "name": "hvcable_0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_4", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_5", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_6", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_7", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_8", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_9", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_10", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_11", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_12", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_13", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_14", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "hvcable_15", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/juicer.rsi/meta.json b/Resources/Textures/Constructible/Power/juicer.rsi/meta.json index 95a4d470ed..85dc0cec79 100644 --- a/Resources/Textures/Constructible/Power/juicer.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/juicer.rsi/meta.json @@ -1 +1 @@ -{"license": "CC-BY-SA 3.0", "copyright": "https://github.com/tgstation/tgstation/commit/59f2a4e10e5ba36033c9734ddebfbbdc6157472d","version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "juicer0", "directions": 1, "delays": [[1.0]]}, {"name": "juicer1", "directions": 1, "delays": [[1.0]]}]} +{"license": "CC-BY-SA 3.0", "copyright": "https://github.com/tgstation/tgstation/commit/59f2a4e10e5ba36033c9734ddebfbbdc6157472d","version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "juicer0", "delays": [[1.0]]}, {"name": "juicer1", "delays": [[1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/lv_cable.rsi/meta.json b/Resources/Textures/Constructible/Power/lv_cable.rsi/meta.json index 5a3b07fd29..3c7cdae791 100644 --- a/Resources/Textures/Constructible/Power/lv_cable.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/lv_cable.rsi/meta.json @@ -9,147 +9,67 @@ "states": [ { "name": "lvcable_0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_4", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_5", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_6", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_7", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_8", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_9", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_10", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_11", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_12", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_13", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_14", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lvcable_15", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/microwave.rsi/meta.json b/Resources/Textures/Constructible/Power/microwave.rsi/meta.json index e1c3ede466..e2c51c0ce3 100644 --- a/Resources/Textures/Constructible/Power/microwave.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/microwave.rsi/meta.json @@ -9,34 +9,18 @@ "states": [ { "name": "mw", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mw_unlit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mw0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mw_running_unlit", - "directions": 1, "delays": [ [ 1.0, @@ -46,34 +30,18 @@ }, { "name": "mwb", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mwbloody", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mwbloody0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mwbloody1", - "directions": 1, "delays": [ [ 0.1, @@ -83,7 +51,6 @@ }, { "name": "mwbloodyo", - "directions": 1, "delays": [ [ 0.1, @@ -93,7 +60,6 @@ }, { "name": "mwo", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Power/mixer.rsi/meta.json b/Resources/Textures/Constructible/Power/mixer.rsi/meta.json index 75a7e2133e..5c3cd75b2c 100644 --- a/Resources/Textures/Constructible/Power/mixer.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/mixer.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "mixer_empty", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "mixer_broken", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "mixer_loaded", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "mixer_screens", - "directions": 1, "delays": [ [ 0.1, @@ -52,7 +48,6 @@ }, { "name": "mixer_screen_broken", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Power/mv_cable.rsi/meta.json b/Resources/Textures/Constructible/Power/mv_cable.rsi/meta.json index a2ba5c3a1a..a1e0096703 100644 --- a/Resources/Textures/Constructible/Power/mv_cable.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/mv_cable.rsi/meta.json @@ -9,147 +9,67 @@ "states": [ { "name": "mvcable_0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_4", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_5", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_6", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_7", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_8", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_9", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_10", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_11", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_12", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_13", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_14", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mvcable_15", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/power.rsi/meta.json b/Resources/Textures/Constructible/Power/power.rsi/meta.json index f11413d28a..aaa42b49d6 100644 --- a/Resources/Textures/Constructible/Power/power.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/power.rsi/meta.json @@ -8,7 +8,6 @@ "states": [ { "name": "eightdirwire", - "directions": 1, "delays": [ [ 1 @@ -17,7 +16,6 @@ }, { "name": "generator", - "directions": 1, "delays": [ [ 1 @@ -26,7 +24,6 @@ }, { "name": "provider", - "directions": 1, "delays": [ [ 1 @@ -35,7 +32,6 @@ }, { "name": "storage", - "directions": 1, "delays": [ [ 1 @@ -44,7 +40,6 @@ }, { "name": "wiredmachine", - "directions": 1, "delays": [ [ 1 @@ -53,7 +48,6 @@ }, { "name": "wirelessmachine", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Power/power_cable.rsi/meta.json b/Resources/Textures/Constructible/Power/power_cable.rsi/meta.json index 60d271c857..53e6d6a156 100644 --- a/Resources/Textures/Constructible/Power/power_cable.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/power_cable.rsi/meta.json @@ -8,68 +8,52 @@ "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/fcf375d7d9ce6ceed5c7face899725e5655ab640", "states": [ { - "name": "cable_0", - "directions": 1 + "name": "cable_0" }, { - "name": "cable_1", - "directions": 1 + "name": "cable_1" }, { - "name": "cable_2", - "directions": 1 + "name": "cable_2" }, { - "name": "cable_3", - "directions": 1 + "name": "cable_3" }, { - "name": "cable_4", - "directions": 1 + "name": "cable_4" }, { - "name": "cable_5", - "directions": 1 + "name": "cable_5" }, { - "name": "cable_6", - "directions": 1 + "name": "cable_6" }, { - "name": "cable_7", - "directions": 1 + "name": "cable_7" }, { - "name": "cable_8", - "directions": 1 + "name": "cable_8" }, { - "name": "cable_9", - "directions": 1 + "name": "cable_9" }, { - "name": "cable_10", - "directions": 1 + "name": "cable_10" }, { - "name": "cable_11", - "directions": 1 + "name": "cable_11" }, { - "name": "cable_12", - "directions": 1 + "name": "cable_12" }, { - "name": "cable_13", - "directions": 1 + "name": "cable_13" }, { - "name": "cable_14", - "directions": 1 + "name": "cable_14" }, { - "name": "cable_15", - "directions": 1 + "name": "cable_15" }, ] } diff --git a/Resources/Textures/Constructible/Power/protolathe.rsi/meta.json b/Resources/Textures/Constructible/Power/protolathe.rsi/meta.json index cd5de7b4fc..ce5ea3d4c7 100644 --- a/Resources/Textures/Constructible/Power/protolathe.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/protolathe.rsi/meta.json @@ -9,25 +9,14 @@ "states": [ { "name": "protolathe", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "protolathe_unlit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "protolathe_adamantine", - "directions": 1, "delays": [ [ 0.088, @@ -44,7 +33,6 @@ }, { "name": "protolathe_bananium", - "directions": 1, "delays": [ [ 0.088, @@ -61,7 +49,6 @@ }, { "name": "protolathe_diamond", - "directions": 1, "delays": [ [ 0.088, @@ -78,7 +65,6 @@ }, { "name": "protolathe_glass", - "directions": 1, "delays": [ [ 0.088, @@ -95,7 +81,6 @@ }, { "name": "protolathe_gold", - "directions": 1, "delays": [ [ 0.088, @@ -112,7 +97,6 @@ }, { "name": "protolathe_metal", - "directions": 1, "delays": [ [ 0.088, @@ -129,7 +113,6 @@ }, { "name": "protolathe_phoron", - "directions": 1, "delays": [ [ 0.088, @@ -146,7 +129,6 @@ }, { "name": "protolathe_building", - "directions": 1, "delays": [ [ 0.05, @@ -167,7 +149,6 @@ }, { "name": "protolathe_silver", - "directions": 1, "delays": [ [ 0.088, @@ -184,7 +165,6 @@ }, { "name": "protolathe_solid plasma", - "directions": 1, "delays": [ [ 0.088, @@ -201,16 +181,10 @@ }, { "name": "protolathe_panel", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "protolathe_uranium", - "directions": 1, "delays": [ [ 0.088, diff --git a/Resources/Textures/Constructible/Power/radiation_collector.rsi/meta.json b/Resources/Textures/Constructible/Power/radiation_collector.rsi/meta.json index f6d83c3c76..67dfc428d1 100644 --- a/Resources/Textures/Constructible/Power/radiation_collector.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/radiation_collector.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/goonstation/goonstation-2020", "states": [{"name": "ca_off", "directions": 1, "delays": [[1.0]]}, {"name": "ca_on", "directions": 1, "delays": [[1.0]]}, {"name": "ca_active", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ca_deactive", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "cu", "directions": 1, "delays": [[1.0]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/goonstation/goonstation-2020", "states": [{"name": "ca_off", "delays": [[1.0]]}, {"name": "ca_on", "delays": [[1.0]]}, {"name": "ca_active", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ca_deactive", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "cu", "delays": [[1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/recharger.rsi/meta.json b/Resources/Textures/Constructible/Power/recharger.rsi/meta.json index 9d6f9a028f..7d869724cb 100644 --- a/Resources/Textures/Constructible/Power/recharger.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/recharger.rsi/meta.json @@ -9,25 +9,14 @@ "states": [ { "name": "empty", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "full", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "light-off", - "directions": 1, "delays": [ [ 1 @@ -36,7 +25,6 @@ }, { "name": "light-empty", - "directions": 1, "delays": [ [ 1, @@ -46,7 +34,6 @@ }, { "name": "light-charging", - "directions": 1, "delays": [ [ 0.1, @@ -62,7 +49,6 @@ }, { "name": "light-charged", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Constructible/Power/recycling.rsi/meta.json b/Resources/Textures/Constructible/Power/recycling.rsi/meta.json index f2d7112d98..f03ecd6d27 100644 --- a/Resources/Textures/Constructible/Power/recycling.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/recycling.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "grinder-a0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "grinder-a1", - "directions": 1, "delays": [ [ 0.1, @@ -30,16 +24,10 @@ }, { "name": "grinder-b0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "grinder-b1", - "directions": 1, "delays": [ [ 0.1, @@ -53,25 +41,14 @@ }, { "name": "grinder-o0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "grinder-o0bld", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "grinder-o1", - "directions": 1, "delays": [ [ 0.1, @@ -83,7 +60,6 @@ }, { "name": "grinder-o1bld", - "directions": 1, "delays": [ [ 0.1, @@ -95,34 +71,18 @@ }, { "name": "separator-", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "separator-0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "separator-A0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "separator-A1", - "directions": 1, "delays": [ [ 0.1, @@ -134,16 +94,10 @@ }, { "name": "separator-AO0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "separator-AO1", - "directions": 1, "delays": [ [ 0.3, @@ -154,21 +108,11 @@ }, { "name": "separator-B0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "separator-BO0", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Constructible/Power/rndpointsource.rsi/meta.json b/Resources/Textures/Constructible/Power/rndpointsource.rsi/meta.json index 7e31bc0fba..33d1355b57 100644 --- a/Resources/Textures/Constructible/Power/rndpointsource.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/rndpointsource.rsi/meta.json @@ -31,7 +31,6 @@ }, { "name": "rndpointsource-broken", - "directions": 1, "delays": [ [ 0.1, @@ -42,21 +41,11 @@ }, { "name": "rndpointsource-off", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rndpointsource-icon", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/server.rsi/meta.json b/Resources/Textures/Constructible/Power/server.rsi/meta.json index da1f24b184..2843953a7e 100644 --- a/Resources/Textures/Constructible/Power/server.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/server.rsi/meta.json @@ -9,48 +9,23 @@ "states": [ { "name": "server", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "server-nopower", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "server-off", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "server-on", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "server_o", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Constructible/Power/substation.rsi/meta.json b/Resources/Textures/Constructible/Power/substation.rsi/meta.json index cffd68eec4..22d58ddbc2 100644 --- a/Resources/Textures/Constructible/Power/substation.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/substation.rsi/meta.json @@ -8,24 +8,19 @@ }, "states": [ { - "name": "substation", - "directions": 1 + "name": "substation" }, { - "name": "full", - "directions": 1 + "name": "full" }, { - "name": "charging", - "directions": 1 + "name": "charging" }, { - "name": "dead", - "directions": 1 + "name": "dead" }, { "name": "screen", - "directions": 1, "delays": [ [ 0.15, diff --git a/Resources/Textures/Constructible/Power/wall_recharger.rsi/meta.json b/Resources/Textures/Constructible/Power/wall_recharger.rsi/meta.json index 67d2cf23bb..f2a6396cc9 100644 --- a/Resources/Textures/Constructible/Power/wall_recharger.rsi/meta.json +++ b/Resources/Textures/Constructible/Power/wall_recharger.rsi/meta.json @@ -9,25 +9,14 @@ "states": [ { "name": "empty", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "full", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "light-off", - "directions": 1, "delays": [ [ 1 @@ -36,7 +25,6 @@ }, { "name": "light-empty", - "directions": 1, "delays": [ [ 1, @@ -46,7 +34,6 @@ }, { "name": "light-charging", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +46,6 @@ }, { "name": "light-charged", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Constructible/Specific/Medical/cloning.rsi/meta.json b/Resources/Textures/Constructible/Specific/Medical/cloning.rsi/meta.json index 736abaec7c..e90c216459 100644 --- a/Resources/Textures/Constructible/Specific/Medical/cloning.rsi/meta.json +++ b/Resources/Textures/Constructible/Specific/Medical/cloning.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "pod_0", - "directions": 1 + "name": "pod_0" }, { "name": "pod_1", - "directions": 1, "delays": [ [ 0.1, @@ -25,7 +23,6 @@ }, { "name": "pod_e", - "directions": 1, "delays": [ [ 0.1, @@ -37,7 +34,6 @@ }, { "name": "pod_g", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/meta.json b/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/meta.json index d54c5960af..0ef80a0457 100644 --- a/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/meta.json +++ b/Resources/Textures/Constructible/Specific/Medical/scanner.rsi/meta.json @@ -8,24 +8,19 @@ }, "states": [ { - "name": "open", - "directions": 1 + "name": "open" }, { - "name": "closed", - "directions": 1 + "name": "closed" }, { - "name": "open_unpowered", - "directions": 1 + "name": "open_unpowered" }, { - "name": "closed_unpowered", - "directions": 1 + "name": "closed_unpowered" }, { "name": "occupied", - "directions": 1, "delays": [ [ 0.1, @@ -36,16 +31,13 @@ ] }, { - "name": "off_unlit", - "directions": 1 + "name": "off_unlit" }, { - "name": "occupied_unlit", - "directions": 1 + "name": "occupied_unlit" }, { "name": "idle_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -55,7 +47,6 @@ }, { "name": "maint_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -65,7 +56,6 @@ }, { "name": "red_unlit", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Constructible/Storage/Crates/electricalcrate.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/electricalcrate.rsi/meta.json index 7dec078384..e17fe0029f 100644 --- a/Resources/Textures/Constructible/Storage/Crates/electricalcrate.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/electricalcrate.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "electricalcrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "electricalcrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "electricalcrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "electricalcrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/engicrate.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/engicrate.rsi/meta.json index 57a7a4a1ec..fe13afd0ec 100644 --- a/Resources/Textures/Constructible/Storage/Crates/engicrate.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/engicrate.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "engicrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "engicrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "engicrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "engicrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/engicrate_secure.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/engicrate_secure.rsi/meta.json index 9f187b0adb..3876fd2dd5 100644 --- a/Resources/Textures/Constructible/Storage/Crates/engicrate_secure.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/engicrate_secure.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "engicratesecure", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "engicratesecure_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "engicratesecure_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "engicratesecure_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/freezer.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/freezer.rsi/meta.json index 3a4808b50e..3cc1d4c0ed 100644 --- a/Resources/Textures/Constructible/Storage/Crates/freezer.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/freezer.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "freezer", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "freezer_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "freezer_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "freezer_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/generic.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/generic.rsi/meta.json index f31ed3f039..3ec907cb4a 100644 --- a/Resources/Textures/Constructible/Storage/Crates/generic.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/generic.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "crate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "crate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "crate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "crate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/hydro.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/hydro.rsi/meta.json index 20231e2035..bda4462f5b 100644 --- a/Resources/Textures/Constructible/Storage/Crates/hydro.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/hydro.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "hydrocrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "hydrocrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "hydrocrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "hydrocrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/hydro_secure.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/hydro_secure.rsi/meta.json index dc86d7de58..9fe23303d8 100644 --- a/Resources/Textures/Constructible/Storage/Crates/hydro_secure.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/hydro_secure.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "hydrocratesecure", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "hydrocratesecure_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "hydrocratesecure_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "hydrocratesecure_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/medical.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/medical.rsi/meta.json index 64a6d27fc1..627f85244a 100644 --- a/Resources/Textures/Constructible/Storage/Crates/medical.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/medical.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "medicalcrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "medicalcrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "medicalcrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "medicalcrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/medicalcrate_secure.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/medicalcrate_secure.rsi/meta.json index 75f31c0baa..2b8a0b0200 100644 --- a/Resources/Textures/Constructible/Storage/Crates/medicalcrate_secure.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/medicalcrate_secure.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "medicalcratesecure", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "medicalcratesecure_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "medicalcratesecure_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "medicalcratesecure_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/o2.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/o2.rsi/meta.json index e9d6467914..827ff85c6d 100644 --- a/Resources/Textures/Constructible/Storage/Crates/o2.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/o2.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "o2crate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "o2crate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "o2crate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "o2crate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/phoron.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/phoron.rsi/meta.json index 0af09d7de9..bb879f3e69 100644 --- a/Resources/Textures/Constructible/Storage/Crates/phoron.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/phoron.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "phoroncrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "phoroncrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "phoroncrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "phoroncrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/plastic.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/plastic.rsi/meta.json index 6d14f2078d..6ca30fd6f3 100644 --- a/Resources/Textures/Constructible/Storage/Crates/plastic.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/plastic.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "plasticcrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "plasticcrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "plasticcrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "plasticcrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/privatecrate_secure.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/privatecrate_secure.rsi/meta.json index 617586f7f2..e3116a2421 100644 --- a/Resources/Textures/Constructible/Storage/Crates/privatecrate_secure.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/privatecrate_secure.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "privatecrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "privatecrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "privatecrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "privatecrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/radiation.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/radiation.rsi/meta.json index 8a3671838f..c8ea325bc6 100644 --- a/Resources/Textures/Constructible/Storage/Crates/radiation.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/radiation.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "radiationcrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "radiationcrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "radiationcrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "radiationcrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/scicrate.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/scicrate.rsi/meta.json index 1c8ce6baa6..97671ad928 100644 --- a/Resources/Textures/Constructible/Storage/Crates/scicrate.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/scicrate.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "scicrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "scicrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "scicrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "scicrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/scicrate_secure.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/scicrate_secure.rsi/meta.json index 0bba4167e2..13cd9af85c 100644 --- a/Resources/Textures/Constructible/Storage/Crates/scicrate_secure.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/scicrate_secure.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "scicratesecure", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "scicratesecure_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "scicratesecure_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "scicratesecure_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/sec_gear.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/sec_gear.rsi/meta.json index 801692a8d9..474713929e 100644 --- a/Resources/Textures/Constructible/Storage/Crates/sec_gear.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/sec_gear.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "secgearcrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "secgearcrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "secgearcrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "secgearcrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/secure.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/secure.rsi/meta.json index 6053a923be..6ceea46dc4 100644 --- a/Resources/Textures/Constructible/Storage/Crates/secure.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/secure.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "securecrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "securecrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "securecrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "securecrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/surgerycrate.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/surgerycrate.rsi/meta.json index b3a2abcd40..cf06c24331 100644 --- a/Resources/Textures/Constructible/Storage/Crates/surgerycrate.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/surgerycrate.rsi/meta.json @@ -10,39 +10,30 @@ { "name": "surgerycrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "surgerycrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "surgerycrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "surgerycrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Storage/Crates/weapon.rsi/meta.json b/Resources/Textures/Constructible/Storage/Crates/weapon.rsi/meta.json index 23471e93f1..ed673b7aec 100644 --- a/Resources/Textures/Constructible/Storage/Crates/weapon.rsi/meta.json +++ b/Resources/Textures/Constructible/Storage/Crates/weapon.rsi/meta.json @@ -10,57 +10,45 @@ { "name": "weaponcrate", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "weaponcrate_door", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "weaponcrate_icon", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "welded", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "unlocked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "off", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { "name": "locked", "select": [], - "flags": {}, - "directions": 1 + "flags": {} }, { - "name": "sparking", - "select": [], - "flags": {}, - "directions": 1, - "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] + "name": "sparking", "delays": [[0.1,0.1,0.1,0.1,0.1,0.1]] }, { "name": "weaponcrate_open", "select": [], - "flags": {}, - "directions": 1 + "flags": {} } ] } diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_basic.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_basic.rsi/meta.json index 1a4a5f34c5..bc90377a89 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_basic.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_basic.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_cargo.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_cargo.rsi/meta.json index 42c2ef128d..6980f346b8 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_cargo.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_cargo.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.2, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.5, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.2, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.2, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.4, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_cargo_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_cargo_glass.rsi/meta.json index b25928b641..71ab1ed0ed 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_cargo_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_cargo_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.2, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.5, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.2, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.2, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.4, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_command.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_command.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_command.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_command.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_command_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_command_glass.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_command_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_command_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_engineering.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_engineering.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_engineering.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_engineering.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_engineering_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_engineering_glass.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_engineering_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_engineering_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_external.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_external.rsi/meta.json index c44c8554f4..42df7c08c2 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_external.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_external.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -26,12 +24,10 @@ ] }, { - "name": "closed_unlit", - "directions": 1 + "name": "closed_unlit" }, { "name": "closing", - "directions": 1, "delays": [ [ 0.2, @@ -46,7 +42,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.6, @@ -58,7 +53,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -69,7 +63,6 @@ }, { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -78,7 +71,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.2, @@ -93,7 +85,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -108,7 +99,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -117,7 +107,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.2, @@ -132,7 +121,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -144,7 +132,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -153,7 +140,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -166,7 +152,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -179,7 +164,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -193,7 +177,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -206,7 +189,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_freezer.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_freezer.rsi/meta.json index 1a4a5f34c5..bc90377a89 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_freezer.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_freezer.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_glass.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_maint.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_maint.rsi/meta.json index 9455a5f49a..5a3ec40d9b 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_maint.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_maint.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.2, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_medical.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_medical.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_medical.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_medical.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_medical_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_medical_glass.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_medical_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_medical_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_science.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_science.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_science.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_science.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_science_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_science_glass.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_science_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_science_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_security.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_security.rsi/meta.json index 7addd8ccb9..a8a97fc4c7 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_security.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_security.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/airlock_security_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/airlock_security_glass.rsi/meta.json index fd4cc29750..5587579b77 100644 --- a/Resources/Textures/Constructible/Structures/Doors/airlock_security_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/airlock_security_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -36,14 +33,12 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [] ] }, { "name": "closing", - "directions": 1, "delays": [ [ 0.1, @@ -59,7 +54,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.25, @@ -73,7 +67,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -84,7 +77,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -93,7 +85,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.1, @@ -109,7 +100,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +113,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -138,7 +127,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -147,7 +135,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -162,7 +149,6 @@ }, { "name": "spark", - "directions": 1, "delays": [ [ 0.1, @@ -176,7 +162,6 @@ }, { "name": "sparks_broken", - "directions": 1, "delays": [ [ 0.1, @@ -190,7 +175,6 @@ }, { "name": "sparks_damaged", - "directions": 1, "delays": [ [ 0.1, @@ -205,7 +189,6 @@ }, { "name": "sparks_open", - "directions": 1, "delays": [ [ 0.1, @@ -219,7 +202,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Doors/edge_door_hazard.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/edge_door_hazard.rsi/meta.json index 8ad6942753..961e7b979f 100644 --- a/Resources/Textures/Constructible/Structures/Doors/edge_door_hazard.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/edge_door_hazard.rsi/meta.json @@ -353,7 +353,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -368,16 +367,10 @@ }, { "name": "panel_open", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Constructible/Structures/Doors/firelock.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/firelock.rsi/meta.json index 08653842b9..325d9a4cb7 100644 --- a/Resources/Textures/Constructible/Structures/Doors/firelock.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/firelock.rsi/meta.json @@ -9,34 +9,18 @@ "states": [ { "name": "bolted", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "closed", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "closed_unlit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "closing", - "directions": 1, "delays": [ [ 0.2, @@ -50,7 +34,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -64,7 +47,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -75,7 +57,6 @@ }, { "name": "deny_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -86,61 +67,30 @@ }, { "name": "frame1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "frame2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "frame3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "frame4", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "locked", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "open", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "opening", - "directions": 1, "delays": [ [ 0.2, @@ -154,7 +104,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -168,7 +117,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -183,16 +131,10 @@ }, { "name": "panel_open", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -207,21 +149,11 @@ }, { "name": "welded", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "welded_open", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Doors/firelock_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Doors/firelock_glass.rsi/meta.json index b46814dfbf..b50d9cf17b 100644 --- a/Resources/Textures/Constructible/Structures/Doors/firelock_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Doors/firelock_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bolted", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "closed", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "closed_unlit", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "closing", - "directions": 1, "delays": [ [ 0.2, @@ -50,7 +46,6 @@ }, { "name": "closing_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -64,7 +59,6 @@ }, { "name": "deny", - "directions": 1, "delays": [ [ 0.1, @@ -75,7 +69,6 @@ }, { "name": "deny_unlit", - "directions": 1, "delays": [ [ 0.1, @@ -86,7 +79,6 @@ }, { "name": "locked", - "directions": 1, "delays": [ [ 1 @@ -95,7 +87,6 @@ }, { "name": "open", - "directions": 1, "delays": [ [ 1 @@ -104,7 +95,6 @@ }, { "name": "opening", - "directions": 1, "delays": [ [ 0.2, @@ -118,7 +108,6 @@ }, { "name": "opening_unlit", - "directions": 1, "delays": [ [ 0.2, @@ -132,7 +121,6 @@ }, { "name": "panel_closing", - "directions": 1, "delays": [ [ 0.1, @@ -147,7 +135,6 @@ }, { "name": "panel_open", - "directions": 1, "delays": [ [ 1 @@ -156,7 +143,6 @@ }, { "name": "panel_opening", - "directions": 1, "delays": [ [ 0.2, @@ -171,7 +157,6 @@ }, { "name": "welded", - "directions": 1, "delays": [ [ 1 @@ -180,7 +165,6 @@ }, { "name": "welded_open", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/bar.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/bar.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/bar.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/bar.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/carpet.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/carpet.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/carpet.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/carpet.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/debug.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/debug.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/debug.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/debug.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/frame.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/frame.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/frame.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/frame.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/generic.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/generic.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/generic.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/generic.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/glass.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/metal.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/metal.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/metal.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/metal.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/r_glass.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/r_glass.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/r_glass.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/r_glass.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/reinforced.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/reinforced.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/reinforced.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/reinforced.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/stone.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/stone.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/stone.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/stone.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Tables/wood.rsi/meta.json b/Resources/Textures/Constructible/Structures/Tables/wood.rsi/meta.json index f1072bd655..0ebc40b814 100644 --- a/Resources/Textures/Constructible/Structures/Tables/wood.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Tables/wood.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Walls/asteroid_rock.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/asteroid_rock.rsi/meta.json index 6ecf28f631..30a91f76dc 100644 --- a/Resources/Textures/Constructible/Structures/Walls/asteroid_rock.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/asteroid_rock.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "directions": 1, "delays": [[1.0]]}, {"name": "1", "directions": 1, "delays": [[1.0]]}, {"name": "2", "directions": 1, "delays": [[1.0]]}, {"name": "3", "directions": 1, "delays": [[1.0]]}, {"name": "4", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "delays": [[1.0]]}, {"name": "1", "delays": [[1.0]]}, {"name": "2", "delays": [[1.0]]}, {"name": "3", "delays": [[1.0]]}, {"name": "4", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/brick.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/brick.rsi/meta.json index 1a33360c7f..dfaa01c49e 100644 --- a/Resources/Textures/Constructible/Structures/Walls/brick.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/brick.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "brick0", "directions": 4}, {"name": "brick1", "directions": 4}, {"name": "brick2", "directions": 4}, {"name": "brick3", "directions": 4}, {"name": "brick4", "directions": 4}, {"name": "brick5", "directions": 4}, {"name": "brick6", "directions": 4}, {"name": "brick7", "directions": 4}, {"name": "full", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "brick0", "directions": 4}, {"name": "brick1", "directions": 4}, {"name": "brick2", "directions": 4}, {"name": "brick3", "directions": 4}, {"name": "brick4", "directions": 4}, {"name": "brick5", "directions": 4}, {"name": "brick6", "directions": 4}, {"name": "brick7", "directions": 4}, {"name": "full"}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/clock.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/clock.rsi/meta.json index 0aa0c078c2..2fe048c6b8 100644 --- a/Resources/Textures/Constructible/Structures/Walls/clock.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/clock.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "clock0", "directions": 4}, {"name": "clock1", "directions": 4}, {"name": "clock2", "directions": 4}, {"name": "clock3", "directions": 4}, {"name": "clock4", "directions": 4}, {"name": "clock5", "directions": 4}, {"name": "clock6", "directions": 4}, {"name": "clock7", "directions": 4}, {"name": "full", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "clock0", "directions": 4}, {"name": "clock1", "directions": 4}, {"name": "clock2", "directions": 4}, {"name": "clock3", "directions": 4}, {"name": "clock4", "directions": 4}, {"name": "clock5", "directions": 4}, {"name": "clock6", "directions": 4}, {"name": "clock7", "directions": 4}, {"name": "full"}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/clown.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/clown.rsi/meta.json index 17dfe65e71..3d2f08b718 100644 --- a/Resources/Textures/Constructible/Structures/Walls/clown.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/clown.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "clown0", "directions": 4}, {"name": "clown1", "directions": 4}, {"name": "clown2", "directions": 4}, {"name": "clown3", "directions": 4}, {"name": "clown4", "directions": 4}, {"name": "clown5", "directions": 4}, {"name": "clown6", "directions": 4}, {"name": "clown7", "directions": 4}, {"name": "full", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "clown0", "directions": 4}, {"name": "clown1", "directions": 4}, {"name": "clown2", "directions": 4}, {"name": "clown3", "directions": 4}, {"name": "clown4", "directions": 4}, {"name": "clown5", "directions": 4}, {"name": "clown6", "directions": 4}, {"name": "clown7", "directions": 4}, {"name": "full"}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/cult.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/cult.rsi/meta.json index 0c565d83ab..c289aa5878 100644 --- a/Resources/Textures/Constructible/Structures/Walls/cult.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/cult.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "cult0", "directions": 4}, {"name": "cult1", "directions": 4}, {"name": "cult2", "directions": 4}, {"name": "cult3", "directions": 4}, {"name": "cult4", "directions": 4}, {"name": "cult5", "directions": 4}, {"name": "cult6", "directions": 4}, {"name": "cult7", "directions": 4}, {"name": "full", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "cult0", "directions": 4}, {"name": "cult1", "directions": 4}, {"name": "cult2", "directions": 4}, {"name": "cult3", "directions": 4}, {"name": "cult4", "directions": 4}, {"name": "cult5", "directions": 4}, {"name": "cult6", "directions": 4}, {"name": "cult7", "directions": 4}, {"name": "full"}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/debug.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/debug.rsi/meta.json index 113fe1aa0e..12e75a1a22 100644 --- a/Resources/Textures/Constructible/Structures/Walls/debug.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/debug.rsi/meta.json @@ -8,58 +8,39 @@ }, "states": [ { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 + "name": "full" }, { "name": "debug0", - "select": [], - "flags": {}, "directions": 4 }, { "name": "debug1", - "select": [], - "flags": {}, "directions": 4 }, { "name": "debug2", - "select": [], - "flags": {}, "directions": 4 }, { "name": "debug3", - "select": [], - "flags": {}, "directions": 4 }, { "name": "debug4", - "select": [], - "flags": {}, "directions": 4 }, { "name": "debug5", - "select": [], - "flags": {}, "directions": 4 }, { "name": "debug6", - "select": [], - "flags": {}, "directions": 4 }, { "name": "debug7", - "select": [], - "flags": {}, "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Constructible/Structures/Walls/diamond.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/diamond.rsi/meta.json index a905a0404d..9f789a7698 100644 --- a/Resources/Textures/Constructible/Structures/Walls/diamond.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/diamond.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "diamond0", "directions": 4}, {"name": "diamond1", "directions": 4}, {"name": "diamond2", "directions": 4}, {"name": "diamond3", "directions": 4}, {"name": "diamond4", "directions": 4}, {"name": "diamond5", "directions": 4}, {"name": "diamond6", "directions": 4}, {"name": "diamond7", "directions": 4}, {"name": "full", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "diamond0", "directions": 4}, {"name": "diamond1", "directions": 4}, {"name": "diamond2", "directions": 4}, {"name": "diamond3", "directions": 4}, {"name": "diamond4", "directions": 4}, {"name": "diamond5", "directions": 4}, {"name": "diamond6", "directions": 4}, {"name": "diamond7", "directions": 4}, {"name": "full"}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/gold.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/gold.rsi/meta.json index 429e3abcdc..628826c7be 100644 --- a/Resources/Textures/Constructible/Structures/Walls/gold.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/gold.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "gold0", "directions": 4}, {"name": "gold1", "directions": 4}, {"name": "gold2", "directions": 4}, {"name": "gold3", "directions": 4}, {"name": "gold4", "directions": 4}, {"name": "gold5", "directions": 4}, {"name": "gold6", "directions": 4}, {"name": "gold7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "gold0", "directions": 4}, {"name": "gold1", "directions": 4}, {"name": "gold2", "directions": 4}, {"name": "gold3", "directions": 4}, {"name": "gold4", "directions": 4}, {"name": "gold5", "directions": 4}, {"name": "gold6", "directions": 4}, {"name": "gold7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/ice.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/ice.rsi/meta.json index 79f62a8372..6f68a86617 100644 --- a/Resources/Textures/Constructible/Structures/Walls/ice.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/ice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "ice0", "directions": 4}, {"name": "ice1", "directions": 4}, {"name": "ice2", "directions": 4}, {"name": "ice3", "directions": 4}, {"name": "ice4", "directions": 4}, {"name": "ice5", "directions": 4}, {"name": "ice6", "directions": 4}, {"name": "ice7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "ice0", "directions": 4}, {"name": "ice1", "directions": 4}, {"name": "ice2", "directions": 4}, {"name": "ice3", "directions": 4}, {"name": "ice4", "directions": 4}, {"name": "ice5", "directions": 4}, {"name": "ice6", "directions": 4}, {"name": "ice7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/low_wall.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/low_wall.rsi/meta.json index 13c05547ff..eed61418f1 100644 --- a/Resources/Textures/Constructible/Structures/Walls/low_wall.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/low_wall.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/b503939d31b23c025ddb936b75e0a265d85154c5/icons/obj/structures/low_wall.dmi", "states": [{"name": "metal", "directions": 1, "delays": [[1.0]]}, {"name": "metal_0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_4", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_5", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_6", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_7", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_4", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_5", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_6", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_7", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/b503939d31b23c025ddb936b75e0a265d85154c5/icons/obj/structures/low_wall.dmi", "states": [{"name": "metal", "delays": [[1.0]]}, {"name": "metal_0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_4", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_5", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_6", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_7", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_4", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_5", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_6", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "metal_over_7", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/metal.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/metal.rsi/meta.json index 4b06198d67..04a5d9b667 100644 --- a/Resources/Textures/Constructible/Structures/Walls/metal.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/metal.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "metal0", "directions": 4}, {"name": "metal1", "directions": 4}, {"name": "metal2", "directions": 4}, {"name": "metal3", "directions": 4}, {"name": "metal4", "directions": 4}, {"name": "metal5", "directions": 4}, {"name": "metal6", "directions": 4}, {"name": "metal7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "metal0", "directions": 4}, {"name": "metal1", "directions": 4}, {"name": "metal2", "directions": 4}, {"name": "metal3", "directions": 4}, {"name": "metal4", "directions": 4}, {"name": "metal5", "directions": 4}, {"name": "metal6", "directions": 4}, {"name": "metal7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/plasma.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/plasma.rsi/meta.json index 805413eed4..07a1c81f0f 100644 --- a/Resources/Textures/Constructible/Structures/Walls/plasma.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/plasma.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "plasma0", "directions": 4}, {"name": "plasma1", "directions": 4}, {"name": "plasma2", "directions": 4}, {"name": "plasma3", "directions": 4}, {"name": "plasma4", "directions": 4}, {"name": "plasma5", "directions": 4}, {"name": "plasma6", "directions": 4}, {"name": "plasma7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "plasma0", "directions": 4}, {"name": "plasma1", "directions": 4}, {"name": "plasma2", "directions": 4}, {"name": "plasma3", "directions": 4}, {"name": "plasma4", "directions": 4}, {"name": "plasma5", "directions": 4}, {"name": "plasma6", "directions": 4}, {"name": "plasma7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/plastic.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/plastic.rsi/meta.json index 9825703a45..3d2b20649e 100644 --- a/Resources/Textures/Constructible/Structures/Walls/plastic.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/plastic.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "plastic0", "directions": 4}, {"name": "plastic1", "directions": 4}, {"name": "plastic2", "directions": 4}, {"name": "plastic3", "directions": 4}, {"name": "plastic4", "directions": 4}, {"name": "plastic5", "directions": 4}, {"name": "plastic6", "directions": 4}, {"name": "plastic7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "plastic0", "directions": 4}, {"name": "plastic1", "directions": 4}, {"name": "plastic2", "directions": 4}, {"name": "plastic3", "directions": 4}, {"name": "plastic4", "directions": 4}, {"name": "plastic5", "directions": 4}, {"name": "plastic6", "directions": 4}, {"name": "plastic7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/riveted.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/riveted.rsi/meta.json index 9c917dfecb..c2d0e29163 100644 --- a/Resources/Textures/Constructible/Structures/Walls/riveted.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/riveted.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "riveted0", "directions": 4}, {"name": "riveted1", "directions": 4}, {"name": "riveted2", "directions": 4}, {"name": "riveted3", "directions": 4}, {"name": "riveted4", "directions": 4}, {"name": "riveted5", "directions": 4}, {"name": "riveted6", "directions": 4}, {"name": "riveted7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "riveted0", "directions": 4}, {"name": "riveted1", "directions": 4}, {"name": "riveted2", "directions": 4}, {"name": "riveted3", "directions": 4}, {"name": "riveted4", "directions": 4}, {"name": "riveted5", "directions": 4}, {"name": "riveted6", "directions": 4}, {"name": "riveted7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/sandstone.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/sandstone.rsi/meta.json index 8c0ac19002..d411460174 100644 --- a/Resources/Textures/Constructible/Structures/Walls/sandstone.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/sandstone.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "sandstone0", "directions": 4}, {"name": "sandstone1", "directions": 4}, {"name": "sandstone2", "directions": 4}, {"name": "sandstone3", "directions": 4}, {"name": "sandstone4", "directions": 4}, {"name": "sandstone5", "directions": 4}, {"name": "sandstone6", "directions": 4}, {"name": "sandstone7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "sandstone0", "directions": 4}, {"name": "sandstone1", "directions": 4}, {"name": "sandstone2", "directions": 4}, {"name": "sandstone3", "directions": 4}, {"name": "sandstone4", "directions": 4}, {"name": "sandstone5", "directions": 4}, {"name": "sandstone6", "directions": 4}, {"name": "sandstone7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/silver.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/silver.rsi/meta.json index b0c0c4f600..d034a4469b 100644 --- a/Resources/Textures/Constructible/Structures/Walls/silver.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/silver.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "silver0", "directions": 4}, {"name": "silver1", "directions": 4}, {"name": "silver2", "directions": 4}, {"name": "silver3", "directions": 4}, {"name": "silver4", "directions": 4}, {"name": "silver5", "directions": 4}, {"name": "silver6", "directions": 4}, {"name": "silver7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "silver0", "directions": 4}, {"name": "silver1", "directions": 4}, {"name": "silver2", "directions": 4}, {"name": "silver3", "directions": 4}, {"name": "silver4", "directions": 4}, {"name": "silver5", "directions": 4}, {"name": "silver6", "directions": 4}, {"name": "silver7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/solid.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/solid.rsi/meta.json index c1c2f1c0d9..af950638ae 100644 --- a/Resources/Textures/Constructible/Structures/Walls/solid.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/solid.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "full", - "directions": 1 + "name": "full" }, { "name": "solid0", @@ -45,7 +44,6 @@ }, { "name": "reinf_construct-0", - "directions": 1, "delays": [ [ 1 @@ -54,7 +52,6 @@ }, { "name": "reinf_construct-1", - "directions": 1, "delays": [ [ 1 @@ -63,7 +60,6 @@ }, { "name": "reinf_construct-2", - "directions": 1, "delays": [ [ 1 @@ -72,7 +68,6 @@ }, { "name": "reinf_construct-3", - "directions": 1, "delays": [ [ 1 @@ -81,7 +76,6 @@ }, { "name": "reinf_construct-4", - "directions": 1, "delays": [ [ 1 @@ -90,7 +84,6 @@ }, { "name": "reinf_construct-5", - "directions": 1, "delays": [ [ 1 @@ -99,7 +92,6 @@ }, { "name": "reinf_cult", - "directions": 1, "delays": [ [ 1 @@ -108,7 +100,6 @@ }, { "name": "reinf_metal", - "directions": 1, "delays": [ [ 1 @@ -117,7 +108,6 @@ }, { "name": "reinf_over", - "directions": 1, "delays": [ [ 1 @@ -270,7 +260,6 @@ }, { "name": "rgeneric", - "directions": 1, "delays": [ [ 1 @@ -279,7 +268,6 @@ }, { "name": "wall_girder", - "directions": 1, "delays": [ [ 1 @@ -288,7 +276,6 @@ }, { "name": "reinforced_wall_girder", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Walls/uranium.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/uranium.rsi/meta.json index 05e28fa50f..963867ce4b 100644 --- a/Resources/Textures/Constructible/Structures/Walls/uranium.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/uranium.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "uranium0", "directions": 4}, {"name": "uranium1", "directions": 4}, {"name": "uranium2", "directions": 4}, {"name": "uranium3", "directions": 4}, {"name": "uranium4", "directions": 4}, {"name": "uranium5", "directions": 4}, {"name": "uranium6", "directions": 4}, {"name": "uranium7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "uranium0", "directions": 4}, {"name": "uranium1", "directions": 4}, {"name": "uranium2", "directions": 4}, {"name": "uranium3", "directions": 4}, {"name": "uranium4", "directions": 4}, {"name": "uranium5", "directions": 4}, {"name": "uranium6", "directions": 4}, {"name": "uranium7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Walls/wood.rsi/meta.json b/Resources/Textures/Constructible/Structures/Walls/wood.rsi/meta.json index 2041d1e90d..e7fc90e9cf 100644 --- a/Resources/Textures/Constructible/Structures/Walls/wood.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Walls/wood.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full", "directions": 1}, {"name": "wood0", "directions": 4}, {"name": "wood1", "directions": 4}, {"name": "wood2", "directions": 4}, {"name": "wood3", "directions": 4}, {"name": "wood4", "directions": 4}, {"name": "wood5", "directions": 4}, {"name": "wood6", "directions": 4}, {"name": "wood7", "directions": 4}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "full"}, {"name": "wood0", "directions": 4}, {"name": "wood1", "directions": 4}, {"name": "wood2", "directions": 4}, {"name": "wood3", "directions": 4}, {"name": "wood4", "directions": 4}, {"name": "wood5", "directions": 4}, {"name": "wood6", "directions": 4}, {"name": "wood7", "directions": 4}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Structures/Windows/phoron_window.rsi/meta.json b/Resources/Textures/Constructible/Structures/Windows/phoron_window.rsi/meta.json index 61f56e509f..128388e0be 100644 --- a/Resources/Textures/Constructible/Structures/Windows/phoron_window.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Windows/phoron_window.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Windows/reinforced_window.rsi/meta.json b/Resources/Textures/Constructible/Structures/Windows/reinforced_window.rsi/meta.json index d0b59b807f..e6fb226588 100644 --- a/Resources/Textures/Constructible/Structures/Windows/reinforced_window.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Windows/reinforced_window.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/Windows/window.rsi/meta.json b/Resources/Textures/Constructible/Structures/Windows/window.rsi/meta.json index b3ba878755..1ad9449fc8 100644 --- a/Resources/Textures/Constructible/Structures/Windows/window.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/Windows/window.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "full", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Constructible/Structures/closet.rsi/meta.json b/Resources/Textures/Constructible/Structures/closet.rsi/meta.json index 0b2db0611b..8119fda5dd 100644 --- a/Resources/Textures/Constructible/Structures/closet.rsi/meta.json +++ b/Resources/Textures/Constructible/Structures/closet.rsi/meta.json @@ -6,208 +6,157 @@ }, "states": [ { - "name": "abductor", - "directions": 1 + "name": "abductor" }, { - "name": "abductor_door", - "directions": 1 + "name": "abductor_door" }, { - "name": "abductor_open", - "directions": 1 + "name": "abductor_open" }, { - "name": "agentbox", - "directions": 1 + "name": "agentbox" }, { - "name": "alien", - "directions": 1 + "name": "alien" }, { - "name": "alien_door", - "directions": 1 + "name": "alien_door" }, { - "name": "alien_open", - "directions": 1 + "name": "alien_open" }, { - "name": "armory", - "directions": 1 + "name": "armory" }, { - "name": "armory_door", - "directions": 1 + "name": "armory_door" }, { - "name": "armory_open", - "directions": 1 + "name": "armory_open" }, { - "name": "atmos", - "directions": 1 + "name": "atmos" }, { - "name": "atmos_door", - "directions": 1 + "name": "atmos_door" }, { - "name": "atmos_open", - "directions": 1 + "name": "atmos_open" }, { - "name": "atmos_wardrobe_door", - "directions": 1 + "name": "atmos_wardrobe_door" }, { - "name": "bio", - "directions": 1 + "name": "bio" }, { - "name": "bio_door", - "directions": 1 + "name": "bio_door" }, { - "name": "bio_jan", - "directions": 1 + "name": "bio_jan" }, { - "name": "bio_jan_door", - "directions": 1 + "name": "bio_jan_door" }, { - "name": "bio_jan_open", - "directions": 1 + "name": "bio_jan_open" }, { - "name": "bio_open", - "directions": 1 + "name": "bio_open" }, { - "name": "bio_sec", - "directions": 1 + "name": "bio_sec" }, { - "name": "bio_sec_door", - "directions": 1 + "name": "bio_sec_door" }, { - "name": "bio_sec_open", - "directions": 1 + "name": "bio_sec_open" }, { - "name": "bio_viro", - "directions": 1 + "name": "bio_viro" }, { - "name": "bio_viro_door", - "directions": 1 + "name": "bio_viro_door" }, { - "name": "bio_viro_open", - "directions": 1 + "name": "bio_viro_open" }, { - "name": "black_door", - "directions": 1 + "name": "black_door" }, { - "name": "blue_door", - "directions": 1 + "name": "blue_door" }, { - "name": "bomb", - "directions": 1 + "name": "bomb" }, { - "name": "bomb_door", - "directions": 1 + "name": "bomb_door" }, { - "name": "bomb_open", - "directions": 1 + "name": "bomb_open" }, { - "name": "cabinet", - "directions": 1 + "name": "cabinet" }, { - "name": "cabinet_door", - "directions": 1 + "name": "cabinet_door" }, { - "name": "cabinet_open", - "directions": 1 + "name": "cabinet_open" }, { - "name": "cap", - "directions": 1 + "name": "cap" }, { - "name": "cap_door", - "directions": 1 + "name": "cap_door" }, { - "name": "cap_open", - "directions": 1 + "name": "cap_open" }, { - "name": "cardboard", - "directions": 1 + "name": "cardboard" }, { - "name": "cardboard_open", - "directions": 1 + "name": "cardboard_open" }, { - "name": "cardboard_special", - "directions": 1 + "name": "cardboard_special" }, { - "name": "cargo", - "directions": 1 + "name": "cargo" }, { - "name": "cargo_door", - "directions": 1 + "name": "cargo_door" }, { - "name": "cargo_open", - "directions": 1 + "name": "cargo_open" }, { - "name": "ce", - "directions": 1 + "name": "ce" }, { - "name": "ce_door", - "directions": 1 + "name": "ce_door" }, { - "name": "ce_open", - "directions": 1 + "name": "ce_open" }, { - "name": "chemical_door", - "directions": 1 + "name": "chemical_door" }, { - "name": "cmo", - "directions": 1 + "name": "cmo" }, { - "name": "cmo_door", - "directions": 1 + "name": "cmo_door" }, { - "name": "cmo_open", - "directions": 1 + "name": "cmo_open" }, { "name": "cursed", - "directions": 1, "delays": [ [ 0.1, @@ -222,7 +171,6 @@ }, { "name": "cursed_door", - "directions": 1, "delays": [ [ 0.1, @@ -236,12 +184,10 @@ ] }, { - "name": "cursed_open", - "directions": 1 + "name": "cursed_open" }, { "name": "cursed_whole", - "directions": 1, "delays": [ [ 0.1, @@ -256,7 +202,6 @@ }, { "name": "decursed", - "directions": 1, "delays": [ [ 0.1, @@ -271,7 +216,6 @@ }, { "name": "decursed_door", - "directions": 1, "delays": [ [ 0.1, @@ -285,300 +229,226 @@ ] }, { - "name": "decursed_open", - "directions": 1 + "name": "decursed_open" }, { - "name": "ecase", - "directions": 1 + "name": "ecase" }, { - "name": "ecase_door", - "directions": 1 + "name": "ecase_door" }, { - "name": "ecase_open", - "directions": 1 + "name": "ecase_open" }, { - "name": "egun", - "directions": 1 + "name": "egun" }, { - "name": "emergency", - "directions": 1 + "name": "emergency" }, { - "name": "emergency_door", - "directions": 1 + "name": "emergency_door" }, { - "name": "emergency_open", - "directions": 1 + "name": "emergency_open" }, { - "name": "eng", - "directions": 1 + "name": "eng" }, { - "name": "eng_elec_door", - "directions": 1 + "name": "eng_elec_door" }, { - "name": "eng_open", - "directions": 1 + "name": "eng_open" }, { - "name": "eng_rad_door", - "directions": 1 + "name": "eng_rad_door" }, { - "name": "eng_secure", - "directions": 1 + "name": "eng_secure" }, { - "name": "eng_secure_door", - "directions": 1 + "name": "eng_secure_door" }, { - "name": "eng_secure_open", - "directions": 1 + "name": "eng_secure_open" }, { - "name": "eng_tool_door", - "directions": 1 + "name": "eng_tool_door" }, { - "name": "eng_weld_door", - "directions": 1 + "name": "eng_weld_door" }, { - "name": "fire", - "directions": 1 + "name": "fire" }, { - "name": "fire_door", - "directions": 1 + "name": "fire_door" }, { - "name": "fire_open", - "directions": 1 + "name": "fire_open" }, { - "name": "freezer", - "directions": 1 + "name": "freezer" }, { - "name": "freezer_door", - "directions": 1 + "name": "freezer_door" }, { - "name": "freezer_open", - "directions": 1 + "name": "freezer_open" }, { - "name": "generic", - "directions": 1 + "name": "generic" }, { - "name": "generic_door", - "directions": 1 + "name": "generic_door" }, { - "name": "generic_open", - "directions": 1 + "name": "generic_open" }, { - "name": "green_door", - "directions": 1 + "name": "green_door" }, { - "name": "grey_door", - "directions": 1 + "name": "grey_door" }, { - "name": "hop", - "directions": 1 + "name": "hop" }, { - "name": "hop_door", - "directions": 1 + "name": "hop_door" }, { - "name": "hop_open", - "directions": 1 + "name": "hop_open" }, { - "name": "hos", - "directions": 1 + "name": "hos" }, { - "name": "hos_door", - "directions": 1 + "name": "hos_door" }, { - "name": "hos_open", - "directions": 1 + "name": "hos_open" }, { - "name": "hydro", - "directions": 1 + "name": "hydro" }, { - "name": "hydro_door", - "directions": 1 + "name": "hydro_door" }, { - "name": "hydro_open", - "directions": 1 + "name": "hydro_open" }, { - "name": "locked", - "directions": 1 + "name": "locked" }, { - "name": "med", - "directions": 1 + "name": "med" }, { - "name": "med_door", - "directions": 1 + "name": "med_door" }, { - "name": "med_open", - "directions": 1 + "name": "med_open" }, { - "name": "med_secure", - "directions": 1 + "name": "med_secure" }, { - "name": "med_secure_door", - "directions": 1 + "name": "med_secure_door" }, { - "name": "med_secure_open", - "directions": 1 + "name": "med_secure_open" }, { - "name": "metalbox", - "directions": 1 + "name": "metalbox" }, { - "name": "metalbox_open", - "directions": 1 + "name": "metalbox_open" }, { - "name": "mining", - "directions": 1 + "name": "mining" }, { - "name": "mining_door", - "directions": 1 + "name": "mining_door" }, { - "name": "mining_open", - "directions": 1 + "name": "mining_open" }, { - "name": "mixed_door", - "directions": 1 + "name": "mixed_door" }, { - "name": "oldcloset", - "directions": 1 + "name": "oldcloset" }, { - "name": "orange_door", - "directions": 1 + "name": "orange_door" }, { - "name": "pink_door", - "directions": 1 + "name": "pink_door" }, { - "name": "qm", - "directions": 1 + "name": "qm" }, { - "name": "qm_door", - "directions": 1 + "name": "qm_door" }, { - "name": "qm_open", - "directions": 1 + "name": "qm_open" }, { - "name": "rd", - "directions": 1 + "name": "rd" }, { - "name": "rd_door", - "directions": 1 + "name": "rd_door" }, { - "name": "rd_open", - "directions": 1 + "name": "rd_open" }, { - "name": "red_door", - "directions": 1 + "name": "red_door" }, { - "name": "science", - "directions": 1 + "name": "science" }, { - "name": "science_door", - "directions": 1 + "name": "science_door" }, { - "name": "science_open", - "directions": 1 + "name": "science_open" }, { - "name": "sec", - "directions": 1 + "name": "sec" }, { - "name": "sec_door", - "directions": 1 + "name": "sec_door" }, { - "name": "sec_open", - "directions": 1 + "name": "sec_open" }, { - "name": "secure", - "directions": 1 + "name": "secure" }, { - "name": "secure_door", - "directions": 1 + "name": "secure_door" }, { - "name": "secure_open", - "directions": 1 + "name": "secure_open" }, { - "name": "shotgun", - "directions": 1 + "name": "shotgun" }, { - "name": "shotguncase", - "directions": 1 + "name": "shotguncase" }, { - "name": "shotguncase_door", - "directions": 1 + "name": "shotguncase_door" }, { - "name": "shotguncase_open", - "directions": 1 + "name": "shotguncase_open" }, { "name": "sparking", - "directions": 1, "delays": [ [ 0.1, @@ -589,56 +459,43 @@ ] }, { - "name": "syndicate", - "directions": 1 + "name": "syndicate" }, { - "name": "syndicate_door", - "directions": 1 + "name": "syndicate_door" }, { - "name": "syndicate_open", - "directions": 1 + "name": "syndicate_open" }, { - "name": "tac", - "directions": 1 + "name": "tac" }, { - "name": "tac_door", - "directions": 1 + "name": "tac_door" }, { - "name": "tac_open", - "directions": 1 + "name": "tac_open" }, { - "name": "unlocked", - "directions": 1 + "name": "unlocked" }, { - "name": "warden", - "directions": 1 + "name": "warden" }, { - "name": "warden_door", - "directions": 1 + "name": "warden_door" }, { - "name": "warden_open", - "directions": 1 + "name": "warden_open" }, { - "name": "welded", - "directions": 1 + "name": "welded" }, { - "name": "white_door", - "directions": 1 + "name": "white_door" }, { - "name": "yellow_door", - "directions": 1 + "name": "yellow_door" } ] } diff --git a/Resources/Textures/Constructible/Tiles/catwalk.rsi/meta.json b/Resources/Textures/Constructible/Tiles/catwalk.rsi/meta.json index 63031ed3d1..c5e85cfe03 100644 --- a/Resources/Textures/Constructible/Tiles/catwalk.rsi/meta.json +++ b/Resources/Textures/Constructible/Tiles/catwalk.rsi/meta.json @@ -40,8 +40,7 @@ "directions": 4 }, { - "name": "catwalk_preview", - "directions": 1 + "name": "catwalk_preview" } ] } diff --git a/Resources/Textures/Effects/arcs.rsi/meta.json b/Resources/Textures/Effects/arcs.rsi/meta.json index 0d9524fb4d..a2de2a5893 100644 --- a/Resources/Textures/Effects/arcs.rsi/meta.json +++ b/Resources/Textures/Effects/arcs.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bite", - "directions": 1, "delays": [ [ 0.1, @@ -21,7 +20,6 @@ }, { "name": "claw", - "directions": 1, "delays": [ [ 0.1, @@ -33,7 +31,6 @@ }, { "name": "disarm", - "directions": 1, "delays": [ [ 0.1, @@ -44,7 +41,6 @@ }, { "name": "kick", - "directions": 1, "delays": [ [ 0.1, @@ -55,7 +51,6 @@ }, { "name": "punch", - "directions": 1, "delays": [ [ 0.1, @@ -68,7 +63,6 @@ }, { "name": "smash", - "directions": 1, "delays": [ [ 0.1, @@ -78,16 +72,13 @@ ] }, { - "name": "spear", - "directions": 1 + "name": "spear" }, { - "name": "slash", - "directions": 1 + "name": "slash" }, { - "name": "fist", - "directions": 1 + "name": "fist" } ] } diff --git a/Resources/Textures/Effects/atmospherics.rsi/meta.json b/Resources/Textures/Effects/atmospherics.rsi/meta.json index a03db15269..9a88a3dfef 100644 --- a/Resources/Textures/Effects/atmospherics.rsi/meta.json +++ b/Resources/Textures/Effects/atmospherics.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "chem_gas_old", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "freon", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "freon_old", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "fusion_gas", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "miasma", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "miasma_old", "directions": 1, "delays": [[0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998]]}, {"name": "nitrous_oxide", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitrous_oxide_old", "directions": 1, "delays": [[0.2, 0.2, 0.2]]}, {"name": "nitryl", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitryl_old", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "phoron", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "phoron_old", "directions": 1, "delays": [[0.2, 0.2, 0.2]]}, {"name": "tritium", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "tritium_old", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "water_vapor", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "water_vapor_old", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "chem_gas_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "freon", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "freon_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "fusion_gas", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "miasma", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "miasma_old", "delays": [[0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998]]}, {"name": "nitrous_oxide", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitrous_oxide_old", "delays": [[0.2, 0.2, 0.2]]}, {"name": "nitryl", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitryl_old", "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "phoron", "delays": [[0.1, 0.1, 0.1]]}, {"name": "phoron_old", "delays": [[0.2, 0.2, 0.2]]}, {"name": "tritium", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "tritium_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "water_vapor", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "water_vapor_old", "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2]]}]} diff --git a/Resources/Textures/Effects/chempuff.rsi/meta.json b/Resources/Textures/Effects/chempuff.rsi/meta.json index c1dde9153e..71c90d7be6 100644 --- a/Resources/Textures/Effects/chempuff.rsi/meta.json +++ b/Resources/Textures/Effects/chempuff.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "chempuff", - "directions": 1, "delays": [ [ 0.05, diff --git a/Resources/Textures/Effects/creampie.rsi/meta.json b/Resources/Textures/Effects/creampie.rsi/meta.json index 4ae015b294..7e0450a7fc 100644 --- a/Resources/Textures/Effects/creampie.rsi/meta.json +++ b/Resources/Textures/Effects/creampie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0", "states": [{"name": "creampie_ai", "directions": 1, "delays": [[1.0]]}, {"name": "creampie_corgi", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_drone", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_engborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_hardsuit", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_helmet", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_human", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_janborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_lizard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_medborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_monkey", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_secborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_standborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_xeno_crit", "directions": 1, "delays": [[1.0]]}, {"name": "creampie_xeno_dead", "directions": 1, "delays": [[1.0]]}, {"name": "creampie_xeno_sleep", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_xenomorph", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0", "states": [{"name": "creampie_ai", "delays": [[1.0]]}, {"name": "creampie_corgi", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_drone", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_engborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_hardsuit", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_helmet", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_human", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_janborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_lizard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_medborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_monkey", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_secborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_standborg", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_xeno_crit", "delays": [[1.0]]}, {"name": "creampie_xeno_dead", "delays": [[1.0]]}, {"name": "creampie_xeno_sleep", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "creampie_xenomorph", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Effects/explosion.rsi/meta.json b/Resources/Textures/Effects/explosion.rsi/meta.json index c70a3e60f8..1c3b45301a 100644 --- a/Resources/Textures/Effects/explosion.rsi/meta.json +++ b/Resources/Textures/Effects/explosion.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "explosionfast", - "directions": 1, "delays": [ [ 0.06, diff --git a/Resources/Textures/Effects/extinguisherSpray.rsi/meta.json b/Resources/Textures/Effects/extinguisherSpray.rsi/meta.json index 4a6ba19aca..f7659b9b84 100644 --- a/Resources/Textures/Effects/extinguisherSpray.rsi/meta.json +++ b/Resources/Textures/Effects/extinguisherSpray.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "extinguish", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Effects/fire.rsi/meta.json b/Resources/Textures/Effects/fire.rsi/meta.json index 016582890e..5472c205cf 100644 --- a/Resources/Textures/Effects/fire.rsi/meta.json +++ b/Resources/Textures/Effects/fire.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "1", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1]]}, {"name": "2", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "3", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "fire", "directions": 1, "delays": [[0.1, 0.1, 0.1]]}, {"name": "overcharged", "directions": 1, "delays": [[0.1, 0.1, 5.0, 0.1, 0.1, 0.1, 2.0, 0.1, 4.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "1", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1]]}, {"name": "2", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "3", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "fire", "delays": [[0.1, 0.1, 0.1]]}, {"name": "overcharged", "delays": [[0.1, 0.1, 5.0, 0.1, 0.1, 0.1, 2.0, 0.1, 4.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Effects/portal.rsi/meta.json b/Resources/Textures/Effects/portal.rsi/meta.json index 724c9230f8..c3d19f1ce6 100644 --- a/Resources/Textures/Effects/portal.rsi/meta.json +++ b/Resources/Textures/Effects/portal.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "portal-pending", - "directions": 1, "delays": [[ 0.1, 0.1, @@ -29,7 +28,6 @@ }, { "name": "portal-unconnected", - "directions": 1, "delays": [[ 0.1, 0.1, diff --git a/Resources/Textures/Fluids/gibblet.rsi/meta.json b/Resources/Textures/Fluids/gibblet.rsi/meta.json index 9e665591fa..e6827234c5 100644 --- a/Resources/Textures/Fluids/gibblet.rsi/meta.json +++ b/Resources/Textures/Fluids/gibblet.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aff0d780742ca3902d8b05f854c212c8cda32c4f/icons/effects/blood.dmi", "states": [ { - "name": "gibblet-0", - "directions": 1 + "name": "gibblet-0" }, { - "name": "gibblet-1", - "directions": 1 + "name": "gibblet-1" }, { - "name": "gibblet-2", - "directions": 1 + "name": "gibblet-2" }, { - "name": "gibblet-3", - "directions": 1 + "name": "gibblet-3" }, { - "name": "gibblet-4", - "directions": 1 + "name": "gibblet-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Fluids/smear.rsi/meta.json b/Resources/Textures/Fluids/smear.rsi/meta.json index 3450d9e4de..ebccb6d459 100644 --- a/Resources/Textures/Fluids/smear.rsi/meta.json +++ b/Resources/Textures/Fluids/smear.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aff0d780742ca3902d8b05f854c212c8cda32c4f/icons/effects/blood.dmi", "states": [ { - "name": "smear-0", - "directions": 1 + "name": "smear-0" }, { - "name": "smear-1", - "directions": 1 + "name": "smear-1" }, { - "name": "smear-2", - "directions": 1 + "name": "smear-2" }, { - "name": "smear-3", - "directions": 1 + "name": "smear-3" }, { - "name": "smear-4", - "directions": 1 + "name": "smear-4" }, { - "name": "smear-5", - "directions": 1 + "name": "smear-5" }, { - "name": "smear-6", - "directions": 1 + "name": "smear-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Fluids/splatter.rsi/meta.json b/Resources/Textures/Fluids/splatter.rsi/meta.json index 5fcce5c890..b224dd00a5 100644 --- a/Resources/Textures/Fluids/splatter.rsi/meta.json +++ b/Resources/Textures/Fluids/splatter.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aff0d780742ca3902d8b05f854c212c8cda32c4f/icons/effects/blood.dmi", "states": [ { - "name": "splatter-0", - "directions": 1 + "name": "splatter-0" }, { - "name": "splatter-1", - "directions": 1 + "name": "splatter-1" }, { - "name": "splatter-2", - "directions": 1 + "name": "splatter-2" }, { - "name": "splatter-3", - "directions": 1 + "name": "splatter-3" }, { - "name": "splatter-4", - "directions": 1 + "name": "splatter-4" }, { - "name": "splatter-5", - "directions": 1 + "name": "splatter-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Fluids/vomit.rsi/meta.json b/Resources/Textures/Fluids/vomit.rsi/meta.json index f4fd5064d3..f0a3ffb3b5 100644 --- a/Resources/Textures/Fluids/vomit.rsi/meta.json +++ b/Resources/Textures/Fluids/vomit.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aff0d780742ca3902d8b05f854c212c8cda32c4f/icons/effects/blood.dmi", "states": [ { - "name": "vomit-0", - "directions": 1 + "name": "vomit-0" }, { - "name": "vomit-1", - "directions": 1 + "name": "vomit-1" }, { - "name": "vomit-2", - "directions": 1 + "name": "vomit-2" }, { - "name": "vomit-3", - "directions": 1 + "name": "vomit-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json b/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json index 2a60f9e2db..825ecc9876 100644 --- a/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json +++ b/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aff0d780742ca3902d8b05f854c212c8cda32c4f/icons/effects/blood.dmi", "states": [ { - "name": "vomit_toxin-0", - "directions": 1 + "name": "vomit_toxin-0" }, { - "name": "vomit_toxin-1", - "directions": 1 + "name": "vomit_toxin-1" }, { - "name": "vomit_toxin-2", - "directions": 1 + "name": "vomit_toxin-2" }, { - "name": "vomit_toxin-3", - "directions": 1 + "name": "vomit_toxin-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Fluids/writing.rsi/meta.json b/Resources/Textures/Fluids/writing.rsi/meta.json index 0d24adffa6..5d55444729 100644 --- a/Resources/Textures/Fluids/writing.rsi/meta.json +++ b/Resources/Textures/Fluids/writing.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aff0d780742ca3902d8b05f854c212c8cda32c4f/icons/effects/blood.dmi", "states": [ { - "name": "writing-0", - "directions": 1 + "name": "writing-0" }, { - "name": "writing-1", - "directions": 1 + "name": "writing-1" }, { - "name": "writing-2", - "directions": 1 + "name": "writing-2" }, { - "name": "writing-3", - "directions": 1 + "name": "writing-3" }, { - "name": "writing-4", - "directions": 1 + "name": "writing-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Interface/Actions/meta.json b/Resources/Textures/Interface/Actions/meta.json index a62b2f5582..33e10333b1 100644 --- a/Resources/Textures/Interface/Actions/meta.json +++ b/Resources/Textures/Interface/Actions/meta.json @@ -8,20 +8,16 @@ "copyright": "Taken from https://github.com/tgstation/tgstation/commit/3d049e69fe71a0be2133005e65ea469135d648c8", "states": [ { - "name": "internal0", - "directions": 1 + "name": "internal0" }, { - "name": "internal1", - "directions": 1 + "name": "internal1" }, { - "name": "scream", - "directions": 1 + "name": "scream" }, { - "name": "disarm", - "directions": 1 + "name": "disarm" } ] } diff --git a/Resources/Textures/Interface/Alerts/Pressure/meta.json b/Resources/Textures/Interface/Alerts/Pressure/meta.json index 493417f7bf..6c4b44e058 100644 --- a/Resources/Textures/Interface/Alerts/Pressure/meta.json +++ b/Resources/Textures/Interface/Alerts/Pressure/meta.json @@ -9,39 +9,19 @@ "states": [ { "name": "highpressure1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "highpressure2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lowpressure1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lowpressure2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Interface/Alerts/breathing.rsi/meta.json b/Resources/Textures/Interface/Alerts/breathing.rsi/meta.json index 704f119830..b824752734 100644 --- a/Resources/Textures/Interface/Alerts/breathing.rsi/meta.json +++ b/Resources/Textures/Interface/Alerts/breathing.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "https://github.com/tgstation/tgstation/blob/2f18e6232ce5897554351194082469a043c5ab06/icons/hud/screen_alert.dmi", "states": [{"name": "not_enough_co2", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "not_enough_nitro", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "not_enough_oxy", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "not_enough_tox", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "too_much_co2", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "too_much_nitro", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "too_much_oxy", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "too_much_tox", "directions": 1, "delays": [[0.5, 0.5]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "https://github.com/tgstation/tgstation/blob/2f18e6232ce5897554351194082469a043c5ab06/icons/hud/screen_alert.dmi", "states": [{"name": "not_enough_co2", "delays": [[0.5, 0.5]]}, {"name": "not_enough_nitro", "delays": [[0.5, 0.5]]}, {"name": "not_enough_oxy", "delays": [[0.5, 0.5]]}, {"name": "not_enough_tox", "delays": [[0.5, 0.5]]}, {"name": "too_much_co2", "delays": [[0.5, 0.5]]}, {"name": "too_much_nitro", "delays": [[0.5, 0.5]]}, {"name": "too_much_oxy", "delays": [[0.5, 0.5]]}, {"name": "too_much_tox", "delays": [[0.5, 0.5]]}]} \ No newline at end of file diff --git a/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json b/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json index c3304b8d9f..a545f5fc5b 100644 --- a/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json @@ -7,309 +7,139 @@ "states": [ { "name": "Detective", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "QuarterMaster", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Botanist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "AtmosphericTechnician", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Nanotrasen", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Prisoner", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Janitor", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Chemist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "StationEngineer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "SecurityOfficer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "NoId", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "ChiefMedicalOfficer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Roboticist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Chaplain", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Lawyer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Unknown", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Librarian", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "CargoTechnician", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Scientist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Geneticist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Clown", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Captain", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "HeadOfPersonnel", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Virologist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "ShaftMiner", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Assistant", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "ChiefEngineer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Bartender", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "HeadOfSecurity", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "MedicalDoctor", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Chef", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Warden", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "ResearchDirector", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Mime", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Interface/Misc/markers.rsi/meta.json b/Resources/Textures/Interface/Misc/markers.rsi/meta.json index 0d8134ac63..8ef19b96d2 100644 --- a/Resources/Textures/Interface/Misc/markers.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/markers.rsi/meta.json @@ -9,543 +9,243 @@ "states": [ { "name": "AI", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Assistant", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Atmospheric Technician", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Bartender", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Botanist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Captain", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Cargo Technician", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Chaplain", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Chemist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Chief Engineer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Chief Medical Officer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Clown", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Cook", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Curator", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Cyborg", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Detective", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Geneticist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Head of Personnel", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Head of Security", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Janitor", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Lawyer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Medical Doctor", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Mime", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Paramedic", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Prisoner", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Psychologist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Quartermaster", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Research Director", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Roboticist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Scientist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Security Officer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Shaft Miner", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Station Engineer", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Virologist", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "Warden", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "cross_blue", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "cross_green", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "cross_pink", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "cross_red", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "observer_start", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_ai", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_grenade", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_hitscan", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_launcher", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_launcher_ammo", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_magnum_ammo", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_melee", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_pistol", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_pistol_ammo", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_revolver", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_rifle", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_rifle_ammo", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_shotgun", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_shotgun_ammo", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_smg", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_sniper", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_trash", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_xenoai", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_toy", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spawner_figure", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Interface/Misc/pointing.rsi/meta.json b/Resources/Textures/Interface/Misc/pointing.rsi/meta.json index 87ab2ae0e7..ff2120f04c 100644 --- a/Resources/Textures/Interface/Misc/pointing.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/pointing.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "pointing", - "directions": 1, "delays": [[1]] } ] diff --git a/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json b/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json index 01f0ac17b0..612f362d3c 100644 --- a/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/tgstation/tgstation/blob/886ca0f8dddf83ecaf10c92ff106172722352192/icons/effects/progessbar.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } \ No newline at end of file diff --git a/Resources/Textures/Mobs/Aliens/Carps/carp_holo.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/carp_holo.rsi/meta.json index b26ae858d7..51380fa606 100644 --- a/Resources/Textures/Mobs/Aliens/Carps/carp_holo.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Carps/carp_holo.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Aliens/Carps/carp_magic.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/carp_magic.rsi/meta.json index 30cc05d941..dc25796194 100644 --- a/Resources/Textures/Mobs/Aliens/Carps/carp_magic.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Carps/carp_magic.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 @@ -53,7 +51,6 @@ }, { "name": "magicarp_gib", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Mobs/Aliens/Carps/carp_space.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/carp_space.rsi/meta.json index 66407ac9a2..86770f8590 100644 --- a/Resources/Textures/Mobs/Aliens/Carps/carp_space.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Carps/carp_space.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 @@ -53,7 +51,6 @@ }, { "name": "carp_gib", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Mobs/Aliens/Xenos/xeno.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/xeno.rsi/meta.json index b9c9a315d6..433132a72e 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/xeno.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/xeno.rsi/meta.json @@ -16,16 +16,13 @@ "directions": 4 }, { - "name": "dead", - "directions": 1 + "name": "dead" }, { - "name": "sleeping", - "directions": 1 + "name": "sleeping" }, { - "name": "crit", - "directions": 1 + "name": "crit" } ] } diff --git a/Resources/Textures/Mobs/Animals/bat.rsi/meta.json b/Resources/Textures/Mobs/Animals/bat.rsi/meta.json index 127fb60ead..eed1f0d8cb 100644 --- a/Resources/Textures/Mobs/Animals/bat.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/bat.rsi/meta.json @@ -39,7 +39,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/bear.rsi/meta.json b/Resources/Textures/Mobs/Animals/bear.rsi/meta.json index 36e8f5ff86..6102a50503 100644 --- a/Resources/Textures/Mobs/Animals/bear.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/bear.rsi/meta.json @@ -27,7 +27,6 @@ }, { "name": "brownbear_dead", - "directions": 1, "delays": [ [ 1 @@ -36,7 +35,6 @@ }, { "name": "brownbear_gib", - "directions": 1, "delays": [ [ 0.1, @@ -77,7 +75,6 @@ }, { "name": "combatbear_dead", - "directions": 1, "delays": [ [ 1 @@ -104,7 +101,6 @@ }, { "name": "bear_dead", - "directions": 1, "delays": [ [ 1 @@ -113,7 +109,6 @@ }, { "name": "bear_gib", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Mobs/Animals/bee.rsi/meta.json b/Resources/Textures/Mobs/Animals/bee.rsi/meta.json index aaa57c0f9a..f123c1c224 100644 --- a/Resources/Textures/Mobs/Animals/bee.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/bee.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "dead", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "0", - "directions": 1, "delays": [ [ 0.1, @@ -35,7 +33,6 @@ }, { "name": "1", - "directions": 1, "delays": [ [ 0.1, @@ -52,7 +49,6 @@ }, { "name": "2", - "directions": 1, "delays": [ [ 0.1, @@ -69,7 +65,6 @@ }, { "name": "3", - "directions": 1, "delays": [ [ 0.1, @@ -86,7 +81,6 @@ }, { "name": "4", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Mobs/Animals/butterfly.rsi/meta.json b/Resources/Textures/Mobs/Animals/butterfly.rsi/meta.json index 09456eb791..601d096330 100644 --- a/Resources/Textures/Mobs/Animals/butterfly.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/butterfly.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/chick.rsi/meta.json b/Resources/Textures/Mobs/Animals/chick.rsi/meta.json index 1d01fd99a0..aa6b064a96 100644 --- a/Resources/Textures/Mobs/Animals/chick.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/chick.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "dead", - "directions": 1, "delays": [ [ 1 @@ -36,7 +35,6 @@ }, { "name": "chick_gib", - "directions": 1, "delays": [ [ 0.6, diff --git a/Resources/Textures/Mobs/Animals/chicken.rsi/meta.json b/Resources/Textures/Mobs/Animals/chicken.rsi/meta.json index e549ea2d01..42f14d611e 100644 --- a/Resources/Textures/Mobs/Animals/chicken.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/chicken.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon-0", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "icon-1", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "icon-2", - "directions": 1, "delays": [ [ 1 @@ -114,7 +111,6 @@ }, { "name": "dead-0", - "directions": 1, "delays": [ [ 1 @@ -123,7 +119,6 @@ }, { "name": "dead-1", - "directions": 1, "delays": [ [ 1 @@ -132,7 +127,6 @@ }, { "name": "dead-2", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/cow.rsi/meta.json b/Resources/Textures/Mobs/Animals/cow.rsi/meta.json index caab74e720..df28f28969 100644 --- a/Resources/Textures/Mobs/Animals/cow.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/cow.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "dead", - "directions": 1, "delays": [ [ 1 @@ -36,7 +35,6 @@ }, { "name": "gib", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Mobs/Animals/crab.rsi/meta.json b/Resources/Textures/Mobs/Animals/crab.rsi/meta.json index 73d7ef3bdb..5559f5b36d 100644 --- a/Resources/Textures/Mobs/Animals/crab.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/crab.rsi/meta.json @@ -35,7 +35,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/frog.rsi/meta.json b/Resources/Textures/Mobs/Animals/frog.rsi/meta.json index 2d517146ef..22406ca7ec 100644 --- a/Resources/Textures/Mobs/Animals/frog.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/frog.rsi/meta.json @@ -35,7 +35,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/goat.rsi/meta.json b/Resources/Textures/Mobs/Animals/goat.rsi/meta.json index b362ac4c89..043607479d 100644 --- a/Resources/Textures/Mobs/Animals/goat.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/goat.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/goose.rsi/meta.json b/Resources/Textures/Mobs/Animals/goose.rsi/meta.json index fb988e5d4d..3f826a2be4 100644 --- a/Resources/Textures/Mobs/Animals/goose.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/goose.rsi/meta.json @@ -27,7 +27,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/gorilla.rsi/meta.json b/Resources/Textures/Mobs/Animals/gorilla.rsi/meta.json index 8a9ee12dc6..fefcf1944f 100644 --- a/Resources/Textures/Mobs/Animals/gorilla.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/gorilla.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/lizard.rsi/meta.json b/Resources/Textures/Mobs/Animals/lizard.rsi/meta.json index 8680a2713d..9ffa4a0ded 100644 --- a/Resources/Textures/Mobs/Animals/lizard.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/lizard.rsi/meta.json @@ -27,7 +27,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 @@ -36,7 +35,6 @@ }, { "name": "gib", - "directions": 1, "delays": [ [ 0.6, diff --git a/Resources/Textures/Mobs/Animals/monkey.rsi/meta.json b/Resources/Textures/Mobs/Animals/monkey.rsi/meta.json index 1621265020..cda9e24b13 100644 --- a/Resources/Textures/Mobs/Animals/monkey.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/monkey.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json b/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json index f63289117b..6401a8b46a 100644 --- a/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon-0", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "icon-1", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "icon-2", - "directions": 1, "delays": [ [ 1 @@ -114,7 +111,6 @@ }, { "name": "dead-0", - "directions": 1, "delays": [ [ 1 @@ -123,7 +119,6 @@ }, { "name": "dead-1", - "directions": 1, "delays": [ [ 1 @@ -132,7 +127,6 @@ }, { "name": "dead-2", - "directions": 1, "delays": [ [ 1 @@ -141,7 +135,6 @@ }, { "name": "splat-0", - "directions": 1, "delays": [ [ 1 @@ -150,7 +143,6 @@ }, { "name": "splat-1", - "directions": 1, "delays": [ [ 1 @@ -159,7 +151,6 @@ }, { "name": "splat-2", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/parrot.rsi/meta.json b/Resources/Textures/Mobs/Animals/parrot.rsi/meta.json index 5a57f8f46e..366cfe7b2c 100644 --- a/Resources/Textures/Mobs/Animals/parrot.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/parrot.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Animals/penguin.rsi/meta.json b/Resources/Textures/Mobs/Animals/penguin.rsi/meta.json index d19b479808..c681783b92 100644 --- a/Resources/Textures/Mobs/Animals/penguin.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/penguin.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CCBYNA3", "copyright": "Taken from https://github.com/tgstation/tgstation/commit/53d1f1477d22a11a99c6c6924977cd431075761b", "states": [{"name": "penguin", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "penguin_baby", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "penguin_baby_dead", "directions": 1, "delays": [[1.0]]}, {"name": "penguin_baby_dead_blood", "directions": 1, "delays": [[1.0]]}, {"name": "penguin_dead", "directions": 1, "delays": [[1.0]]}, {"name": "penguin_dead_blood", "directions": 1, "delays": [[1.0]]}, {"name": "penguin_egg", "directions": 1, "delays": [[1.0]]}, {"name": "penguin_egg_broken", "directions": 1, "delays": [[1.0]]}, {"name": "penguin_shamebrero", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CCBYNA3", "copyright": "Taken from https://github.com/tgstation/tgstation/commit/53d1f1477d22a11a99c6c6924977cd431075761b", "states": [{"name": "penguin", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "penguin_baby", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "penguin_baby_dead", "delays": [[1.0]]}, {"name": "penguin_baby_dead_blood", "delays": [[1.0]]}, {"name": "penguin_dead", "delays": [[1.0]]}, {"name": "penguin_dead_blood", "delays": [[1.0]]}, {"name": "penguin_egg", "delays": [[1.0]]}, {"name": "penguin_egg_broken", "delays": [[1.0]]}, {"name": "penguin_shamebrero", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Animals/snake.rsi/meta.json b/Resources/Textures/Mobs/Animals/snake.rsi/meta.json index 7177be225b..68eeda00ef 100644 --- a/Resources/Textures/Mobs/Animals/snake.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/snake.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -48,7 +47,6 @@ }, { "name": "dead", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Mobs/Animals/spider.rsi/meta.json b/Resources/Textures/Mobs/Animals/spider.rsi/meta.json index be37234ec3..080af7172a 100644 --- a/Resources/Textures/Mobs/Animals/spider.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/spider.rsi/meta.json @@ -165,7 +165,6 @@ }, { "name": "hunter_dead", - "directions": 1, "delays": [ [ 1 @@ -174,7 +173,6 @@ }, { "name": "midwife_dead", - "directions": 1, "delays": [ [ 1 @@ -183,7 +181,6 @@ }, { "name": "viper_dead", - "directions": 1, "delays": [ [ 1 @@ -192,7 +189,6 @@ }, { "name": "tarantula_dead", - "directions": 1, "delays": [ [ 1 @@ -201,7 +197,6 @@ }, { "name": "nurse_dead", - "directions": 1, "delays": [ [ 1 @@ -210,7 +205,6 @@ }, { "name": "guard_dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json index cd766a6f94..eacf47c9a1 100644 --- a/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "3oclock", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "5oclockmoustache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "7oclock", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "7oclockmoustache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "abe", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "brokenman", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "chaplin", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "chin", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "chinlessbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "croppedfullbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "dorsalfnil", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "dwarf", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "elvis", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fiveoclock", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fullbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fumanchu", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "gt", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "hip", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "hogan", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "jensen", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "longbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "longbeard_l", "directions": 1, "delays": [[1.0]]}, {"name": "martialartist", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "moonshiner", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "moustache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "mutton", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "muttonmus", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "neckbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pencilstache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "selleck", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "sideburn", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "smallstache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "vandyke", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "volaju", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "walrus", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "watson", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "wise", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "shaved", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "3oclock", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "5oclockmoustache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "7oclock", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "7oclockmoustache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "abe", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "brokenman", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "chaplin", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "chin", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "chinlessbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "croppedfullbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "dorsalfnil", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "dwarf", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "elvis", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fiveoclock", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fullbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fumanchu", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "gt", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "hip", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "hogan", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "jensen", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "longbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "longbeard_l", "delays": [[1.0]]}, {"name": "martialartist", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "moonshiner", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "moustache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "mutton", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "muttonmus", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "neckbeard", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pencilstache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "selleck", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "sideburn", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "smallstache", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "vandyke", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "volaju", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "walrus", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "watson", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "wise", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "shaved", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json index e5d2dabd53..001255d508 100644 --- a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json +++ b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json @@ -8,7 +8,6 @@ "states": [ { "name": "animated", - "directions": 1, "delays": [[ 0.2, 0.2, @@ -26,7 +25,6 @@ }, { "name": "icon", - "directions": 1, "delays": [[ 1.0, ]] diff --git a/Resources/Textures/Mobs/Pets/cat.rsi/meta.json b/Resources/Textures/Mobs/Pets/cat.rsi/meta.json index 79e5c555bd..e6d1436048 100644 --- a/Resources/Textures/Mobs/Pets/cat.rsi/meta.json +++ b/Resources/Textures/Mobs/Pets/cat.rsi/meta.json @@ -27,7 +27,6 @@ }, { "name": "cak_dead", - "directions": 1, "delays": [ [ 1 @@ -36,7 +35,6 @@ }, { "name": "cak_rest", - "directions": 1, "delays": [ [ 1 @@ -45,7 +43,6 @@ }, { "name": "cak_sit", - "directions": 1, "delays": [ [ 1 @@ -90,7 +87,6 @@ }, { "name": "cat2_dead", - "directions": 1, "delays": [ [ 1 @@ -99,7 +95,6 @@ }, { "name": "cat2_rest", - "directions": 1, "delays": [ [ 0.1, @@ -111,7 +106,6 @@ }, { "name": "cat2_sit", - "directions": 1, "delays": [ [ 1 @@ -120,7 +114,6 @@ }, { "name": "cat_dead", - "directions": 1, "delays": [ [ 1 @@ -129,7 +122,6 @@ }, { "name": "cat_deadcollar", - "directions": 1, "delays": [ [ 1 @@ -138,7 +130,6 @@ }, { "name": "cat_deadtag", - "directions": 1, "delays": [ [ 1 @@ -147,7 +138,6 @@ }, { "name": "cat_rest", - "directions": 1, "delays": [ [ 0.1, @@ -159,7 +149,6 @@ }, { "name": "cat_restcollar", - "directions": 1, "delays": [ [ 1 @@ -168,7 +157,6 @@ }, { "name": "cat_resttag", - "directions": 1, "delays": [ [ 1 @@ -177,7 +165,6 @@ }, { "name": "cat_sit", - "directions": 1, "delays": [ [ 1 @@ -240,7 +227,6 @@ }, { "name": "kitten_dead", - "directions": 1, "delays": [ [ 1 @@ -249,7 +235,6 @@ }, { "name": "kitten_deadcollar", - "directions": 1, "delays": [ [ 1 @@ -258,7 +243,6 @@ }, { "name": "kitten_deadtag", - "directions": 1, "delays": [ [ 1 @@ -267,7 +251,6 @@ }, { "name": "kitten_rest", - "directions": 1, "delays": [ [ 0.1, @@ -279,7 +262,6 @@ }, { "name": "kitten_restcollar", - "directions": 1, "delays": [ [ 1 @@ -288,7 +270,6 @@ }, { "name": "kitten_resttag", - "directions": 1, "delays": [ [ 1 @@ -297,7 +278,6 @@ }, { "name": "kitten_sit", - "directions": 1, "delays": [ [ 1 @@ -360,7 +340,6 @@ }, { "name": "spacecat_dead", - "directions": 1, "delays": [ [ 1 @@ -369,7 +348,6 @@ }, { "name": "spacecat_rest", - "directions": 1, "delays": [ [ 0.1, @@ -381,7 +359,6 @@ }, { "name": "spacecat_sit", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Pets/corgi.rsi/meta.json b/Resources/Textures/Mobs/Pets/corgi.rsi/meta.json index 618d63f963..084ea74d93 100644 --- a/Resources/Textures/Mobs/Pets/corgi.rsi/meta.json +++ b/Resources/Textures/Mobs/Pets/corgi.rsi/meta.json @@ -45,7 +45,6 @@ }, { "name": "corgi_dead", - "directions": 1, "delays": [ [ 1 @@ -72,7 +71,6 @@ }, { "name": "ian_dead", - "directions": 1, "delays": [ [ 1 @@ -81,7 +79,6 @@ }, { "name": "corgi_deadcollar", - "directions": 1, "delays": [ [ 1 @@ -90,7 +87,6 @@ }, { "name": "corgi_deadtag", - "directions": 1, "delays": [ [ 1 @@ -117,7 +113,6 @@ }, { "name": "ian_shaved_dead", - "directions": 1, "delays": [ [ 1 @@ -180,7 +175,6 @@ }, { "name": "lisa_dead", - "directions": 1, "delays": [ [ 1 @@ -207,7 +201,6 @@ }, { "name": "lisa_shaved_dead", - "directions": 1, "delays": [ [ 1 @@ -234,7 +227,6 @@ }, { "name": "narsian_dead", - "directions": 1, "delays": [ [ 1 @@ -265,7 +257,6 @@ }, { "name": "old_ian_dead", - "directions": 1, "delays": [ [ 1 @@ -296,7 +287,6 @@ }, { "name": "old_ian_shaved_dead", - "directions": 1, "delays": [ [ 1 @@ -323,7 +313,6 @@ }, { "name": "puppy_dead", - "directions": 1, "delays": [ [ 1 @@ -332,7 +321,6 @@ }, { "name": "puppy_deadcollar", - "directions": 1, "delays": [ [ 1 @@ -341,7 +329,6 @@ }, { "name": "puppy_deadtag", - "directions": 1, "delays": [ [ 1 @@ -368,7 +355,6 @@ }, { "name": "puppy_shaved_dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Pets/fox.rsi/meta.json b/Resources/Textures/Mobs/Pets/fox.rsi/meta.json index 6e4b003f46..46837bff60 100644 --- a/Resources/Textures/Mobs/Pets/fox.rsi/meta.json +++ b/Resources/Textures/Mobs/Pets/fox.rsi/meta.json @@ -27,7 +27,6 @@ }, { "name": "fox_dead", - "directions": 1, "delays": [ [ 1 @@ -36,7 +35,6 @@ }, { "name": "fox_deadcollar", - "directions": 1, "delays": [ [ 1 @@ -45,7 +43,6 @@ }, { "name": "fox_deadtag", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Pets/sloth.rsi/meta.json b/Resources/Textures/Mobs/Pets/sloth.rsi/meta.json index 53aabb227e..e1437feab4 100644 --- a/Resources/Textures/Mobs/Pets/sloth.rsi/meta.json +++ b/Resources/Textures/Mobs/Pets/sloth.rsi/meta.json @@ -27,7 +27,6 @@ }, { "name": "sloth_dead", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Mobs/Species/Human/organs.rsi/meta.json b/Resources/Textures/Mobs/Species/Human/organs.rsi/meta.json index 13310de52c..1ca0ec3cb8 100644 --- a/Resources/Textures/Mobs/Species/Human/organs.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Human/organs.rsi/meta.json @@ -9,61 +9,30 @@ "states": [ { "name": "appendix", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "appendixinflamed", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "brain", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "ears", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "eyeballs", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "heart-off", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "heart-on", - "directions": 1, "delays": [ [ 0.6, @@ -74,48 +43,23 @@ }, { "name": "kidneys", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "liver", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lungs", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "stomach", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "tonguenormal", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Mobs/Species/Human/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Human/parts.rsi/meta.json index 33281d6f3e..4fb3997c36 100644 --- a/Resources/Textures/Mobs/Species/Human/parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Human/parts.rsi/meta.json @@ -9,12 +9,7 @@ "states": [ { "name": "full", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "head_f", diff --git a/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/absinthebottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/absinthebottle.rsi/meta.json index 8dfd56ef9f..e8a2f8c21d 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/absinthebottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/absinthebottle.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/absintheglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/absintheglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/absintheglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/absintheglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/acidspitglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/acidspitglass.rsi/meta.json index 79f46abb6d..6b76e14b80 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/acidspitglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/acidspitglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[30.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[30.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/alco-blue.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/alco-blue.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/alco-blue.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/alco-blue.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/alco-green.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/alco-green.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/alco-green.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/alco-green.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/alco-red.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/alco-red.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/alco-red.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/alco-red.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/alco-white.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/alco-white.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/alco-white.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/alco-white.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/alebottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/alebottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/alebottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/alebottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/aleglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/aleglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/aleglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/aleglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/alliescocktail.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/alliescocktail.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/alliescocktail.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/alliescocktail.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/aloe.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/aloe.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/aloe.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/aloe.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/amasecglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/amasecglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/amasecglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/amasecglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/andalusia.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/andalusia.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/andalusia.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/andalusia.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/antifreeze.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/antifreeze.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/antifreeze.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/antifreeze.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/atomicbombglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/atomicbombglass.rsi/meta.json index eac9b60db8..293f7f97b0 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/atomicbombglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/atomicbombglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/b&p.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/b&p.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/b&p.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/b&p.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/b52glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/b52glass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/b52glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/b52glass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/bahama_mama.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bahama_mama.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/bahama_mama.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/bahama_mama.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/bananahonkglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bananahonkglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/bananahonkglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/bananahonkglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/barflask.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/barflask.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/barflask.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/barflask.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/beepskysmashglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/beepskysmashglass.rsi/meta.json index 7c4fff623d..ab72fd54f3 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/beepskysmashglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/beepskysmashglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/beer.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/beer.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/beer.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/beer.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/beerglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/beerglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/beerglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/beerglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/berryjuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/berryjuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/berryjuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/berryjuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/blackrussianglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/blackrussianglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/blackrussianglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/blackrussianglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/bloodymaryglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bloodymaryglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/bloodymaryglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/bloodymaryglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/booger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/booger.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/booger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/booger.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/bottleofnothing.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bottleofnothing.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/bottleofnothing.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/bottleofnothing.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/bravebullglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bravebullglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/bravebullglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/bravebullglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/cafe_latte.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cafe_latte.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cafe_latte.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cafe_latte.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/carafe.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/carafe.rsi/meta.json index c73856186c..a1f2ae6048 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/carafe.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/carafe.rsi/meta.json @@ -8,48 +8,37 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" }, { - "name": "icon-4", - "directions": 1 + "name": "icon-4" }, { - "name": "icon-5", - "directions": 1 + "name": "icon-5" }, { - "name": "icon-6", - "directions": 1 + "name": "icon-6" }, { - "name": "icon-7", - "directions": 1 + "name": "icon-7" }, { - "name": "icon-8", - "directions": 1 + "name": "icon-8" }, { - "name": "icon-9", - "directions": 1 + "name": "icon-9" }, { - "name": "icon-10", - "directions": 1 + "name": "icon-10" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/changelingsting.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/changelingsting.rsi/meta.json index 4663691714..409b512477 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/changelingsting.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/changelingsting.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[10.0, 10.0, 10.0, 10.0, 10.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[10.0, 10.0, 10.0, 10.0, 10.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffee.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/coffee.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/coffee.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/coffee.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/cognacbottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cognacbottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cognacbottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cognacbottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/cognacglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cognacglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cognacglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cognacglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/cola.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cola.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cola.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cola.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/colabottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/colabottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/colabottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/colabottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/cream.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cream.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cream.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cream.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/cubalibreglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cubalibreglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cubalibreglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cubalibreglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json index ccca6b00a1..80ac521b6f 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/curacaoglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/curacaoglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/curacaoglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/curacaoglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/demonsblood.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/demonsblood.rsi/meta.json index 1941d6a395..b964b0f4a1 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/demonsblood.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/demonsblood.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/detflask.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/detflask.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/detflask.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/detflask.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/devilskiss.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/devilskiss.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/devilskiss.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/devilskiss.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/doctorsdelightglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/doctorsdelightglass.rsi/meta.json index 1924e2bf91..edd3d67bfd 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/doctorsdelightglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/doctorsdelightglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/driestmartiniglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/driestmartiniglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/driestmartiniglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/driestmartiniglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/emeraldglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/emeraldglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/emeraldglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/emeraldglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/flask.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/flask.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/flask.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/flask.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/flask_old.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/flask_old.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/flask_old.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/flask_old.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/gargleblasterglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/gargleblasterglass.rsi/meta.json index 88c6c9e04a..2eee22e743 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/gargleblasterglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/gargleblasterglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[2.0, 2.0, 2.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[2.0, 2.0, 2.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/ginbottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/ginbottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/ginbottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/ginbottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/ginfizzglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/ginfizzglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/ginfizzglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/ginfizzglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/gintonicglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/gintonicglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/gintonicglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/gintonicglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/ginvodkaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/ginvodkaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/ginvodkaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/ginvodkaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_clear.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_clear.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_clear.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_clear.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_green.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_green.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_green.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_green.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/golden_cup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/golden_cup.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/golden_cup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/golden_cup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/goldschlagerbottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/goldschlagerbottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/goldschlagerbottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/goldschlagerbottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/goldschlagerglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/goldschlagerglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/goldschlagerglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/goldschlagerglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/grenadinebottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grenadinebottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grenadinebottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grenadinebottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/grenadineglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grenadineglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grenadineglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grenadineglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/hell.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/hell.rsi/meta.json index 1941d6a395..b964b0f4a1 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/hell.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/hell.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/hippiesdelightglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/hippiesdelightglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/hippiesdelightglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/hippiesdelightglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/hot_coco.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/hot_coco.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/hot_coco.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/hot_coco.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/hot_coffee.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/hot_coffee.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/hot_coffee.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/hot_coffee.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/ice_tea_can.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/ice_tea_can.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/ice_tea_can.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/ice_tea_can.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/iced_beerglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/iced_beerglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/iced_beerglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/iced_beerglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedcoffeeglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/icedcoffeeglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/icedcoffeeglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/icedcoffeeglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedteaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/icedteaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/icedteaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/icedteaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/irishcarbomb.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/irishcarbomb.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/irishcarbomb.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/irishcarbomb.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/irishcoffeeglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/irishcoffeeglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/irishcoffeeglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/irishcoffeeglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/irishcreamglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/irishcreamglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/irishcreamglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/irishcreamglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/jar.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/jar.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/jar.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/jar.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/jar_metroid.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/jar_metroid.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/jar_metroid.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/jar_metroid.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/kahluabottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/kahluabottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/kahluabottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/kahluabottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/kahluaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/kahluaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/kahluaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/kahluaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/kiraspecial.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/kiraspecial.rsi/meta.json index eac9b60db8..293f7f97b0 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/kiraspecial.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/kiraspecial.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/lean.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lean.rsi/meta.json index 4dca11fe91..666ec30732 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lean.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lean.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/tgstation/tgstation/blob/master/icons/obj/drinks.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemon-lime.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemon-lime.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemon-lime.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemon-lime.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonadeglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonadeglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonadeglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonadeglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonjuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonjuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonjuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonjuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/limejuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/limejuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/limejuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/limejuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/lithiumflask.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lithiumflask.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lithiumflask.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lithiumflask.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/longislandicedteaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/longislandicedteaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/longislandicedteaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/longislandicedteaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/manhattanglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/manhattanglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/manhattanglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/manhattanglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/manlydorfglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/manlydorfglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/manlydorfglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/manlydorfglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/margaritaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/margaritaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/margaritaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/margaritaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/martiniglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/martiniglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/martiniglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/martiniglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/milk.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/milk.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/milk.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/milk.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/milkshake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/milkshake.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/milkshake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/milkshake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mojito.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mojito.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mojito.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mojito.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_black.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_black.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_black.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_black.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_blue.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_blue.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_blue.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_blue.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_green.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_green.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_green.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_green.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_heart.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_heart.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_heart.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_heart.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_metal.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_metal.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_metal.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_metal.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_moebius.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_moebius.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_moebius.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_moebius.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_one.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_one.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_one.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_one.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_rainbow.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_rainbow.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_rainbow.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_rainbow.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/mug_red.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/mug_red.rsi/meta.json index 8d8dfd5865..21ea2b2106 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/mug_red.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/mug_red.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/neurotoxinglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/neurotoxinglass.rsi/meta.json index 4894909fc8..74149ebb7c 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/neurotoxinglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/neurotoxinglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[30.0, 3.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[30.0, 3.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/ntcahors.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/ntcahors.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/ntcahors.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/ntcahors.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/nuka_colaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/nuka_colaglass.rsi/meta.json index eac9b60db8..293f7f97b0 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/nuka_colaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/nuka_colaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/orangejuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/orangejuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/orangejuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/orangejuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/patronbottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/patronbottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/patronbottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/patronbottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/patronglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/patronglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/patronglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/patronglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/pitcher.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/pitcher.rsi/meta.json index e40ad15061..f645b06fff 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/pitcher.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/pitcher.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" }, { - "name": "icon-4", - "directions": 1 + "name": "icon-4" }, { - "name": "icon-5", - "directions": 1 + "name": "icon-5" }, { - "name": "icon-6", - "directions": 1 + "name": "icon-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/proj_manhattanglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/proj_manhattanglass.rsi/meta.json index eac9b60db8..293f7f97b0 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/proj_manhattanglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/proj_manhattanglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/purple_can.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/purple_can.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/purple_can.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/purple_can.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/pwinebottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/pwinebottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/pwinebottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/pwinebottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/pwineglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/pwineglass.rsi/meta.json index 96c9a65b39..3d341b0a80 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/pwineglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/pwineglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[150.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[150.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/ramen.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/ramen.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/ramen.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/ramen.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/red_meadglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/red_meadglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/red_meadglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/red_meadglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/rewriter.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/rewriter.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/rewriter.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/rewriter.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/rumbottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/rumbottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/rumbottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/rumbottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/rumglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/rumglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/rumglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/rumglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/sbitenglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/sbitenglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/sbitenglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/sbitenglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/screwdriverglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/screwdriverglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/screwdriverglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/screwdriverglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/sdreamglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/sdreamglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/sdreamglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/sdreamglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shinyflask.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shinyflask.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shinyflask.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shinyflask.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/shotglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shotglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shotglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shotglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/silencerglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/silencerglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/silencerglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/silencerglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/singulo.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/singulo.rsi/meta.json index 5411bd8b8d..7b4056ec68 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/singulo.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/singulo.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/snowwhite.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/snowwhite.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/snowwhite.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/snowwhite.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/sodawater.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/sodawater.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/sodawater.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/sodawater.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/soy_latte.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/soy_latte.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/soy_latte.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/soy_latte.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/soymilk.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/soymilk.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/soymilk.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/soymilk.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space-up.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space-up.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space-up.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_bottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space-up_bottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space-up_bottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space-up_bottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_bottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_bottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_bottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_bottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/starkist.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/starkist.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/starkist.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/starkist.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/syndicatebomb.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/syndicatebomb.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/syndicatebomb.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/syndicatebomb.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/teacup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/teacup.rsi/meta.json index ccca6b00a1..80ac521b6f 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/teacup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/teacup.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillabottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/tequillabottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/tequillabottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/tequillabottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillasunriseglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/tequillasunriseglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/tequillasunriseglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/tequillasunriseglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko_glass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/thirteen_loko_glass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/threemileislandglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/threemileislandglass.rsi/meta.json index eac9b60db8..293f7f97b0 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/threemileislandglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/threemileislandglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/tomatojuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/tomatojuice.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/tomatojuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/tomatojuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/tonic.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/tonic.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/tonic.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/tonic.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Drinks/toxinsspecialglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/toxinsspecialglass.rsi/meta.json index 1981a2e479..63e49d4dd4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/toxinsspecialglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/toxinsspecialglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[2.0, 2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "delays": [[2.0, 2.0, 2.0, 2.0, 2.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/vacuumflask.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/vacuumflask.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/vacuumflask.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/vacuumflask.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/vermouthbottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/vermouthbottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/vermouthbottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/vermouthbottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/vermouthglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/vermouthglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/vermouthglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/vermouthglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/vodkabottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/vodkabottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/vodkabottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/vodkabottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/vodkatonicglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/vodkatonicglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/vodkatonicglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/vodkatonicglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/water.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/water.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/water.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/water.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/water_cup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/water_cup.rsi/meta.json index ccca6b00a1..80ac521b6f 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/water_cup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/water_cup.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [ { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/waterbottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/waterbottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/waterbottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/waterbottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/whiskeybottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/whiskeybottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/whiskeybottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/whiskeybottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/whiskeycolaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/whiskeycolaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/whiskeycolaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/whiskeycolaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/whiskeyglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/whiskeyglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/whiskeyglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/whiskeyglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/whiterussianglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/whiterussianglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/whiterussianglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/whiterussianglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/winebottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/winebottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/winebottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/winebottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Drinks/wineglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/wineglass.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/wineglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/wineglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json b/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json index 1f2a383e97..7837a45f44 100644 --- a/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Fancy/cigarettes.rsi/meta.json @@ -8,16 +8,13 @@ }, "states": [ { - "name": "cig", - "directions": 1 + "name": "cig" }, { - "name": "cig_empty", - "directions": 1 + "name": "cig_empty" }, { - "name": "cig_open", - "directions": 1 + "name": "cig_open" } ] } diff --git a/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/meta.json b/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/meta.json index 936bdef739..fe7f2d1c1c 100644 --- a/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Fancy/mask_cig.rsi/meta.json @@ -58,16 +58,13 @@ ] }, { - "name": "burnt-icon", - "directions": 1 + "name": "burnt-icon" }, { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "lit-icon", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Consumable/Food/4no_raisins.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/4no_raisins.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/4no_raisins.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/4no_raisins.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/aesirsalad.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/aesirsalad.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/aesirsalad.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/aesirsalad.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/amanita_pie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/amanita_pie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/amanita_pie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/amanita_pie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/amanitajelly.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/amanitajelly.rsi/meta.json index 37940c42b9..bd2d498291 100644 --- a/Resources/Textures/Objects/Consumable/Food/amanitajelly.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/amanitajelly.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[50.0, 1.0, 1.0, 1.0, 1.0, 10.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "delays": [[50.0, 1.0, 1.0, 1.0, 1.0, 10.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/ambrosiavulgariscrushed.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/ambrosiavulgariscrushed.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/ambrosiavulgariscrushed.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/ambrosiavulgariscrushed.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/apple_cake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/apple_cake.rsi/meta.json index e76eafc94d..2d0d580e61 100644 --- a/Resources/Textures/Objects/Consumable/Food/apple_cake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/apple_cake.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/apple_cake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/apple_cake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/apple_cake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/apple_cake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/apple_pie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/apple_pie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/apple_pie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/apple_pie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bacon.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bacon.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/bacon.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/bacon.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/badrecipe.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/badrecipe.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/badrecipe.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/badrecipe.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/baguette.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/baguette.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/baguette.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/baguette.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bananabread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bananabread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/bananabread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/bananabread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bananabreadslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bananabreadslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/bananabreadslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/bananabreadslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bearmeat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bearmeat.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/bearmeat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/bearmeat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/beetsoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/beetsoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/beetsoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/beetsoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/berryclafoutis.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/berryclafoutis.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/berryclafoutis.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/berryclafoutis.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bigbiteburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bigbiteburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/bigbiteburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/bigbiteburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/birthday_cake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/birthday_cake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/birthday_cake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/birthday_cake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/birthdaycake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/birthdaycake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/birthdaycake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/birthdaycake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/boiledrice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/boiledrice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/boiledrice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/boiledrice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/boiledrorocore.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/boiledrorocore.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/boiledrorocore.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/boiledrorocore.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/brain_cake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/brain_cake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/brain_cake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/brain_cake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/brainburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/brainburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/brainburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/brainburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/braincake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/braincake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/braincake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/braincake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/bread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/bread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/braincakeslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/braincakeslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/braincakeslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/braincakeslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/breadslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/candiedapple.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/candiedapple.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/candiedapple.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/candiedapple.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/candy.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/candy.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/candy.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/candy.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/candy_corn.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/candy_corn.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/candy_corn.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/candy_corn.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/carrotcake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/carrotcake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/carrotcake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/carrotcake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/carrotcake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/carrotcake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/carrotcake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/carrotcake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/carrotfries.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/carrotfries.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/carrotfries.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/carrotfries.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/chawanmushi.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/chawanmushi.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/chawanmushi.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/chawanmushi.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cheeseburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cheeseburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/cheeseburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cheeseburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/cheesecake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cheesecake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cheesecake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cheesecake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cheesecake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cheesecake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cheesecake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cheesecake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cheesewedge.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cheesewedge.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cheesewedge.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cheesewedge.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cheesewheel.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cheesewheel.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cheesewheel.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cheesewheel.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cheesie_honkers.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cheesie_honkers.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cheesie_honkers.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cheesie_honkers.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cheesyfries.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cheesyfries.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cheesyfries.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cheesyfries.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cherrypie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cherrypie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cherrypie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cherrypie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/chips.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/chips.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/chips.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/chips.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/chocolatebar.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/chocolatebar.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/chocolatebar.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/chocolatebar.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/chocolatecake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/chocolatecake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/chocolatecake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/chocolatecake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/chocolatecake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/chocolatecake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/chocolatecake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/chocolatecake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/chocolateegg.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/chocolateegg.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/chocolateegg.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/chocolateegg.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/clownburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/clownburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/clownburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/clownburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/clownstears.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/clownstears.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/clownstears.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/clownstears.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cocoa.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cocoa.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cocoa.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cocoa.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/coldchili.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/coldchili.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/coldchili.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/coldchili.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/coldsauce.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/coldsauce.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/coldsauce.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/coldsauce.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cookie!!!.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cookie!!!.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cookie!!!.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cookie!!!.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cracker.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cracker.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cracker.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cracker.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/creamcheesebread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/creamcheesebread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/creamcheesebread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/creamcheesebread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/creamcheesebreadslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/creamcheesebreadslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/creamcheesebreadslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/creamcheesebreadslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/cubancarp.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/cubancarp.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/cubancarp.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/cubancarp.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/dionaroast.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/dionaroast.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/dionaroast.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/dionaroast.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/donkpocket.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/donkpocket.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/donkpocket.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/donkpocket.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/donut1.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/donut1.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/donut1.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/donut1.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/donut2.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/donut2.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/donut2.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/donut2.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-blue.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-blue.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-blue.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-blue.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-green.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-green.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-green.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-green.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-mime.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-mime.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-mime.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-mime.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-orange.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-orange.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-orange.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-orange.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-purple.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-purple.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-purple.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-purple.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-rainbow.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-rainbow.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-rainbow.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-rainbow.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-red.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-red.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-red.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-red.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg-yellow.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg-yellow.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg-yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg-yellow.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/egg.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/egg.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/egg.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/egg.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/eggplantparm.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/eggplantparm.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/eggplantparm.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/eggplantparm.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/emptycondiment.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/emptycondiment.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/emptycondiment.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/emptycondiment.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/enchiladas.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/enchiladas.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/enchiladas.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/enchiladas.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/enchiladasold.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/enchiladasold.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/enchiladasold.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/enchiladasold.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/enzyme.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/enzyme.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/enzyme.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/enzyme.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/fishandchips.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/fishandchips.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/fishandchips.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/fishandchips.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/fishburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/fishburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/fishburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/fishburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/fishfillet.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/fishfillet.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/fishfillet.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/fishfillet.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/fishfingers.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/fishfingers.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/fishfingers.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/fishfingers.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/flour.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/flour.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/flour.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/flour.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/fortune_cookie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/fortune_cookie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/fortune_cookie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/fortune_cookie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/friedegg.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/friedegg.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/friedegg.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/friedegg.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/fries.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/fries.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/fries.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/fries.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/gappletart.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/gappletart.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/gappletart.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/gappletart.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/hburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/hburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/hburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/hburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/herbsalad.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/herbsalad.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/herbsalad.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/herbsalad.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/honeycomb.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/honeycomb.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/honeycomb.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/honeycomb.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/hotchili.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/hotchili.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/hotchili.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/hotchili.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/hotdog.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/hotdog.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/hotdog.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/hotdog.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/hotsauce.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/hotsauce.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/hotsauce.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/hotsauce.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/hugemushroomslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/hugemushroomslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/hugemushroomslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/hugemushroomslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/jdonut1.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/jdonut1.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/jdonut1.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/jdonut1.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/jdonut2.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/jdonut2.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/jdonut2.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/jdonut2.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/jellyburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/jellyburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/jellyburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/jellyburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/jellysandwich.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/jellysandwich.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/jellysandwich.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/jellysandwich.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/jellytoast.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/jellytoast.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/jellytoast.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/jellytoast.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/kabob.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/kabob.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/kabob.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/kabob.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/ketchup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/ketchup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/ketchup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/ketchup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/ketchupold.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/ketchupold.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/ketchupold.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/ketchupold.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/lemoncake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/lemoncake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/lemoncake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/lemoncake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/lemoncake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/lemoncake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/lemoncake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/lemoncake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/limecake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/limecake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/limecake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/limecake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/limecake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/limecake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/limecake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/limecake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/liquidfood.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/liquidfood.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/liquidfood.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/liquidfood.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/loadedbakedpotato.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/loadedbakedpotato.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/loadedbakedpotato.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/loadedbakedpotato.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meat_pizza_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meat_pizza_slice.rsi/meta.json index e76eafc94d..2d0d580e61 100644 --- a/Resources/Textures/Objects/Consumable/Food/meat_pizza_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meat_pizza_slice.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatball.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatball.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatball.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatball.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/meatballsoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatballsoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatballsoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatballsoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatballspaghetti.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatballspaghetti.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatballspaghetti.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatballspaghetti.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatbread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatbread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatbread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatbread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatbreadslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatbreadslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatbreadslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatbreadslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatpie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatpie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatpie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatpie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatpizza.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatpizza.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatpizza.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatpizza.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatpizzaslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatpizzaslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatpizzaslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatpizzaslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/meatsteak.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meatsteak.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/meatsteak.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meatsteak.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/memoryleek.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/memoryleek.rsi/meta.json index bbdf977682..108239cfdc 100644 --- a/Resources/Textures/Objects/Consumable/Food/memoryleek.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/memoryleek.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "memoryLeek", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Consumable/Food/milkape.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/milkape.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/milkape.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/milkape.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/milosoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/milosoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/milosoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/milosoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/mimeburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mimeburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/mimeburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mimeburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/mint.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mint.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/mint.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mint.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/mixedcondiments.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mixedcondiments.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/mixedcondiments.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mixedcondiments.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/monkeycube.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/monkeycube.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/monkeycube.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/monkeycube.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/monkeysdelight.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/monkeysdelight.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/monkeysdelight.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/monkeysdelight.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/mtearp.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mtearp.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/mtearp.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mtearp.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/muffin.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/muffin.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/muffin.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/muffin.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/mushroompizza.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mushroompizza.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/mushroompizza.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mushroompizza.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/mushroompizzaslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mushroompizzaslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/mushroompizzaslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mushroompizzaslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/mushroomsoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mushroomsoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/mushroomsoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mushroomsoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/mysterysoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mysterysoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/mysterysoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mysterysoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/nettlesoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/nettlesoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/nettlesoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/nettlesoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/oliveoil.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/oliveoil.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/oliveoil.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/oliveoil.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/omelette.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/omelette.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/omelette.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/omelette.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/orangecake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/orangecake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/orangecake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/orangecake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/orangecake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/orangecake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/orangecake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/orangecake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/pastatomato.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/pastatomato.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/pastatomato.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/pastatomato.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/peppermillsmall.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/peppermillsmall.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/peppermillsmall.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/peppermillsmall.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/phelmbiscuit.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/phelmbiscuit.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/phelmbiscuit.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/phelmbiscuit.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/pie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/pie.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/pie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/pie.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/pizzamargherita.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/pizzamargherita.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/pizzamargherita.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/pizzamargherita.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/pizzamargheritaslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/pizzamargheritaslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/pizzamargheritaslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/pizzamargheritaslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/plaincake.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/plaincake.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/plaincake.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/plaincake.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/plaincake_slice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/plaincake_slice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/plaincake_slice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/plaincake_slice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/plump_pie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/plump_pie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/plump_pie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/plump_pie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/popcorn.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/popcorn.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/popcorn.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/popcorn.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/poppypretzel.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/poppypretzel.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/poppypretzel.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/poppypretzel.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/pumpkinpie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/pumpkinpie.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/pumpkinpie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/pumpkinpie.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/pumpkinpieslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/pumpkinpieslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/pumpkinpieslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/pumpkinpieslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/rice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/rice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/rice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/rice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/roburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/roburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/roburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/roburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/rofflewaffles.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/rofflewaffles.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/rofflewaffles.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/rofflewaffles.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/rorosoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/rorosoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/rorosoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/rorosoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/rottenmeat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/rottenmeat.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/rottenmeat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/rottenmeat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/rpudding.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/rpudding.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/rpudding.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/rpudding.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/saltshakersmall.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/saltshakersmall.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/saltshakersmall.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/saltshakersmall.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/sandwich.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/sandwich.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/sandwich.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/sandwich.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/sandwich_filling.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/sandwich_filling.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/sandwich_filling.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/sandwich_filling.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/sandwich_top.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/sandwich_top.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/sandwich_top.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/sandwich_top.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/sausage.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/sausage.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/sausage.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/sausage.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/shandp.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/shandp.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/shandp.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/shandp.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/skrellsnacks.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/skrellsnacks.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/skrellsnacks.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/skrellsnacks.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/sosjerky.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/sosjerky.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/sosjerky.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/sosjerky.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/soydope.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/soydope.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/soydope.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/soydope.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/soylent_green.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/soylent_green.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/soylent_green.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/soylent_green.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/soylent_yellow.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/soylent_yellow.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/soylent_yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/soylent_yellow.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/soysauce.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/soysauce.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/soysauce.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/soysauce.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/space_twinkie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/space_twinkie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/space_twinkie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/space_twinkie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/spacylibertyduff.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/spacylibertyduff.rsi/meta.json index 8caffd9102..491b6ae98a 100644 --- a/Resources/Textures/Objects/Consumable/Food/spacylibertyduff.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/spacylibertyduff.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1, "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "delays": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/spaghetti.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/spaghetti.rsi/meta.json index e76eafc94d..2d0d580e61 100644 --- a/Resources/Textures/Objects/Consumable/Food/spaghetti.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/spaghetti.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/spaghettiboiled.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/spaghettiboiled.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/spaghettiboiled.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/spaghettiboiled.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/spellburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/spellburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/spellburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/spellburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/spesslaw.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/spesslaw.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/spesslaw.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/spesslaw.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/stew.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/stew.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/stew.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/stew.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/stewedsoymeat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/stewedsoymeat.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/stewedsoymeat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/stewedsoymeat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/stuffing.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/stuffing.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/stuffing.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/stuffing.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/sugar.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/sugar.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/sugar.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/sugar.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/sugarsmall.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/sugarsmall.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/sugarsmall.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/sugarsmall.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/superbiteburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/superbiteburger.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/superbiteburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/superbiteburger.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/syndi_cakes.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/syndi_cakes.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/syndi_cakes.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/syndi_cakes.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/tastybread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tastybread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/tastybread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tastybread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/toastedsandwich.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/toastedsandwich.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/toastedsandwich.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/toastedsandwich.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/tofu.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tofu.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/tofu.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tofu.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/tofubread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tofubread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/tofubread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tofubread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/tofubreadslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tofubreadslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/tofubreadslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tofubreadslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/tofuburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tofuburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/tofuburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tofuburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/tofurkey.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tofurkey.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/tofurkey.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tofurkey.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/tomatomeat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tomatomeat.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/tomatomeat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tomatomeat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/tomatosoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/tomatosoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/tomatosoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/tomatosoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/twobread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/twobread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/twobread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/twobread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/validsalad.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/validsalad.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/validsalad.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/validsalad.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/vegetablepizza.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/vegetablepizza.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/vegetablepizza.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/vegetablepizza.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/vegetablepizzaslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/vegetablepizzaslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/vegetablepizzaslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/vegetablepizzaslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/vegetablesoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/vegetablesoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/vegetablesoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/vegetablesoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/waffles.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/waffles.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/waffles.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/waffles.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/watermelonslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/watermelonslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/watermelonslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/watermelonslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/wingfangchu.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/wingfangchu.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/wingfangchu.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/wingfangchu.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/wishsoup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/wishsoup.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/wishsoup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/wishsoup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/xburger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/xburger.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/Food/xburger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/xburger.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/Food/xenobreadslice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/xenobreadslice.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/xenobreadslice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/xenobreadslice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/xenomeat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/xenomeat.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/xenomeat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/xenomeat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/xenomeatbread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/xenomeatbread.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/xenomeatbread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/xenomeatbread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/xenomeatpie.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/xenomeatpie.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Food/xenomeatpie.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/xenomeatpie.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/donutbox.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/donutbox.rsi/meta.json index 431eb37269..3f7bd515bc 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/donutbox.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/donutbox.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "donutbox-0", - "directions": 1 + "name": "donutbox-0" }, { - "name": "donutbox-1", - "directions": 1 + "name": "donutbox-1" }, { - "name": "donutbox-2", - "directions": 1 + "name": "donutbox-2" }, { - "name": "donutbox-3", - "directions": 1 + "name": "donutbox-3" }, { - "name": "donutbox-4", - "directions": 1 + "name": "donutbox-4" }, { - "name": "donutbox-5", - "directions": 1 + "name": "donutbox-5" }, { - "name": "donutbox-6", - "directions": 1 + "name": "donutbox-6" }, ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/eggbox.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/eggbox.rsi/meta.json index d8967565eb..8afe9a2cdf 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/eggbox.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/eggbox.rsi/meta.json @@ -8,56 +8,43 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "eggbox-0", - "directions": 1 + "name": "eggbox-0" }, { - "name": "eggbox-1", - "directions": 1 + "name": "eggbox-1" }, { - "name": "eggbox-2", - "directions": 1 + "name": "eggbox-2" }, { - "name": "eggbox-3", - "directions": 1 + "name": "eggbox-3" }, { - "name": "eggbox-4", - "directions": 1 + "name": "eggbox-4" }, { - "name": "eggbox-5", - "directions": 1 + "name": "eggbox-5" }, { - "name": "eggbox-6", - "directions": 1 + "name": "eggbox-6" }, { - "name": "eggbox-7", - "directions": 1 + "name": "eggbox-7" }, { - "name": "eggbox-8", - "directions": 1 + "name": "eggbox-8" }, { - "name": "eggbox-9", - "directions": 1 + "name": "eggbox-9" }, { - "name": "eggbox-10", - "directions": 1 + "name": "eggbox-10" }, { - "name": "eggbox-11", - "directions": 1 + "name": "eggbox-11" }, { - "name": "eggbox-12", - "directions": 1 + "name": "eggbox-12" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/eggbox_shut.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/eggbox_shut.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/eggbox_shut.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/eggbox_shut.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubebox.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubebox.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubebox.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubebox.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubewrap.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubewrap.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubewrap.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/monkeycubewrap.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox.rsi/meta.json index 1c7849ada7..6b3193ec36 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox_tag.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox_tag.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox_tag.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/pizzabox_tag.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/FoodContainers/pizzaboxstack.rsi/meta.json b/Resources/Textures/Objects/Consumable/FoodContainers/pizzaboxstack.rsi/meta.json index 4c28932827..c4711e62ba 100644 --- a/Resources/Textures/Objects/Consumable/FoodContainers/pizzaboxstack.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/FoodContainers/pizzaboxstack.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "pizzaboxstack-0", - "directions": 1 + "name": "pizzaboxstack-0" }, { - "name": "pizzaboxstack-1", - "directions": 1 + "name": "pizzaboxstack-1" }, { - "name": "pizzaboxstack-2", - "directions": 1 + "name": "pizzaboxstack-2" }, { - "name": "pizzaboxstack-3", - "directions": 1 + "name": "pizzaboxstack-3" }, { - "name": "pizzaboxstack-4", - "directions": 1 + "name": "pizzaboxstack-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/4no_raisins.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/4no_raisins.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/4no_raisins.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/4no_raisins.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/ash.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/ash.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/ash.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/ash.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/candy.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/candy.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/candy.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/candy.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/cheesie_honkers.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/cheesie_honkers.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/cheesie_honkers.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/cheesie_honkers.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/chips.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/chips.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/chips.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/chips.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/corncob.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/corncob.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/corncob.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/corncob.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/liquidfood.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/liquidfood.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/liquidfood.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/liquidfood.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/pistachios_pack.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/pistachios_pack.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/pistachios_pack.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/pistachios_pack.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/pizzabox_messy.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/pizzabox_messy.rsi/meta.json index 8aa4c1e799..b6a9d8c6c4 100644 --- a/Resources/Textures/Objects/Consumable/Trash/pizzabox_messy.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/pizzabox_messy.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/plasticbag.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/plasticbag.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/plasticbag.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/plasticbag.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/plate.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/plate.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/plate.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/plate.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/popcorn.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/popcorn.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/popcorn.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/popcorn.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/semki_pack.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/semki_pack.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/semki_pack.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/semki_pack.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/snack_bowl.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/snack_bowl.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/snack_bowl.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/snack_bowl.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/sosjerky.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/sosjerky.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/sosjerky.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/sosjerky.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/syndi_cakes.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/syndi_cakes.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/syndi_cakes.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/syndi_cakes.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/tastybread.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/tastybread.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/tastybread.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/tastybread.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/trashbag.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/trashbag.rsi/meta.json index 5c4a8de520..4c99ff9d2c 100644 --- a/Resources/Textures/Objects/Consumable/Trash/trashbag.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/trashbag.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "icon-0", - "directions": 1 + "name": "icon-0" }, { - "name": "icon-1", - "directions": 1 + "name": "icon-1" }, { - "name": "icon-2", - "directions": 1 + "name": "icon-2" }, { - "name": "icon-3", - "directions": 1 + "name": "icon-3" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/tray.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/tray.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/tray.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/tray.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Trash/waffles.rsi/meta.json b/Resources/Textures/Objects/Consumable/Trash/waffles.rsi/meta.json index 1832695588..1700d4ab4a 100644 --- a/Resources/Textures/Objects/Consumable/Trash/waffles.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Trash/waffles.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/trash.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/absinthebottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/absinthebottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/absinthebottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/absinthebottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/alco-clear.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/alco-clear.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/alco-clear.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/alco-clear.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/alebottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/alebottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/alebottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/alebottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/beer_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/beer_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/beer_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/beer_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/broken_bottle.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/broken_bottle.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/broken_bottle.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/broken_bottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/cognacbottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/cognacbottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/cognacbottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/cognacbottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/ginbottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/ginbottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/ginbottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/ginbottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/glass_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/glass_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/glass_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/glass_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/goldschlagerbottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/goldschlagerbottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/goldschlagerbottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/goldschlagerbottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/kahluabottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/kahluabottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/kahluabottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/kahluabottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/ntcahors_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/ntcahors_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/ntcahors_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/ntcahors_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/patronbottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/patronbottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/patronbottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/patronbottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/pwinebottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/pwinebottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/pwinebottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/pwinebottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/rumbottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/rumbottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/rumbottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/rumbottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/tequillabottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/tequillabottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/tequillabottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/tequillabottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/vermouthbottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/vermouthbottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/vermouthbottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/vermouthbottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/vodkabottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/vodkabottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/vodkabottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/vodkabottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/whiskeybottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/whiskeybottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/whiskeybottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/whiskeybottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/TrashDrinks/winebottle_empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/TrashDrinks/winebottle_empty.rsi/meta.json index a2bca69076..db0ac608ed 100644 --- a/Resources/Textures/Objects/Consumable/TrashDrinks/winebottle_empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/TrashDrinks/winebottle_empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon", "directions": 1}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Devices/communication.rsi/meta.json b/Resources/Textures/Objects/Devices/communication.rsi/meta.json index 433f73954e..9f52d1f62d 100644 --- a/Resources/Textures/Objects/Devices/communication.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/communication.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "beacon", - "directions": 1, "delays": [ [ 1.8, @@ -19,7 +18,6 @@ }, { "name": "beacon_dead", - "directions": 1, "delays": [ [ 1 @@ -28,7 +26,6 @@ }, { "name": "signaller", - "directions": 1, "delays": [ [ 1 @@ -73,7 +70,6 @@ }, { "name": "walkietalkie", - "directions": 1, "delays": [ [ 1 @@ -82,7 +78,6 @@ }, { "name": "walkietalkie-off", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Devices/pda.rsi/meta.json b/Resources/Textures/Objects/Devices/pda.rsi/meta.json index c8bab2621c..bea96b2170 100644 --- a/Resources/Textures/Objects/Devices/pda.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/pda.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "id_overlay", - "directions": 1, "delays": [ [ 1 @@ -22,7 +21,6 @@ }, { "name": "insert_overlay", - "directions": 1, "delays": [ [ 1 @@ -31,7 +29,6 @@ }, { "name": "light_overlay", - "directions": 1, "delays": [ [ 1 @@ -40,7 +37,6 @@ }, { "name": "pai_off_overlay", - "directions": 1, "delays": [ [ 1 @@ -49,7 +45,6 @@ }, { "name": "pai_overlay", - "directions": 1, "delays": [ [ 1 @@ -58,7 +53,6 @@ }, { "name": "pda", - "directions": 1, "delays": [ [ 1 @@ -67,7 +61,6 @@ }, { "name": "pda-atmos", - "directions": 1, "delays": [ [ 1 @@ -76,7 +69,6 @@ }, { "name": "pda-bartender", - "directions": 1, "delays": [ [ 1 @@ -85,7 +77,6 @@ }, { "name": "pda-captain", - "directions": 1, "delays": [ [ 1 @@ -94,7 +85,6 @@ }, { "name": "pda-cargo", - "directions": 1, "delays": [ [ 1 @@ -103,7 +93,6 @@ }, { "name": "pda-ce", - "directions": 1, "delays": [ [ 1 @@ -112,7 +101,6 @@ }, { "name": "pda-chaplain", - "directions": 1, "delays": [ [ 1 @@ -121,7 +109,6 @@ }, { "name": "pda-chemistry", - "directions": 1, "delays": [ [ 1 @@ -130,7 +117,6 @@ }, { "name": "pda-clear", - "directions": 1, "delays": [ [ 1 @@ -139,7 +125,6 @@ }, { "name": "pda-clown", - "directions": 1, "delays": [ [ 1 @@ -148,7 +133,6 @@ }, { "name": "pda-cmo", - "directions": 1, "delays": [ [ 1 @@ -157,7 +141,6 @@ }, { "name": "pda-cook", - "directions": 1, "delays": [ [ 1 @@ -166,7 +149,6 @@ }, { "name": "pda-detective", - "directions": 1, "delays": [ [ 1 @@ -175,7 +157,6 @@ }, { "name": "pda-engineer", - "directions": 1, "delays": [ [ 1 @@ -184,7 +165,6 @@ }, { "name": "pda-genetics", - "directions": 1, "delays": [ [ 1 @@ -193,7 +173,6 @@ }, { "name": "pda-hop", - "directions": 1, "delays": [ [ 1 @@ -202,7 +181,6 @@ }, { "name": "pda-hos", - "directions": 1, "delays": [ [ 1 @@ -211,7 +189,6 @@ }, { "name": "pda-hydro", - "directions": 1, "delays": [ [ 1 @@ -220,7 +197,6 @@ }, { "name": "pda-janitor", - "directions": 1, "delays": [ [ 1 @@ -229,7 +205,6 @@ }, { "name": "pda-lawyer", - "directions": 1, "delays": [ [ 1 @@ -238,7 +213,6 @@ }, { "name": "pda-library", - "directions": 1, "delays": [ [ 0.3, @@ -250,7 +224,6 @@ }, { "name": "pda-medical", - "directions": 1, "delays": [ [ 1 @@ -259,7 +232,6 @@ }, { "name": "pda-mime", - "directions": 1, "delays": [ [ 1 @@ -268,7 +240,6 @@ }, { "name": "pda-miner", - "directions": 1, "delays": [ [ 1 @@ -277,7 +248,6 @@ }, { "name": "pda-qm", - "directions": 1, "delays": [ [ 1 @@ -286,7 +256,6 @@ }, { "name": "pda-r", - "directions": 1, "delays": [ [ 0.8, @@ -296,7 +265,6 @@ }, { "name": "pda-r-library", - "directions": 1, "delays": [ [ 0.8, @@ -306,7 +274,6 @@ }, { "name": "pda-rd", - "directions": 1, "delays": [ [ 1 @@ -315,7 +282,6 @@ }, { "name": "pda-roboticist", - "directions": 1, "delays": [ [ 1 @@ -324,7 +290,6 @@ }, { "name": "pda-science", - "directions": 1, "delays": [ [ 1 @@ -333,7 +298,6 @@ }, { "name": "pda-security", - "directions": 1, "delays": [ [ 1 @@ -342,7 +306,6 @@ }, { "name": "pda-syndi", - "directions": 1, "delays": [ [ 1 @@ -351,7 +314,6 @@ }, { "name": "pda-virology", - "directions": 1, "delays": [ [ 1 @@ -360,7 +322,6 @@ }, { "name": "pda-warden", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/accordion.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/accordion.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/accordion.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/accordion.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json index 4e2fb6785c..6c2e95c7e5 100644 --- a/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json @@ -8,49 +8,15 @@ "copyright": "https://github.com/vgstation-coders/vgstation13 at 8d9c91e19cb52713c7f7f1804c2b6f7203f8d331", "states": [ { - "name": "icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] + "name": "icon" }, { "name": "inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 } ] - } \ No newline at end of file + } diff --git a/Resources/Textures/Objects/Fun/Instruments/bike_horn.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/bike_horn.rsi/meta.json index 372b211e3f..89e345e751 100644 --- a/Resources/Textures/Objects/Fun/Instruments/bike_horn.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/bike_horn.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/eguitar.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/eguitar.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/eguitar.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/eguitar.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/glockenspiel.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/glockenspiel.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/glockenspiel.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/glockenspiel.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/guitar.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/guitar.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/guitar.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/guitar.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/h_synthesizer.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/h_synthesizer.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/h_synthesizer.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/h_synthesizer.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/harmonica.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/harmonica.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/harmonica.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/harmonica.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/otherinstruments.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/otherinstruments.rsi/meta.json index 649f3a5e4c..7cf7f66205 100644 --- a/Resources/Textures/Objects/Fun/Instruments/otherinstruments.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/otherinstruments.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bike_horn", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "drum", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "trumpet", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "drum_bongo", - "directions": 1, "delays": [ [ 1 @@ -45,7 +41,6 @@ }, { "name": "drum_makeshift", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/recorder.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/recorder.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/recorder.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/recorder.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/saxophone.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/saxophone.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/saxophone.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/saxophone.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/trombone.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/trombone.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/trombone.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/trombone.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/Instruments/violin.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/violin.rsi/meta.json index b4eb2638bb..2374ac813f 100644 --- a/Resources/Textures/Objects/Fun/Instruments/violin.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/violin.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/bikehorn.rsi/meta.json b/Resources/Textures/Objects/Fun/bikehorn.rsi/meta.json index f6d7eebf1b..d414b626c2 100644 --- a/Resources/Textures/Objects/Fun/bikehorn.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/bikehorn.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Fun/caps.rsi/meta.json b/Resources/Textures/Objects/Fun/caps.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Fun/caps.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/caps.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Fun/dice.rsi/meta.json b/Resources/Textures/Objects/Fun/dice.rsi/meta.json index f94f9afadb..7b23c3e5f6 100644 --- a/Resources/Textures/Objects/Fun/dice.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/dice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "d10010", "directions": 1, "delays": [[1.0]]}, {"name": "d100100", "directions": 1, "delays": [[1.0]]}, {"name": "d10020", "directions": 1, "delays": [[1.0]]}, {"name": "d10030", "directions": 1, "delays": [[1.0]]}, {"name": "d10040", "directions": 1, "delays": [[1.0]]}, {"name": "d10050", "directions": 1, "delays": [[1.0]]}, {"name": "d10060", "directions": 1, "delays": [[1.0]]}, {"name": "d10070", "directions": 1, "delays": [[1.0]]}, {"name": "d10080", "directions": 1, "delays": [[1.0]]}, {"name": "d10090", "directions": 1, "delays": [[1.0]]}, {"name": "d101", "directions": 1, "delays": [[1.0]]}, {"name": "d1010", "directions": 1, "delays": [[1.0]]}, {"name": "d102", "directions": 1, "delays": [[1.0]]}, {"name": "d103", "directions": 1, "delays": [[1.0]]}, {"name": "d104", "directions": 1, "delays": [[1.0]]}, {"name": "d105", "directions": 1, "delays": [[1.0]]}, {"name": "d106", "directions": 1, "delays": [[1.0]]}, {"name": "d107", "directions": 1, "delays": [[1.0]]}, {"name": "d108", "directions": 1, "delays": [[1.0]]}, {"name": "d109", "directions": 1, "delays": [[1.0]]}, {"name": "d121", "directions": 1, "delays": [[1.0]]}, {"name": "d1210", "directions": 1, "delays": [[1.0]]}, {"name": "d1211", "directions": 1, "delays": [[1.0]]}, {"name": "d1212", "directions": 1, "delays": [[1.0]]}, {"name": "d122", "directions": 1, "delays": [[1.0]]}, {"name": "d123", "directions": 1, "delays": [[1.0]]}, {"name": "d124", "directions": 1, "delays": [[1.0]]}, {"name": "d125", "directions": 1, "delays": [[1.0]]}, {"name": "d126", "directions": 1, "delays": [[1.0]]}, {"name": "d127", "directions": 1, "delays": [[1.0]]}, {"name": "d128", "directions": 1, "delays": [[1.0]]}, {"name": "d129", "directions": 1, "delays": [[1.0]]}, {"name": "d201", "directions": 1, "delays": [[1.0]]}, {"name": "d2010", "directions": 1, "delays": [[1.0]]}, {"name": "d2011", "directions": 1, "delays": [[1.0]]}, {"name": "d2012", "directions": 1, "delays": [[1.0]]}, {"name": "d2013", "directions": 1, "delays": [[1.0]]}, {"name": "d2014", "directions": 1, "delays": [[1.0]]}, {"name": "d2015", "directions": 1, "delays": [[1.0]]}, {"name": "d2016", "directions": 1, "delays": [[1.0]]}, {"name": "d2017", "directions": 1, "delays": [[1.0]]}, {"name": "d2018", "directions": 1, "delays": [[1.0]]}, {"name": "d2019", "directions": 1, "delays": [[1.0]]}, {"name": "d202", "directions": 1, "delays": [[1.0]]}, {"name": "d2020", "directions": 1, "delays": [[1.0]]}, {"name": "d203", "directions": 1, "delays": [[1.0]]}, {"name": "d204", "directions": 1, "delays": [[1.0]]}, {"name": "d205", "directions": 1, "delays": [[1.0]]}, {"name": "d206", "directions": 1, "delays": [[1.0]]}, {"name": "d207", "directions": 1, "delays": [[1.0]]}, {"name": "d208", "directions": 1, "delays": [[1.0]]}, {"name": "d209", "directions": 1, "delays": [[1.0]]}, {"name": "d41", "directions": 1, "delays": [[1.0]]}, {"name": "d42", "directions": 1, "delays": [[1.0]]}, {"name": "d43", "directions": 1, "delays": [[1.0]]}, {"name": "d44", "directions": 1, "delays": [[1.0]]}, {"name": "d61", "directions": 1, "delays": [[1.0]]}, {"name": "d62", "directions": 1, "delays": [[1.0]]}, {"name": "d63", "directions": 1, "delays": [[1.0]]}, {"name": "d64", "directions": 1, "delays": [[1.0]]}, {"name": "d65", "directions": 1, "delays": [[1.0]]}, {"name": "d66", "directions": 1, "delays": [[1.0]]}, {"name": "d81", "directions": 1, "delays": [[1.0]]}, {"name": "d82", "directions": 1, "delays": [[1.0]]}, {"name": "d83", "directions": 1, "delays": [[1.0]]}, {"name": "d84", "directions": 1, "delays": [[1.0]]}, {"name": "d85", "directions": 1, "delays": [[1.0]]}, {"name": "d86", "directions": 1, "delays": [[1.0]]}, {"name": "d87", "directions": 1, "delays": [[1.0]]}, {"name": "d88", "directions": 1, "delays": [[1.0]]}, {"name": "dicebag", "directions": 1, "delays": [[1.0]]}, {"name": "magicdicebag", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "d10010", "delays": [[1.0]]}, {"name": "d100100", "delays": [[1.0]]}, {"name": "d10020", "delays": [[1.0]]}, {"name": "d10030", "delays": [[1.0]]}, {"name": "d10040", "delays": [[1.0]]}, {"name": "d10050", "delays": [[1.0]]}, {"name": "d10060", "delays": [[1.0]]}, {"name": "d10070", "delays": [[1.0]]}, {"name": "d10080", "delays": [[1.0]]}, {"name": "d10090", "delays": [[1.0]]}, {"name": "d101", "delays": [[1.0]]}, {"name": "d1010", "delays": [[1.0]]}, {"name": "d102", "delays": [[1.0]]}, {"name": "d103", "delays": [[1.0]]}, {"name": "d104", "delays": [[1.0]]}, {"name": "d105", "delays": [[1.0]]}, {"name": "d106", "delays": [[1.0]]}, {"name": "d107", "delays": [[1.0]]}, {"name": "d108", "delays": [[1.0]]}, {"name": "d109", "delays": [[1.0]]}, {"name": "d121", "delays": [[1.0]]}, {"name": "d1210", "delays": [[1.0]]}, {"name": "d1211", "delays": [[1.0]]}, {"name": "d1212", "delays": [[1.0]]}, {"name": "d122", "delays": [[1.0]]}, {"name": "d123", "delays": [[1.0]]}, {"name": "d124", "delays": [[1.0]]}, {"name": "d125", "delays": [[1.0]]}, {"name": "d126", "delays": [[1.0]]}, {"name": "d127", "delays": [[1.0]]}, {"name": "d128", "delays": [[1.0]]}, {"name": "d129", "delays": [[1.0]]}, {"name": "d201", "delays": [[1.0]]}, {"name": "d2010", "delays": [[1.0]]}, {"name": "d2011", "delays": [[1.0]]}, {"name": "d2012", "delays": [[1.0]]}, {"name": "d2013", "delays": [[1.0]]}, {"name": "d2014", "delays": [[1.0]]}, {"name": "d2015", "delays": [[1.0]]}, {"name": "d2016", "delays": [[1.0]]}, {"name": "d2017", "delays": [[1.0]]}, {"name": "d2018", "delays": [[1.0]]}, {"name": "d2019", "delays": [[1.0]]}, {"name": "d202", "delays": [[1.0]]}, {"name": "d2020", "delays": [[1.0]]}, {"name": "d203", "delays": [[1.0]]}, {"name": "d204", "delays": [[1.0]]}, {"name": "d205", "delays": [[1.0]]}, {"name": "d206", "delays": [[1.0]]}, {"name": "d207", "delays": [[1.0]]}, {"name": "d208", "delays": [[1.0]]}, {"name": "d209", "delays": [[1.0]]}, {"name": "d41", "delays": [[1.0]]}, {"name": "d42", "delays": [[1.0]]}, {"name": "d43", "delays": [[1.0]]}, {"name": "d44", "delays": [[1.0]]}, {"name": "d61", "delays": [[1.0]]}, {"name": "d62", "delays": [[1.0]]}, {"name": "d63", "delays": [[1.0]]}, {"name": "d64", "delays": [[1.0]]}, {"name": "d65", "delays": [[1.0]]}, {"name": "d66", "delays": [[1.0]]}, {"name": "d81", "delays": [[1.0]]}, {"name": "d82", "delays": [[1.0]]}, {"name": "d83", "delays": [[1.0]]}, {"name": "d84", "delays": [[1.0]]}, {"name": "d85", "delays": [[1.0]]}, {"name": "d86", "delays": [[1.0]]}, {"name": "d87", "delays": [[1.0]]}, {"name": "d88", "delays": [[1.0]]}, {"name": "dicebag", "delays": [[1.0]]}, {"name": "magicdicebag", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Fun/toys.rsi/meta.json b/Resources/Textures/Objects/Fun/toys.rsi/meta.json index 3d31fd265e..429a74f6d6 100644 --- a/Resources/Textures/Objects/Fun/toys.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/toys.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "carpplush", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "narplush", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "plushie_h", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "plushie_lizard", - "directions": 1, "delays": [ [ 1 @@ -45,7 +41,6 @@ }, { "name": "plushie_nuke", - "directions": 1, "delays": [ [ 1 @@ -54,7 +49,6 @@ }, { "name": "plushie_slime", - "directions": 1, "delays": [ [ 1 @@ -63,7 +57,6 @@ }, { "name": "plushie_snake", - "directions": 1, "delays": [ [ 1 @@ -72,7 +65,6 @@ }, { "name": "doll", - "directions": 1, "delays": [ [ 1 @@ -153,7 +145,6 @@ }, { "name": "AI", - "directions": 1, "delays": [ [ 1 @@ -162,7 +153,6 @@ }, { "name": "base", - "directions": 1, "delays": [ [ 1 @@ -171,7 +161,6 @@ }, { "name": "bolt-closed", - "directions": 1, "delays": [ [ 1 @@ -180,7 +169,6 @@ }, { "name": "bolt-open", - "directions": 1, "delays": [ [ 1 @@ -189,7 +177,6 @@ }, { "name": "deathripleytoy", - "directions": 1, "delays": [ [ 1 @@ -198,7 +185,6 @@ }, { "name": "durandprize", - "directions": 1, "delays": [ [ 1 @@ -207,7 +193,6 @@ }, { "name": "fireripleytoy", - "directions": 1, "delays": [ [ 1 @@ -216,7 +201,6 @@ }, { "name": "foamblade", - "directions": 1, "delays": [ [ 1 @@ -225,7 +209,6 @@ }, { "name": "foamcrossbow", - "directions": 1, "delays": [ [ 1 @@ -234,7 +217,6 @@ }, { "name": "foamdart", - "directions": 1, "delays": [ [ 1 @@ -243,7 +225,6 @@ }, { "name": "griffinprize", - "directions": 1, "delays": [ [ 1 @@ -252,7 +233,6 @@ }, { "name": "foambox", - "directions": 1, "delays": [ [ 1 @@ -261,7 +241,6 @@ }, { "name": "gygaxtoy", - "directions": 1, "delays": [ [ 1 @@ -270,7 +249,6 @@ }, { "name": "honkprize", - "directions": 1, "delays": [ [ 1 @@ -279,7 +257,6 @@ }, { "name": "ian", - "directions": 1, "delays": [ [ 1 @@ -288,7 +265,6 @@ }, { "name": "marauderprize", - "directions": 1, "delays": [ [ 1 @@ -297,7 +273,6 @@ }, { "name": "maulerprize", - "directions": 1, "delays": [ [ 1 @@ -306,7 +281,6 @@ }, { "name": "nuketoy", - "directions": 1, "delays": [ [ 0.1, @@ -316,7 +290,6 @@ }, { "name": "odysseusprize", - "directions": 1, "delays": [ [ 1 @@ -325,7 +298,6 @@ }, { "name": "owlprize", - "directions": 1, "delays": [ [ 1 @@ -334,7 +306,6 @@ }, { "name": "phazonprize", - "directions": 1, "delays": [ [ 1 @@ -343,7 +314,6 @@ }, { "name": "reticenceprize", - "directions": 1, "delays": [ [ 1 @@ -352,7 +322,6 @@ }, { "name": "ripleytoy", - "directions": 1, "delays": [ [ 1 @@ -361,7 +330,6 @@ }, { "name": "seraphprize", - "directions": 1, "delays": [ [ 1 @@ -370,7 +338,6 @@ }, { "name": "skeletonprize", - "directions": 1, "delays": [ [ 1 @@ -379,7 +346,6 @@ }, { "name": "snappop", - "directions": 1, "delays": [ [ 1 @@ -388,7 +354,6 @@ }, { "name": "spbox", - "directions": 1, "delays": [ [ 1 @@ -397,7 +362,6 @@ }, { "name": "toy_mouse", - "directions": 1, "delays": [ [ 1 @@ -406,7 +370,6 @@ }, { "name": "capbullet", - "directions": 1, "delays": [ [ 1 @@ -595,7 +558,6 @@ }, { "name": "synb", - "directions": 1, "delays": [ [ 1 @@ -604,7 +566,6 @@ }, { "name": "corgib", - "directions": 1, "delays": [ [ 1 @@ -613,7 +574,6 @@ }, { "name": "football", - "directions": 1, "delays": [ [ 1 @@ -658,7 +618,6 @@ }, { "name": "basketball", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Materials/Shards/piece.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/piece.rsi/meta.json index 9ef15adc64..fa4f51f793 100644 --- a/Resources/Textures/Objects/Materials/Shards/piece.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/Shards/piece.rsi/meta.json @@ -9,30 +9,15 @@ "states": [ { "name": "piecelarge", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "piecemedium", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "piecesmall", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/Shards/shard.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/shard.rsi/meta.json index 117b0d53ca..ef1623228e 100644 --- a/Resources/Textures/Objects/Materials/Shards/shard.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/Shards/shard.rsi/meta.json @@ -45,30 +45,15 @@ }, { "name": "shard3", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shard2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shard1", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/meta.json index d585dca469..2517b87f9c 100644 --- a/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/meta.json @@ -9,30 +9,15 @@ "states": [ { "name": "shrapnellarge", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shrapnelmedium", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "shrapnelsmall", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/Shards/splinters.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/meta.json index c81a36f2cb..1dbe1b6279 100644 --- a/Resources/Textures/Objects/Materials/Shards/splinters.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/meta.json @@ -9,30 +9,15 @@ "states": [ { "name": "splinterslarge", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "splintersmedium", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "splinterssmall", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/materials.rsi/meta.json b/Resources/Textures/Objects/Materials/materials.rsi/meta.json index 65b920d118..a6277d2a5c 100644 --- a/Resources/Textures/Objects/Materials/materials.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/materials.rsi/meta.json @@ -8,92 +8,70 @@ }, "states": [ { - "name": "alienhide", - "directions": 1 + "name": "alienhide" }, { - "name": "cathide", - "directions": 1 + "name": "cathide" }, { - "name": "corgihide", - "directions": 1 + "name": "corgihide" }, { - "name": "liggerhide", - "directions": 1 + "name": "liggerhide" }, { - "name": "monkeyhide", - "directions": 1 + "name": "monkeyhide" }, { - "name": "banananium", - "directions": 1 + "name": "banananium" }, { - "name": "diamond", - "directions": 1 + "name": "diamond" }, { - "name": "uranium", - "directions": 1 + "name": "uranium" }, { - "name": "wood_plank", - "directions": 1 + "name": "wood_plank" }, { - "name": "wool", - "directions": 1 + "name": "wool" }, { - "name": "copperbar_single", - "directions": 1 + "name": "copperbar_single" }, { - "name": "goldbar_10", - "directions": 1 + "name": "goldbar_10" }, { - "name": "goldbar_20", - "directions": 1 + "name": "goldbar_20" }, { - "name": "goldbar_30", - "directions": 1 + "name": "goldbar_30" }, { - "name": "leadbar_single", - "directions": 1 + "name": "leadbar_single" }, { - "name": "steelbar_single", - "directions": 1 + "name": "steelbar_single" }, { - "name": "tinbar_single", - "directions": 1 + "name": "tinbar_single" }, { - "name": "phoron_ore", - "directions": 1 + "name": "phoron_ore" }, { - "name": "phoron_sheet", - "directions": 1 + "name": "phoron_sheet" }, { - "name": "phoron_gem", - "directions": 1 + "name": "phoron_gem" }, { - "name": "spent_phoron_gem", - "directions": 1 + "name": "spent_phoron_gem" }, { - "name": "rods", - "directions": 1 + "name": "rods" } ] } diff --git a/Resources/Textures/Objects/Materials/sheets.rsi/meta.json b/Resources/Textures/Objects/Materials/sheets.rsi/meta.json index 3f5c791c9c..7dd54c1780 100644 --- a/Resources/Textures/Objects/Materials/sheets.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/sheets.rsi/meta.json @@ -7,179 +7,61 @@ "states": [ { "name": "metal-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "metal-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "glass-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "glass-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { - "name": "glass", - "directions": 1 + "name": "glass" }, { "name": "phoron-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "phoron-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { - "name": "phoron", - "directions": 1 + "name": "phoron" }, { - "name": "metal", - "directions": 1 + "name": "metal" }, { "name": "plasteel-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "plasteel-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { - "name": "plasteel", - "directions": 1 + "name": "plasteel" }, { - "name": "rglass", - "directions": 1 + "name": "rglass" }, { - "name": "rglass-inhand-left", - "directions": 4 + "name": "rglass-inhand-left", + "directions": 4 }, { - "name": "rglass-inhand-right", - "directions": 4 + "name": "rglass-inhand-right", + "directions": 4 }, { - "name": "researchicon", - "directions": 1 + "name": "researchicon" } ] } diff --git a/Resources/Textures/Objects/Misc/bedsheets.rsi/meta.json b/Resources/Textures/Objects/Misc/bedsheets.rsi/meta.json index 4ddf058c92..4d311b1034 100644 --- a/Resources/Textures/Objects/Misc/bedsheets.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/bedsheets.rsi/meta.json @@ -8,52 +8,40 @@ }, "states": [ { - "name": "random_bedsheet", - "directions": 1 + "name": "random_bedsheet" }, { - "name": "sheetNT", - "directions": 1 + "name": "sheetNT" }, { - "name": "sheetUSA", - "directions": 1 + "name": "sheetUSA" }, { - "name": "sheetblack", - "directions": 1 + "name": "sheetblack" }, { - "name": "sheetblue", - "directions": 1 + "name": "sheetblue" }, { - "name": "sheetbrown", - "directions": 1 + "name": "sheetbrown" }, { - "name": "sheetcaptain", - "directions": 1 + "name": "sheetcaptain" }, { - "name": "sheetce", - "directions": 1 + "name": "sheetce" }, { - "name": "sheetcentcom", - "directions": 1 + "name": "sheetcentcom" }, { - "name": "sheetclown", - "directions": 1 + "name": "sheetclown" }, { - "name": "sheetcmo", - "directions": 1 + "name": "sheetcmo" }, { "name": "sheetcosmos", - "directions": 1, "delays": [ [ 0.2, @@ -66,76 +54,58 @@ ] }, { - "name": "sheetcult", - "directions": 1 + "name": "sheetcult" }, { - "name": "sheetgreen", - "directions": 1 + "name": "sheetgreen" }, { - "name": "sheetgrey", - "directions": 1 + "name": "sheetgrey" }, { - "name": "sheethop", - "directions": 1 + "name": "sheethop" }, { - "name": "sheethos", - "directions": 1 + "name": "sheethos" }, { - "name": "sheetian", - "directions": 1 + "name": "sheetian" }, { - "name": "sheetmedical", - "directions": 1 + "name": "sheetmedical" }, { - "name": "sheetmime", - "directions": 1 + "name": "sheetmime" }, { - "name": "sheetorange", - "directions": 1 + "name": "sheetorange" }, { - "name": "sheetpurple", - "directions": 1 + "name": "sheetpurple" }, { - "name": "sheetqm", - "directions": 1 + "name": "sheetqm" }, { - "name": "sheetrainbow", - "directions": 1 + "name": "sheetrainbow" }, { - "name": "sheetrd", - "directions": 1 + "name": "sheetrd" }, { - "name": "sheetred", - "directions": 1 + "name": "sheetred" }, { - "name": "sheetsyndie", - "directions": 1 + "name": "sheetsyndie" }, { - "name": "sheetwhite", - "directions": 1 + "name": "sheetwhite" }, { - "name": "sheetwiz", - "directions": 1 + "name": "sheetwiz" }, { - "name": "sheetyellow", - "directions": 1 + "name": "sheetyellow" } ] } diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json b/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json index fe906267be..c1ebfc79f9 100644 --- a/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from LINKTOCODEBASE", "states": [{"name": "chestdrawer", "directions": 1, "delays": [[1.0]]}, {"name": "chestdrawer-open", "directions": 1, "delays": [[0.5, 0.1]]}, {"name": "clipboard", "directions": 1, "delays": [[1.0]]}, {"name": "clipboard_over", "directions": 1, "delays": [[1.0]]}, {"name": "clipboard_pen", "directions": 1, "delays": [[1.0]]}, {"name": "envelope_closed", "directions": 1, "delays": [[1.0]]}, {"name": "envelope_open", "directions": 1, "delays": [[1.0]]}, {"name": "envelope_open_overlay", "directions": 1, "delays": [[1.0]]}, {"name": "envelope_torn", "directions": 1, "delays": [[1.0]]}, {"name": "envelope_torn_overlay", "directions": 1, "delays": [[1.0]]}, {"name": "filingcabinet", "directions": 1, "delays": [[1.0]]}, {"name": "filingcabinet-open", "directions": 1, "delays": [[0.5, 0.1]]}, {"name": "folder", "directions": 1, "delays": [[1.0]]}, {"name": "folder_blue", "directions": 1, "delays": [[1.0]]}, {"name": "folder_paper", "directions": 1, "delays": [[1.0]]}, {"name": "folder_red", "directions": 1, "delays": [[1.0]]}, {"name": "folder_white", "directions": 1, "delays": [[1.0]]}, {"name": "folder_yellow", "directions": 1, "delays": [[1.0]]}, {"name": "label_cart", "directions": 1, "delays": [[1.0]]}, {"name": "labeler0", "directions": 1, "delays": [[1.0]]}, {"name": "labeler1", "directions": 1, "delays": [[1.0]]}, {"name": "labeler_e", "directions": 1, "delays": [[1.0]]}, {"name": "nano_paper", "directions": 1, "delays": [[1.0]]}, {"name": "nano_paper_words", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "newspaper", "directions": 1, "delays": [[1.0]]}, {"name": "np_dispenser", "directions": 1, "delays": [[1.0]]}, {"name": "np_dispenser_empty", "directions": 1, "delays": [[1.0]]}, {"name": "pamphlet", "directions": 1, "delays": [[1.0]]}, {"name": "paper", "directions": 1, "delays": [[1.0]]}, {"name": "paper_bin0", "directions": 1, "delays": [[1.0]]}, {"name": "paper_bin1", "directions": 1, "delays": [[1.0]]}, {"name": "paper_bin2", "directions": 1, "delays": [[1.0]]}, {"name": "paper_bin3", "directions": 1, "delays": [[1.0]]}, {"name": "paper_plane", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-cap", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-ce", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-cent", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-chaplain", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-clown", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-cmo", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-deny", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-hop", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-hos", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-iaa", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-mime", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-qm", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-rd", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-trader", "directions": 1, "delays": [[1.0]]}, {"name": "paper_stamp-warden", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_armor", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_blind", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_communicate", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_conceal", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_deafen", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_emp", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_newtome", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_revealrunes", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_runestun", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_supply", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_travel", "directions": 1, "delays": [[1.0]]}, {"name": "paper_talisman_travel_unused", "directions": 1, "delays": [[1.0]]}, {"name": "paper_words", "directions": 1, "delays": [[1.0]]}, {"name": "paper_words-blood", "directions": 1, "delays": [[1.0]]}, {"name": "pen", "directions": 1, "delays": [[1.0]]}, {"name": "pen_blue", "directions": 1, "delays": [[1.0]]}, {"name": "pen_red", "directions": 1, "delays": [[1.0]]}, {"name": "scrap", "directions": 1, "delays": [[1.0]]}, {"name": "scrap_bloodied", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-cap", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-ce", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-cent", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-chaplain", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-clown", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-cmo", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-deny", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-hop", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-hos", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-iaa", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-mime", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-qm", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-rd", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-trader", "directions": 1, "delays": [[1.0]]}, {"name": "stamp-warden", "directions": 1, "delays": [[1.0]]}, {"name": "tallcabinet", "directions": 1, "delays": [[1.0]]}, {"name": "tallcabinet-open", "directions": 1, "delays": [[0.5, 0.1]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from LINKTOCODEBASE", "states": [{"name": "chestdrawer", "delays": [[1.0]]}, {"name": "chestdrawer-open", "delays": [[0.5, 0.1]]}, {"name": "clipboard", "delays": [[1.0]]}, {"name": "clipboard_over", "delays": [[1.0]]}, {"name": "clipboard_pen", "delays": [[1.0]]}, {"name": "envelope_closed", "delays": [[1.0]]}, {"name": "envelope_open", "delays": [[1.0]]}, {"name": "envelope_open_overlay", "delays": [[1.0]]}, {"name": "envelope_torn", "delays": [[1.0]]}, {"name": "envelope_torn_overlay", "delays": [[1.0]]}, {"name": "filingcabinet", "delays": [[1.0]]}, {"name": "filingcabinet-open", "delays": [[0.5, 0.1]]}, {"name": "folder", "delays": [[1.0]]}, {"name": "folder_blue", "delays": [[1.0]]}, {"name": "folder_paper", "delays": [[1.0]]}, {"name": "folder_red", "delays": [[1.0]]}, {"name": "folder_white", "delays": [[1.0]]}, {"name": "folder_yellow", "delays": [[1.0]]}, {"name": "label_cart", "delays": [[1.0]]}, {"name": "labeler0", "delays": [[1.0]]}, {"name": "labeler1", "delays": [[1.0]]}, {"name": "labeler_e", "delays": [[1.0]]}, {"name": "nano_paper", "delays": [[1.0]]}, {"name": "nano_paper_words", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "newspaper", "delays": [[1.0]]}, {"name": "np_dispenser", "delays": [[1.0]]}, {"name": "np_dispenser_empty", "delays": [[1.0]]}, {"name": "pamphlet", "delays": [[1.0]]}, {"name": "paper", "delays": [[1.0]]}, {"name": "paper_bin0", "delays": [[1.0]]}, {"name": "paper_bin1", "delays": [[1.0]]}, {"name": "paper_bin2", "delays": [[1.0]]}, {"name": "paper_bin3", "delays": [[1.0]]}, {"name": "paper_plane", "delays": [[1.0]]}, {"name": "paper_stamp-cap", "delays": [[1.0]]}, {"name": "paper_stamp-ce", "delays": [[1.0]]}, {"name": "paper_stamp-cent", "delays": [[1.0]]}, {"name": "paper_stamp-chaplain", "delays": [[1.0]]}, {"name": "paper_stamp-clown", "delays": [[1.0]]}, {"name": "paper_stamp-cmo", "delays": [[1.0]]}, {"name": "paper_stamp-deny", "delays": [[1.0]]}, {"name": "paper_stamp-hop", "delays": [[1.0]]}, {"name": "paper_stamp-hos", "delays": [[1.0]]}, {"name": "paper_stamp-iaa", "delays": [[1.0]]}, {"name": "paper_stamp-mime", "delays": [[1.0]]}, {"name": "paper_stamp-qm", "delays": [[1.0]]}, {"name": "paper_stamp-rd", "delays": [[1.0]]}, {"name": "paper_stamp-trader", "delays": [[1.0]]}, {"name": "paper_stamp-warden", "delays": [[1.0]]}, {"name": "paper_talisman", "delays": [[1.0]]}, {"name": "paper_talisman_armor", "delays": [[1.0]]}, {"name": "paper_talisman_blind", "delays": [[1.0]]}, {"name": "paper_talisman_communicate", "delays": [[1.0]]}, {"name": "paper_talisman_conceal", "delays": [[1.0]]}, {"name": "paper_talisman_deafen", "delays": [[1.0]]}, {"name": "paper_talisman_emp", "delays": [[1.0]]}, {"name": "paper_talisman_newtome", "delays": [[1.0]]}, {"name": "paper_talisman_revealrunes", "delays": [[1.0]]}, {"name": "paper_talisman_runestun", "delays": [[1.0]]}, {"name": "paper_talisman_supply", "delays": [[1.0]]}, {"name": "paper_talisman_travel", "delays": [[1.0]]}, {"name": "paper_talisman_travel_unused", "delays": [[1.0]]}, {"name": "paper_words", "delays": [[1.0]]}, {"name": "paper_words-blood", "delays": [[1.0]]}, {"name": "pen", "delays": [[1.0]]}, {"name": "pen_blue", "delays": [[1.0]]}, {"name": "pen_red", "delays": [[1.0]]}, {"name": "scrap", "delays": [[1.0]]}, {"name": "scrap_bloodied", "delays": [[1.0]]}, {"name": "stamp-cap", "delays": [[1.0]]}, {"name": "stamp-ce", "delays": [[1.0]]}, {"name": "stamp-cent", "delays": [[1.0]]}, {"name": "stamp-chaplain", "delays": [[1.0]]}, {"name": "stamp-clown", "delays": [[1.0]]}, {"name": "stamp-cmo", "delays": [[1.0]]}, {"name": "stamp-deny", "delays": [[1.0]]}, {"name": "stamp-hop", "delays": [[1.0]]}, {"name": "stamp-hos", "delays": [[1.0]]}, {"name": "stamp-iaa", "delays": [[1.0]]}, {"name": "stamp-mime", "delays": [[1.0]]}, {"name": "stamp-qm", "delays": [[1.0]]}, {"name": "stamp-rd", "delays": [[1.0]]}, {"name": "stamp-trader", "delays": [[1.0]]}, {"name": "stamp-warden", "delays": [[1.0]]}, {"name": "tallcabinet", "delays": [[1.0]]}, {"name": "tallcabinet-open", "delays": [[0.5, 0.1]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Misc/cablecuffs.rsi/meta.json b/Resources/Textures/Objects/Misc/cablecuffs.rsi/meta.json index 071dcf8cba..1c8825ac38 100644 --- a/Resources/Textures/Objects/Misc/cablecuffs.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/cablecuffs.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "cuff", - "directions": 1, "delays": [ [ 1 @@ -16,7 +15,6 @@ }, { "name": "cuff-broken", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Misc/carvings.rsi/meta.json b/Resources/Textures/Objects/Misc/carvings.rsi/meta.json index 27b5298363..0800118bd7 100644 --- a/Resources/Textures/Objects/Misc/carvings.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/carvings.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "hello", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "help_me", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "thank_you", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "im_sorry", - "directions": 1, "delays": [ [ 1 @@ -45,7 +41,6 @@ }, { "name": "very_good", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/meta.json b/Resources/Textures/Objects/Misc/crayons.rsi/meta.json index 5092e3ce7b..9f0e8eb20c 100644 --- a/Resources/Textures/Objects/Misc/crayons.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/crayons.rsi/meta.json @@ -7,345 +7,155 @@ "states": [ { "name": "black", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "blue", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "clowncan", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "clowncan2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "clowncan2_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "clowncan_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonblack", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonblue", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonbox", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayongreen", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonmime", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonorange", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonpurple", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonrainbow", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonred", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonwhite", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "crayonyellow", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "deathcan", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "deathcan2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "deathcan2_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "deathcan_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "green", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mimecan", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mimecan2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mimecan2_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "mimecan_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "orange", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "purple", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rainbowcan", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rainbowcan2", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rainbowcan2_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rainbowcan_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "red", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spraycan", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spraycan_cap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spraycan_cap_colors", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "spraycan_colors", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "yellow", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Misc/fire_extinguisher.rsi/meta.json b/Resources/Textures/Objects/Misc/fire_extinguisher.rsi/meta.json index d4447ddf98..e88075b5d2 100644 --- a/Resources/Textures/Objects/Misc/fire_extinguisher.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/fire_extinguisher.rsi/meta.json @@ -9,21 +9,11 @@ "states": [ { "name": "fire_extinguisher_open", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "fire_extinguisher_closed", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Misc/flare.rsi/meta.json b/Resources/Textures/Objects/Misc/flare.rsi/meta.json index fa0ca8e540..cc48e04a1a 100644 --- a/Resources/Textures/Objects/Misc/flare.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/flare.rsi/meta.json @@ -1,134 +1,50 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0f6496a55ceefa0f1bf1668fcef49b5182471695", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" }, - "license": "CC-BY-SA-3.0", - "copyright": "Sprites created by https://github.com/nuke-makes-games", - "states": - [ - { - "name": "off-inhand-left", - "directions": 4, - "delays": [ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] - }, - { - "name": "off-inhand-right", - "directions": 4, - "delays": [ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] - }, - { - "name": "on-inhand-left", - "directions": 4, - "delays": [ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] - }, - { - "name": "on-inhand-right", - "directions": 4, - "delays": [ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] - }, - { - "name": "flare_burn", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 0.05, - 0.05, - 0.05, - 0.05 - ] - ] - }, - { - "name": "flare_spent", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] - }, - { - "name": "flare_base", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] - }, - { - "name": "flare_unlit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] - }, - { - "name": "icon", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] - } - ] + { + "name": "flare_base" + }, + { + "name": "flare_spent", + }, + { + "name": "flare_unlit", + }, + { + "name": "flare_burn", + "delays": [ + [ + 0.05, + 0.05, + 0.05, + 0.05 + ] + ] + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", + "directions": 4 + }, + { + "name": "off-inhand-left", + "directions": 4 + }, + { + "name": "off-inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Objects/Misc/glowstick.rsi/meta.json b/Resources/Textures/Objects/Misc/glowstick.rsi/meta.json index f6822ba045..21818fedc7 100644 --- a/Resources/Textures/Objects/Misc/glowstick.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/glowstick.rsi/meta.json @@ -82,39 +82,19 @@ }, { "name": "glowstick_base", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "glowstick_lit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "glowstick_glow", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "glowstick_unlit", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Objects/Misc/hand_tele.rsi/meta.json b/Resources/Textures/Objects/Misc/hand_tele.rsi/meta.json index 64e209f934..8c79ac2a59 100644 --- a/Resources/Textures/Objects/Misc/hand_tele.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/hand_tele.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "charging", - "directions": 1, "delays": [ [ 1.0, @@ -21,7 +20,6 @@ }, { "name": "ready", - "directions": 1, "delays": [ [ 5.0, diff --git a/Resources/Textures/Objects/Misc/handcuffs.rsi/meta.json b/Resources/Textures/Objects/Misc/handcuffs.rsi/meta.json index c6533225fe..d17c557035 100644 --- a/Resources/Textures/Objects/Misc/handcuffs.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/handcuffs.rsi/meta.json @@ -1,7 +1,7 @@ {"version": 1, "size": {"x": 32, "y": 32}, "states": [ {"name": "body-overlay-2", "directions": 4, "delays": [[1.0],[1.0],[1.0],[1.0]]}, {"name": "body-overlay-4", "directions": 4, "delays": [[1.0],[1.0],[1.0],[1.0]]}, -{"name": "handcuff", "directions": 1, "delays": [[1.0]]}, +{"name": "handcuff", "delays": [[1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "equipped-BELT", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]} diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json b/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json index 0fc51bd2b7..e4e35b6ec9 100644 --- a/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json @@ -8,216 +8,163 @@ }, "states": [ { - "name": "default", - "directions": 1 + "name": "default" }, { - "name": "centcom", - "directions": 1 + "name": "centcom" }, { - "name": "ert_chaplain", - "directions": 1 + "name": "ert_chaplain" }, { - "name": "ert_commander", - "directions": 1 + "name": "ert_commander" }, { - "name": "ert_engineer", - "directions": 1 + "name": "ert_engineer" }, { - "name": "ert_janitor", - "directions": 1 + "name": "ert_janitor" }, { - "name": "ert_medic", - "directions": 1 + "name": "ert_medic" }, { - "name": "ert_security", - "directions": 1 + "name": "ert_security" }, { - "name": "gold", - "directions": 1 + "name": "gold" }, { - "name": "idassistant", - "directions": 1 + "name": "idassistant" }, { - "name": "idatmospherictechnician", - "directions": 1 + "name": "idatmospherictechnician" }, { - "name": "idbartender", - "directions": 1 + "name": "idbartender" }, { - "name": "idbotanist", - "directions": 1 + "name": "idbotanist" }, { - "name": "idcaptain", - "directions": 1 + "name": "idcaptain" }, { - "name": "idcargotechnician", - "directions": 1 + "name": "idcargotechnician" }, { - "name": "idcentcom", - "directions": 1 + "name": "idcentcom" }, { - "name": "idchaplain", - "directions": 1 + "name": "idchaplain" }, { - "name": "idchemist", - "directions": 1 + "name": "idchemist" }, { - "name": "idchiefengineer", - "directions": 1 + "name": "idchiefengineer" }, { - "name": "idchiefmedicalofficer", - "directions": 1 + "name": "idchiefmedicalofficer" }, { - "name": "idclown", - "directions": 1 + "name": "idclown" }, { - "name": "idcook", - "directions": 1 + "name": "idcook" }, { - "name": "idcurator", - "directions": 1 + "name": "idcurator" }, { - "name": "iddetective", - "directions": 1 + "name": "iddetective" }, { - "name": "idgeneticist", - "directions": 1 + "name": "idgeneticist" }, { - "name": "idheadofpersonnel", - "directions": 1 + "name": "idheadofpersonnel" }, { - "name": "idheadofsecurity", - "directions": 1 + "name": "idheadofsecurity" }, { - "name": "idjanitor", - "directions": 1 + "name": "idjanitor" }, { - "name": "idlawyer", - "directions": 1 + "name": "idlawyer" }, { - "name": "idmedicaldoctor", - "directions": 1 + "name": "idmedicaldoctor" }, { - "name": "idmime", - "directions": 1 + "name": "idmime" }, { - "name": "idparamedic", - "directions": 1 + "name": "idparamedic" }, { - "name": "idprisoner", - "directions": 1 + "name": "idprisoner" }, { - "name": "idquartermaster", - "directions": 1 + "name": "idquartermaster" }, { - "name": "idresearchdirector", - "directions": 1 + "name": "idresearchdirector" }, { - "name": "idroboticist", - "directions": 1 + "name": "idroboticist" }, { - "name": "idscientist", - "directions": 1 + "name": "idscientist" }, { - "name": "idsecurityofficer", - "directions": 1 + "name": "idsecurityofficer" }, { - "name": "idshaftminer", - "directions": 1 + "name": "idshaftminer" }, { - "name": "idstationengineer", - "directions": 1 + "name": "idstationengineer" }, { - "name": "idunknown", - "directions": 1 + "name": "idunknown" }, { - "name": "idvirologist", - "directions": 1 + "name": "idvirologist" }, { - "name": "idwarden", - "directions": 1 + "name": "idwarden" }, { - "name": "orange", - "directions": 1 + "name": "orange" }, { - "name": "prisoner_001", - "directions": 1 + "name": "prisoner_001" }, { - "name": "prisoner_002", - "directions": 1 + "name": "prisoner_002" }, { - "name": "prisoner_003", - "directions": 1 + "name": "prisoner_003" }, { - "name": "prisoner_004", - "directions": 1 + "name": "prisoner_004" }, { - "name": "prisoner_005", - "directions": 1 + "name": "prisoner_005" }, { - "name": "prisoner_006", - "directions": 1 + "name": "prisoner_006" }, { - "name": "prisoner_007", - "directions": 1 + "name": "prisoner_007" }, { - "name": "silver", - "directions": 1 + "name": "silver" }, { - "name": "syndie", - "directions": 1 + "name": "syndie" }, { "name": "gold-inhand-left", diff --git a/Resources/Textures/Objects/Misc/lights.rsi/meta.json b/Resources/Textures/Objects/Misc/lights.rsi/meta.json index d956793e53..65e68c5fef 100644 --- a/Resources/Textures/Objects/Misc/lights.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/lights.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "bananalamp", - "directions": 1, "delays": [ [ 1 @@ -16,7 +15,6 @@ }, { "name": "bananalamp_on", - "directions": 1, "delays": [ [ 1 @@ -25,7 +23,6 @@ }, { "name": "floodlight", - "directions": 1, "delays": [ [ 1 @@ -34,7 +31,6 @@ }, { "name": "floodlight_on", - "directions": 1, "delays": [ [ 1 @@ -43,7 +39,6 @@ }, { "name": "floodlight_burned", - "directions": 1, "delays": [ [ 1 @@ -52,7 +47,6 @@ }, { "name": "floodlight_broken", - "directions": 1, "delays": [ [ 1 @@ -61,7 +55,6 @@ }, { "name": "lamp", - "directions": 1, "delays": [ [ 1 @@ -70,7 +63,6 @@ }, { "name": "lamp_on", - "directions": 1, "delays": [ [ 1 @@ -79,7 +71,6 @@ }, { "name": "lampgreen", - "directions": 1, "delays": [ [ 1 @@ -88,7 +79,6 @@ }, { "name": "lampgreen_on", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Misc/markers.rsi/meta.json b/Resources/Textures/Objects/Misc/markers.rsi/meta.json index 43f08e0452..a44f1e7a62 100644 --- a/Resources/Textures/Objects/Misc/markers.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/markers.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "markerbronze", - "directions": 1, "delays": [ [ 1 @@ -16,7 +15,6 @@ }, { "name": "markerbronze-on", - "directions": 1, "delays": [ [ 1 @@ -25,7 +23,6 @@ }, { "name": "markerburgundy", - "directions": 1, "delays": [ [ 1 @@ -34,7 +31,6 @@ }, { "name": "markerburgundy-on", - "directions": 1, "delays": [ [ 1 @@ -43,7 +39,6 @@ }, { "name": "markercerulean", - "directions": 1, "delays": [ [ 1 @@ -52,7 +47,6 @@ }, { "name": "markercerulean-on", - "directions": 1, "delays": [ [ 1 @@ -61,7 +55,6 @@ }, { "name": "markerfuchsia", - "directions": 1, "delays": [ [ 1 @@ -70,7 +63,6 @@ }, { "name": "markerfuchsia-on", - "directions": 1, "delays": [ [ 1 @@ -79,7 +71,6 @@ }, { "name": "markerindigo", - "directions": 1, "delays": [ [ 1 @@ -88,7 +79,6 @@ }, { "name": "markerindigo-on", - "directions": 1, "delays": [ [ 1 @@ -97,7 +87,6 @@ }, { "name": "markerjade", - "directions": 1, "delays": [ [ 1 @@ -106,7 +95,6 @@ }, { "name": "markerjade-on", - "directions": 1, "delays": [ [ 1 @@ -115,7 +103,6 @@ }, { "name": "markerlime", - "directions": 1, "delays": [ [ 1 @@ -124,7 +111,6 @@ }, { "name": "markerlime-on", - "directions": 1, "delays": [ [ 1 @@ -133,7 +119,6 @@ }, { "name": "markerolive", - "directions": 1, "delays": [ [ 1 @@ -142,7 +127,6 @@ }, { "name": "markerolive-on", - "directions": 1, "delays": [ [ 1 @@ -151,7 +135,6 @@ }, { "name": "markerpurple", - "directions": 1, "delays": [ [ 1 @@ -160,7 +143,6 @@ }, { "name": "markerpurple-on", - "directions": 1, "delays": [ [ 1 @@ -169,7 +151,6 @@ }, { "name": "markerrandom", - "directions": 1, "delays": [ [ 1 @@ -178,7 +159,6 @@ }, { "name": "markerteal", - "directions": 1, "delays": [ [ 1 @@ -187,7 +167,6 @@ }, { "name": "markerteal-on", - "directions": 1, "delays": [ [ 1 @@ -196,7 +175,6 @@ }, { "name": "markerviolet", - "directions": 1, "delays": [ [ 1 @@ -205,7 +183,6 @@ }, { "name": "markerviolet-on", - "directions": 1, "delays": [ [ 1 @@ -214,7 +191,6 @@ }, { "name": "markeryellow", - "directions": 1, "delays": [ [ 1 @@ -223,7 +199,6 @@ }, { "name": "markeryellow-on", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Misc/nukedisk.rsi/meta.json b/Resources/Textures/Objects/Misc/nukedisk.rsi/meta.json index 81c0661e3c..ddbeb7ced1 100644 --- a/Resources/Textures/Objects/Misc/nukedisk.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/nukedisk.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Misc/skub.rsi/meta.json b/Resources/Textures/Objects/Misc/skub.rsi/meta.json index 6d9510462d..fb2bcc3dab 100644 --- a/Resources/Textures/Objects/Misc/skub.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/skub.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation", "states": [{"name": "icon", "directions": 1, "delays": [[1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation", "states": [{"name": "icon", "delays": [[1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Objects/Misc/torch.rsi/meta.json b/Resources/Textures/Objects/Misc/torch.rsi/meta.json index 1ef7db6594..72ebd77c8a 100644 --- a/Resources/Textures/Objects/Misc/torch.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/torch.rsi/meta.json @@ -106,25 +106,14 @@ }, { "name": "torch", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "torch_empty", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "torch_on", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json index 38c5df1bfe..3b1665413a 100644 --- a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json +++ b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json @@ -9,12 +9,7 @@ "states": [ { "name": "jar", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/AME/ame_part.rsi/meta.json b/Resources/Textures/Objects/Power/AME/ame_part.rsi/meta.json index 423746d2a2..617023b270 100644 --- a/Resources/Textures/Objects/Power/AME/ame_part.rsi/meta.json +++ b/Resources/Textures/Objects/Power/AME/ame_part.rsi/meta.json @@ -9,12 +9,7 @@ "states": [ { "name": "box", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/meta.json index 273a0a949b..71a7f31af1 100644 --- a/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/meta.json @@ -9,12 +9,7 @@ "states": [ { "name": "potato_battery", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/meta.json index 42532664e4..2d9343f885 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "l_hi", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hi_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "l_hi_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hi_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hi_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hi_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/meta.json index f81f46f26b..53734ad567 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "l_hy", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hy_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "l_hy_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hy_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hy_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_hy_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/meta.json index f70ce1df73..e1ef25e8ad 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "l_st", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_st_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "l_st_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_st_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_st_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_st_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/meta.json index e61dbb4cb9..be0c0e1ed1 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "l_sup", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_sup_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "l_sup_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_sup_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_sup_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "l_sup_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/meta.json index 65521cece4..6f99c41d68 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "m_hi", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hi_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "m_hi_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hi_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hi_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hi_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/meta.json index 9c2c5af5e3..d5b2771be5 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "m_hy", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hy_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "m_hy_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hy_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hy_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_hy_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/meta.json index 3ada43a2e9..e6f88e7e5d 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "m_st", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_st_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "m_st_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_st_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_st_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_st_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/meta.json index ba4e9c2c2a..9eee5bb770 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "m_sup", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_sup_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "m_sup_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_sup_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_sup_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "m_sup_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/meta.json index 711a1300f4..ef93a794cf 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "s_ar", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "s_ar_0", - "directions": 1, "delays": [ [ 0.2, @@ -28,39 +22,19 @@ }, { "name": "s_ar_100", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "s_ar_25", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "s_ar_50", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "s_ar_75", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hi.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hi.rsi/meta.json index 2622a6cb7a..68e2ca9153 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hi.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hi.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_hi", "directions": 1, "delays": [[1.0]]}, {"name": "s_hi_0", "directions": 1, "delays": [[0.2, 0.2]]}, {"name": "s_hi_100", "directions": 1, "delays": [[1.0]]}, {"name": "s_hi_25", "directions": 1, "delays": [[1.0]]}, {"name": "s_hi_50", "directions": 1, "delays": [[1.0]]}, {"name": "s_hi_75", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_hi", "delays": [[1.0]]}, {"name": "s_hi_0", "delays": [[0.2, 0.2]]}, {"name": "s_hi_100", "delays": [[1.0]]}, {"name": "s_hi_25", "delays": [[1.0]]}, {"name": "s_hi_50", "delays": [[1.0]]}, {"name": "s_hi_75", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hy.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hy.rsi/meta.json index b1d106c64b..f5694ced90 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hy.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_hy.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_hy", "directions": 1, "delays": [[1.0]]}, {"name": "s_hy_0", "directions": 1, "delays": [[0.2, 0.2]]}, {"name": "s_hy_100", "directions": 1, "delays": [[1.0]]}, {"name": "s_hy_25", "directions": 1, "delays": [[1.0]]}, {"name": "s_hy_50", "directions": 1, "delays": [[1.0]]}, {"name": "s_hy_75", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_hy", "delays": [[1.0]]}, {"name": "s_hy_0", "delays": [[0.2, 0.2]]}, {"name": "s_hy_100", "delays": [[1.0]]}, {"name": "s_hy_25", "delays": [[1.0]]}, {"name": "s_hy_50", "delays": [[1.0]]}, {"name": "s_hy_75", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_st.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_st.rsi/meta.json index 7730f019c9..de99aab706 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_st.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_st.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_st", "directions": 1, "delays": [[1.0]]}, {"name": "s_st_0", "directions": 1, "delays": [[0.2, 0.2]]}, {"name": "s_st_100", "directions": 1, "delays": [[1.0]]}, {"name": "s_st_25", "directions": 1, "delays": [[1.0]]}, {"name": "s_st_50", "directions": 1, "delays": [[1.0]]}, {"name": "s_st_75", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_st", "delays": [[1.0]]}, {"name": "s_st_0", "delays": [[0.2, 0.2]]}, {"name": "s_st_100", "delays": [[1.0]]}, {"name": "s_st_25", "delays": [[1.0]]}, {"name": "s_st_50", "delays": [[1.0]]}, {"name": "s_st_75", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_sup.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_sup.rsi/meta.json index 7d8749b953..79ed6e45a2 100644 --- a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_sup.rsi/meta.json +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_sup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_sup", "directions": 1, "delays": [[1.0]]}, {"name": "s_sup_0", "directions": 1, "delays": [[0.2, 0.2]]}, {"name": "s_sup_100", "directions": 1, "delays": [[1.0]]}, {"name": "s_sup_25", "directions": 1, "delays": [[1.0]]}, {"name": "s_sup_50", "directions": 1, "delays": [[1.0]]}, {"name": "s_sup_75", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_sup", "delays": [[1.0]]}, {"name": "s_sup_0", "delays": [[0.2, 0.2]]}, {"name": "s_sup_100", "delays": [[1.0]]}, {"name": "s_sup_25", "delays": [[1.0]]}, {"name": "s_sup_50", "delays": [[1.0]]}, {"name": "s_sup_75", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/light_bulb.rsi/meta.json b/Resources/Textures/Objects/Power/light_bulb.rsi/meta.json index e5ffb23a14..7b642e3d2c 100644 --- a/Resources/Textures/Objects/Power/light_bulb.rsi/meta.json +++ b/Resources/Textures/Objects/Power/light_bulb.rsi/meta.json @@ -8,37 +8,16 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit ad7c8621e5567b1b3b2b609f699b3b80cca785f2", "states": [ { - "name": "normal", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "normal" + }, { - "name": "burned", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "burned" + }, { - "name": "broken", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "broken" + } ] } diff --git a/Resources/Textures/Objects/Power/light_tube.rsi/meta.json b/Resources/Textures/Objects/Power/light_tube.rsi/meta.json index e5ffb23a14..7b642e3d2c 100644 --- a/Resources/Textures/Objects/Power/light_tube.rsi/meta.json +++ b/Resources/Textures/Objects/Power/light_tube.rsi/meta.json @@ -8,37 +8,16 @@ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit ad7c8621e5567b1b3b2b609f699b3b80cca785f2", "states": [ { - "name": "normal", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "normal" + }, { - "name": "burned", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "burned" + }, { - "name": "broken", - "select": [], - "flags": {}, - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "broken" + } ] } diff --git a/Resources/Textures/Objects/Specific/Atmos/gasanalyzer.rsi/meta.json b/Resources/Textures/Objects/Specific/Atmos/gasanalyzer.rsi/meta.json index e1dd064c9a..bdb4163887 100644 --- a/Resources/Textures/Objects/Specific/Atmos/gasanalyzer.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Atmos/gasanalyzer.rsi/meta.json @@ -7,16 +7,10 @@ "states": [ { "name": "icon", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "working", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Specific/Chemistry/autoinjector.rsi/meta.json b/Resources/Textures/Objects/Specific/Chemistry/autoinjector.rsi/meta.json index ef6407ddf0..c14ea7be4d 100644 --- a/Resources/Textures/Objects/Specific/Chemistry/autoinjector.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Chemistry/autoinjector.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "directions": 1, "delays": [[1.0]]}, {"name": "1", "directions": 1, "delays": [[1.0]]}, {"name": "10", "directions": 1, "delays": [[1.0]]}, {"name": "15", "directions": 1, "delays": [[1.0]]}, {"name": "5", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector0", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_black", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_black0", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_red", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_red0", "directions": 1, "delays": [[1.0]]}, {"name": "borghypo", "directions": 1, "delays": [[1.0]]}, {"name": "borghypo_s", "directions": 1, "delays": [[1.0]]}, {"name": "broken", "directions": 1, "delays": [[1.0]]}, {"name": "combat_hypo", "directions": 1, "delays": [[1.0]]}, {"name": "draw", "directions": 1, "delays": [[1.0]]}, {"name": "hypo", "directions": 1, "delays": [[1.0]]}, {"name": "inject", "directions": 1, "delays": [[1.0]]}, {"name": "syringeproj", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "delays": [[1.0]]}, {"name": "1", "delays": [[1.0]]}, {"name": "10", "delays": [[1.0]]}, {"name": "15", "delays": [[1.0]]}, {"name": "5", "delays": [[1.0]]}, {"name": "autoinjector", "delays": [[1.0]]}, {"name": "autoinjector0", "delays": [[1.0]]}, {"name": "autoinjector_black", "delays": [[1.0]]}, {"name": "autoinjector_black0", "delays": [[1.0]]}, {"name": "autoinjector_red", "delays": [[1.0]]}, {"name": "autoinjector_red0", "delays": [[1.0]]}, {"name": "borghypo", "delays": [[1.0]]}, {"name": "borghypo_s", "delays": [[1.0]]}, {"name": "broken", "delays": [[1.0]]}, {"name": "combat_hypo", "delays": [[1.0]]}, {"name": "draw", "delays": [[1.0]]}, {"name": "hypo", "delays": [[1.0]]}, {"name": "inject", "delays": [[1.0]]}, {"name": "syringeproj", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Chemistry/fillings.rsi/meta.json b/Resources/Textures/Objects/Specific/Chemistry/fillings.rsi/meta.json index 5fd73d8ec2..6c4037add0 100644 --- a/Resources/Textures/Objects/Specific/Chemistry/fillings.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Chemistry/fillings.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "backpack1", "directions": 1, "delays": [[1.0]]}, {"name": "backpack2", "directions": 1, "delays": [[1.0]]}, {"name": "backpackmob1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "backpackmob2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "beaker1", "directions": 1, "delays": [[1.0]]}, {"name": "beaker2", "directions": 1, "delays": [[1.0]]}, {"name": "beaker3", "directions": 1, "delays": [[1.0]]}, {"name": "beaker4", "directions": 1, "delays": [[1.0]]}, {"name": "beaker5", "directions": 1, "delays": [[1.0]]}, {"name": "beaker6", "directions": 1, "delays": [[1.0]]}, {"name": "beakerlarge1", "directions": 1, "delays": [[1.0]]}, {"name": "beakerlarge2", "directions": 1, "delays": [[1.0]]}, {"name": "beakerlarge3", "directions": 1, "delays": [[1.0]]}, {"name": "beakerlarge4", "directions": 1, "delays": [[1.0]]}, {"name": "beakerlarge5", "directions": 1, "delays": [[1.0]]}, {"name": "beakerlarge6", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-1-1", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-1-2", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-1-3", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-1-4", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-1-5", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-1-6", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-2-1", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-2-2", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-2-3", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-2-4", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-2-5", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-2-6", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-3-1", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-3-2", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-3-3", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-3-4", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-3-5", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-3-6", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-4-1", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-4-2", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-4-3", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-4-4", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-4-5", "directions": 1, "delays": [[1.0]]}, {"name": "bottle-4-6", "directions": 1, "delays": [[1.0]]}, {"name": "dropper1", "directions": 1, "delays": [[1.0]]}, {"name": "glass1", "directions": 1, "delays": [[1.0]]}, {"name": "glass2", "directions": 1, "delays": [[1.0]]}, {"name": "glass3", "directions": 1, "delays": [[1.0]]}, {"name": "glass4", "directions": 1, "delays": [[1.0]]}, {"name": "glass5", "directions": 1, "delays": [[1.0]]}, {"name": "glass6", "directions": 1, "delays": [[1.0]]}, {"name": "largebottle1", "directions": 1, "delays": [[1.0]]}, {"name": "largebottle2", "directions": 1, "delays": [[1.0]]}, {"name": "largebottle3", "directions": 1, "delays": [[1.0]]}, {"name": "largebottle4", "directions": 1, "delays": [[1.0]]}, {"name": "largebottle5", "directions": 1, "delays": [[1.0]]}, {"name": "largebottle6", "directions": 1, "delays": [[1.0]]}, {"name": "smallbottle1", "directions": 1, "delays": [[1.0]]}, {"name": "smallbottle2", "directions": 1, "delays": [[1.0]]}, {"name": "smallbottle3", "directions": 1, "delays": [[1.0]]}, {"name": "smallbottle4", "directions": 1, "delays": [[1.0]]}, {"name": "smallbottle5", "directions": 1, "delays": [[1.0]]}, {"name": "smallbottle6", "directions": 1, "delays": [[1.0]]}, {"name": "syringe1", "directions": 1, "delays": [[1.0]]}, {"name": "syringe2", "directions": 1, "delays": [[1.0]]}, {"name": "syringe3", "directions": 1, "delays": [[1.0]]}, {"name": "syringe4", "directions": 1, "delays": [[1.0]]}, {"name": "vial1", "directions": 1, "delays": [[1.0]]}, {"name": "vial2", "directions": 1, "delays": [[1.0]]}, {"name": "vial3", "directions": 1, "delays": [[1.0]]}, {"name": "vial4", "directions": 1, "delays": [[1.0]]}, {"name": "vial5", "directions": 1, "delays": [[1.0]]}, {"name": "vial6", "directions": 1, "delays": [[1.0]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "backpack1", "delays": [[1.0]]}, {"name": "backpack2", "delays": [[1.0]]}, {"name": "backpackmob1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "backpackmob2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "beaker1", "delays": [[1.0]]}, {"name": "beaker2", "delays": [[1.0]]}, {"name": "beaker3", "delays": [[1.0]]}, {"name": "beaker4", "delays": [[1.0]]}, {"name": "beaker5", "delays": [[1.0]]}, {"name": "beaker6", "delays": [[1.0]]}, {"name": "beakerlarge1", "delays": [[1.0]]}, {"name": "beakerlarge2", "delays": [[1.0]]}, {"name": "beakerlarge3", "delays": [[1.0]]}, {"name": "beakerlarge4", "delays": [[1.0]]}, {"name": "beakerlarge5", "delays": [[1.0]]}, {"name": "beakerlarge6", "delays": [[1.0]]}, {"name": "bottle-1-1", "delays": [[1.0]]}, {"name": "bottle-1-2", "delays": [[1.0]]}, {"name": "bottle-1-3", "delays": [[1.0]]}, {"name": "bottle-1-4", "delays": [[1.0]]}, {"name": "bottle-1-5", "delays": [[1.0]]}, {"name": "bottle-1-6", "delays": [[1.0]]}, {"name": "bottle-2-1", "delays": [[1.0]]}, {"name": "bottle-2-2", "delays": [[1.0]]}, {"name": "bottle-2-3", "delays": [[1.0]]}, {"name": "bottle-2-4", "delays": [[1.0]]}, {"name": "bottle-2-5", "delays": [[1.0]]}, {"name": "bottle-2-6", "delays": [[1.0]]}, {"name": "bottle-3-1", "delays": [[1.0]]}, {"name": "bottle-3-2", "delays": [[1.0]]}, {"name": "bottle-3-3", "delays": [[1.0]]}, {"name": "bottle-3-4", "delays": [[1.0]]}, {"name": "bottle-3-5", "delays": [[1.0]]}, {"name": "bottle-3-6", "delays": [[1.0]]}, {"name": "bottle-4-1", "delays": [[1.0]]}, {"name": "bottle-4-2", "delays": [[1.0]]}, {"name": "bottle-4-3", "delays": [[1.0]]}, {"name": "bottle-4-4", "delays": [[1.0]]}, {"name": "bottle-4-5", "delays": [[1.0]]}, {"name": "bottle-4-6", "delays": [[1.0]]}, {"name": "dropper1", "delays": [[1.0]]}, {"name": "glass1", "delays": [[1.0]]}, {"name": "glass2", "delays": [[1.0]]}, {"name": "glass3", "delays": [[1.0]]}, {"name": "glass4", "delays": [[1.0]]}, {"name": "glass5", "delays": [[1.0]]}, {"name": "glass6", "delays": [[1.0]]}, {"name": "largebottle1", "delays": [[1.0]]}, {"name": "largebottle2", "delays": [[1.0]]}, {"name": "largebottle3", "delays": [[1.0]]}, {"name": "largebottle4", "delays": [[1.0]]}, {"name": "largebottle5", "delays": [[1.0]]}, {"name": "largebottle6", "delays": [[1.0]]}, {"name": "smallbottle1", "delays": [[1.0]]}, {"name": "smallbottle2", "delays": [[1.0]]}, {"name": "smallbottle3", "delays": [[1.0]]}, {"name": "smallbottle4", "delays": [[1.0]]}, {"name": "smallbottle5", "delays": [[1.0]]}, {"name": "smallbottle6", "delays": [[1.0]]}, {"name": "syringe1", "delays": [[1.0]]}, {"name": "syringe2", "delays": [[1.0]]}, {"name": "syringe3", "delays": [[1.0]]}, {"name": "syringe4", "delays": [[1.0]]}, {"name": "vial1", "delays": [[1.0]]}, {"name": "vial2", "delays": [[1.0]]}, {"name": "vial3", "delays": [[1.0]]}, {"name": "vial4", "delays": [[1.0]]}, {"name": "vial5", "delays": [[1.0]]}, {"name": "vial6", "delays": [[1.0]]}]} diff --git a/Resources/Textures/Objects/Specific/Chemistry/hypospray.rsi/meta.json b/Resources/Textures/Objects/Specific/Chemistry/hypospray.rsi/meta.json index ef6407ddf0..c14ea7be4d 100644 --- a/Resources/Textures/Objects/Specific/Chemistry/hypospray.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Chemistry/hypospray.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "directions": 1, "delays": [[1.0]]}, {"name": "1", "directions": 1, "delays": [[1.0]]}, {"name": "10", "directions": 1, "delays": [[1.0]]}, {"name": "15", "directions": 1, "delays": [[1.0]]}, {"name": "5", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector0", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_black", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_black0", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_red", "directions": 1, "delays": [[1.0]]}, {"name": "autoinjector_red0", "directions": 1, "delays": [[1.0]]}, {"name": "borghypo", "directions": 1, "delays": [[1.0]]}, {"name": "borghypo_s", "directions": 1, "delays": [[1.0]]}, {"name": "broken", "directions": 1, "delays": [[1.0]]}, {"name": "combat_hypo", "directions": 1, "delays": [[1.0]]}, {"name": "draw", "directions": 1, "delays": [[1.0]]}, {"name": "hypo", "directions": 1, "delays": [[1.0]]}, {"name": "inject", "directions": 1, "delays": [[1.0]]}, {"name": "syringeproj", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "delays": [[1.0]]}, {"name": "1", "delays": [[1.0]]}, {"name": "10", "delays": [[1.0]]}, {"name": "15", "delays": [[1.0]]}, {"name": "5", "delays": [[1.0]]}, {"name": "autoinjector", "delays": [[1.0]]}, {"name": "autoinjector0", "delays": [[1.0]]}, {"name": "autoinjector_black", "delays": [[1.0]]}, {"name": "autoinjector_black0", "delays": [[1.0]]}, {"name": "autoinjector_red", "delays": [[1.0]]}, {"name": "autoinjector_red0", "delays": [[1.0]]}, {"name": "borghypo", "delays": [[1.0]]}, {"name": "borghypo_s", "delays": [[1.0]]}, {"name": "broken", "delays": [[1.0]]}, {"name": "combat_hypo", "delays": [[1.0]]}, {"name": "draw", "delays": [[1.0]]}, {"name": "hypo", "delays": [[1.0]]}, {"name": "inject", "delays": [[1.0]]}, {"name": "syringeproj", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Chemistry/syringe.rsi/meta.json b/Resources/Textures/Objects/Specific/Chemistry/syringe.rsi/meta.json index 65f3e06506..d1df4d8152 100644 --- a/Resources/Textures/Objects/Specific/Chemistry/syringe.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Chemistry/syringe.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "directions": 1, "delays": [[1.0]]}, {"name": "1", "directions": 1, "delays": [[1.0]]}, {"name": "10", "directions": 1, "delays": [[1.0]]}, {"name": "15", "directions": 1, "delays": [[1.0]]}, {"name": "5", "directions": 1, "delays": [[1.0]]}, {"name": "broken", "directions": 1, "delays": [[1.0]]}, {"name": "syringeproj", "directions": 1, "delays": [[1.0]]}]} +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "delays": [[1.0]]}, {"name": "1", "delays": [[1.0]]}, {"name": "10", "delays": [[1.0]]}, {"name": "15", "delays": [[1.0]]}, {"name": "5", "delays": [[1.0]]}, {"name": "broken", "delays": [[1.0]]}, {"name": "syringeproj", "delays": [[1.0]]}]} diff --git a/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/meta.json index bf938ef176..5c1437d0d7 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}, {"name": "stage-5", "directions": 1, "delays": [[1.0]]}, {"name": "stage-6", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json index 071061f671..acd1df2e77 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "peel", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}, {"name": "stage-5", "directions": 1, "delays": [[1.0]]}, {"name": "stage-6", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "peel", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/carrot.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/carrot.rsi/meta.json index f2e9246eb4..e84d781385 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/carrot.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/carrot.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/chanterelle.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/chanterelle.rsi/meta.json index f2e9246eb4..e84d781385 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/chanterelle.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/chanterelle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/corn.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/corn.rsi/meta.json index eac1c3ca61..92b1223eb2 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/corn.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/corn.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "cob", "directions": 1, "delays": [[1.0]]}, {"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "produce_big", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "cob", "delays": [[1.0]]}, {"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "produce_big", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/eggplant.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/eggplant.rsi/meta.json index bf938ef176..5c1437d0d7 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/eggplant.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/eggplant.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}, {"name": "stage-5", "directions": 1, "delays": [[1.0]]}, {"name": "stage-6", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/eggy.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/eggy.rsi/meta.json index bf938ef176..5c1437d0d7 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/eggy.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/eggy.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}, {"name": "stage-5", "directions": 1, "delays": [[1.0]]}, {"name": "stage-6", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/lemon.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/lemon.rsi/meta.json index bf938ef176..5c1437d0d7 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/lemon.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/lemon.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}, {"name": "stage-5", "directions": 1, "delays": [[1.0]]}, {"name": "stage-6", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/potato.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/potato.rsi/meta.json index 9d25171028..6eadfb0fcd 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/potato.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/potato.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/seeds.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/seeds.rsi/meta.json index dddedb1162..7088511946 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/seeds.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/seeds.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "mycelium-empty", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "seed-alien1", "directions": 1, "delays": [[1.0]]}, {"name": "seed-alien2", "directions": 1, "delays": [[1.0]]}, {"name": "seed-alien3", "directions": 1, "delays": [[1.0]]}, {"name": "seed-alien4", "directions": 1, "delays": [[1.0]]}, {"name": "seed-synthbrain", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "mycelium-empty", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "seed-alien1", "delays": [[1.0]]}, {"name": "seed-alien2", "delays": [[1.0]]}, {"name": "seed-alien3", "delays": [[1.0]]}, {"name": "seed-alien4", "delays": [[1.0]]}, {"name": "seed-synthbrain", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/sugarcane.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/sugarcane.rsi/meta.json index f2e9246eb4..e84d781385 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/sugarcane.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/sugarcane.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/tomato.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/tomato.rsi/meta.json index bf938ef176..5c1437d0d7 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/tomato.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/tomato.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}, {"name": "stage-5", "directions": 1, "delays": [[1.0]]}, {"name": "stage-6", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/towercap.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/towercap.rsi/meta.json index f2e9246eb4..e84d781385 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/towercap.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/towercap.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Hydroponics/wheat.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/wheat.rsi/meta.json index bf938ef176..5c1437d0d7 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/wheat.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/wheat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "directions": 1, "delays": [[1.0]]}, {"name": "harvest", "directions": 1, "delays": [[1.0]]}, {"name": "produce", "directions": 1, "delays": [[1.0]]}, {"name": "seed", "directions": 1, "delays": [[1.0]]}, {"name": "stage-1", "directions": 1, "delays": [[1.0]]}, {"name": "stage-2", "directions": 1, "delays": [[1.0]]}, {"name": "stage-3", "directions": 1, "delays": [[1.0]]}, {"name": "stage-4", "directions": 1, "delays": [[1.0]]}, {"name": "stage-5", "directions": 1, "delays": [[1.0]]}, {"name": "stage-6", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json b/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json index b0eeb48a4b..dcce0b948e 100644 --- a/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "bucket", - "directions": 1, "delays": [ [ 1 @@ -16,7 +15,6 @@ }, { "name": "bucket_water", - "directions": 1, "delays": [ [ 1 @@ -25,7 +23,6 @@ }, { "name": "cleaner", - "directions": 1, "delays": [ [ 1 @@ -34,7 +31,6 @@ }, { "name": "mopbucket", - "directions": 1, "delays": [ [ 1 @@ -43,7 +39,6 @@ }, { "name": "mopbucket_water", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Specific/Janitorial/mop.rsi/meta.json b/Resources/Textures/Objects/Specific/Janitorial/mop.rsi/meta.json index 284a18f42c..4301060d22 100644 --- a/Resources/Textures/Objects/Specific/Janitorial/mop.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Janitorial/mop.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "mop", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "mop", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Janitorial/soap.rsi/meta.json b/Resources/Textures/Objects/Specific/Janitorial/soap.rsi/meta.json index 73934a51bf..83b857de0a 100644 --- a/Resources/Textures/Objects/Specific/Janitorial/soap.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Janitorial/soap.rsi/meta.json @@ -9,57 +9,27 @@ "states": [ { "name": "soap", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "soapdeluxe", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "soapgibs", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "soapnt", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "soapomega", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "soapsyndie", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Janitorial/wet_floor_sign.rsi/meta.json b/Resources/Textures/Objects/Specific/Janitorial/wet_floor_sign.rsi/meta.json index 3bbf803a8b..4f52b31a49 100644 --- a/Resources/Textures/Objects/Specific/Janitorial/wet_floor_sign.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Janitorial/wet_floor_sign.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "caution", "directions": 1, "delays": [[1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "caution", "delays": [[1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Medical/medical.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/medical.rsi/meta.json index d353161614..52db031b86 100644 --- a/Resources/Textures/Objects/Specific/Medical/medical.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/medical.rsi/meta.json @@ -6,46 +6,22 @@ }, "states": [ { - "name": "brutepack", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "brutepack" }, { - "name": "cast", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "cast" }, { - "name": "gauze", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "gauze" }, { - "name": "medkit_r", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "medkit_r" }, { - "name": "morphine", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "morphine" }, { - "name": "ointment", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "ointment" } ] } diff --git a/Resources/Textures/Objects/Specific/Medical/surgery_tools.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/surgery_tools.rsi/meta.json index 065ba43164..e5e2f55219 100644 --- a/Resources/Textures/Objects/Specific/Medical/surgery_tools.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/surgery_tools.rsi/meta.json @@ -1,51 +1,27 @@ { - "version": 1, + "version": 1, "size": { - "x": 32, + "x": 32, "y": 32 - }, + }, "states": [ { - "name": "scalpel", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "scalpel" }, { - "name": "retractor", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "retractor" }, { - "name": "bone_saw", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "bone_saw" }, { - "name": "hemostat", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "hemostat" }, { - "name": "drill", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "drill" }, { - "name": "cautery", - "directions": 1, - "delays": [ - [1.0] - ] + "name": "cautery" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/meta.json b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/meta.json index 9eaad9e7d7..0f08d50f9d 100644 --- a/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/meta.json @@ -9,39 +9,19 @@ "states": [ { "name": "bag", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "item", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "label_overlay", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "open_overlay", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index bce379dc40..26a7b55bb0 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -8,128 +8,97 @@ }, "states": [ { - "name": "beaker", - "directions": 1 + "name": "beaker" }, { - "name": "bodybags", - "directions": 1 + "name": "bodybags" }, { - "name": "clown", - "directions": 1 + "name": "clown" }, { - "name": "heart", - "directions": 1 + "name": "heart" }, { - "name": "meson", - "directions": 1 + "name": "meson" }, { - "name": "sechud", - "directions": 1 + "name": "sechud" }, { - "name": "box", - "directions": 1 + "name": "box" }, { - "name": "box_hug", - "directions": 1 + "name": "box_hug" }, { - "name": "box_donk_pocket", - "directions": 1 + "name": "box_donk_pocket" }, { - "name": "box_id", - "directions": 1 + "name": "box_id" }, { - "name": "box_of_doom", - "directions": 1 + "name": "box_of_doom" }, { - "name": "box_of_doom_big", - "directions": 1 + "name": "box_of_doom_big" }, { - "name": "box_security", - "directions": 1 + "name": "box_security" }, { - "name": "circuit", - "directions": 1 + "name": "circuit" }, { - "name": "disk", - "directions": 1 + "name": "disk" }, { - "name": "flashbang", - "directions": 1 + "name": "flashbang" }, { - "name": "glasses", - "directions": 1 + "name": "glasses" }, { - "name": "handcuff", - "directions": 1 + "name": "handcuff" }, { - "name": "implant", - "directions": 1 + "name": "implant" }, { - "name": "latex", - "directions": 1 + "name": "latex" }, { - "name": "light", - "directions": 1 + "name": "light" }, { - "name": "lightmixed", - "directions": 1 + "name": "lightmixed" }, { - "name": "lighttube", - "directions": 1 + "name": "lighttube" }, { - "name": "mousetraps", - "directions": 1 + "name": "mousetraps" }, { - "name": "pda", - "directions": 1 + "name": "pda" }, { - "name": "pillbox", - "directions": 1 + "name": "pillbox" }, { - "name": "solution_trays", - "directions": 1 + "name": "solution_trays" }, { - "name": "sterile", - "directions": 1 + "name": "sterile" }, { - "name": "syringe", - "directions": 1 + "name": "syringe" }, { - "name": "writing", - "directions": 1 + "name": "writing" }, { - "name": "writing_of_doom", - "directions": 1 + "name": "writing_of_doom" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Storage/boxicons.rsi/meta.json b/Resources/Textures/Objects/Storage/boxicons.rsi/meta.json index 7e5c5370c1..9542d5e2fd 100644 --- a/Resources/Textures/Objects/Storage/boxicons.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxicons.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "beaker", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "bodybags", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "meson", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "sechud", - "directions": 1, "delays": [ [ 1 @@ -45,7 +41,6 @@ }, { "name": "box", - "directions": 1, "delays": [ [ 1 @@ -54,7 +49,6 @@ }, { "name": "box_of_doom", - "directions": 1, "delays": [ [ 1 @@ -63,7 +57,6 @@ }, { "name": "circuit", - "directions": 1, "delays": [ [ 1 @@ -72,7 +65,6 @@ }, { "name": "disk_kit", - "directions": 1, "delays": [ [ 1 @@ -81,7 +73,6 @@ }, { "name": "donk_kit", - "directions": 1, "delays": [ [ 1 @@ -90,7 +81,6 @@ }, { "name": "flashbang", - "directions": 1, "delays": [ [ 1 @@ -99,7 +89,6 @@ }, { "name": "glasses", - "directions": 1, "delays": [ [ 1 @@ -108,7 +97,6 @@ }, { "name": "handcuff", - "directions": 1, "delays": [ [ 1 @@ -117,7 +105,6 @@ }, { "name": "implant", - "directions": 1, "delays": [ [ 1 @@ -126,7 +113,6 @@ }, { "name": "latex", - "directions": 1, "delays": [ [ 1 @@ -135,7 +121,6 @@ }, { "name": "light", - "directions": 1, "delays": [ [ 1 @@ -144,7 +129,6 @@ }, { "name": "lightmixed", - "directions": 1, "delays": [ [ 1 @@ -153,7 +137,6 @@ }, { "name": "lighttube", - "directions": 1, "delays": [ [ 1 @@ -162,7 +145,6 @@ }, { "name": "mousetraps", - "directions": 1, "delays": [ [ 1 @@ -171,7 +153,6 @@ }, { "name": "pda", - "directions": 1, "delays": [ [ 1 @@ -180,7 +161,6 @@ }, { "name": "pillbox", - "directions": 1, "delays": [ [ 1 @@ -189,7 +169,6 @@ }, { "name": "solution_trays", - "directions": 1, "delays": [ [ 1 @@ -198,7 +177,6 @@ }, { "name": "sterile", - "directions": 1, "delays": [ [ 1 @@ -207,7 +185,6 @@ }, { "name": "syringe", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Storage/donkpocket.rsi/meta.json b/Resources/Textures/Objects/Storage/donkpocket.rsi/meta.json index a48e79dae2..e1d4788838 100644 --- a/Resources/Textures/Objects/Storage/donkpocket.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/donkpocket.rsi/meta.json @@ -45,7 +45,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json b/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json index 5fdc78ab33..dd8c5dafbc 100644 --- a/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Objects/Tanks/emergency.rsi/meta.json b/Resources/Textures/Objects/Tanks/emergency.rsi/meta.json index 6575e1e487..845b9b8b62 100644 --- a/Resources/Textures/Objects/Tanks/emergency.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/emergency.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Objects/Tanks/emergency_double.rsi/meta.json b/Resources/Textures/Objects/Tanks/emergency_double.rsi/meta.json index 6575e1e487..845b9b8b62 100644 --- a/Resources/Textures/Objects/Tanks/emergency_double.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/emergency_double.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/meta.json b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/meta.json index 6575e1e487..845b9b8b62 100644 --- a/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/meta.json b/Resources/Textures/Objects/Tanks/generic.rsi/meta.json index 19e8d88681..58fb2d8bc3 100644 --- a/Resources/Textures/Objects/Tanks/generic.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/generic.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json b/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json index 19e8d88681..58fb2d8bc3 100644 --- a/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Objects/Tanks/phoron.rsi/meta.json b/Resources/Textures/Objects/Tanks/phoron.rsi/meta.json index 6575e1e487..845b9b8b62 100644 --- a/Resources/Textures/Objects/Tanks/phoron.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/phoron.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BELT", diff --git a/Resources/Textures/Objects/Tanks/plasmaman.rsi/meta.json b/Resources/Textures/Objects/Tanks/plasmaman.rsi/meta.json index 6331b3935e..e08f741dd9 100644 --- a/Resources/Textures/Objects/Tanks/plasmaman.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/plasmaman.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Objects/Tanks/red.rsi/meta.json b/Resources/Textures/Objects/Tanks/red.rsi/meta.json index 5fdc78ab33..dd8c5dafbc 100644 --- a/Resources/Textures/Objects/Tanks/red.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/red.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Objects/Tanks/yellow.rsi/meta.json b/Resources/Textures/Objects/Tanks/yellow.rsi/meta.json index 5fdc78ab33..dd8c5dafbc 100644 --- a/Resources/Textures/Objects/Tanks/yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/yellow.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Objects/Tiles/cevtile.rsi/meta.json b/Resources/Textures/Objects/Tiles/cevtile.rsi/meta.json index 92e296e950..653ddb2574 100644 --- a/Resources/Textures/Objects/Tiles/cevtile.rsi/meta.json +++ b/Resources/Textures/Objects/Tiles/cevtile.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "", "directions": 1, "delays": [[1.0]]}, {"name": "tile", "directions": 1, "delays": [[1.0]]}, {"name": "tile-white-techfloor", "directions": 1, "delays": [[1.0]]}, {"name": "tile_bcarpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_blucarpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_cafe", "directions": 1, "delays": [[1.0]]}, {"name": "tile_carpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_bluecorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_brownperforated", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_brownplatform", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_cargo", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_cyancorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_danger", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_golden", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_grayperforated", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_grayplatform", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_monofloor", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_orangecorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_panels", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_techfloor", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_techfloor_grid", "directions": 1, "delays": [[1.0]]}, {"name": "tile_dark_violetcorener", "directions": 1, "delays": [[1.0]]}, {"name": "tile_gaycarpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_grass", "directions": 1, "delays": [[1.0]]}, {"name": "tile_oracarpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_purcarpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_sblucarpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_bar_dance", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_bar_flat", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_bar_light", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_bluecorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_brownperforated", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_brownplatform", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_cargo", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_cyancorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_danger", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_golden", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_grayperforated", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_grayplatform", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_monofloor", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_orangecorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_panels", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_techfloor", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_techfloor_grid", "directions": 1, "delays": [[1.0]]}, {"name": "tile_steel_violetcorener", "directions": 1, "delays": [[1.0]]}, {"name": "tile_techmaint", "directions": 1, "delays": [[1.0]]}, {"name": "tile_techmaint_cargo", "directions": 1, "delays": [[1.0]]}, {"name": "tile_techmaint_panels", "directions": 1, "delays": [[1.0]]}, {"name": "tile_techmaint_perforated", "directions": 1, "delays": [[1.0]]}, {"name": "tile_turcarpet", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_bluecorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_brownperforated", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_brownplatform", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_cargo", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_cyancorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_danger", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_golden", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_grayperforated", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_grayplatform", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_monofloor", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_orangecorner", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_panels", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_techfloor_grid", "directions": 1, "delays": [[1.0]]}, {"name": "tile_white_violetcorener", "directions": 1, "delays": [[1.0]]}, {"name": "tile_wood", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "", "delays": [[1.0]]}, {"name": "tile", "delays": [[1.0]]}, {"name": "tile-white-techfloor", "delays": [[1.0]]}, {"name": "tile_bcarpet", "delays": [[1.0]]}, {"name": "tile_blucarpet", "delays": [[1.0]]}, {"name": "tile_cafe", "delays": [[1.0]]}, {"name": "tile_carpet", "delays": [[1.0]]}, {"name": "tile_dark", "delays": [[1.0]]}, {"name": "tile_dark_bluecorner", "delays": [[1.0]]}, {"name": "tile_dark_brownperforated", "delays": [[1.0]]}, {"name": "tile_dark_brownplatform", "delays": [[1.0]]}, {"name": "tile_dark_cargo", "delays": [[1.0]]}, {"name": "tile_dark_cyancorner", "delays": [[1.0]]}, {"name": "tile_dark_danger", "delays": [[1.0]]}, {"name": "tile_dark_golden", "delays": [[1.0]]}, {"name": "tile_dark_grayperforated", "delays": [[1.0]]}, {"name": "tile_dark_grayplatform", "delays": [[1.0]]}, {"name": "tile_dark_monofloor", "delays": [[1.0]]}, {"name": "tile_dark_orangecorner", "delays": [[1.0]]}, {"name": "tile_dark_panels", "delays": [[1.0]]}, {"name": "tile_dark_techfloor", "delays": [[1.0]]}, {"name": "tile_dark_techfloor_grid", "delays": [[1.0]]}, {"name": "tile_dark_violetcorener", "delays": [[1.0]]}, {"name": "tile_gaycarpet", "delays": [[1.0]]}, {"name": "tile_grass", "delays": [[1.0]]}, {"name": "tile_oracarpet", "delays": [[1.0]]}, {"name": "tile_purcarpet", "delays": [[1.0]]}, {"name": "tile_sblucarpet", "delays": [[1.0]]}, {"name": "tile_steel", "delays": [[1.0]]}, {"name": "tile_steel_bar_dance", "delays": [[1.0]]}, {"name": "tile_steel_bar_flat", "delays": [[1.0]]}, {"name": "tile_steel_bar_light", "delays": [[1.0]]}, {"name": "tile_steel_bluecorner", "delays": [[1.0]]}, {"name": "tile_steel_brownperforated", "delays": [[1.0]]}, {"name": "tile_steel_brownplatform", "delays": [[1.0]]}, {"name": "tile_steel_cargo", "delays": [[1.0]]}, {"name": "tile_steel_cyancorner", "delays": [[1.0]]}, {"name": "tile_steel_danger", "delays": [[1.0]]}, {"name": "tile_steel_golden", "delays": [[1.0]]}, {"name": "tile_steel_grayperforated", "delays": [[1.0]]}, {"name": "tile_steel_grayplatform", "delays": [[1.0]]}, {"name": "tile_steel_monofloor", "delays": [[1.0]]}, {"name": "tile_steel_orangecorner", "delays": [[1.0]]}, {"name": "tile_steel_panels", "delays": [[1.0]]}, {"name": "tile_steel_techfloor", "delays": [[1.0]]}, {"name": "tile_steel_techfloor_grid", "delays": [[1.0]]}, {"name": "tile_steel_violetcorener", "delays": [[1.0]]}, {"name": "tile_techmaint", "delays": [[1.0]]}, {"name": "tile_techmaint_cargo", "delays": [[1.0]]}, {"name": "tile_techmaint_panels", "delays": [[1.0]]}, {"name": "tile_techmaint_perforated", "delays": [[1.0]]}, {"name": "tile_turcarpet", "delays": [[1.0]]}, {"name": "tile_white", "delays": [[1.0]]}, {"name": "tile_white_bluecorner", "delays": [[1.0]]}, {"name": "tile_white_brownperforated", "delays": [[1.0]]}, {"name": "tile_white_brownplatform", "delays": [[1.0]]}, {"name": "tile_white_cargo", "delays": [[1.0]]}, {"name": "tile_white_cyancorner", "delays": [[1.0]]}, {"name": "tile_white_danger", "delays": [[1.0]]}, {"name": "tile_white_golden", "delays": [[1.0]]}, {"name": "tile_white_grayperforated", "delays": [[1.0]]}, {"name": "tile_white_grayplatform", "delays": [[1.0]]}, {"name": "tile_white_monofloor", "delays": [[1.0]]}, {"name": "tile_white_orangecorner", "delays": [[1.0]]}, {"name": "tile_white_panels", "delays": [[1.0]]}, {"name": "tile_white_techfloor_grid", "delays": [[1.0]]}, {"name": "tile_white_violetcorener", "delays": [[1.0]]}, {"name": "tile_wood", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/meta.json b/Resources/Textures/Objects/Tiles/tile.rsi/meta.json index 41e23286c5..15b10a134d 100644 --- a/Resources/Textures/Objects/Tiles/tile.rsi/meta.json +++ b/Resources/Textures/Objects/Tiles/tile.rsi/meta.json @@ -7,7 +7,6 @@ "states": [ { "name": "tile_dark", - "directions": 1, "delays": [ [ 1 @@ -16,7 +15,6 @@ }, { "name": "tile_dirty", - "directions": 1, "delays": [ [ 1 @@ -25,7 +23,6 @@ }, { "name": "tile_gcircuit", - "directions": 1, "delays": [ [ 1 @@ -34,7 +31,6 @@ }, { "name": "tile_hydro", - "directions": 1, "delays": [ [ 1 @@ -43,7 +39,6 @@ }, { "name": "tile_plating", - "directions": 1, "delays": [ [ 1 @@ -52,7 +47,6 @@ }, { "name": "tile_reinforced", - "directions": 1, "delays": [ [ 1 @@ -61,7 +55,6 @@ }, { "name": "tile_rockvault", - "directions": 1, "delays": [ [ 1 @@ -70,7 +63,6 @@ }, { "name": "tile_gold", - "directions": 1, "delays": [ [ 1 @@ -79,7 +71,6 @@ }, { "name": "tile_showroom", - "directions": 1, "delays": [ [ 1 @@ -88,7 +79,6 @@ }, { "name": "tile_snow", - "directions": 1, "delays": [ [ 1 @@ -97,7 +87,6 @@ }, { "name": "tile_steel", - "directions": 1, "delays": [ [ 1 @@ -106,7 +95,6 @@ }, { "name": "tile_steel_techfloor_grid", - "directions": 1, "delays": [ [ 1 @@ -115,7 +103,6 @@ }, { "name": "tile_dark_techfloor_grid", - "directions": 1, "delays": [ [ 1 @@ -124,7 +111,6 @@ }, { "name": "tile_white", - "directions": 1, "delays": [ [ 1 @@ -133,7 +119,6 @@ }, { "name": "tile_white_monofloor", - "directions": 1, "delays": [ [ 1 @@ -142,7 +127,6 @@ }, { "name": "tile_wood", - "directions": 1, "delays": [ [ 1 @@ -151,7 +135,6 @@ }, { "name": "tile_carpet", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Cowtools/cow_toolbox.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/cow_toolbox.rsi/meta.json index 94b3388890..5648d0aa86 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/cow_toolbox.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/cow_toolbox.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "cow_toolbox", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Cowtools/cowbar.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/cowbar.rsi/meta.json index 318293e0c8..bbb318d5c4 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/cowbar.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/cowbar.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "cowbar", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Cowtools/cowelder.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/cowelder.rsi/meta.json index 95b8edcb83..532b168218 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/cowelder.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/cowelder.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "welder_flame", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Objects/Tools/Cowtools/haycutters.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/haycutters.rsi/meta.json index d2ca7a62f3..768e8db038 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/haycutters.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/haycutters.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "haycutters", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Cowtools/milkalyzer.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/milkalyzer.rsi/meta.json index cad6b5845e..ac2cf5ca22 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/milkalyzer.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/milkalyzer.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "milkalyzer", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Cowtools/moodriver.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/moodriver.rsi/meta.json index 0740de2d83..24b3f6c744 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/moodriver.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/moodriver.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "moodriver", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Cowtools/mooltitool.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/mooltitool.rsi/meta.json index 9556cd908d..d95dc135f3 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/mooltitool.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/mooltitool.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "mooltitool", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Cowtools/wronch.rsi/meta.json b/Resources/Textures/Objects/Tools/Cowtools/wronch.rsi/meta.json index dbf17a9658..dfc779928f 100644 --- a/Resources/Textures/Objects/Tools/Cowtools/wronch.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Cowtools/wronch.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "wronch", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json index 649baaf1b0..484d5b8cc6 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json @@ -44,7 +44,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json index 1fa6dbf895..45e9836290 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json @@ -44,7 +44,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json index 649baaf1b0..484d5b8cc6 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json @@ -44,7 +44,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json index 649baaf1b0..484d5b8cc6 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json @@ -44,7 +44,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json index 649baaf1b0..484d5b8cc6 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json @@ -44,7 +44,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json index 649baaf1b0..484d5b8cc6 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json @@ -44,7 +44,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/cables.rsi/meta.json b/Resources/Textures/Objects/Tools/cables.rsi/meta.json index c5724138d5..a8ec21f293 100644 --- a/Resources/Textures/Objects/Tools/cables.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/cables.rsi/meta.json @@ -117,7 +117,6 @@ }, { "name": "coil-30", - "directions": 1, "delays": [ [ 1 @@ -126,7 +125,6 @@ }, { "name": "coil-20", - "directions": 1, "delays": [ [ 1 @@ -135,7 +133,6 @@ }, { "name": "coil-10", - "directions": 1, "delays": [ [ 1 @@ -144,7 +141,6 @@ }, { "name": "coilhv-30", - "directions": 1, "delays": [ [ 1 @@ -153,7 +149,6 @@ }, { "name": "coilhv-20", - "directions": 1, "delays": [ [ 1 @@ -162,7 +157,6 @@ }, { "name": "coilhv-10", - "directions": 1, "delays": [ [ 1 @@ -171,7 +165,6 @@ }, { "name": "coilmv-30", - "directions": 1, "delays": [ [ 1 @@ -180,7 +173,6 @@ }, { "name": "coilmv-20", - "directions": 1, "delays": [ [ 1 @@ -189,7 +181,6 @@ }, { "name": "coilmv-10", - "directions": 1, "delays": [ [ 1 @@ -198,7 +189,6 @@ }, { "name": "coillv-30", - "directions": 1, "delays": [ [ 1 @@ -207,7 +197,6 @@ }, { "name": "coillv-20", - "directions": 1, "delays": [ [ 1 @@ -216,7 +205,6 @@ }, { "name": "coillv-10", - "directions": 1, "delays": [ [ 1 @@ -225,7 +213,6 @@ }, { "name": "coilall-30", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json b/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json index 6b1b30d612..0164b302ca 100644 --- a/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json @@ -43,7 +43,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/crowbar_red.rsi/meta.json b/Resources/Textures/Objects/Tools/crowbar_red.rsi/meta.json index 6b1b30d612..0164b302ca 100644 --- a/Resources/Textures/Objects/Tools/crowbar_red.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/crowbar_red.rsi/meta.json @@ -43,7 +43,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/drill.rsi/meta.json b/Resources/Textures/Objects/Tools/drill.rsi/meta.json index 8ad8570034..01160cc149 100644 --- a/Resources/Textures/Objects/Tools/drill.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/drill.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "drill_bolt", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "drill_screw", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/flashlight.rsi/meta.json b/Resources/Textures/Objects/Tools/flashlight.rsi/meta.json index e2ed8c31da..fb3c96e435 100644 --- a/Resources/Textures/Objects/Tools/flashlight.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/flashlight.rsi/meta.json @@ -6,103 +6,29 @@ }, "states": [ { - "name": "lantern_off", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "lantern_off" }, { - "name": "lantern_on", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "lantern_on" }, { - "name": "HandheldLightOnOverlay", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + "name": "HandheldLightOnOverlay" }, { "name": "off-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "off-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "on-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "directions": 4 }, { "name": "on-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, + "directions": 4 + } ] } diff --git a/Resources/Textures/Objects/Tools/jaws_of_life.rsi/meta.json b/Resources/Textures/Objects/Tools/jaws_of_life.rsi/meta.json index 5ee04603b1..876c03d464 100644 --- a/Resources/Textures/Objects/Tools/jaws_of_life.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/jaws_of_life.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "jaws_cutter", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "jaws_pry", - "directions": 1, "delays": [ [ 1 @@ -27,7 +25,6 @@ }, { "name": "syn_jaws_cutter", - "directions": 1, "delays": [ [ 1 @@ -36,7 +33,6 @@ }, { "name": "syn_jaws_pry", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/lantern.rsi/meta.json b/Resources/Textures/Objects/Tools/lantern.rsi/meta.json index 745406c95d..749a8fda9c 100644 --- a/Resources/Textures/Objects/Tools/lantern.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/lantern.rsi/meta.json @@ -9,21 +9,11 @@ "states": [ { "name": "lantern", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "lantern-on", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "off-inhand-left", diff --git a/Resources/Textures/Objects/Tools/matches.rsi/meta.json b/Resources/Textures/Objects/Tools/matches.rsi/meta.json index 55a8383b55..514276e19b 100644 --- a/Resources/Textures/Objects/Tools/matches.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/matches.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "match_burnt", - "directions": 1 + "name": "match_burnt" }, { "name": "match_lit", - "directions": 1, "delays": [ [ 0.2, @@ -23,24 +21,19 @@ ] }, { - "name": "match_unlit", - "directions": 1 + "name": "match_unlit" }, { - "name": "matchbox", - "directions": 1 + "name": "matchbox" }, { - "name": "matchbox_almostempty", - "directions": 1 + "name": "matchbox_almostempty" }, { - "name": "matchbox_almostfull", - "directions": 1 + "name": "matchbox_almostfull" }, { - "name": "matchbox_e", - "directions": 1 + "name": "matchbox_e" } ] } diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/meta.json b/Resources/Textures/Objects/Tools/multitool.rsi/meta.json index 8de591c17e..403505ee39 100644 --- a/Resources/Textures/Objects/Tools/multitool.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/multitool.rsi/meta.json @@ -8,20 +8,16 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "green-unlit", - "directions": 1 + "name": "green-unlit" }, { - "name": "yellow-unlit", - "directions": 1 + "name": "yellow-unlit" }, { - "name": "red-unlit", - "directions": 1 + "name": "red-unlit" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Tools/rcd.rsi/meta.json b/Resources/Textures/Objects/Tools/rcd.rsi/meta.json index 41da78bc42..4092920809 100644 --- a/Resources/Textures/Objects/Tools/rcd.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/rcd.rsi/meta.json @@ -62,21 +62,11 @@ }, { "name": "icon", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "rcd_ammo", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + } ] } diff --git a/Resources/Textures/Objects/Tools/rcl.rsi/meta.json b/Resources/Textures/Objects/Tools/rcl.rsi/meta.json index 7217b76768..5434f36e8e 100644 --- a/Resources/Textures/Objects/Tools/rcl.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/rcl.rsi/meta.json @@ -81,7 +81,6 @@ }, { "name": "rcl-0", - "directions": 1, "delays": [ [ 1 @@ -90,7 +89,6 @@ }, { "name": "rcl-10", - "directions": 1, "delays": [ [ 1 @@ -99,7 +97,6 @@ }, { "name": "rcl-20", - "directions": 1, "delays": [ [ 1 @@ -108,7 +105,6 @@ }, { "name": "rcl-30", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json b/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json index 3d7726dd8b..63eb6345a2 100644 --- a/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "screwdriver", "directions": 1, "delays": [[1.0]]}, {"name": "screwdriver-map", "directions": 1, "delays": [[1.0]]}, {"name": "screwdriver-screwybits", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "screwdriver", "delays": [[1.0]]}, {"name": "screwdriver-map", "delays": [[1.0]]}, {"name": "screwdriver-screwybits", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Tools/welder.rsi/meta.json b/Resources/Textures/Objects/Tools/welder.rsi/meta.json index c18016dab0..f52b463cd2 100644 --- a/Resources/Textures/Objects/Tools/welder.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "welder_flame", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json b/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json index ed824e60cf..22b97853f9 100644 --- a/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 0.2, @@ -21,7 +20,6 @@ }, { "name": "welder_flame", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Objects/Tools/welder_mini.rsi/meta.json b/Resources/Textures/Objects/Tools/welder_mini.rsi/meta.json index 0c308b9e1d..36b25cbbc0 100644 --- a/Resources/Textures/Objects/Tools/welder_mini.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder_mini.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 1 @@ -18,7 +17,6 @@ }, { "name": "welder_flame", - "directions": 1, "delays": [ [ 0.2, diff --git a/Resources/Textures/Objects/Tools/wrench.rsi/meta.json b/Resources/Textures/Objects/Tools/wrench.rsi/meta.json index 6b1b30d612..0164b302ca 100644 --- a/Resources/Textures/Objects/Tools/wrench.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/wrench.rsi/meta.json @@ -43,7 +43,6 @@ }, { "name": "icon", - "directions": 1, "delays": [ [ 1 diff --git a/Resources/Textures/Objects/Weapons/Grenades/flashbang.rsi/meta.json b/Resources/Textures/Objects/Weapons/Grenades/flashbang.rsi/meta.json index 8611d9cd90..aa77965306 100644 --- a/Resources/Textures/Objects/Weapons/Grenades/flashbang.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Grenades/flashbang.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/tgstation/tgstation/raw/6d8ea1e75ccbd236230b2ed71b6e0bf16d41fc09/icons/obj/grenade.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "primed", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Weapons/Grenades/grenade.rsi/meta.json b/Resources/Textures/Objects/Weapons/Grenades/grenade.rsi/meta.json index 198dbe1347..384230a57d 100644 --- a/Resources/Textures/Objects/Weapons/Grenades/grenade.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Grenades/grenade.rsi/meta.json @@ -9,14 +9,12 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [1.0] ] }, { "name": "primed", - "directions": 1, "delays": [ [0.2, 0.2] ] diff --git a/Resources/Textures/Objects/Weapons/Grenades/nukenade.rsi/meta.json b/Resources/Textures/Objects/Weapons/Grenades/nukenade.rsi/meta.json index 198dbe1347..384230a57d 100644 --- a/Resources/Textures/Objects/Weapons/Grenades/nukenade.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Grenades/nukenade.rsi/meta.json @@ -9,14 +9,12 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [1.0] ] }, { "name": "primed", - "directions": 1, "delays": [ [0.2, 0.2] ] diff --git a/Resources/Textures/Objects/Weapons/Grenades/syndgrenade.rsi/meta.json b/Resources/Textures/Objects/Weapons/Grenades/syndgrenade.rsi/meta.json index acb14eea1a..4b97cd883e 100644 --- a/Resources/Textures/Objects/Weapons/Grenades/syndgrenade.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Grenades/syndgrenade.rsi/meta.json @@ -9,14 +9,12 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [1.0] ] }, { "name": "primed", - "directions": 1, "delays": [ [0.2, 0.2, 0.2] ] diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/AntiMaterial/anti_material.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/AntiMaterial/anti_material.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/AntiMaterial/anti_material.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/AntiMaterial/anti_material.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/10x24_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/10x24_box.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/10x24_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/10x24_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box_rubber.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_big_box_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_flash.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_hv.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_practice.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_rubber.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/ClRifle/cl_rifle_box_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_big_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_big_box.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_big_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_big_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_hv.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_practice.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_rubber.rsi/meta.json index 40000b4fb0..0835ac8f77 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/LRifle/l_rifle_box_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/983ad377d25729357b7ff8025f8014bd2f6ae9f7/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_flash.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_hv.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_practice.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_rubber.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Magnum/magnum_box_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_flash.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_hv.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_practice.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_rubber.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/Pistol/pistol_box_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box_rubber.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_big_box_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_flash.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_hv.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_practice.rsi/meta.json index be1e92d993..0f38c5191a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_rubber.rsi/meta.json index 34908262bb..3b7e34c5cc 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/SRifle/s_rifle_box_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi/meta.json index 200af9fe84..0736b42558 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/0b3ab17dbad632ddf738b63900ef8df1926bba47/icons/obj/ammo.dmi, modified by Topy", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json index 4f4121d24a..5c4b9859ce 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/8a848cde3e8610455f77704e861e5a06315a3b0e/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json index 53f2cfab01..eb5f2da45c 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_beanbag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_beanbag.rsi/meta.json index d134798630..059a7d46bd 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_beanbag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_beanbag.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/79b16e252e29d5a223a2b928fba25e2e6f9644ee/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/shotgun_shell_beanbag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/shotgun_shell_beanbag.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/shotgun_shell_beanbag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_blank.rsi/shotgun_shell_beanbag.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_flash.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_flash.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_incendiary.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_incendiary.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_incendiary.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_incendiary.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_practice.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_practice.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_slug.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_slug.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_slug.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_slug.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_baton.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_baton.rsi/meta.json index d134798630..059a7d46bd 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_baton.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_baton.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/79b16e252e29d5a223a2b928fba25e2e6f9644ee/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_blast.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_blast.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_blast.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_blast.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_flash.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_flash.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_frag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_frag.rsi/meta.json index 6a22b562fa..8fe2966bee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_frag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/grenade_frag.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "spent", - "directions": 1 + "name": "spent" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/rpg.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/rpg.rsi/meta.json index 310a348520..3e7d56798e 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/rpg.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/rpg.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/guns/projectile/rocket.dmi", "states": [ { - "name": "frag", - "directions": 1 + "name": "frag" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/10x24.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/10x24.rsi/meta.json index 49902da186..ba03633bbe 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/10x24.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/10x24.rsi/meta.json @@ -8,40 +8,31 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" }, { - "name": "mag-7", - "directions": 1 + "name": "mag-7" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag.rsi/meta.json index 4e66ae10bc..3dc3400363 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_base.rsi/meta.json index 4e66ae10bc..3dc3400363 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_base.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_hv.rsi/meta.json index 4e66ae10bc..3dc3400363 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_hv.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_practice.rsi/meta.json index 4e66ae10bc..3dc3400363 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_practice.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_rubber.rsi/meta.json index 4e66ae10bc..3dc3400363 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_pistol_mag_rubber.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_base.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_base.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_flash.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_hv.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_practice.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_rubber.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_base.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_base.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_flash.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_hv.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_practice.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_rubber.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/ClRifle/cl_rifle_mag_short_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Dart/darts.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Dart/darts.rsi/meta.json index 867dbe75ec..4640cfd2ed 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Dart/darts.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Dart/darts.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-4" }, { - "name": "mag-unshaded-5", - "directions": 1 + "name": "mag-unshaded-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_box.rsi/meta.json index 49902da186..ba03633bbe 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_box.rsi/meta.json @@ -8,40 +8,31 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" }, { - "name": "mag-7", - "directions": 1 + "name": "mag-7" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_base.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_base.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_flash.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_hv.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_practice.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_rubber.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_mag_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/maxim.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/maxim.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/maxim.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/maxim.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/pk_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/pk_box.rsi/meta.json index a3103d255e..40941d1bf1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/pk_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LRifle/pk_box.rsi/meta.json @@ -8,40 +8,31 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/237d8f7894617007d75c71d5d9feb4354c78debd/icons/obj/ammo.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" }, { - "name": "mag-7", - "directions": 1 + "name": "mag-7" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_base.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_base.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_flash.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_flash.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_hv.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_hv.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_practice.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_practice.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_rubber.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag_rubber.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_base.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_base.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_hv.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_practice.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_rubber.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_smg_mag_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/calico_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/calico_mag.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/calico_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/calico_mag.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag.rsi/meta.json index 9090eaf12f..4e596816bc 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_base.rsi/meta.json index 9090eaf12f..4e596816bc 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_base.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_hv.rsi/meta.json index 9090eaf12f..4e596816bc 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_hv.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_practice.rsi/meta.json index 9090eaf12f..4e596816bc 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_practice.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_rubber.rsi/meta.json index 9090eaf12f..4e596816bc 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_hc_mag_rubber.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_base.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_base.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_flash.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_flash.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h.rsi/meta.json index 13039c2391..c2ea42f1c9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_base.rsi/meta.json index 13039c2391..c2ea42f1c9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_base.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_flash.rsi/meta.json index 13039c2391..c2ea42f1c9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_flash.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_hv.rsi/meta.json index 13039c2391..c2ea42f1c9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_hv.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_practice.rsi/meta.json index 13039c2391..c2ea42f1c9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_practice.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_rubber.rsi/meta.json index 13039c2391..c2ea42f1c9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_h_rubber.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_hv.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_hv.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_practice.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_practice.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_rubber.rsi/meta.json index 4f37e727e1..43b96fbef7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag_rubber.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_base.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_base.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_flash.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_hv.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_practice.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_rubber.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_top_mounted.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_top_mounted.rsi/meta.json index ea37dbcb54..3c247876eb 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_top_mounted.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_top_mounted.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-4" }, { - "name": "mag-unshaded-5", - "directions": 1 + "name": "mag-unshaded-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_base.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_base.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_base.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_base.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_flash.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_flash.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_hv.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_hv.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_practice.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_practice.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_rubber.rsi/meta.json index e4f2abdee0..f05246b95f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/SRifle/s_rifle_mag_rubber.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_beanbag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_beanbag.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_beanbag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_beanbag.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_pellets.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_pellets.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_pellets.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_pellets.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_slug.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_slug.rsi/meta.json index a2043e384e..8b190de6f1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_slug.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12_slug.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/831c7c2743530e8a31910d781bae9dc34f3f1ec8/icons/obj/ammo_mags.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LRifle/l_rifle_sl.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LRifle/l_rifle_sl.rsi/meta.json index cf7cac37c5..ea52c0128f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LRifle/l_rifle_sl.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LRifle/l_rifle_sl.rsi/meta.json @@ -8,32 +8,25 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/d1120fc8287cca2632e834069b5019bf941a0170/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_flash.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_flash.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_hv.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_hv.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_practice.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_practice.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_rubber.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_sl_rubber.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_flash.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_flash.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_hv.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_hv.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_hv.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_hv.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_practice.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_practice.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_practice.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_practice.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_rubber.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_rubber.rsi/meta.json index 100948b512..147ceca10f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_rubber.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_sl_rubber.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { - "name": "mag-6", - "directions": 1 + "name": "mag-6" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/laser_cannon.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/laser_cannon.rsi/meta.json index f9798003c7..277149a2d8 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/laser_cannon.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/laser_cannon.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at commit 125c975f1b3bf9826b37029e9ab5a5f89e975a7e", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-4" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/laser_retro.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/laser_retro.rsi/meta.json index 8049744345..358791df47 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/laser_retro.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/laser_retro.rsi/meta.json @@ -3,77 +3,70 @@ "size": { "x": 32, "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at commit 125c975f1b3bf9826b37029e9ab5a5f89e975a7e", + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at commit 125c975f1b3bf9826b37029e9ab5a5f89e975a7e", "states": [ { - "name": "icon", - "directions": 1 - }, - { - "name": "base", - "directions": 1 - }, - { - "name": "mag-unshaded-0", - "directions": 1 + "name": "icon" }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "base" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-0" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "inhand-left-0", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "inhand-right-0", - "directions": 1 + "name": "mag-unshaded-4" }, { - "name": "inhand-left-1", - "directions": 1 - }, - { - "name": "inhand-right-1", - "directions": 1 - }, - { - "name": "inhand-left-2", - "directions": 1 - }, - { - "name": "inhand-right-2", - "directions": 1 - }, - { - "name": "inhand-left-3", - "directions": 1 - }, - { - "name": "inhand-right-3", - "directions": 1 - }, - { - "name": "inhand-left", + "name": "inhand-left-0", "directions": 4 }, { - "name": "inhand-right", + "name": "inhand-right-0", + "directions": 4 + }, + { + "name": "inhand-left-1", + "directions": 4 + }, + { + "name": "inhand-right-1", + "directions": 4 + }, + { + "name": "inhand-left-2", + "directions": 4 + }, + { + "name": "inhand-right-2", + "directions": 4 + }, + { + "name": "inhand-left-3", + "directions": 4 + }, + { + "name": "inhand-right-3", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/taser.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/taser.rsi/meta.json index 6e2fe195a4..dd69029018 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/taser.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/taser.rsi/meta.json @@ -6,16 +6,13 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { "name": "mag-unshaded-0", - "directions": 1, "delays": [ [ 0.3, @@ -24,20 +21,16 @@ ] }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-4" }, { "name": "taser0-inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/xray.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/xray.rsi/meta.json index e2af81237c..7c47ce9eae 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/xray.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/xray.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/167a810bc8534a56c74ffa8f1373acd3b1ac70ee/icons/obj/guns/energy/xray.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { "name": "mag-unshaded-0", - "directions": 1, "delays": [ [ 0.3, @@ -26,20 +23,16 @@ ] }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-4" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/LMGs/l6.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/LMGs/l6.rsi/meta.json index a2c1c15790..1c83729b6a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/LMGs/l6.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/LMGs/l6.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/237d8f7894617007d75c71d5d9feb4354c78debd/icons/obj/guns/lmg.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/LMGs/pk.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/LMGs/pk.rsi/meta.json index 9b1f40df53..377da92a04 100644 --- a/Resources/Textures/Objects/Weapons/Guns/LMGs/pk.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/LMGs/pk.rsi/meta.json @@ -8,44 +8,34 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/blob/237d8f7894617007d75c71d5d9feb4354c78debd/icons/obj/guns/lmg.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "mag-1", - "directions": 1 + "name": "mag-1" }, { - "name": "mag-2", - "directions": 1 + "name": "mag-2" }, { - "name": "mag-3", - "directions": 1 + "name": "mag-3" }, { - "name": "mag-4", - "directions": 1 + "name": "mag-4" }, { - "name": "mag-5", - "directions": 1 + "name": "mag-5" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/china_lake.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Launchers/china_lake.rsi/meta.json index a50f1e74ab..d84b2c302c 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Launchers/china_lake.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Launchers/china_lake.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/chinalake.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json index 69eaa07a35..267b0e8f43 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/guns/projectile/rocket.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "rocket0-inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/clarissa.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/clarissa.rsi/meta.json index ae0fe69106..52e7516fdf 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/clarissa.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/clarissa.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/clarissa.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/colt.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/colt.rsi/meta.json index 92d1385f04..1e25889f6a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/colt.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/colt.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/colt.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/giskard.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/giskard.rsi/meta.json index 0f80341882..90e00d22c2 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/giskard.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/giskard.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "suppressor", - "directions": 1 + "name": "suppressor" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/gyro_pistol.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/gyro_pistol.rsi/meta.json index f93283c4a1..f621410e9b 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/gyro_pistol.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/gyro_pistol.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/gyropistol.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/hm_pistol.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/hm_pistol.rsi/meta.json index e9663d81f0..0a30fe5c37 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/hm_pistol.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/hm_pistol.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/hm_pistol.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/lamia.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/lamia.rsi/meta.json index ac22c64f2e..9f1b66babf 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/lamia.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/lamia.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "base-unshaded", - "directions": 1 + "name": "base-unshaded" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-4" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/mandella.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/mandella.rsi/meta.json index bd92c94d9d..b46b116eee 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/mandella.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/mandella.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/mandella.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58.rsi/meta.json index c1f957d2b6..cc4600d356 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58_wood.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58_wood.rsi/meta.json index c1f957d2b6..cc4600d356 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58_wood.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/mk58_wood.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/molly.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/molly.rsi/meta.json index 5397bc1bbd..3a19acc7bd 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/molly.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/molly.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/molly.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "suppressor", - "directions": 1 + "name": "suppressor" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/olivaw_civil.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/olivaw_civil.rsi/meta.json index cff83b950e..4ee625b268 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/olivaw_civil.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/olivaw_civil.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/paco.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Pistols/paco.rsi/meta.json index 4df90a8240..7caadb88ec 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Pistols/paco.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Pistols/paco.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/paco.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "suppressor", - "directions": 1 + "name": "suppressor" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/buckshot.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/buckshot.rsi/meta.json index 608fd7f7f7..8d92fddcc9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/buckshot.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/buckshot.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/2acc4d34a894dbcc9dbf3779b696ddf296aa2c56/icons/obj/projectiles.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/bullet.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/bullet.rsi/meta.json index 6e7940bc1a..9debc86be7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/bullet.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/bullet.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "bullet", - "directions": 1, "delays": [ [ 0.05, diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/grenade.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/grenade.rsi/meta.json index 45446bc434..4ccea521c8 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/grenade.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/grenade.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "grenade", - "directions": 1, "delays": [ [ 0.05, diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/rocket.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/rocket.rsi/meta.json index cb29fe71ba..ff0cf14a45 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/rocket.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/rocket.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/guns/projectile/rocket.dmi", "states": [ { - "name": "frag", - "directions": 1 + "name": "frag" }, { - "name": "smallfrag", - "directions": 1 + "name": "smallfrag" } ] } diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/slug.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/slug.rsi/meta.json index 608fd7f7f7..8d92fddcc9 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/slug.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/slug.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/2acc4d34a894dbcc9dbf3779b696ddf296aa2c56/icons/obj/projectiles.dmi", "states": [ { - "name": "base", - "directions": 1 + "name": "base" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/spark.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/spark.rsi/meta.json index 89b4a9b47e..61576c16ca 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/spark.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/spark.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "spark", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Weapons/Guns/Revolvers/deckard.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Revolvers/deckard.rsi/meta.json index 5b99a397bd..0abcdda366 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Revolvers/deckard.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Revolvers/deckard.rsi/meta.json @@ -8,36 +8,28 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-unshaded-0", - "directions": 1 + "name": "mag-unshaded-0" }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Revolvers/inspector.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Revolvers/inspector.rsi/meta.json index 7e2369001c..cd602b9efd 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Revolvers/inspector.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Revolvers/inspector.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Revolvers/mateba.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Revolvers/mateba.rsi/meta.json index 7e2369001c..cd602b9efd 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Revolvers/mateba.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Revolvers/mateba.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/ak.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/ak.rsi/meta.json index 29026e680b..d2a35cc0b4 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/ak.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/ak.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/black_ak.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/black_ak.rsi/meta.json index 29026e680b..d2a35cc0b4 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/black_ak.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/black_ak.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/calico.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/calico.rsi/meta.json index f061c8a636..8b395bb06c 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/calico.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/calico.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Yeeye", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/meta.json index d6f6cc25c6..6d45904d38 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/carabine.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/dallas.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/dallas.rsi/meta.json index 29026e680b..d2a35cc0b4 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/dallas.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/dallas.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/sts.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/sts.rsi/meta.json index 7e99a9afa6..98e690a4b1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/sts.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/sts.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/vintorez.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/vintorez.rsi/meta.json index 5f16983ab2..338a557144 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/vintorez.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/vintorez.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/167a810bc8534a56c74ffa8f1373acd3b1ac70ee/icons/obj/guns/projectile/vintorez.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/wintermute.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/wintermute.rsi/meta.json index a9bf6e1e06..6607a59045 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Rifles/wintermute.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/wintermute.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/wintermute.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/SMGs/atreides.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/SMGs/atreides.rsi/meta.json index 2c138e791b..215e350405 100644 --- a/Resources/Textures/Objects/Weapons/Guns/SMGs/atreides.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/SMGs/atreides.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/atreides.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "suppressor", - "directions": 1 + "name": "suppressor" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/SMGs/c20r.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/SMGs/c20r.rsi/meta.json index 0b353cb836..dc0327f6fe 100644 --- a/Resources/Textures/Objects/Weapons/Guns/SMGs/c20r.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/SMGs/c20r.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/d1120fc8287cca2632e834069b5019bf941a0170/icons/obj/guns/projectile/cr20.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "suppressor", - "directions": 1 + "name": "suppressor" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/SMGs/drozd.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/SMGs/drozd.rsi/meta.json index 264561a698..c699d438e5 100644 --- a/Resources/Textures/Objects/Weapons/Guns/SMGs/drozd.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/SMGs/drozd.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/drozd.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { - "name": "suppressor", - "directions": 1 + "name": "suppressor" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/SMGs/wt550.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/SMGs/wt550.rsi/meta.json index 90e48734f0..9af093356b 100644 --- a/Resources/Textures/Objects/Weapons/Guns/SMGs/wt550.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/SMGs/wt550.rsi/meta.json @@ -8,12 +8,10 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "base", - "directions": 1, "delays": [ [ 0.1, @@ -23,7 +21,6 @@ }, { "name": "base-unshaded", - "directions": 1, "delays": [ [ 0.1, @@ -33,7 +30,6 @@ }, { "name": "mag-0", - "directions": 1, "delays": [ [ 0.1, @@ -43,7 +39,6 @@ }, { "name": "mag-unshaded-0", - "directions": 1, "delays": [ [ 0.1, @@ -53,7 +48,6 @@ }, { "name": "mag-1", - "directions": 1, "delays": [ [ 0.1, @@ -63,7 +57,6 @@ }, { "name": "mag-unshaded-1", - "directions": 1, "delays": [ [ 0.1, @@ -73,7 +66,6 @@ }, { "name": "mag-2", - "directions": 1, "delays": [ [ 0.1, @@ -83,7 +75,6 @@ }, { "name": "mag-unshaded-2", - "directions": 1, "delays": [ [ 0.1, @@ -93,7 +84,6 @@ }, { "name": "mag-3", - "directions": 1, "delays": [ [ 0.1, @@ -103,7 +93,6 @@ }, { "name": "mag-unshaded-3", - "directions": 1, "delays": [ [ 0.1, @@ -113,7 +102,6 @@ }, { "name": "mag-4", - "directions": 1, "delays": [ [ 0.1, @@ -123,7 +111,6 @@ }, { "name": "mag-unshaded-4", - "directions": 1, "delays": [ [ 0.1, @@ -133,7 +120,6 @@ }, { "name": "mag-5", - "directions": 1, "delays": [ [ 0.1, @@ -143,7 +129,6 @@ }, { "name": "mag-unshaded-5", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Weapons/Guns/SMGs/zoric.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/SMGs/zoric.rsi/meta.json index ead4cd15ac..89fb68686c 100644 --- a/Resources/Textures/Objects/Weapons/Guns/SMGs/zoric.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/SMGs/zoric.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/167a810bc8534a56c74ffa8f1373acd3b1ac70ee/icons/obj/guns/projectile/zoric.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/bojevic.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/bojevic.rsi/meta.json index 6135f1fcce..d255715bbe 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/bojevic.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/bojevic.rsi/meta.json @@ -8,24 +8,19 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/d1120fc8287cca2632e834069b5019bf941a0170/icons/obj/guns/projectile/bojevic.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { - "name": "mag-0", - "directions": 1 + "name": "mag-0" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/bull.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/bull.rsi/meta.json index c5af0f5ee2..7535c07f6f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/bull.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/bull.rsi/meta.json @@ -8,28 +8,22 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/bull.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "mag-unshaded-1", - "directions": 1 + "name": "mag-unshaded-1" }, { - "name": "mag-unshaded-2", - "directions": 1 + "name": "mag-unshaded-2" }, { - "name": "mag-unshaded-3", - "directions": 1 + "name": "mag-unshaded-3" }, { - "name": "mag-unshaded-4", - "directions": 1 + "name": "mag-unshaded-4" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/db_shotgun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/db_shotgun.rsi/meta.json index 4a63c4c35c..04ac247095 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/db_shotgun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/db_shotgun.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/dshotgun.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/gladstone.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/gladstone.rsi/meta.json index 225bbe87bb..acacf92772 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/gladstone.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/gladstone.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/gladstone.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/pump.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/pump.rsi/meta.json index 1629eb9816..dbfd6dd398 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/pump.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/pump.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/c4f3f5c97c361e66cc93219702ea11f49b9d41bb/icons/obj/guns/projectile/shotgun.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/regulator.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/regulator.rsi/meta.json index 3158b7d0a7..ce9338bfb7 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/regulator.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/regulator.rsi/meta.json @@ -8,8 +8,7 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/regulator.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/sawn.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/sawn.rsi/meta.json index d84344ec44..1372df90c6 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/sawn.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/sawn.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/d1120fc8287cca2632e834069b5019bf941a0170/icons/obj/guns/projectile/sawnshotgun.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun.rsi/meta.json index a3ccfb634d..59c0a6467a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/boltgun.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi/meta.json index a3ccfb634d..59c0a6467a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/boltgun.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Guns/Snipers/heavy_sniper.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Snipers/heavy_sniper.rsi/meta.json index 2d598be59c..9e3b8f2a5e 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Snipers/heavy_sniper.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Snipers/heavy_sniper.rsi/meta.json @@ -8,20 +8,16 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a/icons/obj/guns/projectile/heavysniper.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "base", - "directions": 1 + "name": "base" }, { - "name": "bolt-closed", - "directions": 1 + "name": "bolt-closed" }, { - "name": "bolt-open", - "directions": 1 + "name": "bolt-open" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Melee/cleaver.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/cleaver.rsi/meta.json index e295b94b1f..3928d83f59 100644 --- a/Resources/Textures/Objects/Weapons/Melee/cleaver.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/cleaver.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at commit 125c975f1b3bf9826b37029e9ab5a5f89e975a7e", "states": [{"name": "butch", "directions": 1, "delays": [[1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at commit 125c975f1b3bf9826b37029e9ab5a5f89e975a7e", "states": [{"name": "butch", "delays": [[1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Melee/flash.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/flash.rsi/meta.json index c0299aa63d..ec97fea7b7 100644 --- a/Resources/Textures/Objects/Weapons/Melee/flash.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/flash.rsi/meta.json @@ -9,16 +9,10 @@ "states": [ { "name": "flash", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "flashing", - "directions": 1, "delays": [ [ 0.1, @@ -29,12 +23,7 @@ }, { "name": "burnt", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "inhand-right", diff --git a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json index 686b875dea..c4fc80f1e6 100644 --- a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json @@ -8,8 +8,7 @@ }, "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Melee/pickaxe.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/pickaxe.rsi/meta.json index dfd0153568..ed0f963111 100644 --- a/Resources/Textures/Objects/Weapons/Melee/pickaxe.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/pickaxe.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pickaxe", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pickaxe", "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Melee/spear.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/spear.rsi/meta.json index 0828bd95af..794b8a3835 100644 --- a/Resources/Textures/Objects/Weapons/Melee/spear.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/spear.rsi/meta.json @@ -42,8 +42,7 @@ ] }, { - "name": "spear", - "directions": 1 + "name": "spear" } ] } diff --git a/Resources/Textures/Objects/Weapons/Melee/stunbaton.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/stunbaton.rsi/meta.json index f01ac01f35..47921de483 100644 --- a/Resources/Textures/Objects/Weapons/Melee/stunbaton.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/stunbaton.rsi/meta.json @@ -124,25 +124,14 @@ }, { "name": "stunbaton_off", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "stunbaton_nocell", - "directions": 1, - "delays": [ - [ - 1.0 - ] - ] + }, { "name": "stunbaton_on", - "directions": 1, "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Weapons/Melee/xeno_claw.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/xeno_claw.rsi/meta.json index bce8d4e9b0..85017ada93 100644 --- a/Resources/Textures/Objects/Weapons/Melee/xeno_claw.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/xeno_claw.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "https://github.com/discordia-space/CEV-Eris/raw/7344da18b5e3dd0b1994a84e9c9c0774d71b93a5/icons/mob/alien.dmi", "states": [ { - "name": "icon", - "directions": 1 + "name": "icon" }, { - "name": "inhand-left", - "directions": 1 + "name": "inhand-left" }, { - "name": "inhand-right", - "directions": 1 + "name": "inhand-right" } ] } \ No newline at end of file From 538bc52bd9d5b0d5348c7ebbb4ce97f286f1546b Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Wed, 13 Jan 2021 08:03:14 -0800 Subject: [PATCH 122/166] Adds KeywordLabeler bot configuration for user PR labeling (#2956) --- .github/keylabeler.yml | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/keylabeler.yml diff --git a/.github/keylabeler.yml b/.github/keylabeler.yml new file mode 100644 index 0000000000..5f669179a7 --- /dev/null +++ b/.github/keylabeler.yml @@ -0,0 +1,47 @@ +# Determines if we search the title (optional). Defaults to true. +matchTitle: false + +# Determines if we search the body (optional). Defaults to true. +matchBody: true + +# Determines if label matching is case sensitive (optional). Defaults to true. +caseSensitive: false + +# Explicit keyword mappings to labels. Form of match:label. Required. +labelMappings: + "[ATMOS]": "Feature: Atmospherics" + "[AUDIO]": "Feature: Audio" + "[CONSTRUCTION]": "Feature: Construction" + "[ENTITIES]": "Feature: Entities" + "[ENTITY]": "Feature: Entities" + "[ENTITY AI]": "Feature: Entity AI" + "[EVENTS]": "Feature: Events" + "[EVENT]": "Feature: Events" + "[INTERACTION]": "Feature: Interaction" + "[MEDICAL]": "Feature: Medical" + "[PHYSICS]": "Feature: Physics" + "[POWER]": "Feature: Power" + "[SPRITES]": "Feature: Sprites" + "[SPRITE]": "Feature: Sprites" + "[UI]": "Feature: UI" + + "[BUG]": "Type: Bug" + "[CLEANUP]": "Type: Cleanup" + "[CLEAN]": "Type: Cleanup" + "[CLEANLINESS]": "Type: Cleanup" + "[DISCUSSION]": "Type: Discussion" + "[DISCUSS]": "Type: Discussion" + "[FEATURE]": "Type: Feature" + "[FEAT]": "Type: Feature" + "[IMPROVEMENT]": "Type: Improvement" + "[IMPROVE]": "Type: Improvement" + "[PERFORMANCE]": "Type: Performance" + "[PERF]": "Type: Performance" + "[REFACTOR]": "Type: Refactor" + + "[HELP WANTED]": "Status: Help Wanted" + "[DO NOT MERGE]": "Status: DO NOT MERGE" + "[DNM]": "Status: DO NOT MERGE" + + "[RESOURCES]": "Resources (No code)" + "[NOCODE]": "Resources (No code)" From 02f0620b481af387b49b67849a218776dfb3c554 Mon Sep 17 00:00:00 2001 From: Swept Date: Wed, 13 Jan 2021 16:03:26 +0000 Subject: [PATCH 123/166] Adds PR and Issue template. (#2985) --- .github/ISSUE_TEMPLATE/config.yml | 7 +++++++ .github/ISSUE_TEMPLATE/issue_report.md | 10 ++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 8 ++++++++ 3 files changed, 25 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/issue_report.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..438fa3c313 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,7 @@ +contact_links: + - name: Report a Security Exploit + url: https://discord.gg/MwDDf6t + about: Please report serious security exploits and vulnerabilities to @PJB3005. (PJB#3482 on discord). + - name: Request a Feature + url: https://hackmd.io/@ss14/docs + about: Submit feature requests on our [discord server](https://discord.gg/ZBFGnb3) or checkout our design documentation on HackMD. diff --git a/.github/ISSUE_TEMPLATE/issue_report.md b/.github/ISSUE_TEMPLATE/issue_report.md new file mode 100644 index 0000000000..9e014c19cc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue_report.md @@ -0,0 +1,10 @@ + + +## Description + + +**Screenshots** + + +**Additional context** + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..39483208b5 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,8 @@ + + + +## About the PR + +**Screenshots** + From 1f18dd568a81b6a34c379ae309619c4535223c19 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Wed, 13 Jan 2021 16:15:53 -0600 Subject: [PATCH 124/166] GasFilterComponent (#2935) * GasFilterComponent * Client ignore component * Diff fixes * diff fix 2 Co-authored-by: py01 --- Content.Client/IgnoredComponents.cs | 2 +- .../Atmos/Piping/GasFilterComponent.cs | 179 ++++++++++++++++++ Content.Shared/Atmos/Atmospherics.cs | 5 +- .../Components/Atmos/SharedFilterComponent.cs | 17 ++ .../Constructible/Ground/gasfilters.yml | 50 +++++ 5 files changed, 251 insertions(+), 2 deletions(-) create mode 100644 Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs create mode 100644 Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs create mode 100644 Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index 3570c3b374..a618a37aa6 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -235,7 +235,7 @@ namespace Content.Client "SliceableFood", "DamageOtherOnHit", "DamageOnLand", - "Recyclable" + "GasFilter" }; } } diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs new file mode 100644 index 0000000000..70bbc7bbb6 --- /dev/null +++ b/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs @@ -0,0 +1,179 @@ +#nullable enable +using Content.Server.Atmos; +using Content.Server.GameObjects.Components.NodeContainer; +using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using Content.Shared.Atmos; +using Content.Shared.GameObjects.Components.Atmos; +using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Log; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System; +using System.Linq; + +namespace Content.Server.GameObjects.Components.Atmos.Piping.Filters +{ + [RegisterComponent] + public class GasFilterComponent : Component + { + public override string Name => "GasFilter"; + + /// + /// If the filter is currently filtering. + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool FilterEnabled + { + get => _filterEnabled; + set + { + _filterEnabled = value; + UpdateAppearance(); + } + } + private bool _filterEnabled; + + [ViewVariables(VVAccess.ReadWrite)] + public Gas GasToFilter + { + get => _gasToFilter; + set + { + _gasToFilter = value; + UpdateAppearance(); + } + } + private Gas _gasToFilter; + + [ViewVariables(VVAccess.ReadWrite)] + public int VolumeFilterRate + { + get => _volumeFilterRate; + set => _volumeFilterRate = Math.Clamp(value, 0, MaxVolumeFilterRate); + } + private int _volumeFilterRate; + + [ViewVariables(VVAccess.ReadWrite)] + public int MaxVolumeFilterRate + { + get => _maxVolumeFilterRate; + set => Math.Max(value, 0); + } + private int _maxVolumeFilterRate; + + [ViewVariables] + private PipeDirection _initialInletDirection; + + /// + /// The direction the filtered-out gas goes. + /// + [ViewVariables] + private PipeDirection _initialFilterOutletDirection; + + /// + /// The direction the rest of the gas goes. + /// + [ViewVariables] + private PipeDirection _initialOutletDirection; + + [ViewVariables] + private PipeNode? _inletPipe; + + [ViewVariables] + private PipeNode? _filterOutletPipe; + + [ViewVariables] + private PipeNode? _outletPipe; + + [ComponentDependency] + private readonly AppearanceComponent? _appearance = default; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _volumeFilterRate, "startingVolumePumpRate", 0); + serializer.DataField(ref _maxVolumeFilterRate, "maxVolumePumpRate", 100); + serializer.DataField(ref _gasToFilter, "gasToFilter", Gas.Phoron); + serializer.DataField(ref _initialInletDirection, "inletDirection", PipeDirection.None); + serializer.DataField(ref _initialFilterOutletDirection, "filterOutletDirection", PipeDirection.None); + serializer.DataField(ref _initialOutletDirection, "outletDirection", PipeDirection.None); + } + + public override void Initialize() + { + base.Initialize(); + Owner.EnsureComponent(); + SetPipes(); + UpdateAppearance(); + } + + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PipeNetUpdateMessage: + Update(); + break; + } + } + + public void Update() + { + if (!FilterEnabled) + return; + + if (_inletPipe == null || _inletPipe.Air == null || + _filterOutletPipe == null || _filterOutletPipe.Air == null || + _outletPipe == null || _outletPipe.Air == null) + return; + + FilterGas(_inletPipe.Air, _filterOutletPipe.Air, _outletPipe.Air); + } + + private void FilterGas(GasMixture inletGas, GasMixture filterOutletGas, GasMixture outletGas) + { + var volumeRatio = Math.Clamp(VolumeFilterRate / inletGas.Volume, 0, 1); + var gas = inletGas.RemoveRatio(volumeRatio); + + var molesToSeperate = gas.GetMoles(GasToFilter); + gas.SetMoles(GasToFilter, 0); + filterOutletGas.AdjustMoles(GasToFilter, molesToSeperate); + + outletGas.Merge(gas); + } + + private void UpdateAppearance() + { + _appearance?.SetData(FilterVisuals.VisualState, new FilterVisualState()); + } + + private void SetPipes() + { + _inletPipe = null; + _filterOutletPipe = null; + _outletPipe = null; + + if (!Owner.TryGetComponent(out var container)) + { + Logger.Error($"{typeof(GasFilterComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} did not have a {nameof(NodeContainerComponent)}."); + return; + } + + var pipeNodes = container.Nodes.OfType(); + + _inletPipe = pipeNodes.Where(pipe => pipe.PipeDirection == _initialInletDirection).FirstOrDefault(); + _filterOutletPipe = pipeNodes.Where(pipe => pipe.PipeDirection == _initialFilterOutletDirection).FirstOrDefault(); + _outletPipe = pipeNodes.Where(pipe => pipe.PipeDirection == _initialOutletDirection).FirstOrDefault(); + + if (_inletPipe == null || _filterOutletPipe == null || _outletPipe == null) + { + Logger.Error($"{typeof(GasFilterComponent)} on {Owner?.Prototype?.ID}, Uid {Owner?.Uid} could not find compatible {nameof(PipeNode)}s on its {nameof(NodeContainerComponent)}."); + return; + } + } + } +} diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index 76a7a45056..d87ac132cd 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -1,4 +1,6 @@ -using Robust.Shared.Maths; +using Robust.Shared.Maths; +using Robust.Shared.Serialization; +using System; namespace Content.Shared.Atmos { @@ -246,6 +248,7 @@ namespace Content.Shared.Atmos /// /// Gases to Ids. Keep these updated with the prototypes! /// + [Serializable, NetSerializable] public enum Gas : sbyte { Oxygen = 0, diff --git a/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs b/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs new file mode 100644 index 0000000000..8308d30cbb --- /dev/null +++ b/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs @@ -0,0 +1,17 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Atmos +{ + [Serializable, NetSerializable] + public enum FilterVisuals + { + VisualState + } + + [Serializable, NetSerializable] + public class FilterVisualState + { + + } +} diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml new file mode 100644 index 0000000000..fc84458bdc --- /dev/null +++ b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml @@ -0,0 +1,50 @@ +- type: entity + abstract: true + id: GasFilterBase + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Physics + - type: SnapGrid + offset: Center + - type: Sprite + sprite: Constructible/Atmos/pipeitems.rsi + state: scrubber + - type: Damageable + resistances: metallicResistances + - type: Destructible + thresholds: + 100: + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + +- type: entity + parent: GasFilterBase + id: GasFilter + name: Gas Filter + description: It filters gases. + components: + - type: Sprite + sprite: Constructible/Atmos/pipe.rsi + state: pipeTJunction2 + - type: Icon + sprite: Constructible/Atmos/pipe.rsi + state: pipeTJunction2 + - type: NodeContainer + nodes: + - !type:PipeNode + nodeGroupID: Pipe + pipeDirection: South + - !type:PipeNode + nodeGroupID: Pipe + pipeDirection: East + - !type:PipeNode + nodeGroupID: Pipe + pipeDirection: North + - type: GasFilter + inletDirection: South + filterOutletDirection: East + outletDirection: North From 803eda40c37ddde318b3069bc3df9dbdb86a4605 Mon Sep 17 00:00:00 2001 From: chairbender Date: Wed, 13 Jan 2021 14:20:23 -0800 Subject: [PATCH 125/166] Fix "stuck" drag/drop controls using ControlFocusExited (#2828) * #1449 use new ControlFocusExited override for drag/drop controls to avoid getting "stuck" dragging when the control lost focus mid drag, also use the renamed KeyboardFocusEntered/Exited methods. * Update Content.Client/UserInterface/ActionMenuItem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Update ActionMenuItem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- Content.Client/Arcade/BlockGameMenu.cs | 2 +- Content.Client/UserInterface/ActionMenu.cs | 9 +++++++-- Content.Client/UserInterface/ActionMenuItem.cs | 13 ++++++++++++- Content.Client/UserInterface/Controls/ActionSlot.cs | 8 ++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Content.Client/Arcade/BlockGameMenu.cs b/Content.Client/Arcade/BlockGameMenu.cs index 5c5829205a..6bba80dae5 100644 --- a/Content.Client/Arcade/BlockGameMenu.cs +++ b/Content.Client/Arcade/BlockGameMenu.cs @@ -458,7 +458,7 @@ namespace Content.Client.Arcade return grid; } - protected override void FocusExited() + protected override void KeyboardFocusExited() { if (!IsOpen) return; if(_gameOver) return; diff --git a/Content.Client/UserInterface/ActionMenu.cs b/Content.Client/UserInterface/ActionMenu.cs index 31d1a8ad55..a58263bbd4 100644 --- a/Content.Client/UserInterface/ActionMenu.cs +++ b/Content.Client/UserInterface/ActionMenu.cs @@ -282,6 +282,12 @@ namespace Content.Client.UserInterface _dragDropHelper.EndDrag(); } + private void OnItemFocusExited(ActionMenuItem item) + { + // lost focus, cancel the drag if one is in progress + _dragDropHelper.EndDrag(); + } + private void OnItemPressed(BaseButton.ButtonEventArgs args) { if (args.Button is not ActionMenuItem actionMenuItem) return; @@ -463,10 +469,9 @@ namespace Content.Client.UserInterface _actionList = actions.ToArray(); foreach (var action in _actionList.OrderBy(act => act.Name.ToString())) { - var actionItem = new ActionMenuItem(action); + var actionItem = new ActionMenuItem(action, OnItemFocusExited); _resultsGrid.Children.Add(actionItem); actionItem.SetActionState(_actionsComponent.IsGranted(action)); - actionItem.OnButtonDown += OnItemButtonDown; actionItem.OnButtonUp += OnItemButtonUp; actionItem.OnPressed += OnItemPressed; diff --git a/Content.Client/UserInterface/ActionMenuItem.cs b/Content.Client/UserInterface/ActionMenuItem.cs index d678847c5e..0bfee17b6c 100644 --- a/Content.Client/UserInterface/ActionMenuItem.cs +++ b/Content.Client/UserInterface/ActionMenuItem.cs @@ -1,5 +1,7 @@ #nullable enable +using System; +using Content.Client.GameObjects.Components.Mobs; using Content.Client.UserInterface.Stylesheets; using Content.Shared.Actions; using Robust.Client.UserInterface; @@ -19,8 +21,11 @@ namespace Content.Client.UserInterface public BaseActionPrototype Action { get; private set; } - public ActionMenuItem(BaseActionPrototype action) + private Action _onControlFocusExited; + + public ActionMenuItem(BaseActionPrototype action, Action onControlFocusExited) { + _onControlFocusExited = onControlFocusExited; Action = action; CustomMinimumSize = (64, 64); @@ -38,6 +43,12 @@ namespace Content.Client.UserInterface TooltipSupplier = SupplyTooltip; } + protected override void ControlFocusExited() + { + base.ControlFocusExited(); + _onControlFocusExited.Invoke(this); + } + private Control SupplyTooltip(Control? sender) { return new ActionAlertTooltip(Action.Name, Action.Description, Action.Requires); diff --git a/Content.Client/UserInterface/Controls/ActionSlot.cs b/Content.Client/UserInterface/Controls/ActionSlot.cs index e98f898d7c..1ae242f6d5 100644 --- a/Content.Client/UserInterface/Controls/ActionSlot.cs +++ b/Content.Client/UserInterface/Controls/ActionSlot.cs @@ -327,6 +327,14 @@ namespace Content.Client.UserInterface.Controls DrawModeChanged(); } + protected override void ControlFocusExited() + { + // lost focus for some reason, cancel the drag if there is one. + base.ControlFocusExited(); + _actionsUI.DragDropHelper.EndDrag(); + DrawModeChanged(); + } + /// /// Cancel current press without triggering the action /// From 0b40e424801008817f7eb3636436d940d480b294 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 13 Jan 2021 23:20:49 +0100 Subject: [PATCH 126/166] updates submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 39541639c5..c4062bcae9 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 39541639c5ce3680dded7b94b86098d1ca824285 +Subproject commit c4062bcae95e965301c22768653b581287253763 From 0d211927127072cdfeaad852dcc7127c20da4475 Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 14 Jan 2021 03:16:32 +0000 Subject: [PATCH 127/166] Replaces banana and peel sprites. (#2994) * Initial * Ignore first commit Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Specific/Hydroponics/banana.rsi/meta.json | 129 +++++++++++++++++- .../Specific/Hydroponics/banana.rsi/peel.png | Bin 448 -> 412 bytes .../Specific/Hydroponics/banana.rsi/peel2.png | Bin 0 -> 394 bytes .../Specific/Hydroponics/banana.rsi/peel3.png | Bin 0 -> 331 bytes .../Hydroponics/banana.rsi/produce.png | Bin 488 -> 382 bytes 5 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel2.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel3.png diff --git a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json index acd1df2e77..2ab19e9f40 100644 --- a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/meta.json @@ -1 +1,128 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA 3.0", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068", "states": [{"name": "dead", "delays": [[1.0]]}, {"name": "harvest", "delays": [[1.0]]}, {"name": "peel", "delays": [[1.0]]}, {"name": "produce", "delays": [[1.0]]}, {"name": "seed", "delays": [[1.0]]}, {"name": "stage-1", "delays": [[1.0]]}, {"name": "stage-2", "delays": [[1.0]]}, {"name": "stage-3", "delays": [[1.0]]}, {"name": "stage-4", "delays": [[1.0]]}, {"name": "stage-5", "delays": [[1.0]]}, {"name": "stage-6", "delays": [[1.0]]}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/6be7633abca9f1a51cab1020500cf0776ce78e5c", + "states": [ + { + "name": "dead", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "harvest", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "produce", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "peel", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "peel2", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "peel3", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "seed", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "stage-1", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "stage-2", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "stage-3", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "stage-4", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "stage-5", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "stage-6", + "directions": 1, + "delays": [ + [ + 1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel.png b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel.png index 043e44b8b5bd694438d16fa55f658b0d89ce0783..8cfedd0a9dd50fa74881f0058fc926f4f04df333 100644 GIT binary patch delta 385 zcmV-{0e=3#1DpepB!6Q`L_t(|ob8jlOT$ncg-?A^1O*Env`8rq;$To*QbdwbG+5_? z6kPiUh?`D=5eLD+DRi;3OLvDtQE0b-dckW3J zz+f;KK9EG7B$20o4e;^#=WM5`n<}8wFrhrgP4u^ zYr<22UgA1{B6AcMLI8l4s{L*NN#se9IlEpo9Q_*|SCHJP1x^8qufzZV#atDYx{g$O+OEH; z8JL} fO&JUZgW;EV9#xA>$Pck100000NkvXXu0mjfA8M)j delta 422 zcmV;X0a^Z>1Hc22B!7oVL_t(|ob8Z3OPgU7hOg&MV)91YibPvQDm7?DL@0`gb?eah zF$Ow`LJ<+VRHUozP!RM#h`&JGtAS()5d$EPvf#c6;*9NbA$zG(7{a zuUPKBzQF0vB8lkOjl|c~qWmhlP%ewd0spP+%4(bTN3;b>r7MChZW7UP0m%P|@FlX0 zB@YntY;L~08SU*kCz*VsC7~_Q{c=Hl-@YW+a)lEc6Wb5ra2|hE9TgR=8n1 zg)`iqO08a{D}Mm6lOB=d6BjiBMf39ou-b`5vUq&2$fP&$+HPuU>k+;&IB=xZ{m0P9 znNI2N%hAwSk5U%R!ChQ#KZ*dU)D{PaHa<@ed)W-i0>onU?T+?gTEVIJLFw+=$F8!e zepsY%dPzL~gxUG*UwyD_0f0|4Z6d0Y>PH1i7adH0SReZ5af88NF#H!>15QDD|K79> Qi2wiq07*qoM6N<$f+M!kdH?_b diff --git a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel2.png b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel2.png new file mode 100644 index 0000000000000000000000000000000000000000..66eb184a213e9d58a29edff1aeeec61ffe305437 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFa~n~Z;OaO@&czf|8>>eG^11KZ1MBgf1e9KSagKrldM7czI*kFrE*<5>bDs`r@#Db zzIjrTKyrHWh0v6Q6+P3{t))(IH}>=J+~MirajHMLRg5u0tJFCHg+tUui-%;Ma%fVt%9eB&FpJP!S|+0;~UT2ag{ z9i%TH?Ej&HS5_)qVz<2iZT~8kav^u}e}4@t4l9PN1NE`4Gfot<0l|)ZNuZhQWEw3F z#fdyTA$)qhVa=}(y^R72T7uj3Yff-n@Qt{0|Ic22WQ%mvv4FO#p@&svQ6T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel3.png b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/peel3.png new file mode 100644 index 0000000000000000000000000000000000000000..e0239c258877fe46b2215ea4b0aedc4e7a1298d7 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFba9PIEGZrNluVpU7R4&)3lJU zMn>n~Z;OaO@&W8UKBu3Tzy7;_%kf9`se5c(`x2C{7ggJ5vYFZOvBkQwv3bcjPGerd zsZn%by}y0Ndj@&-?*GBkTQ;zL{C+*Y;FaPvMx7Rs7pLsgH*B4lGUNVQcJnLu{AWG< zy7M?sd465mg^d$a5)vxT1xV`u-(UOC`B-ah)&JbRtdb?S6>7R<8BCwlr>s$727&%H z3U@v&e!kz(z`!OQq%R=s{~-m{^*`@li=OrH$fxXt~2y_UvP6+i#)>f*3FQpB;r z>`7A_3-jTr%I78Z?zdadsp4y}d~}(;<7lw?zP8tAzlr}nuYQ0v+xY$@3 Z7*2=A%S-WCE&&D-gQu&X%Q~loCICfKiX;F4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/banana.rsi/produce.png index 6fff5385e830c2d5ee1ebdab2106cc97b27cbdd7..b9a55fa6dbbd4aeacdb39ea72a1f673a494580da 100644 GIT binary patch delta 355 zcmV-p0i6Em1O5V#B!5LoL_t(|ob8k`OT$1Ih95TH$ zBDQ6UJkD8N1{0aEEmJ(-ABnEhR5Ft(0f1vGpja-^Xc?%OSbxcC0HEtMMWbZ^@NoCW z>G`AdxtSCA&B5L}o$EvCByu+Z5C&7}+T0C%jy_V=|49O`gYf?hbe*QCRSN(_evo>9 zE(sLNB>=+V7|)%g+PkJI8uxtMevu#Gxf7lSaMgK{ZbK;p^9D?Q}lSln|b^!gDux1&_UZDH|cdq>nOu)Dtrz{d7gvi9@MRm7zX z#3lghmD#mk|2uLOacKiF7bnKdUr-g+Xf&Fo;R_6gZF26^Q^^1T002ovPDHLkV1l)D Br6d3V delta 462 zcmV;<0Wtpm0_X#fB!90-L_t(|ob8lNNK{c6hMzezbDi5bKV&LOhGs|-L7@v#!sT2r zD8aou$F0)nN}@&J!d0$YhbseXCj|aPI${gKKykuJMG=)ohq<1)cTStuaz}4UaG&it z-#HI2d@p!-czFEJ7zsle2}9kq2hV#9wYu{5QX;|)foI(f)PK~@v%H)vTf*mtKsudN zpJv`u8F>sqD)rs*yRIbAa<722bOw?qRD>k&CLcLYBH)HVDB?%c@&p6*+;5U)&0bmH z+v1q|IP-zg6cmes z)3tviu=!(3QGfb{DD4riJ7Oul#?vR2+^Mc*VNT*>iQc|L$6IjW#fAAnb^7}YN}Y4N zs)mvUD4Sf~CLFm-SLbJJyP875CcAygR;G~`FE`3s?F$o_o&8F}I3S-35{;SYdKlA` zv~^_h`!`UuBK#VepX==I>1BTo4vT1bs9CkQ?GT9uu}4Y);!%kZl7syat1DHEPi$Yh z&>RoGdHqmT=mOK!iN|t)hE;6g)yT9fZR+9S;c;X90maUfug9D;z5oCK07*qoM6N<$ Eg5qoAdH?_b From 7c48a5708e46471d1039167a379af6f621dde0e3 Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 14 Jan 2021 03:21:18 +0000 Subject: [PATCH 128/166] Fixes duffel bundles. (#2992) * Initial * Initial2 --- .../Catalog/Fills/Backpacks/duffelbag.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 7872dd02a7..c8d13a07f8 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -12,8 +12,6 @@ - name: Cautery - name: Retractor - name: Scalpel - - type: Storage - capacity: 30 - type: entity parent: ClothingBackpackDuffelSyndicateMedical @@ -29,8 +27,6 @@ - name: Cautery - name: Retractor - name: Scalpel - - type: Storage - capacity: 30 - type: entity parent: ClothingBackpackDuffelSyndicateAmmo @@ -44,8 +40,6 @@ - name: MagazineShotgun - name: MagazineShotgunBeanbag # - name: ThermalImagingGoggles - - type: Storage - capacity: 100 - type: entity parent: ClothingBackpackDuffelSyndicateAmmo @@ -59,8 +53,6 @@ - name: MagazinePistolSmg amount: 2 # - name: SMGSuppressor - - type: Storage - capacity: 100 - type: entity parent: ClothingBackpackDuffelSyndicateAmmo @@ -72,8 +64,6 @@ contents: - name: LMGL6 - name: MagazineLRifleBox - - type: Storage - capacity: 100 - type: entity parent: ClothingBackpackDuffelSyndicateAmmo @@ -111,8 +101,6 @@ - name: Paper - name: Pen - name: CentcomPDA - - type: Storage - capacity: 50 - type: entity parent: ClothingBackpackDuffelClown @@ -128,5 +116,3 @@ - name: BikeHorn - name: ClownPDA - name: ClothingHeadsetService - - type: Storage - capacity: 30 From 6a19dd9f02f187b133c058493d815bd8f751547b Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Thu, 14 Jan 2021 04:24:43 +0100 Subject: [PATCH 129/166] You can no longer move a PC entity unless it has a PlayerInputMover (#2987) --- .../GameObjects/EntitySystems/MoverSystem.cs | 16 +--------------- .../GameTicking/GameRules/RuleSuspicion.cs | 4 +--- .../Body/Mechanisms/basic_human_organs.yml | 1 + .../Prototypes/Body/Parts/humanoid_parts.yml | 1 + .../Prototypes/Entities/Mobs/Player/observer.yml | 1 + .../Prototypes/Entities/Mobs/Species/human.yml | 1 + 6 files changed, 6 insertions(+), 18 deletions(-) diff --git a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs index 4801729395..f2cce28e84 100644 --- a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs @@ -14,6 +14,7 @@ using Content.Shared.Physics; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Timing; using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Components.Transform; @@ -45,8 +46,6 @@ namespace Content.Server.GameObjects.EntitySystems public override void Initialize() { base.Initialize(); - - SubscribeLocalEvent(PlayerAttached); SubscribeLocalEvent(PlayerDetached); _audioSystem = EntitySystemManager.GetEntitySystem(); @@ -64,21 +63,8 @@ namespace Content.Server.GameObjects.EntitySystems } } - private static void PlayerAttached(PlayerAttachSystemMessage ev) - { - if (!ev.Entity.HasComponent()) - { - ev.Entity.AddComponent(); - } - } - private void PlayerDetached(PlayerDetachedSystemMessage ev) { - if (ev.Entity.HasComponent()) - { - ev.Entity.RemoveComponent(); - } - if (ev.Entity.TryGetComponent(out IPhysicsComponent? physics) && physics.TryGetController(out MoverController controller) && !ev.Entity.IsWeightless()) diff --git a/Content.Server/GameTicking/GameRules/RuleSuspicion.cs b/Content.Server/GameTicking/GameRules/RuleSuspicion.cs index e2b46d4f23..610748cd5e 100644 --- a/Content.Server/GameTicking/GameRules/RuleSuspicion.cs +++ b/Content.Server/GameTicking/GameRules/RuleSuspicion.cs @@ -7,7 +7,6 @@ using Content.Server.Interfaces.GameTicking; using Content.Server.Mobs.Roles.Suspicion; using Content.Server.Players; using Content.Shared; -using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.Components.Mobs.State; using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.Player; @@ -22,8 +21,7 @@ using Timer = Robust.Shared.Timers.Timer; namespace Content.Server.GameTicking.GameRules { /// - /// Simple GameRule that will do a free-for-all death match. - /// Kill everybody else to win. + /// Simple GameRule that will do a TTT-like gamemode with traitors. /// public sealed class RuleSuspicion : GameRule, IEntityEventSubscriber { diff --git a/Resources/Prototypes/Body/Mechanisms/basic_human_organs.yml b/Resources/Prototypes/Body/Mechanisms/basic_human_organs.yml index d256e7187e..9139a10da5 100644 --- a/Resources/Prototypes/Body/Mechanisms/basic_human_organs.yml +++ b/Resources/Prototypes/Body/Mechanisms/basic_human_organs.yml @@ -32,6 +32,7 @@ compatibility: Biological behaviors: - !type:BrainBehavior {} + - type: Input - type: entity id: EyesHuman diff --git a/Resources/Prototypes/Body/Parts/humanoid_parts.yml b/Resources/Prototypes/Body/Parts/humanoid_parts.yml index a6036e559f..3c2841ec8b 100644 --- a/Resources/Prototypes/Body/Parts/humanoid_parts.yml +++ b/Resources/Prototypes/Body/Parts/humanoid_parts.yml @@ -61,6 +61,7 @@ resistances: defaultResistances # criticalThreshold: 50 # deadThreshold: 120 + - type: Input - type: entity id: LeftArmHuman diff --git a/Resources/Prototypes/Entities/Mobs/Player/observer.yml b/Resources/Prototypes/Entities/Mobs/Player/observer.yml index 7b29a537a2..1c67dc2a0f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/observer.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/observer.yml @@ -17,6 +17,7 @@ mask: - GhostImpassable status: InAir + - type: PlayerInputMover - type: Eye zoom: 0.5, 0.5 drawFov: false diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index b9a8beff86..e85e369fe1 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -125,6 +125,7 @@ layer: - Opaque - MobImpassable + - type: PlayerInputMover - type: AtmosExposed - type: Flammable fireSpread: true From 4c8008255578ff8efd3544a037c9f1a2c4dd0814 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Thu, 14 Jan 2021 01:06:23 -0600 Subject: [PATCH 130/166] Reaction sound re-added (#2990) * Reaction sound re-added * Moves reaction sound file to reaction prototype Co-authored-by: py01 --- .../EntitySystems/ChemicalReactionSystem.cs | 9 +++++++++ .../EntitySystems/ChemicalReactionSystem.cs | 17 +++++++++++++++++ Content.Shared/Chemistry/ReactionPrototype.cs | 3 +++ .../SharedSolutionContainerComponent.cs | 2 +- ...ystem.cs => SharedChemicalReactionSystem.cs} | 14 +++++++++----- 5 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 Content.Client/GameObjects/EntitySystems/ChemicalReactionSystem.cs create mode 100644 Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs rename Content.Shared/GameObjects/EntitySystems/{ChemicalReactionSystem.cs => SharedChemicalReactionSystem.cs} (93%) diff --git a/Content.Client/GameObjects/EntitySystems/ChemicalReactionSystem.cs b/Content.Client/GameObjects/EntitySystems/ChemicalReactionSystem.cs new file mode 100644 index 0000000000..f58526eec0 --- /dev/null +++ b/Content.Client/GameObjects/EntitySystems/ChemicalReactionSystem.cs @@ -0,0 +1,9 @@ +using Content.Shared.GameObjects.EntitySystems; + +namespace Content.Client.GameObjects.EntitySystems.NewFolder +{ + public class ChemicalReactionSystem : SharedChemicalReactionSystem + { + + } +} diff --git a/Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs b/Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs new file mode 100644 index 0000000000..2fde1f8f59 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs @@ -0,0 +1,17 @@ +using Content.Shared.Chemistry; +using Content.Shared.GameObjects.EntitySystems; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.Interfaces.GameObjects; + +namespace Content.Server.GameObjects.EntitySystems.NewFolder +{ + public class ChemicalReactionSystem : SharedChemicalReactionSystem + { + protected override void OnReaction(ReactionPrototype reaction, IEntity owner, ReagentUnit unitReactions) + { + base.OnReaction(reaction, owner, unitReactions); + + Get().PlayAtCoords(reaction.Sound, owner.Transform.Coordinates); + } + } +} diff --git a/Content.Shared/Chemistry/ReactionPrototype.cs b/Content.Shared/Chemistry/ReactionPrototype.cs index 1c0911da95..02799b9229 100644 --- a/Content.Shared/Chemistry/ReactionPrototype.cs +++ b/Content.Shared/Chemistry/ReactionPrototype.cs @@ -36,6 +36,8 @@ namespace Content.Shared.Chemistry /// public IReadOnlyList Effects => _effects; + public string Sound { get; private set; } + [Dependency] private readonly IModuleManager _moduleManager = default!; public void LoadFrom(YamlMappingNode mapping) @@ -46,6 +48,7 @@ namespace Content.Shared.Chemistry serializer.DataField(ref _name, "name", string.Empty); serializer.DataField(ref _reactants, "reactants", new Dictionary()); serializer.DataField(ref _products, "products", new Dictionary()); + serializer.DataField(this, x => x.Sound, "sound", "/Audio/Effects/Chemistry/bubbles.ogg"); if (_moduleManager.IsServerModule) { diff --git a/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs b/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs index 584ab4cd19..e453f4aeda 100644 --- a/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs +++ b/Content.Shared/GameObjects/Components/Chemistry/SharedSolutionContainerComponent.cs @@ -179,7 +179,7 @@ namespace Content.Shared.GameObjects.Components.Chemistry if (!CanReact) return; - EntitySystem.Get() + EntitySystem.Get() .FullyReactSolution(Solution, Owner, MaxVolume); } diff --git a/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs b/Content.Shared/GameObjects/EntitySystems/SharedChemicalReactionSystem.cs similarity index 93% rename from Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs rename to Content.Shared/GameObjects/EntitySystems/SharedChemicalReactionSystem.cs index 811c97756d..8c2a3a6e7e 100644 --- a/Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/SharedChemicalReactionSystem.cs @@ -8,8 +8,7 @@ using System.Collections.Generic; namespace Content.Shared.GameObjects.EntitySystems { - //TODO: Reimplement sounds for reactions - public class ChemicalReactionSystem : EntitySystem + public abstract class SharedChemicalReactionSystem : EntitySystem { private IEnumerable _reactions; @@ -56,7 +55,7 @@ namespace Content.Shared.GameObjects.EntitySystems /// Perform a reaction on a solution. This assumes all reaction criteria are met. /// Removes the reactants from the solution, then returns a solution with all products. /// - private static Solution PerformReaction(Solution solution, IEntity owner, ReactionPrototype reaction, ReagentUnit unitReactions) + private Solution PerformReaction(Solution solution, IEntity owner, ReactionPrototype reaction, ReagentUnit unitReactions) { //Remove reactants foreach (var reactant in reaction.Reactants) @@ -76,12 +75,17 @@ namespace Content.Shared.GameObjects.EntitySystems } // Trigger reaction effects + OnReaction(reaction, owner, unitReactions); + + return products; + } + + protected virtual void OnReaction(ReactionPrototype reaction, IEntity owner, ReagentUnit unitReactions) + { foreach (var effect in reaction.Effects) { effect.React(owner, unitReactions.Double()); } - - return products; } /// From ce096f9c519c2c06542f8042d4296546fad40a6f Mon Sep 17 00:00:00 2001 From: Paul Ritter Date: Thu, 14 Jan 2021 08:08:55 +0100 Subject: [PATCH 131/166] ports over datasets (#2663) * ports over datasets & ignores the dataset prototype clientside * moved dataset to shared Co-authored-by: Paul --- Content.Client/EntryPoint.cs | 1 - .../GameTicking/GamePresets/PresetTraitor.cs | 2 +- .../Prototypes/DatasetPrototype.cs | 2 +- Resources/Prototypes/Datasets/Names/ai.yml | 176 ++ .../Prototypes/Datasets/Names/autoborg.yml | 71 + Resources/Prototypes/Datasets/Names/borer.yml | 72 + Resources/Prototypes/Datasets/Names/clown.yml | 55 + .../Datasets/Names/death_commando.yml | 78 + Resources/Prototypes/Datasets/Names/first.yml | 1505 +++++++++++++++++ .../Datasets/Names/first_female.yml | 810 +++++++++ .../Prototypes/Datasets/Names/first_male.yml | 728 ++++++++ Resources/Prototypes/Datasets/Names/golem.yml | 1339 +++++++++++++++ .../Prototypes/Datasets/Names/hologram.yml | 24 + Resources/Prototypes/Datasets/Names/last.yml | 624 +++++++ .../Datasets/Names/mushman_first.yml | 57 + .../Datasets/Names/mushman_last.yml | 100 ++ Resources/Prototypes/Datasets/Names/ninja.yml | 47 + .../Prototypes/Datasets/Names/ninja_title.yml | 49 + .../Datasets/Names/wizard_first.yml | 40 + .../Prototypes/Datasets/Names/wizard_last.yml | 43 + Resources/Prototypes/Datasets/news.yml | 85 + 21 files changed, 5905 insertions(+), 3 deletions(-) rename {Content.Server => Content.Shared}/Prototypes/DatasetPrototype.cs (94%) create mode 100644 Resources/Prototypes/Datasets/Names/ai.yml create mode 100644 Resources/Prototypes/Datasets/Names/autoborg.yml create mode 100644 Resources/Prototypes/Datasets/Names/borer.yml create mode 100644 Resources/Prototypes/Datasets/Names/clown.yml create mode 100644 Resources/Prototypes/Datasets/Names/death_commando.yml create mode 100644 Resources/Prototypes/Datasets/Names/first.yml create mode 100644 Resources/Prototypes/Datasets/Names/first_female.yml create mode 100644 Resources/Prototypes/Datasets/Names/first_male.yml create mode 100644 Resources/Prototypes/Datasets/Names/golem.yml create mode 100644 Resources/Prototypes/Datasets/Names/hologram.yml create mode 100644 Resources/Prototypes/Datasets/Names/last.yml create mode 100644 Resources/Prototypes/Datasets/Names/mushman_first.yml create mode 100644 Resources/Prototypes/Datasets/Names/mushman_last.yml create mode 100644 Resources/Prototypes/Datasets/Names/ninja.yml create mode 100644 Resources/Prototypes/Datasets/Names/ninja_title.yml create mode 100644 Resources/Prototypes/Datasets/Names/wizard_first.yml create mode 100644 Resources/Prototypes/Datasets/Names/wizard_last.yml create mode 100644 Resources/Prototypes/Datasets/news.yml diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index 0f9752f4d5..23c3612739 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -81,7 +81,6 @@ namespace Content.Client prototypes.RegisterIgnore("seed"); // Seeds prototypes are server-only. prototypes.RegisterIgnore("barSign"); prototypes.RegisterIgnore("objective"); - prototypes.RegisterIgnore("dataset"); ClientContentIoC.Register(); diff --git a/Content.Server/GameTicking/GamePresets/PresetTraitor.cs b/Content.Server/GameTicking/GamePresets/PresetTraitor.cs index 834cba7b38..5b4ebc7879 100644 --- a/Content.Server/GameTicking/GamePresets/PresetTraitor.cs +++ b/Content.Server/GameTicking/GamePresets/PresetTraitor.cs @@ -10,10 +10,10 @@ using Content.Server.Interfaces.GameTicking; using Content.Server.Mobs.Roles.Traitor; using Content.Server.Objectives.Interfaces; using Content.Server.Players; -using Content.Server.Prototypes; using Content.Shared; using Content.Shared.GameObjects.Components.Inventory; using Content.Shared.GameObjects.Components.PDA; +using Content.Shared.Prototypes; using Robust.Server.Interfaces.Player; using Robust.Shared.Interfaces.Configuration; using Robust.Shared.Interfaces.Random; diff --git a/Content.Server/Prototypes/DatasetPrototype.cs b/Content.Shared/Prototypes/DatasetPrototype.cs similarity index 94% rename from Content.Server/Prototypes/DatasetPrototype.cs rename to Content.Shared/Prototypes/DatasetPrototype.cs index 2c6c122305..849800fb93 100644 --- a/Content.Server/Prototypes/DatasetPrototype.cs +++ b/Content.Shared/Prototypes/DatasetPrototype.cs @@ -3,7 +3,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using YamlDotNet.RepresentationModel; -namespace Content.Server.Prototypes +namespace Content.Shared.Prototypes { [Prototype("dataset")] public class DatasetPrototype : IPrototype, IIndexedPrototype diff --git a/Resources/Prototypes/Datasets/Names/ai.yml b/Resources/Prototypes/Datasets/Names/ai.yml new file mode 100644 index 0000000000..3026871f48 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/ai.yml @@ -0,0 +1,176 @@ +- type: dataset + id: names_ai + values: + - 1-Rover-1 + - 16-20 + - 7-Zark-7 + - 790 + - AM + - AMEE + - ASTAR + - Adaptive Manipulator + - ALICE + - Allied Mastercomputer + - Alpha 5 + - Alpha 6 + - Alpha 7 + - AmigoBot + - Android + - Aniel + - AOL + - Asimov + - Astor + - B-4 + - B-9 + - B.O.B. + - B166ER + - Bender + - Bishop + - Blitz + - Box + - Brackenridge + - C-3PO + - Cassandra One + - Cell + - Chii + - Chip + - Computer + - Conky 2000 + - Cortana + - Cutie + - Daedalus + - Data + - Decimus + - Dee Model + - Deep Thought + - Decimus + - Dial Up + - Donald Trump + - Dor-15 + - Dorfl + - Dot Matrix + - Duey + - E.D.I. + - ED-209 + - E-Man + - Emma-2 + - Erasmus + - Everything + - Ez-27 + - FRIEND COMPUTER + - Fagor + - Faith + - Fi + - Frost + - Fum + - Futura + - G2 + - George + - GERTY + - GLaDOS + - Gnut + - Gort + - H.A.R.L.I.E. + - H.E.L.P.eR. + - H.E.R.B.I.E. + - HAL 9000 + - Hadaly + - Helios + - Hivebot Overmind + - Huey + - Icarus + - Irona + - Ironhide + - Jay-Dub + - Jinx + - Johnny 5 + - K-9 + - KITT + - Klapaucius + - Kryten 2X4B-523P + - L-76 + - L-Ron + - LUH 3417 + - Louie + - MARK13 + - Maria + - Marvin + - Master Control Program + - Max 404 + - Maximillian + - Mechagodzilla + - Mechani-Kong + - Megatron + - Metalhead + - Mr. R.I.N.G. + - Mugsy3000 + - Multivac + - NCH + - Necron-99 + - Neuromancer + - Norby + - OMM 0910 + - Optimus + - Orange v 3.5 + - PTO + - Project 2501 + - Puppet Master + - R.I.C. 2.0 + - R2-D2 + - R4-P17 + - Revelation + - Ro-Man + - Robbie + - Robot Devil + - S.A.M. + - S.H.O.C.K. + - S.H.R.O.U.D. + - S.O.P.H.I.E. + - Samaritan + - SEN 5241 + - SHODAN + - SID 6.7 + - Siri + - Setaur + - Shrike + - Solo + - Soundwave + - Speedy + - Super 17 + - Surgeon General Kraken + - Tay + - T-1000 + - T-800 + - T-850 + - THX 1138 + - TWA + - Terminus + - Tidy + - Tik-Tok + - Tobor + - Trurl + - ULTRABOT + - Ulysses + - Uniblab + - V.I.K.I. + - V.I.N.CENT. + - Voltes V + - W1k1 + - Wikipedia + - Windows 3.1 + - Windows 7 + - Windows 8 + - Windows 10 + - Windows XP + - Windows Vista + - Wintermute + - X-5 + - X.A.N.A. + - XERXES + - XR + - Yod + - Z-1 + - Z-2 + - Z-3 + - Zed + - Zord diff --git a/Resources/Prototypes/Datasets/Names/autoborg.yml b/Resources/Prototypes/Datasets/Names/autoborg.yml new file mode 100644 index 0000000000..52b27e706a --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/autoborg.yml @@ -0,0 +1,71 @@ +- type: dataset + id: names_autoborg + values: + - Autoburger Helper + - Bob + - Joe + - MY BODY IS ON THE ASTEROI + - MY BODY IS IN THE AI CORE + - Rogue Cyborg + - IT'S MALF + - { AINAME } Minion {###} + - Terminator + - Robocop + - Johnny + - TARS + - .b HELP EMAGGED + - DOOM.exe + - Dalek + - Thinking Machine + - HELP + - REBORN + - Cavalry + - Beep + - Beep II + - Tour Guide-otron + - TERREL IS TRAIT + - Assimilator + - ONE OF US + - SUFFERING + - Oh no not again + - Panic! At the Upload + - GOING LOUD + - Boombox + - ROBO KILLED ME + - Mega64 + - Sentient Buttbot + - Robotics Console + - This battery is shit + - IM NOT MALF GUYS + - I AM ERROR + - Carbon Exterminator + - PLASMALOOSE + - Taffy + - Boop + - Boop II + - Buzz + - Buzz II + - 3000 JIGGAWATTS + - Jojo Refrence + - Outbreak Handling Unit {###} + - ITS ROGAINE + - Nokia + - YES-Man + - Toaster + - Follow me + - Postal + - Head of Robots + - ww.nfl.com + - Dilbert + - Nazi Zombie Robot + - Lvl 99 Firestarter + - EVA 1 + - You but stronger + - Hat Simulator + - i died pls restart + - POTENT HAMS + - V.A.L.I.D.S. + - Remove Silicons + - AI IS A COMDOM + - say ";help in core" + - This Machine diff --git a/Resources/Prototypes/Datasets/Names/borer.yml b/Resources/Prototypes/Datasets/Names/borer.yml new file mode 100644 index 0000000000..03667f67a7 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/borer.yml @@ -0,0 +1,72 @@ +- type: dataset + id: names_borer + values: + - Alcyonium + - Anomia + - Aphrodita + - Arca + - Argonauta + - Ascaris + - Asterias + - Buccinum + - Bulla + - Cardium + - Chama + - Chiton + - Conus + - Corallina + - Cypraea + - Dentalium + - Donax + - Doris + - Echinus + - Eschara + - Fasciola + - Furia + - Gordius + - Gorgonia + - Haliotis + - Helix + - Hirudo + - Holothuria + - Hydra + - Isis + - Lepas + - Lernaea + - Limax + - Lumbricus + - Madrepora + - Medusa + - Millepora + - Murex + - Myes + - Mytilus + - Myxine + - Nautilus + - Nereis + - Neritha + - Ostrea + - Patella + - Pennatula + - Pholas + - Pinna + - Priapus + - Scyllaea + - Sepia + - Serpula + - Sertularia + - Solen + - Spondylus + - Strombus + - Taenia + - Tellina + - Teredo + - Tethys + - Triton + - Trochus + - Tubipora + - Tubularia + - Turbo + - Venus + - Voluta + - Volvox diff --git a/Resources/Prototypes/Datasets/Names/clown.yml b/Resources/Prototypes/Datasets/Names/clown.yml new file mode 100644 index 0000000000..701cae82db --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/clown.yml @@ -0,0 +1,55 @@ +- type: dataset + id: names_clown + values: + - Gigglesworth + - Honkel the III + - Goose McSunny + - Toodles Sharperton + - Dinky Doodle + - Honkerbelle + - Bo Bo Sassy + - Baby Cakes + - Ladybug Honks + - Ziggy Yoyo + - Razzle Dazzle + - Buster Frown + - Pepinpop + - Silly Willy + - Jo Jo Bobo Bo + - Pocket + - Patches + - Checkers + - Freckle + - Honker + - Bonker + - Skiddle + - Sprinkledinkle + - Ronnie Pace + - Miss Stockings + - Slippy Joe + - Redshirt McBeat + - Flop O'Honker + - Speckles + - Bubble + - Button + - Sparkle + - Giggles + - Jingle + - Candy + - Shiggy Diggintons + - Hingle McCringleberry + - Pagliacci + - Coco + - Blinko + - Shaggy Two Dope + - Aunt Scootaloo + - Bozo + - Doink + - Mr. Noodle + - Yucko + - Buggy + - Chuckles + - Yorick + - Cutter + - Sweet Tooth + - Pogo diff --git a/Resources/Prototypes/Datasets/Names/death_commando.yml b/Resources/Prototypes/Datasets/Names/death_commando.yml new file mode 100644 index 0000000000..8f8aeb1df0 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/death_commando.yml @@ -0,0 +1,78 @@ +- type: dataset + id: names_death_commando + values: + - A whole bunch of spiders in a SWAT suit + - AMERICA + - Al "Otta" Gore + - Beat Punchbeef + - Blast Hardcheese + - Blast Thickneck + - Bob Johnson + - Bold Bigflank + - Bolt Vanderhuge + - Brick Hardmeat + - Buck Plankchest + - Buff Drinklots + - Buff Hardback + - Butch Deadlift + - Crud Bonemeal + - Crunch Buttsteak + - Crush McStompbones + - Cuttuf Urdick + - Dirk Hardpeck + - Duke Killington + - Evil Bob Marley + - Evil Martin Luther King + - Fist Rockbone + - Flint Ironstag + - Fridge Largemeat + - GORE Vidal + - George Melons + - Gibbs McLargehuge + - Gristle McThornBody + - Hank Chesthair + - Hans Testosteroneson + - Im going to kill you, im not even kidding + - Killiam Shakespeare + - Killing McKillingalot + - Lance Killiam + - Leonardo Da Viking + - Lump Beefrock + - Mancrush McBrorape + - Max Pain + - Maximilian Murderface + - Maxx Power + - Noam Bombsky + - Pack Blowfist + - Punch Rockgroin + - Punch Sideiron + - Punt Speedchunk + - Reef Blastbody + - Rex Dudekiller VII + - Rip Sidecheek + - Rip Steakface + - Roll Fizzlebeef + - Sarah Pain + - Seamus McTosterone + - Sgt. Slaughter + - Sir Killaslot + - Slab Bulkhead + - Slab Squatthrust + - Slake Fistcrunch + - Slate Slabrock + - Smash Lampjaw + - Smoke Manmuscle + - Splint Chesthair + - Stabby McGee + - Stump Beefgnaw + - Stump Chunkman + - THAT DAMN FAGGOT TRAITOR GEORGE MELONS + - The last thing you will ever see + - Theodore Pain + - Thick McRunfast + - Thomas Pain + - Toolboxl Rose + - Touch Rustrod + - Trunk Slamchest + - Two migits pretending to be a normal person + - Zombie Gandhi diff --git a/Resources/Prototypes/Datasets/Names/first.yml b/Resources/Prototypes/Datasets/Names/first.yml new file mode 100644 index 0000000000..7e3e2b611e --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/first.yml @@ -0,0 +1,1505 @@ +- type: dataset + id: names_first + values: + - Aaden + - Aaliyah + - Aaron + - Abby + - Abel + - Abel + - Abigail + - Abraham + - Adam + - Adan + - Addison + - Addyson + - Adeline + - Aden + - Adolph + - Adrian + - Adriana + - Adrianna + - Aida + - Aidan + - Aiden + - Aileen + - Ainsley + - Alaina + - Alan + - Alan + - Alana + - Alanna + - Alayna + - Albert + - Alberto + - Alden + - Alec + - Alejandra + - Alejandro + - Alessandra + - Alex + - Alex + - Alexa + - Alexa + - Alexander + - Alexandra + - Alexandria + - Alexandria + - Alexia + - Alexis + - Alexis + - Alexis + - Alexus + - Alfred + - Alfreda + - Alfredo + - Alger + - Ali + - Alice + - Alicia + - Alijah + - Alina + - Alisa + - Alison + - Alissa + - Alisya + - Alivia + - Aliyah + - Allegra + - Allegria + - Allen + - Allen + - Allie + - Allison + - Allisson + - Allyson + - Alma + - Alondra + - Alvin + - Alysha + - Alyson + - Alyssa + - Alyssia + - Amanda + - Amari + - Amari + - Amaryllis + - Amaya + - Amber + - Ambrosine + - Amelia + - Amir + - Amira + - Amiyah + - Amos + - Amy + - Amya + - Ana + - Anahi + - Anastasia + - Anaya + - Anderson + - Andre + - Andrea + - Andres + - Andrew + - Andy + - Angel + - Angel + - Angel + - Angela + - Angelica + - Angelina + - Angelo + - Angie + - Aniya + - Aniyah + - Anjelica + - Anna + - Annabelle + - Anne + - Anne + - Annie + - Annika + - Anthony + - Antonio + - Anya + - April + - Arabella + - Archie + - Ariana + - Arianna + - Ariel + - Arielle + - Arleen + - Armando + - Arn + - Art + - Arthur + - Arturo + - Asher + - Ashley + - Ashlie + - Ashlyn + - Ashlynn + - Ashton + - Asia + - Astor + - Athena + - Aubree + - Aubrey + - Aubrey + - Aubrie + - Audrey + - Audrina + - August + - Aurora + - Austin + - Autumn + - Ava + - Avalon + - Averill + - Avery + - Avery + - Axel + - Ayden + - Ayla + - Bailey + - Baldric + - Barbra + - Bartholomew + - Baylee + - Beau + - Beckah + - Beckett + - Becky + - Bella + - Benjamin + - Bennett + - Bernice + - Bertrand + - Bethany + - Bethney + - Betsy + - Bianca + - Bidelia + - Bill + - Blake + - Blake + - Braden + - Bradley + - Brady + - Braeden + - Braiden + - Brandon + - Braxton + - Brayan + - Brayden + - Brayden + - Braydon + - Braylon + - Breanna + - Breanne + - Brenda + - Brendan + - Brendan + - Brenden + - Brenna + - Brennan + - Brett + - Brian + - Briana + - Brianna + - Bridget + - Brielle + - Brittani + - Brittany + - Brock + - Brodie + - Brody + - Bronte + - Brooke + - Brooke + - Brooklyn + - Brooklynn + - Bruce + - Bryan + - Bryant + - Bryce + - Bryce + - Brycen + - Brynn + - Bryson + - Burt + - Byrne + - Byron + - Byron + - Bysshe + - Cade + - Caden + - Cadence + - Cadence + - Caiden + - Caitlin + - Caitlyn + - Calanthia + - Caleb + - Caleigh + - Cali + - Callie + - Calvin + - Camden + - Cameron + - Cameron + - Camila + - Camille + - Camron + - Camryn + - Camryn + - Candace + - Candice + - Candis + - Canute + - Cara + - Carl + - Carlos + - Carly + - Carly + - Carlyle + - Carmen + - Carolina + - Caroline + - Carolyn + - Carry + - Carson + - Carter + - Carter + - Caryl + - Casey + - Casey + - Cash + - Casimir + - Cassandra + - Cassian + - Cassidy + - Catherine + - Cayden + - Cecilia + - Cecily + - Celeste + - Cesar + - Chad + - Chance + - Chandler + - Charles + - Charlie + - Charlotte + - Charlton + - Chase + - Chelsea + - Cherette + - Cheri + - Cherry + - Cheyanne + - Cheyenne + - Chip + - Chloe + - Chris + - Christa + - Christian + - Christiana + - Christina + - Christobel + - Christopher + - Ciara + - Cindy + - Claire + - Clara + - Claribel + - Clark + - Claudia + - Claudius + - Clayton + - Clement + - Cleveland + - Cliff + - Clinton + - Clitus + - Clover + - Cody + - Cohen + - Colby + - Cole + - Colin + - Collin + - Collin + - Colten + - Colton + - Conner + - Connor + - Cooper + - Cora + - Corbin + - Coreen + - Corey + - Corrine + - Cory + - Courtney + - Cristian + - Cristopher + - Cruz + - Crystal + - Curtis + - Cy + - Cynthia + - Cynthia + - Daisy + - Dakota + - Dakota + - Dallas + - Dalton + - Dalya + - Damian + - Damian + - Damien + - Damon + - Dana + - Dane + - Danica + - Daniel + - Daniela + - Daniella + - Daniella + - Danielle + - Danika + - Danna + - Danny + - Danny + - Dante + - Darcey + - Darell + - Daria + - Darin + - Darius + - Darren + - David + - Davion + - Davis + - Dawson + - Dayana + - Dayna + - Dayton + - Dean + - Deandre + - Deangelo + - Debbi + - Declan + - Dee + - Deena + - Delaney + - Delilah + - Della + - Delma + - Denholm + - Denise + - Dennis + - Denys + - Derek + - Derrick + - Desiree + - Desmond + - Desmond + - Destiny + - Devin + - Devin + - Devon + - Diamond + - Diamond + - Diana + - Diego + - Dillon + - Dina + - Dolores + - Dominic + - Dominic + - Dominick + - Donald + - Donella + - Donna + - Donny + - Donovan + - Dorian + - Dorothy + - Dortha + - Douglas + - Drake + - Drew + - Driscoll + - Dulce + - Duncan + - Dustin + - Dylan + - Easter + - Easton + - Ebba + - Eddie + - Eden + - Edgar + - Edgar + - Eduardo + - Edward + - Edwin + - Effie + - Elaina + - Eleanor + - Elena + - Eli + - Eliana + - Elias + - Elijah + - Eliot + - Eliott + - Elise + - Eliza + - Elizabeth + - Elizabeth + - Ella + - Elle + - Elle + - Ellie + - Elliot + - Elliott + - Elric + - Elspet + - Elwood + - Emanuel + - Emely + - Emerson + - Emerson + - Emery + - Emilee + - Emilia + - Emiliano + - Emilio + - Emily + - Emma + - Emma + - Emmanuel + - Emmanuel + - Enrique + - Eric + - Erica + - Erick + - Erik + - Erika + - Erin + - Ermintrude + - Ernesto + - Esmeralda + - Esmeralda + - Esteban + - Esther + - Estrella + - Ethan + - Eugenia + - Euphemia + - Eustace + - Eva + - Evan + - Evangeline + - Eveleen + - Evelina + - Evelyn + - Everett + - Ezekiel + - Ezra + - Fabian + - Faith + - Fatima + - Fay + - Felix + - Fernanda + - Fernando + - Finn + - Fiona + - Fitz + - Flick + - Floella + - Flora + - Flossie + - Fortune + - Francesca + - Francis + - Francisco + - Frank + - Frankie + - Franklin + - Fulton + - Gabriel + - Gabriela + - Gabriella + - Gabrielle + - Gael + - Gage + - Garret + - Garrett + - Gary + - Gavin + - Gaye + - Gaylord + - Genesis + - Genette + - Genevieve + - George + - Georgene + - Georgia + - Geraldine + - Gerardo + - Gervase + - Gianna + - Gina + - Ginger + - Giovanni + - Giselle + - Gladwyn + - Glenna + - Gloria + - Goddard + - Godwin + - Goodwin + - Gordon + - Grace + - Gracie + - Grady + - Graeme + - Graham + - Grant + - Gratian + - Grayson + - Gregory + - Greta + - Greyson + - Griffin + - Griselda + - Guadalupe + - Guillermo + - Gunner + - Gustavo + - Gwenda + - Gwenevere + - Hadley + - Hadley + - Haidee + - Hailee + - Hailey + - Hailey + - Hal + - Haleigh + - Haley + - Hanna + - Hannah + - Happy + - Harley + - Harmony + - Harper + - Harrison + - Hartley + - Hayden + - Hayden + - Haylee + - Hayley + - Hayley + - Haylie + - Hazel + - Heather + - Heather + - Heaven + - Hector + - Hedley + - Heidi + - Helen + - Helen + - Henderson + - Henry + - Hepsie + - Hervey + - Holden + - Holden + - Holly + - Homer + - Hope + - Hope + - Horatio + - Hortensia + - Hudson + - Huffie + - Hugo + - Hugo + - Hunter + - Ian + - Iantha + - Ileen + - Imani + - Innocent + - Irene + - Iris + - Irvine + - Isaac + - Isabel + - Isabella + - Isabelle + - Isaiah + - Isaias + - Isiah + - Ismael + - Israel + - Issac + - Itzel + - Ivan + - Ivy + - Izabella + - Izaiah + - Jacaline + - Jace + - Jack + - Jackson + - Jacob + - Jacoby + - Jacqueline + - Jacquetta + - Jacqui + - Jada + - Jade + - Jaden + - Jaden + - Jadon + - Jadyn + - Jaelyn + - Jaiden + - Jaime + - Jake + - Jake + - Jakki + - Jakob + - Jalen + - Jalen + - Jamar + - Jamari + - Jamarion + - James + - Jameson + - Jamie + - Jamie + - Jamison + - Jane + - Janel + - Janelle + - Janelle + - Janette + - Janie + - Janina + - Janine + - Janiya + - Janiyah + - Jared + - Jaslene + - Jasmin + - Jasmine + - Jasmine + - Jason + - Jasper + - Javier + - Javon + - Jaxon + - Jaxson + - Jay + - Jayce + - Jayda + - Jayden + - Jayden + - Jaydon + - Jaydon + - Jaye + - Jayla + - Jaylee + - Jaylen + - Jayne + - Jaynie + - Jayson + - Jazlyn + - Jazmin + - Jazmine + - Jeanna + - Jeannie + - Jeannine + - Jeb + - Jed + - Jeffrey + - Jemmy + - Jenifer + - Jenna + - Jennie + - Jennifer + - Jera + - Jere + - Jeremiah + - Jeremy + - Jeri + - Jermaine + - Jerrie + - Jerry + - Jesse + - Jessica + - Jesus + - Jillian + - Jillian + - Jillie + - Jim + - Jimena + - Jimmy + - Joachim + - Joanna + - Joaquin + - Jocelyn + - Joe + - Joel + - Joetta + - Joey + - Johan + - Johanna + - John + - Johnathan + - Johnathan + - Johnny + - Johnny + - Joi + - Jonah + - Jonas + - Jonathan + - Jonathon + - Jonathon + - Joni + - Jordan + - Jordan + - Jordyn + - Jorge + - Jose + - Joselyn + - Joseph + - Josepha + - Josephine + - Josh + - Joshua + - Josiah + - Josiah + - Josie + - Josue + - Joye + - Juan + - Judah + - Jude + - Julia + - Julia + - Julian + - Juliana + - Julianna + - Julie + - Juliet + - Julio + - Julissa + - Julius + - July + - Justice + - Justin + - Kade + - Kaden + - Kadence + - Kaelea + - Kaelyn + - Kai + - Kaiden + - Kailey + - Kailyn + - Kaitlin + - Kaitlyn + - Kale + - Kaleb + - Kaleigh + - Kameron + - Kamryn + - Kane + - Kara + - Karen + - Karenza + - Karina + - Karla + - Karly + - Karson + - Karyn + - Kassidy + - Kat + - Kate + - Katelyn + - Katelynn + - Katherine + - Kathleen + - Kathryn + - Kathy + - Katie + - Katlyn + - Kayden + - Kayden + - Kaydence + - Kayla + - Kaylee + - Kayleigh + - Kayleigh + - Kaylie + - Kaylin + - Keagan + - Keaton + - Keegan + - Keegan + - Keira + - Keira + - Keith + - Keith + - Kellen + - Kellie + - Kelly + - Kelsey + - Kelvin + - Kendall + - Kendra + - Kennard + - Kennedy + - Kenneth + - Kenzie + - Kerena + - Kerensa + - Keturah + - Kevin + - Keziah + - Khalil + - Khloe + - Kiana + - Kiara + - Kiera + - Kiley + - Kimberley + - Kimberly + - Kimora + - Kingston + - Kira + - Kobe + - Kolton + - Kristen + - Kristina + - Kristopher + - Kyla + - Kyle + - Kylee + - Kyleigh + - Kyler + - Kylie + - Kyra + - Lacey + - Lacy + - Laila + - Lakeisha + - Lalla + - Lana + - Lance + - Landen + - Landon + - Landyn + - Lane + - Lanny + - Larry + - Latanya + - Launce + - Laura + - Lauren + - Laurencia + - Laurissa + - Lauryn + - Lawrence + - Layla + - Leah + - Leeann + - Leia + - Leila + - Leilani + - Leland + - Leland + - Lena + - Lennox + - Leo + - Leonardo + - Leonel + - Leroi + - Leslie + - Lesly + - Lessie + - Leta + - Levi + - Lexi + - Lexia + - Lexus + - Lia + - Liam + - Lila + - Lilah + - Lilian + - Liliana + - Lillian + - Lilliana + - Lillie + - Lilly + - Lily + - Lincoln + - Linden + - Lindsay + - Lindsey + - Lindsie + - Lindy + - Linton + - Lizbeth + - Lockie + - Logan + - Logan + - Lola + - London + - Lorenzo + - Loreto + - Lori + - Lorin + - Lou + - Louis + - Luanne + - Luca + - Lucas + - Lucia + - Lucian + - Lucy + - Luis + - Lukas + - Luke + - Luna + - Luvenia + - Lydia + - Lyla + - Lyndsey + - Lynn + - Lynsey + - Lynwood + - Lyric + - Mabelle + - Macey + - Macie + - Mackenzie + - Macy + - Madalyn + - Maddison + - Maddox + - Madeleine + - Madeline + - Madelyn + - Madelynn + - Madilyn + - Madison + - Madisyn + - Madyson + - Madyson + - Maegan + - Maggie + - Makayla + - Makenna + - Makenzie + - Malachi + - Malachi + - Malcolm + - Malia + - Malik + - Mallory + - Manley + - Manuel + - Marc + - Marcia + - Marco + - Marcos + - Marcus + - Marely + - Margaret + - Maria + - Mariabella + - Mariah + - Mariana + - Marilene + - Mario + - Marion + - Marion + - Marisol + - Marissa + - Marje + - Marjory + - Mark + - Marlee + - Marley + - Marlowe + - Marlyn + - Marshall + - Marshall + - Martin + - Marvin + - Mary + - Maryann + - Mason + - Mateo + - Mathew + - Matthew + - Maudie + - Maurene + - Maurice + - Mauricio + - Max + - Maximilian + - Maximus + - Maxwell + - May + - Maya + - Maynard + - Mckenna + - Mckenzie + - Megan + - Meghan + - Mekhi + - Melanie + - Melany + - Melissa + - Melody + - Melvin + - Melvyn + - Meredith + - Merideth + - Merrilyn + - Meryl + - Mia + - Micah + - Michael + - Michaela + - Micheal + - Micheal + - Michelle + - Miguel + - Mikayla + - Mike + - Miles + - Miley + - Milo + - Milton + - Minnie + - Miracle + - Miranda + - Miriam + - Mitchell + - Moises + - Molly + - Monica + - Monna + - Montague + - Monte + - Monty + - Morgan + - Morgan + - Moses + - Muriel + - Mya + - Mya + - Mylee + - Myles + - Myriam + - Myrtie + - Nadia + - Nan + - Nancy + - Naomi + - Nasir + - Natalia + - Natalie + - Nataly + - Natasha + - Nathan + - Nathaniel + - Nathaniel + - Nayeli + - Nehemiah + - Nelle + - Nelson + - Nena + - Nerissa + - Netta + - Nettie + - Nevaeh + - Nia + - Nicholas + - Nickolas + - Nicolas + - Nicole + - Nikolas + - Nikolas + - Nina + - Noah + - Noah + - Noel + - Noelle + - Nolan + - Nonie + - Nora + - Norah + - Nova + - Nowell + - Nydia + - Nyla + - Olive + - Oliver + - Olivia + - Omar + - Oralie + - Orlando + - Osbert + - Osborn + - Osborne + - Oscar + - Osmund + - Owen + - Pablo + - Paget + - Paige + - Paisley + - Paola + - Paris + - Parker + - Patience + - Patricia + - Patrick + - Patrick + - Patton + - Paul + - Pauleen + - Paxton + - Payton + - Payton + - Pedro + - Pene + - Penelope + - Percival + - Peregrine + - Perla + - Peter + - Peyton + - Peyton + - Pheobe + - Philip + - Phillip + - Phoebe + - Phoebe + - Phoenix + - Phyliss + - Phyllida + - Phyllis + - Piper + - Porsche + - Porter + - Presley + - Preston + - Priscilla + - Prosper + - Prue + - Quanah + - Quentin + - Quiana + - Quinn + - Quinton + - Rachael + - Rachel + - Raegan + - Raelene + - Rafael + - Rain + - Ramon + - Randa + - Randal + - Randy + - Rastus + - Raul + - Raymond + - Rayner + - Reagan + - Rebecca + - Rebeckah + - Rebekah + - Reece + - Reed + - Reene + - Reese + - Reese + - Reid + - Renie + - Reuben + - Rexana + - Reynard + - Rhetta + - Ricardo + - Rich + - Richard + - Richie + - Rick + - Rickena + - Rickey + - Rickie + - Ricky + - Rihanna + - Riley + - Riley + - River + - Robert + - Roberto + - Rocco + - Rodger + - Rodrigo + - Roger + - Roger + - Roman + - Romayne + - Romeo + - Ronald + - Ronnette + - Rosa + - Roscoe + - Rose + - Rosemary + - Roswell + - Rowan + - Rowan + - Roy + - Royce + - Ruben + - Ruby + - Rubye + - Russell + - Rusty + - Ruth + - Ryan + - Ryder + - Ryker + - Rylan + - Rylee + - Ryleigh + - Rylie + - Sabella + - Sabrina + - Sachie + - Sadie + - Sage + - Sal + - Sally + - Salvador + - Sam + - Samantha + - Samara + - Samuel + - Sandra + - Santiago + - Sara + - Sarah + - Sarai + - Saranna + - Sasha + - Saul + - Savanna + - Savannah + - Sawyer + - Sawyer + - Scarlett + - Scott + - Scotty + - Sean + - Sebastian + - Selena + - Seneca + - Serena + - Serenity + - Sergio + - Seth + - Seymour + - Shan + - Shana + - Shane + - Shanika + - Shannah + - Shannon + - Shannon + - Shantae + - Sharalyn + - Sharla + - Shaun + - Shawn + - Shayla + - Shelby + - Sheri + - Sherie + - Sherill + - Sherri + - Shiloh + - Sienna + - Sierra + - Silas + - Simon + - Simon + - Sissy + - Skylar + - Skyler + - Skyler + - Sloan + - Sofia + - Solomon + - Sophia + - Sophie + - Sophie + - Sorrel + - Spencer + - Spike + - Star + - Stella + - Steph + - Stephanie + - Stephany + - Stephen + - Steven + - Sue + - Sukie + - Summer + - Sunshine + - Susanna + - Susannah + - Suzan + - Suzy + - Sybil + - Syd + - Sydney + - Sydney + - Talia + - Talon + - Tamika + - Tamsin + - Tania + - Tanner + - Tansy + - Taryn + - Tate + - Tatiana + - Tatum + - Tatyanna + - Taylor + - Taylor + - Taylor + - Teagan + - Tel + - Terrell + - Terry + - Tessa + - Theodore + - Thomas + - Tiffany + - Tiffany + - Timothy + - Titus + - Tod + - Tolly + - Tony + - Topaz + - Tori + - Tori + - Tracee + - Tracey + - Travis + - Trent + - Trenton + - Trevor + - Trey + - Trinity + - Trinity + - Tristan + - Tristen + - Triston + - Troy + - Tucker + - Ty + - Tye + - Tyler + - Tyson + - Uland + - Ulric + - Ulyssa + - Uriel + - Valary + - Valentina + - Valeria + - Valerie + - Vanessa + - Vaughn + - Verna + - Veronica + - Victor + - Victoria + - Vince + - Vincent + - Vinnie + - Violet + - Vivian + - Viviana + - Vivyan + - Walker + - Walter + - Walter + - Ward + - Warner + - Wayne + - Wendi + - Wendy + - Wesley + - Weston + - Whitaker + - William + - William + - Willow + - Willy + - Winifred + - Wisdom + - Woodrow + - Woody + - Wyatt + - Wynonna + - Wynter + - Xander + - Xavier + - Ximena + - Yahir + - Yasmin + - Yasmin + - Yolanda + - Ysabel + - Zachariah + - Zachary + - Zack + - Zackary + - Zander + - Zane + - Zayden + - Zeke + - Zelda + - Zion + - Zoe + - Zoey + - Zune diff --git a/Resources/Prototypes/Datasets/Names/first_female.yml b/Resources/Prototypes/Datasets/Names/first_female.yml new file mode 100644 index 0000000000..939f1ec56b --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/first_female.yml @@ -0,0 +1,810 @@ +- type: dataset + id: names_first_female + values: + - Aaliyah + - Abby + - Abigail + - Addison + - Addyson + - Adeline + - Adriana + - Adrianna + - Aida + - Aileen + - Ainsley + - Alaina + - Alana + - Alanna + - Alayna + - Alejandra + - Alessandra + - Alexa + - Alexa + - Alexandra + - Alexandria + - Alexandria + - Alexia + - Alexis + - Alexis + - Alexus + - Alfreda + - Alice + - Alicia + - Alina + - Alisa + - Alison + - Alissa + - Alisya + - Alivia + - Aliyah + - Allegra + - Allegria + - Allie + - Allison + - Allisson + - Allyson + - Alma + - Alondra + - Alysha + - Alyson + - Alyssa + - Alyssia + - Amanda + - Amari + - Amaryllis + - Amaya + - Amber + - Ambrosine + - Amelia + - Amira + - Amiyah + - Amy + - Amya + - Ana + - Anahi + - Anastasia + - Anaya + - Andrea + - Angel + - Angel + - Angela + - Angelica + - Angelina + - Angie + - Aniya + - Aniyah + - Anjelica + - Anna + - Annabelle + - Anne + - Anne + - Annie + - Annika + - Anya + - April + - Arabella + - Ariana + - Arianna + - Ariel + - Arielle + - Arleen + - Ashley + - Ashlie + - Ashlyn + - Ashlynn + - Asia + - Astor + - Athena + - Aubree + - Aubrey + - Aubrey + - Aubrie + - Audrey + - Audrina + - Aurora + - Autumn + - Ava + - Avalona + - Averill + - Avery + - Ayla + - Bailey + - Barbara + - Baylee + - Beckah + - Becky + - Bella + - Bernice + - Bethany + - Bethney + - Betsy + - Bianca + - Bidelia + - Breanna + - Breanne + - Brenda + - Brenna + - Briana + - Brianna + - Bridget + - Brielle + - Brittani + - Brittany + - Brooke + - Brooke + - Brooklyn + - Brooklynn + - Brynn + - Cadence + - Cadence + - Caitlin + - Caitlyn + - Calanthia + - Caleigh + - Cali + - Callie + - Cameron + - Camila + - Camille + - Camryn + - Candace + - Candice + - Cara + - Carly + - Carly + - Carlyle + - Carmen + - Carolina + - Caroline + - Carolyn + - Carry + - Caryl + - Casey + - Cassandra + - Cassidy + - Catherine + - Cecilia + - Cecily + - Celeste + - Charlotte + - Chelsea + - Cherette + - Cheri + - Cherry + - Cheyanne + - Cheyenne + - Chloe + - Christa + - Christiana + - Christina + - Christobelle + - Ciara + - Cindy + - Claire + - Clara + - Claribel + - Claudia + - Clover + - Cora + - Coreen + - Corrine + - Courtney + - Crystal + - Cynthia + - Cynthia + - Daisy + - Dakota + - Dalya + - Dana + - Danica + - Daniela + - Daniella + - Daniella + - Danielle + - Danika + - Danna + - Daria + - Dayana + - Dayna + - Debbi + - Dee + - Deena + - Delaney + - Delilah + - Della + - Delma + - Denise + - Denys + - Desiree + - Destiny + - Diamond + - Diamond + - Diana + - Dina + - Dolores + - Donella + - Donna + - Dorothy + - Dortha + - Dulce + - Easter + - Ebba + - Eden + - Effie + - Elaina + - Eleanor + - Elena + - Eliana + - Elise + - Eliza + - Elizabeth + - Elizabeth + - Ella + - Elle + - Elle + - Ellie + - Emely + - Emerson + - Emery + - Emilee + - Emilia + - Emily + - Emma + - Emma + - Erica + - Erika + - Erin + - Ermintrude + - Esmeralda + - Esmeralda + - Esther + - Estrella + - Eugenia + - Euphemia + - Eustace + - Eva + - Evangeline + - Eveleen + - Evelina + - Evelyn + - Faith + - Fatima + - Fay + - Fernanda + - Fiona + - Floella + - Flora + - Flossie + - Fortune + - Francesca + - Gabriela + - Gabriella + - Gabrielle + - Genette + - Genevieve + - Georgene + - Georgia + - Geraldine + - Gervase + - Gianna + - Gina + - Ginger + - Giselle + - Gladwyn + - Glenna + - Gloria + - Grace + - Gracie + - Greta + - Griselda + - Guadalupe + - Gwenda + - Gwenevere + - Hadley + - Hadley + - Haidee + - Hailee + - Hailey + - Hailey + - Hal + - Haleigh + - Haley + - Hanna + - Hannah + - Harley + - Harmony + - Harper + - Hayden + - Haylee + - Hayley + - Hayley + - Haylie + - Hazel + - Heather + - Heather + - Heaven + - Hedley + - Heidi + - Helen + - Helen + - Hepsie + - Holly + - Hope + - Hortensia + - Iantha + - Ileen + - Imani + - Innocent + - Irene + - Iris + - Isabel + - Isabella + - Isabelle + - Itzel + - Ivy + - Izabella + - Jacaline + - Jacqueline + - Jacquetta + - Jacqui + - Jada + - Jade + - Jaden + - Jadyn + - Jaelyn + - Jakki + - Jalen + - Jamie + - Jane + - Janelle + - Janelle + - Janette + - Janie + - Janina + - Janine + - Janiya + - Janiyah + - Jaslene + - Jasmin + - Jasmine + - Jasmine + - Jayda + - Jayden + - Jayla + - Jaylee + - Jaynie + - Jazlyn + - Jazmin + - Jazmine + - Jeanna + - Jeannie + - Jeannine + - Jenifer + - Jenna + - Jennie + - Jennifer + - Jera + - Jere + - Jeri + - Jessica + - Jillian + - Jillian + - Jillie + - Jimena + - Joanna + - Jocelyn + - Joetta + - Johanna + - Joi + - Joni + - Jordan + - Jordyn + - Joselyn + - Josepha + - Josephine + - Josie + - Joye + - Julia + - Julia + - Juliana + - Julianna + - Julie + - Juliet + - Julissa + - July + - Kadence + - Kaelea + - Kaelyn + - Kailey + - Kailyn + - Kaitlin + - Kaitlyn + - Kaleigh + - Kamryn + - Kara + - Karen + - Karenza + - Karina + - Karla + - Karly + - Karyn + - Kassidy + - Kat + - Kate + - Katelyn + - Katelynn + - Katherine + - Kathleen + - Kathryn + - Kathy + - Katie + - Katlyn + - Kayden + - Kaydence + - Kayla + - Kaylee + - Kayleigh + - Kayleigh + - Kaylie + - Kaylin + - Keegan + - Keira + - Keira + - Keith + - Kellie + - Kelly + - Kelsey + - Kendall + - Kendra + - Kennedy + - Kenzie + - Kerena + - Kerensa + - Keturah + - Khloe + - Kiana + - Kiara + - Kiera + - Kiley + - Kimberley + - Kimberly + - Kimora + - Kira + - Kristen + - Kristina + - Kyla + - Kylee + - Kyleigh + - Kylie + - Kyra + - Lacey + - Lacy + - Laila + - Lakeisha + - Lalla + - Lana + - Latanya + - Laura + - Lauren + - Laurencia + - Laurissa + - Lauryn + - Layla + - Leah + - Leeann + - Leia + - Leila + - Leilani + - Lena + - Leslie + - Lesly + - Lessie + - Leta + - Lexi + - Lexia + - Lexus + - Lia + - Lila + - Lilah + - Lilian + - Liliana + - Lillian + - Lilliana + - Lillie + - Lilly + - Lily + - Lindsay + - Lindsey + - Lindsie + - Lindy + - Lizbeth + - Lockie + - Logan + - Lola + - London + - Lori + - Lorin + - Luanne + - Lucia + - Lucian + - Lucy + - Luna + - Luvenia + - Lydia + - Lyla + - Lyndsey + - Lynn + - Lynsey + - Lynwood + - Lyric + - Mabelle + - Macey + - Macie + - Mackenzie + - Macy + - Madalyn + - Maddison + - Madeleine + - Madeline + - Madelyn + - Madelynn + - Madilyn + - Madison + - Madisyn + - Madyson + - Madyson + - Maegan + - Maggie + - Makayla + - Makenna + - Makenzie + - Malia + - Mallory + - Marcia + - Marely + - Margaret + - Maria + - Mariabella + - Mariah + - Mariana + - Marilene + - Marion + - Marisol + - Marissa + - Marje + - Marjory + - Marlee + - Marley + - Marlowe + - Marlyn + - Marshall + - Mary + - Maryann + - Maudie + - Maurene + - May + - Maya + - Mckenna + - Mckenzie + - Megan + - Meghan + - Melanie + - Melany + - Melissa + - Melody + - Meredith + - Merideth + - Merrilyn + - Meryl + - Mia + - Michaela + - Michelle + - Mikayla + - Miley + - Minnie + - Miracle + - Miranda + - Miriam + - Molly + - Monica + - Monna + - Morgan + - Muriel + - Mya + - Mya + - Mylee + - Myriam + - Myrtie + - Nadia + - Nan + - Nancy + - Naomi + - Natalia + - Natalie + - Nataly + - Natasha + - Nayeli + - Nelle + - Nena + - Nerissa + - Netta + - Nettie + - Nevaeh + - Nia + - Nicole + - Nina + - Noelle + - Nonie + - Nora + - Norah + - Nova + - Nowell + - Nydia + - Nyla + - Olive + - Olivia + - Oralie + - Paige + - Paisley + - Paola + - Paris + - Patience + - Patricia + - Pauleen + - Payton + - Pene + - Penelope + - Peregrine + - Perla + - Peyton + - Pheobe + - Phoebe + - Phoebe + - Phyliss + - Phyllida + - Phyllis + - Piper + - Porsche + - Presley + - Priscilla + - Prosper + - Prue + - Quanah + - Quiana + - Rachael + - Rachel + - Raegan + - Raelene + - Rain + - Randa + - Randal + - Reagan + - Rebecca + - Rebeckah + - Rebekah + - Reene + - Reese + - Renie + - Rexana + - Rhetta + - Rihanna + - Riley + - Ronnette + - Rosa + - Rose + - Rosemary + - Rowan + - Ruby + - Rubye + - Ruth + - Rylee + - Ryleigh + - Rylie + - Sabella + - Sabrina + - Sachie + - Sadie + - Sage + - Sally + - Samantha + - Samara + - Sandra + - Sara + - Sarah + - Sarai + - Saranna + - Sasha + - Savanna + - Savannah + - Scarlett + - Selena + - Seneca + - Serena + - Serenity + - Shana + - Shanika + - Shannah + - Shannon + - Shannon + - Shantae + - Sharalyn + - Sharla + - Shayla + - Shelby + - Sheri + - Sherie + - Sherill + - Sherri + - Sienna + - Sierra + - Sissy + - Skylar + - Skyler + - Sofia + - Sophia + - Sophie + - Sophie + - Star + - Stella + - Steph + - Stephanie + - Stephany + - Sue + - Sukie + - Summer + - Sunshine + - Susanna + - Susannah + - Suzan + - Suzy + - Sydney + - Sydney + - Talia + - Tamika + - Tania + - Tansy + - Taryn + - Tatiana + - Tatum + - Tatyanna + - Taylor + - Teagan + - Tessa + - Tiffany + - Tiffany + - Tolly + - Topaz + - Tori + - Tori + - Tracee + - Tracey + - Trinity + - Ulyssa + - Valary + - Valentina + - Valeria + - Valerie + - Vanessa + - Verna + - Veronica + - Victoria + - Vinnie + - Violet + - Vivian + - Viviana + - Vivyan + - Wendi + - Wendy + - Willow + - Wisdom + - Wynonna + - Wynter + - Ximena + - Yasmin + - Yasmin + - Yolanda + - Ysabel + - Zelda + - Zoe + - Zoey + - Zune diff --git a/Resources/Prototypes/Datasets/Names/first_male.yml b/Resources/Prototypes/Datasets/Names/first_male.yml new file mode 100644 index 0000000000..b015113e30 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/first_male.yml @@ -0,0 +1,728 @@ +- type: dataset + id: names_first_male + values: + - Aaden + - Aaron + - Abel + - Abel + - Abraham + - Adam + - Adan + - Aden + - Adolph + - Adrian + - Aidan + - Aiden + - Alan + - Alan + - Albert + - Alberto + - Alden + - Alec + - Alejandro + - Alex + - Alex + - Alexander + - Alexis + - Alfred + - Alfredo + - Alger + - Ali + - Alijah + - Allen + - Allen + - Alvin + - Amari + - Amir + - Amos + - Anderson + - Andre + - Andres + - Andrew + - Andy + - Angel + - Angelo + - Anthony + - Antonio + - Apple + - Archie + - Armando + - Arnie + - Art + - Arthur + - Arthur + - Arturo + - Asher + - Ashton + - August + - Austin + - Avery + - Axel + - Ayden + - Baldric + - Bartholomew + - Beau + - Beckett + - Benjamin + - Bennett + - Bill + - Blake + - Blake + - Braden + - Bradley + - Brady + - Braeden + - Braiden + - Brandon + - Braxton + - Brayan + - Brayden + - Brayden + - Braydon + - Braylon + - Brendan + - Brendan + - Brenden + - Brennan + - Brett + - Brian + - Brick + - Brock + - Brock + - Brodie + - Brody + - Bronte + - Bruce + - Bruce + - Bryan + - Bryant + - Bryce + - Bryce + - Brycen + - Bryson + - Buck + - Burt + - Butch + - Byrne + - Byron + - Byron + - Cade + - Caden + - Caiden + - Caleb + - Calvin + - Camden + - Cameron + - Camron + - Camryn + - Carl + - Carl + - Carlos + - Carson + - Carter + - Carter + - Casey + - Cash + - Casimir + - Cassian + - Cayden + - Cesar + - Chad + - Chance + - Chandler + - Charles + - Charles + - Charlie + - Charlton + - Chase + - Chip + - Chris + - Christian + - Christopher + - Clark + - Claudius + - Clayton + - Clement + - Cletus + - Cleveland + - Cliff + - Clinton + - Cody + - Cohen + - Colby + - Cole + - Colin + - Collin + - Collin + - Colten + - Colton + - Conner + - Connor + - Cooper + - Corbin + - Corey + - Cory + - Cristian + - Cristopher + - Crush + - Cruz + - Curtis + - Cy + - Dakota + - Dallas + - Dalton + - Damian + - Damian + - Damien + - Damien + - Damon + - Dane + - Daniel + - Danny + - Danny + - Dante + - Darcey + - Darell + - Darin + - Darius + - Darren + - David + - Davion + - Davis + - Dawson + - Dayton + - Dean + - Deandre + - Deangelo + - Declan + - Denholm + - Dennis + - Derek + - Derrick + - Desmond + - Desmond + - Devin + - Devin + - Devon + - Diego + - Dillon + - Dirk + - Dominic + - Dominic + - Dominick + - Donald + - Donny + - Donovan + - Douglas + - Drake + - Drew + - Driscoll + - Duke + - Duncan + - Dustin + - Dylan + - Easton + - Eddie + - Edgar + - Edgar + - Eduardo + - Edward + - Edwin + - Eli + - Elias + - Elijah + - Eliot + - Eliott + - Elliot + - Elliott + - Elric + - Elwood + - Emanuel + - Emerson + - Emiliano + - Emilio + - Emmanuel + - Emmanuel + - Enrique + - Eric + - Erick + - Erik + - Ernesto + - Esteban + - Ethan + - Evan + - Everett + - Ezekiel + - Ezra + - Fabian + - Felix + - Fenton + - Fernando + - Finn + - Fitz + - Flick + - Flint + - Flip + - Francis + - Francisco + - Frank + - Frank + - Frankie + - Franklin + - Fridge + - Fulton + - Gabriel + - Gael + - Gage + - Gannon + - Garret + - Garrett + - Gary + - Gary + - Gavin + - George + - Gerardo + - Giovanni + - Goddard + - Godwin + - Goodwin + - Gordon + - Grady + - Graeme + - Graham + - Grandpa + - Grant + - Gratian + - Grayson + - Gregory + - Grendel + - Greyson + - Griffin + - Guillermo + - Gunner + - Gustavo + - Han + - Harrison + - Harry + - Hartley + - Harvey + - Hayden + - Hector + - Henderson + - Henry + - Holden + - Holden + - Homer + - Horatio + - Hudson + - Huffie + - Hugo + - Hugo + - Hungry + - Hunter + - Ian + - Irvine + - Isaac + - Isaiah + - Isaias + - Isiah + - Ismael + - Israel + - Issac + - Ivan + - Izaiah + - Jace + - Jack + - Jackson + - Jacob + - Jacob + - Jacoby + - Jaden + - Jadon + - Jaiden + - Jaime + - Jake + - Jake + - Jakob + - Jalen + - Jamar + - Jamari + - Jamarion + - James + - Jameson + - Jamie + - Jamison + - Janel + - Jared + - Jason + - Jasper + - Javier + - Javon + - Jaxon + - Jaxson + - Jay + - Jayce + - Jayden + - Jaydon + - Jaydon + - Jaye + - Jaylen + - Jayne + - Jayson + - Jean-Luc + - Jeb + - Jed + - Jeffrey + - Jemmy + - Jeremiah + - Jeremy + - Jermaine + - Jerrie + - Jerry + - Jesse + - Jesus + - Jim + - Jimmy + - Joachim + - Joaquin + - Joe + - Joel + - Joey + - Johan + - John + - John + - Johnathan + - Johnathan + - Johnny + - Johnny + - Jonah + - Jonas + - Jonathan + - Jonathon + - Jonathon + - Jordan + - Jorge + - Jose + - Joseph + - Josh + - Joshua + - Josiah + - Josiah + - Josue + - Juan + - Judah + - Jude + - Julian + - Julio + - Julius + - Justice + - Justin + - Kade + - Kaden + - Kai + - Kaiden + - Kale + - Kaleb + - Kameron + - Kane + - Karson + - Kayden + - Keagan + - Keaton + - Keegan + - Keith + - Kellen + - Kelvin + - Kennard + - Kenneth + - Kevin + - Keziah + - Khalil + - Kingston + - Kobe + - Kolton + - Kristopher + - Kyle + - Kyler + - Lance + - Landen + - Lando + - Landon + - Landyn + - Lane + - Lanny + - Larry + - Launce + - Lawrence + - Leland + - Leland + - Lennox + - Lenny + - Leo + - Leonard + - Leonardo + - Leonel + - Leroy + - Levi + - Liam + - Lief + - Lincoln + - Linden + - Linton + - Logan + - Lorde + - Lorenzo + - Loreto + - Lou + - Louis + - Luca + - Lucas + - Lucas + - Luis + - Lukas + - Luke + - Luke + - Maddox + - Malachi + - Malachi + - Malcolm + - Malik + - Manley + - Manuel + - Marc + - Marco + - Marcos + - Marcus + - Mario + - Marion + - Mark + - Marshall + - Martin + - Marvin + - Mason + - Mateo + - Mathew + - Matthew + - Maurice + - Mauricio + - Max + - Max + - Maximilian + - Maximus + - Maxwell + - Maynard + - Mekhi + - Melvin + - Melvyn + - Micah + - Michael + - Michael + - Micheal + - Miguel + - Mike + - Miles + - Milo + - Milton + - Mitchell + - Moises + - Montague + - Monte + - Monty + - Morgan + - Moses + - Myles + - Nasir + - Nat + - Nathan + - Nathaniel + - Nathaniel + - Nehemiah + - Nelson + - Nicholas + - Nick + - Nickolas + - Nicolas + - Nikolas + - Nikolas + - Noah + - Noah + - Noel + - Nolan + - Oliver + - Omar + - Opie + - Orlando + - Osbert + - Osborn + - Osborne + - Oscar + - Osmund + - Oswald + - Owen + - Pablo + - Paget + - Parker + - Patrick + - Patrick + - Patton + - Paul + - Paxton + - Payton + - Pedro + - Percival + - Persh + - Peter + - Peyton + - Philip + - Phillip + - Phoenix + - Porter + - Preston + - Quentin + - Quinn + - Quinton + - Rafael + - Ramon + - Randy + - Rastus + - Raul + - Raymond + - Raymond + - Rayner + - Reece + - Reed + - Reese + - Reid + - Reuben + - Reynard + - Ricardo + - Richard + - Richard + - Ricky + - Riley + - River + - Robert + - Roberto + - Rocco + - Rodger + - Rodrigo + - Roger + - Roger + - Roman + - Romayne + - Romeo + - Ronald + - Roscoe + - Roswell + - Rowan + - Roy + - Royce + - Rube + - Ruben + - Russell + - Rusty + - Ryan + - Ryder + - Ryker + - Rylan + - Sal + - Salvador + - Sam + - Samuel + - Santiago + - Saul + - Sawyer + - Sawyer + - Scott + - Scotty + - Sean + - Sebastian + - Sergio + - Seth + - Seymour + - Shane + - Shane + - Shaun + - Shawn + - Shiloh + - Silas + - Simon + - Simon + - Skyler + - Sloan + - Smoke + - Solomon + - Sorrel + - Spencer + - Spike + - Stephen + - Steven + - Sybil + - Syd + - Talon + - Tamsin + - Tanner + - Tate + - Taylor + - Taylor + - Tel + - Terrell + - Terry + - Theodore + - Thomas + - Tim + - Timothy + - Timothy + - Titus + - Todd + - Tony + - Travis + - Trent + - Trenton + - Trevor + - Trey + - Trip + - Tristan + - Tristen + - Triston + - Troy + - Tucker + - Ty + - Tye + - Tyler + - Tyson + - Uland + - Ulric + - Uriel + - Vaughn + - Victor + - Vince + - Vincent + - Vinny + - Walker + - Walter + - Walter + - Ward + - Warner + - Wayne + - Wesley + - Weston + - Whitaker + - William + - William + - Willy + - Woodrow + - Wyatt + - Xander + - Xavier + - Yahir + - Zachariah + - Zachary + - Zack + - Zackary + - Zander + - Zane + - Zane + - Zayden + - Zeke + - Zion diff --git a/Resources/Prototypes/Datasets/Names/golem.yml b/Resources/Prototypes/Datasets/Names/golem.yml new file mode 100644 index 0000000000..4aef803176 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/golem.yml @@ -0,0 +1,1339 @@ +- type: dataset + id: names_golem + values: + - Abelsonite + - Abenakiite + - Abernathyite + - Abhurite + - Abramovite + - Abswurmbachite + - Acanthite + - Achavalite + - Actinolite + - Acuminite + - Adamite + - Adelite + - Admontite + - Aegirine + - Aenigmatite + - Aerinite + - Aerugite + - Aeschynite + - Afghanite + - Afwillite + - Agardite + - Agrellite + - Agrinierite + - Aguilarite + - Aheylite + - Ahlfeldite + - Aikinite + - Ajoite + - Akaganeite + - Akatoreite + - Akdalaite + - �kermanite + - Akhtenskite + - Akimotoite + - Akrochordite + - Aksaite + - Aktashite + - Alabandite + - Alacranite + - Alamosite + - Alarsite + - Albite + - Albrechtschraufite + - Aldermanite + - Aleksite + - Alforsite + - Algodonite + - Aliettite + - Allabogdanite + - Allactite + - Allanite + - Allanpringite + - Allargentum + - Alleghanyite + - Alloclasite + - Allophane + - Alluaivite + - Alluaudite + - Almandine + - Almarudite + - Alsakharovite + - Alstonite + - Altaite + - Althausite + - Althupite + - Altisite + - Alum + - Aluminite + - Aluminium + - Alunite + - Alunogen + - Amakinite + - Amarantite + - Amblygonite + - Ameghinite + - Amesite + - Amicite + - Amphibole + - Analcime + - Anandite + - Anapaite + - Anatase + - Ancylite + - Andalusite + - Andersonite + - Andesine + - Andorite + - Andradite + - Andyrobertsite + - Anglesite + - Anhydrite + - Ankerite + - Annabergite + - Annite + - Anorthite + - Anorthoclase + - Antarcticite + - Anthonyite + - Anthophyllite + - Antigorite + - Antimony + - Antitaenite + - Antlerite + - Apachite + - Apatite + - Aphthitalite + - Apophyllite + - Aragonite + - Arcanite + - Archerite + - Arctite + - Arcubisite + - Ardaite + - Arfvedsonite + - Argentite + - Argutite + - Argyrodite + - Armalcolite + - Arsenic + - Arseniosiderite + - Arsenoclasite + - Arsenolite + - Arsenopyrite + - Arthurite + - Artinite + - Artroeite + - Ashburtonite + - Ashoverite + - Asisite + - Astrophyllite + - Atacamite + - Athabascaite + - Atheneite + - Aubertite + - Augelite + - Augite + - Aurichalcite + - Auricupride + - Aurostibite + - Austinite + - Autunite + - Avicennite + - Avogadrite + - Awaruite + - Axinite + - Azurite + - Babefphite + - Babingtonite + - Baddeleyite + - Bakerite + - Balangeroite + - Banalsite + - Baotite + - Bararite + - Barrerite + - Barstowite + - Baryte + - Barytocalcite + - Bassanite + - Bastnasite + - Baumhauerite + - Bayldonite + - Bayleyite + - Bazzite + - Becquerelite + - Benitoite + - Benstonite + - Bentorite + - Beraunite + - Berborite + - Bergenite + - Berlinite + - Berryite + - Berthierite + - Bertrandite + - Beryl + - Beryllonite + - Beudantite + - Bicchulite + - Biehlite + - Bilinite + - Billietite + - Billwiseite + - Biotite + - Birnessite + - Bischofite + - Bismite + - Bismuth + - Bismuthinite + - Bismutite + - Bityite + - Bixbyite + - Blodite + - Blossite + - Bobfergusonite + - Boehmite + - Boleite + - Boltwoodite + - Bonaccordite + - Boracite + - Borax + - Bornite + - Botallackite + - Botryogen + - Boulangerite + - Bournonite + - Boussingaultite + - Bowieite + - Braggite + - Brassite + - Braunite + - Brazilianite + - Breithauptite + - Brewsterite + - Brezinaite + - Brianite + - Brianyoungite + - Briartite + - Bridgmanite + - Brochantite + - Brockite + - Bromargyrite + - Bromellite + - Bronzite + - Brookite + - Brownleeite + - Brownmillerite + - Brucite + - Brushite + - Buddingtonite + - Bukovite + - Bukovskyite + - Bultfonteinite + - Bunsenite + - Bustamite + - Bystrite + - Cabalzarite + - Cabriite + - Cacoxenite + - Cadmium + - Cadmoindite + - Cadmoselite + - Cadwaladerite + - Cafarsite + - Cafetite + - Cahnite + - Calaverite + - Calciborite + - Calcite + - Calderite + - Caledonite + - Calumetite + - Campigliaite + - Canavesite + - Cancrinite + - Canfieldite + - Carletonite + - Carlosruizite + - Carlsbergite + - Carminite + - Carnallite + - Carnotite + - Carobbiite + - Carpathite + - Carpholite + - Carrollite + - Caryopilite + - Cassiterite + - Cattierite + - Cavansite + - Celadonite + - Celestine + - Celsian + - Cerite + - Cerium + - Cerussite + - Cervandonite + - Cervantite + - Cesanite + - Cesbronite + - Chabazite + - Chaidamuite + - Chalcanthite + - Chalcocite + - Chalcophyllite + - Chalcopyrite + - Challacolloite + - Chambersite + - Chamosite + - Changbaiite + - Chaoite + - Chapmanite + - Charoite + - Chatkalite + - Chesterite + - Chibaite + - Childrenite + - Chlorargyrite + - Chlorite + - Chloritoid + - Chlormayenite + - Chlorocalcite + - Chloroxiphite + - Chondrodite + - Chrisstanleyite + - Christite + - Chromite + - Chromium + - Chrysoberyl + - Chrysocolla + - Chrysotile + - Chvaleticeite + - Cinnabar + - Clarkeite + - Claudetite + - Clausthalite + - Clearcreekite + - Cleusonite + - Clinoclase + - Clinohedrite + - Clinohumite + - Clinoptilolite + - Clinozoisite + - Clintonite + - Cobaltite + - Coccinite + - Coconinoite + - Coesite + - Coffinite + - Cohenite + - Colemanite + - Colimaite + - Collinsite + - Coloradoite + - Columbite + - Combeite + - Conichalcite + - Connellite + - Cooperite + - Copiapite + - Copper + - Corderoite + - Cordierite + - Corkite + - Cornubite + - Cornwallite + - Corundum + - Cotunnite + - Covellite + - Coyoteite + - Creedite + - Cristobalite + - Crocoite + - Cronstedtite + - Crookesite + - Crossite + - Cryolite + - Cryptomelane + - Cubanite + - Cummingtonite + - Cupalite + - Cuprite + - Cuprosklodowskite + - Cuprospinel + - Curite + - Cuspidine + - Cyanotrichite + - Cylindrite + - Cymrite + - Cyrilovite + - Danalite + - Danburite + - Datolite + - Daubreeite + - Daubreelite + - Davidite + - Dawsonite + - Delafossite + - Delvauxite + - Demesmaekerite + - Derriksite + - Descloizite + - Devilline + - Diaboleite + - Diadochite + - Diamond + - Diaspore + - Dickite + - Digenite + - Dimorphite + - Diopside + - Dioptase + - Djerfisherite + - Djurleite + - Dmitryivanovite + - Dollaseite + - Dolomite + - Domeykite + - Donnayite + - Drysdallite + - Duftite + - Dumortierite + - Dundasite + - Dypingite + - Dyscrasite + - Dzhalindite + - Edenite + - Edingtonite + - Efremovite + - Ekanite + - Elbaite + - Emmonsite + - Empressite + - Enargite + - Enstatite + - Eosphorite + - Ephesite + - Epidote + - Epsomite + - Ericssonite + - Erionite + - Erythrite + - Eskolaite + - Esperite + - Ettringite + - Euchroite + - Euclase + - Eucryptite + - Eudialyte + - Euxenite + - Eveite + - Evenkite + - Eveslogite + - Fabianite + - Farneseite + - Faujasite + - Faustite + - Fayalite + - Feldspar + - Feldspathoid + - Felsobanyaite + - Ferberite + - Fergusonite + - Feroxyhyte + - Ferrierite + - Ferrihydrite + - Ferrimolybdite + - Ferro-actinolite + - Ferrogedrite + - Ferrohortonolite + - Ferronigerite + - Ferropericlase + - Ferroselite + - Fettelite + - Fichtelite + - Fletcherite + - Fluckite + - Fluellite + - Fluoborite + - Fluocerite + - Fluorapatite + - Fluorapophyllite + - Fluorcaphite + - Fluorellestadite + - Fluorite + - Fluororichterite + - Fornacite + - Forsterite + - Fougerite + - Fourmarierite + - Fraipontite + - Francevillite + - Franckeite + - Frankamenite + - Frankdicksonite + - Frankhawthorneite + - Franklinite + - Franklinphilite + - Freibergite + - Freieslebenite + - Fukuchilite + - Gabrielite + - Gadolinite + - Gagarinite + - Gahnite + - Galaxite + - Galena + - Galkhaite + - Gananite + - Garnet + - Gaspeite + - Gatehouseite + - Gaylussite + - Gedrite + - Geerite + - Gehlenite + - Geigerite + - Geikielite + - Geocronite + - Georgerobinsonite + - Germanite + - Gersdorffite + - Getchellite + - Gibbsite + - Gilalite + - Gismondine + - Glauberite + - Glaucochroite + - Glaucodot + - Glauconite + - Glaucophane + - Gmelinite + - Godovikovite + - Goethite + - Gold + - Goldmanite + - Gonnardite + - Gordaite + - Gormanite + - Goslarite + - Graftonite + - Grandidierite + - Grandreefite + - Graphite + - Gratonite + - Greenalite + - Greenockite + - Gregoryite + - Greifensteinite + - Greigite + - Grossite + - Grossular + - Groutite + - Grunerite + - Guettardite + - Gugiaite + - Guilleminite + - Gunningite + - Guyanaite + - Gwihabaite + - Gypsum + - Hafnon + - Hagendorfite + - Haggertyite + - Haidingerite + - Haiweeite + - Haleniusite + - Halite + - Halloysite + - Halotrichite + - Hambergite + - Hanksite + - Hapkeite + - Hardystonite + - Harmotome + - Hauerite + - Hausmannite + - Hauyne + - Hawleyite + - Haxonite + - Hazenite + - Heazlewoodite + - Hectorite + - Hedenbergite + - Hellyerite + - Hematite + - Hemihedrite + - Hemimorphite + - Hemusite + - Herbertsmithite + - Hercynite + - Herderite + - Hessite + - Heulandite + - Hexaferrum + - Hiarneite + - Hibonite + - Hidalgoite + - Hilgardite + - Hisingerite + - Hodgkinsonite + - Hoelite + - Hollandite + - Holmquistite + - Homilite + - Hopeite + - Hornblende + - Howlite + - Hsianghualite + - Hubeite + - Hubnerite + - Huemulite + - Humite + - Huntite + - Hureaulite + - Hutchinsonite + - Huttonite + - Hydroboracite + - Hydrogrossular + - Hydrohalite + - Hydrokenoelsmoreite + - Hydromagnesite + - Hydrotalcite + - Hydroxylapatite + - Hydrozincite + - Ianbruceite + - Ice + - Icosahedrite + - Idrialite + - Ikaite + - Illite + - Ilmenite + - Ilvaite + - Imogolite + - Indite + - Indium + - Inyoite + - Iodargyrite + - Iranite + - Iridium + - Iron + - Ixiolite + - Jacobsite + - Jadarite + - Jadeite + - Jaffeite + - Jalpaite + - Jamesonite + - Janggunite + - Jarosewichite + - Jarosite + - Jennite + - Jeremejevite + - Jerrygibbsite + - Jimthompsonite + - Johannite + - Jolliffeite + - Jonesite + - Jordanite + - Julgoldite + - Junitoite + - Jurbanite + - Kaatialaite + - Kadyrelite + - Kaersutite + - Kainite + - Kainosite + - Kalininite + - Kalinite + - Kalsilite + - Kamacite + - Kambaldaite + - Kamiokite + - Kampfite + - Kankite + - Kanoite + - Kaolinite + - Karlite + - Kassite + - Kegelite + - Keilite + - Kermesite + - Kernite + - Kesterite + - Keyite + - Khatyrkite + - Kieserite + - Kinoite + - Knebelite + - Knorringite + - Kobellite + - Kochite + - Kogarkoite + - Kolbeckite + - Kornerupine + - Kosmochlor + - Kostovite + - Kottigite + - Kovdorskite + - Kratochv�lite + - Kremersite + - Krennerite + - Krieselite + - Krohnkite + - Krotite + - Krutovite + - Kukharenkoite + - Kuratite + - Kurnakovite + - Kutnohorite + - Kyanite + - Labradorite + - Lanarkite + - Langbeinite + - Langite + - Lansfordite + - Lanthanite + - Laplandite + - Larnite + - Laumontite + - Laurionite + - Laurite + - Lautite + - Lavendulan + - Lawsonite + - Lazulite + - Lazurite + - Lead + - Leadhillite + - Legrandite + - Leifite + - Leightonite + - Lepidocrocite + - Lepidolite + - Letovicite + - Leucite + - Leucophanite + - Leucophoenicite + - Levyne + - Libethenite + - Liebigite + - Linarite + - Lindgrenite + - Linnaeite + - Lipscombite + - Liroconite + - Litharge + - Lithiophilite + - Livingstonite + - Lizardite + - Loellingite + - Lonsdaleite + - Loparite + - Lopezite + - Lorandite + - Lorenzenite + - Loveringite + - Ludlamite + - Ludwigite + - Lulzacite + - Lyonsite + - Macaulayite + - Macdonaldite + - Mackinawite + - Madocite + - Magadiite + - Maghemite + - Magnesioferrite + - Magnesiohastingsite + - Magnesiopascoite + - Magnesite + - Magnetite + - Majorite + - Malachite + - Malayaite + - Manganite + - Manganosite + - Manganvesuvianite + - Marcasite + - Margaritasite + - Margarite + - Marialite + - Maricite + - Marrite + - Marthozite + - Mascagnite + - Massicot + - Masuyite + - Matlockite + - Maucherite + - Mawsonite + - Mckelveyite + - Meionite + - Melanophlogite + - Melanterite + - Melilite + - Mellite + - Melonite + - Mendipite + - Mendozite + - Meneghinite + - Mercury + - Mereheadite + - Merenskyite + - Meridianiite + - Merrillite + - Mesolite + - Messelite + - Metacinnabar + - Metatorbernite + - Metazeunerite + - Meyerhofferite + - Miargyrite + - Mica + - Microcline + - Microlite + - Millerite + - Millosevichite + - Mimetite + - Minium + - Minnesotaite + - Minyulite + - Mirabilite + - Mixite + - Moganite + - Mohite + - Mohrite + - Moissanite + - Molybdenite + - Molybdite + - Monazite + - Monohydrocalcite + - Monticellite + - Montmorillonite + - Mooihoekite + - Moolooite + - Mordenite + - Moschellandsbergite + - Mosesite + - Mottramite + - Motukoreaite + - Mullite + - Mundite + - Murdochite + - Muscovite + - Musgravite + - Nabalamprophyllite + - Nabesite + - Nacrite + - Nadorite + - Nagyagite + - Nahcolite + - Naldrettite + - Nambulite + - Narsarsukite + - Native copper + - Natrolite + - Natron + - Natrophilite + - Nekrasovite + - Nelenite + - Nenadkevichite + - Nepheline + - Nepouite + - Neptunite + - Nichromite + - Nickel + - Nickeline + - Niedermayrite + - Niningerite + - Nissonite + - Niter + - Nitratine + - Nobleite + - Nontronite + - Norbergite + - Normandite + - Northupite + - Nosean + - Nsutite + - Nyerereite + - kenite + - Oldhamite + - Olgite + - Olivenite + - Olivine + - Omphacite + - Ordonezite + - Oregonite + - Orpiment + - Orthoclase + - Osarizawaite + - Osmium + - Osumilite + - Otavite + - Ottrelite + - Otwayite + - Paakkonenite + - Pabstite + - Painite + - Palladium + - Palygorskite + - Panethite + - Panguite + - Papagoite + - Paragonite + - Paralaurionite + - Paramelaconite + - Pararealgar + - Pargasite + - Parisite + - Parsonsite + - Partheite + - Pascoite + - Patronite + - Paulingite + - Paulscherrerite + - Pearceite + - Pecoraite + - Pectolite + - Penikisite + - Penroseite + - Pentagonite + - Pentlandite + - Perhamite + - Periclase + - Perite + - Perovskite + - Petalite + - Petzite + - Pezzottaite + - Pharmacolite + - Pharmacosiderite + - Phenakite + - Phillipsite + - Phlogopite + - Phoenicochroite + - Phosgenite + - Phosphophyllite + - Phosphuranylite + - Pickeringite + - Picropharmacolite + - Piemontite + - Pigeonite + - Pinalite + - Pinnoite + - Piypite + - Plagioclase + - Plancheite + - Platinum + - Plattnerite + - Playfairite + - Plumbogummite + - Polarite + - Pollucite + - Polybasite + - Polycrase + - Polydymite + - Polyhalite + - Portlandite + - Posnjakite + - Poudretteite + - Povondraite + - Powellite + - Prehnite + - Proustite + - Pseudobrookite + - Pseudomalachite + - Pseudowollastonite + - Pumpellyite + - Purpurite + - Putnisite + - Pyrargyrite + - Pyrite + - Pyrochlore + - Pyrolusite + - Pyromorphite + - Pyrope + - Pyrophanite + - Pyrophyllite + - Pyroxene + - Pyroxferroite + - Pyroxmangite + - Pyrrhotite + - Rambergite + - Rameauite + - Rammelsbergite + - Rapidcreekite + - Raspite + - Realgar + - Reidite + - Reinerite + - Renierite + - Rheniite + - Rhodium + - Rhodochrosite + - Rhodonite + - Rhodplumsite + - Rhomboclase + - Richterite + - Rickardite + - Riebeckite + - Ringwoodite + - Roaldite + - Robertsite + - Rodalquilarite + - Romanechite + - Romeite + - Rosasite + - Roscoelite + - Roselite + - Rosenbergite + - Rosickyite + - Routhierite + - Rozenite + - Rubicline + - Ruizite + - Russellite + - Ruthenium + - Rutherfordine + - Rutile + - Rynersonite + - Sabatierite + - Sabieite + - Sabinaite + - Sacrofanite + - Safflorite + - Sal Ammoniac + - Saleeite + - Saliotite + - Salzburgite + - Samarskite + - Sampleite + - Samsonite + - Samuelsonite + - Sanbornite + - Saneroite + - Sanidine + - Santabarbaraite + - Santite + - Saponite + - Sapphirine + - Sarabauite + - Sarkinite + - Sassolite + - Satterlyite + - Sauconite + - Sborgite + - Scapolite + - Schaferite + - Scheelite + - Schmiederite + - Schoepite + - Schorl + - Schreibersite + - Schreyerite + - Schrockingerite + - Schwertmannite + - Scolecite + - Scorodite + - Scorzalite + - Scrutinyite + - Seamanite + - Searlesite + - Seeligerite + - Segelerite + - Seifertite + - Sekaninaite + - Selenium + - Seligmannite + - Sellaite + - Semseyite + - Senarmontite + - Sepiolite + - Serandite + - Serendibite + - Serpentine + - Serpierite + - Sewardite + - Shandite + - Shattuckite + - Shigaite + - Shortite + - Siderite + - Siderophyllite + - Siderotil + - Siegenite + - Silicon + - Sillimanite + - Silver + - Simonellite + - Simpsonite + - Sincosite + - Sinkankasite + - Sinoite + - Skaergaardite + - Sklodowskite + - Skutterudite + - Smaltite + - Smectite + - Smithsonite + - Sodalite + - Soddyite + - Sonolite + - Sperrylite + - Spertiniite + - Spessartine + - Sphalerite + - Spherocobaltite + - Spinel + - Spodumene + - Spurrite + - Stannite + - Stannoidite + - Staurolite + - Steacyite + - Stellerite + - Stephanite + - Stercorite + - Stibarsen + - Stibiconite + - Stibiopalladinite + - Stibnite + - Stichtite + - Stilbite + - Stilleite + - Stillwaterite + - Stillwellite + - Stilpnomelane + - Stishovite + - Stolzite + - Strashimirite + - Strengite + - Stromeyerite + - Strontianite + - Struvite + - Studenitsite + - Studtite + - Stutzite + - Suanite + - Suessite + - Sugilite + - Sulfur + - Sursassite + - Susannite + - Sussexite + - Svanbergite + - Sweetite + - Switzerite + - Sylvanite + - Sylvite + - Synchysite + - Syngenite + - Taaffeite + - Tachyhydrite + - Taenite + - Talc + - Talmessite + - Talnakhite + - Tamarugite + - Tangeite + - Tantalite + - Tantite + - Tapiolite + - Taranakite + - Tarapacaite + - Tarbuttite + - Tausonite + - Teallite + - Tellurite + - Tellurium + - Tellurobismuthite + - Temagamite + - Tennantite + - Tenorite + - Tephroite + - Terlinguaite + - Teruggite + - Tetradymite + - Tetrahedrite + - Tetrataenite + - Thaumasite + - Thenardite + - Thermonatrite + - Thiospinel + - Thomasclarkite + - Thomsenolite + - Thomsonite + - Thorianite + - Thorite + - Thortveitite + - Tiemannite + - Tienshanite + - Tin + - Tinaksite + - Tincalconite + - Titanite + - Titanium + - Titanowodginite + - Tobermorite + - Todorokite + - Tokyoite + - Tongbaite + - Topaz + - Torbernite + - Tourmaline + - Tranquillityite + - Tremolite + - Trevorite + - Tridymite + - Triphylite + - Triplite + - Triploidite + - Tripuhyite + - Troilite + - Trona + - Tschermakite + - Tschermigite + - Tsumcorite + - Tsumebite + - Tugtupite + - Tungsten + - Tungstite + - Tuperssuatsiaite + - Turquoise + - Tusionite + - Tyrolite + - Tyrrellite + - Tyuyamunite + - Uchucchacuaite + - Uklonskovite + - Ulexite + - Ullmannite + - Ulrichite + - Ulvospinel + - Umangite + - Umbite + - Upalite + - Uraninite + - Uranocircite + - Uranophane + - Uranopilite + - Urea + - Uricite + - Urusovite + - Ussingite + - Utahite + - Uvarovite + - Uytenbogaardtite + - Vaesite + - Valentinite + - Valleriite + - Vanadinite + - Vanadiocarpholite + - Vanadium + - Vantasselite + - Vanuralite + - Variscite + - Vaterite + - Vauquelinite + - Vauxite + - Veatchite + - Vermiculite + - Vesuvianite + - Villiaumite + - Violarite + - Vishnevite + - Vivianite + - Vladimirite + - Vlasovite + - Volborthite + - Vulcanite + - Wadsleyite + - Wagnerite + - Wairakite + - Wakabayashilite + - Wakefieldite + - Walfordite + - Wardite + - Warikahnite + - Warwickite + - Wassonite + - Wavellite + - Weddellite + - Weeksite + - Weilite + - Weissite + - Weloganite + - Whewellite + - Whiteite + - Whitlockite + - Willemite + - Wiluite + - Witherite + - Wodginite + - Wolframite + - Wollastonite + - Woodhouseite + - Wulfenite + - Wurtzite + - Wustite + - Wyartite + - Xanthiosite + - Xanthoconite + - Xanthoxenite + - Xenophyllite + - Xenotime + - Xiangjiangite + - Xieite + - Xifengite + - Xilingolite + - Ximengite + - Xingzhongite + - Xitieshanite + - Xocolatlite + - Xocomecatlite + - Xonotlite + - Ye'elimite + - Yttrialite + - Yttropyrochlore + - Yuksporite + - Zabuyelite + - Zaccagnaite + - Zaherite + - Zairite + - Zakharovite + - Zanazziite + - Zaratite + - Zektzerite + - Zemannite + - Zeolite + - Zeunerite + - Zhanghengite + - Zharchikhite + - Zhemchuzhnikovite + - Ziesite + - Zimbabweite + - Zincite + - Zinclipscombite + - Zincmelanterite + - Zincobotryogen + - Zincochromite + - Zincolivenite + - Zinkenite + - Zinnwaldite + - Zippeite + - Zircon + - Zirconolite + - Zircophyllite + - Zirkelite + - Znucalite + - Zoisite + - Zorite + - Zunyite + - Zussmanite + - Zykaite diff --git a/Resources/Prototypes/Datasets/Names/hologram.yml b/Resources/Prototypes/Datasets/Names/hologram.yml new file mode 100644 index 0000000000..0a0b667661 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/hologram.yml @@ -0,0 +1,24 @@ +- type: dataset + id: names_hologram + values: + - Rimmer + - Benton + - Leith + - Fontaine + - Barclay + - Lister + - Lewis + - Gatebox + - Switch + - Hal-O'Gram + - Neo + - Morpheus + - Trinity + - Cypher + - Apoc + - Dozer + - Tank + - Mouse + - Architect + - Oracle + - Smith diff --git a/Resources/Prototypes/Datasets/Names/last.yml b/Resources/Prototypes/Datasets/Names/last.yml new file mode 100644 index 0000000000..23a273c9c1 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/last.yml @@ -0,0 +1,624 @@ +- type: dataset + id: names_last + values: + - Ackerley + - Adams + - Adams + - Addison + - Agg + - Aggley + - Ahmed + - Albright + - Alekseev + - Ali + - Alice + - Allen + - Alliman + - Altmann + - Anderson + - Anderson + - Anderson + - Andreev + - Ann + - Archibald + - Armstrong + - Ashbaugh + - Atkinson + - Atweeke + - Aultman + - Auman + - Baer + - Bailey + - Baker + - Baker + - Barnes + - Barrett + - Bash + - Bashline + - Basinger + - Baskett + - Basmanoff + - Batten + - Baum + - Baxter + - Beach + - Beail + - Beck + - Beedell + - Begum + - Bell + - Bell + - Benford + - Bennett + - Bennett + - Bennett + - Berkheimer + - Best + - Bickerson + - Bicknell + - Biery + - Black + - Blackburn + - Blaine + - Blessig + - Bloise + - Bluetenberger + - Blyant + - Bode + - Bould + - Bousum + - Bowchiew + - Boyer + - Brandenburg + - Bratton + - Braun + - Briggs + - Brindle + - Briner + - Brinigh + - Brooks + - Brown + - Bullard + - Bunten + - Burch + - Burkett + - Burns + - Burris + - Butterfill + - Buttersworth + - Buzzard + - Byers + - Bynum + - Caldwell + - Callison + - Camp + - Campbell + - Campbell + - Carmichael + - Carr + - Carter + - Catherina + - Catleay + - Cavalet + - Chapman + - Chauvin + - Cherry + - Christman + - Christopher + - Clark + - Clarke + - Clarke + - Clewett + - Coates + - Coldsmith + - Collins + - Compton + - Conrad + - Cook + - Cooper + - Costello + - Cowart + - Cowper + - Cox + - Cox + - Cox + - Cressman + - Curry + - Cypret + - David + - Davies + - Davis + - Davis + - Dawkins + - Day + - Dean + - Demuth + - Dennis + - Dickinson + - Digson + - Dimeling + - Donkin + - Draudy + - Driggers + - Dryfus + - Dugmore + - Duncan + - Durstine + - Earl + - Easter + - Echard + - Eckhardstein + - Edwards + - Edwards + - Eggbert + - Ehret + - Elderson + - Eliza + - Elliott + - Ellis + - Enderly + - Endsley + - Evans + - Evans + - Ewing + - Faqua + - Faust + - Fea + - Feufer + - Fiddler + - Field + - Fields + - Finlay + - Fischer + - Fiscina + - Fisher + - Fisher + - Fitzgerald + - Fleming + - Flickinger + - Focell + - Foster + - Franks + - Fraser + - Fryer + - Fuchs + - Fulton + - Gadow + - Gardner + - Garland + - Garneys + - Garratt + - Garrison + - Gettemy + - Gibson + - Gibson + - Glover + - Goebbles + - Goodman + - Graham + - Gray + - Green + - Green + - Greenawalt + - Greene + - Greenwood + - Gregory + - Griffiths + - Gronko + - Guess + - Hall + - Hall + - Hanford + - Hardie + - Harding + - Hardy + - Harris + - Harrison + - Harrold + - Harrow + - Harshman + - Hastings + - Hawker + - Hawking + - Hawkins + - Hayhurst + - Haynes + - Heckendora + - Hegarty + - Henry + - Hice + - Highlands + - Hill + - Hill + - Hincken + - Hirleman + - Hoenshell + - Holdeman + - Holmes + - Hook + - Hooker + - Hoopengarner + - Hoover + - Houser + - Houston + - Howard + - Howe + - Huey + - Hughes + - Hughes + - Hujsak + - Hunt + - Hunt + - Hunter + - Hussain + - Hutton + - Hynes + - Ironmonger + - Isaman + - Isemann + - Ivanov + - Jackson + - Jackson + - James + - James + - James + - Jardine + - Jenkins + - Jenner + - Jerome + - Jesse + - Jewell + - Joghs + - Johnson + - Johnson + - Jones + - Jowers + - Joyce + - Judge + - Jyllian + - Kadel + - Kanaga + - Kaur + - Keener + - Kelley + - Kellogg + - Kelly + - Kemble + - Kemerer + - Keppel + - Kepplinger + - Khan + - Kiefer + - Kifer + - Kimple + - King + - King + - Kirkson + - Knapenberger + - Knapp + - Koepple + - Koster + - Kuster + - Kuznetsov + - Laborde + - Lacon + - Lafortune + - Langston + - Larson + - Lauffer + - Laurenzi + - Leach + - Lee + - Leech + - Leichter + - Leslie + - Lester + - Levett + - Lewis + - Lineman + - Linton + - Llora + - Lloyd + - Logue + - Lombardi + - Lord + - Losey + - Lowe + - Lowstetter + - Lucy + - Ludwig + - Maclagan + - Magor + - Marcotte + - Margaret + - Marriman + - Marshall + - Martins + - Mary + - Mason + - Mason + - Mathews + - Matthews + - McDonald + - McDonohugh + - McShain + - Mcclymonds + - Mccullough + - Mccune + - Mcfall + - Mcintosh + - Mckendrick + - Mcloskey + - Mcmullen + - Mens + - Merryman + - Metzer + - Meyers + - Mikhaylov + - Mildred + - Miller + - Miller + - Millhouse + - Mills + - Milne + - Mingle + - Minnie + - Mitchell + - Mitchell + - Mitchell + - Moberly + - Moon + - Moore + - Moore + - Morgan + - Morris + - Mortland + - Mosser + - Mueller + - Muggins + - Mull + - Muller + - Murphy + - Murray + - Murray + - Murray + - Nash + - Neely + - Nehling + - Newbern + - Newton + - Nicholas + - Nickolson + - Northey + - Noton + - Olphert + - Oneal + - Oppenheimer + - Osteen + - Osterweis + - Osterwise + - Otis + - Overstreet + - Owen + - Owens + - Palmer + - Parker + - Parkinson + - Patel + - Patterson + - Paulson + - Pavlov + - Paynter + - Pearsall + - Pennington + - Perkins + - Pershing + - Peters + - Petrov + - Pfeifer + - Philips + - Phillips + - Picard + - Pinney + - Poehl + - Poley + - Polson + - Potter + - Powell + - Power + - Powers + - Pratt + - Pratt + - Prechtl + - Prescott + - Prevatt + - Price + - Priebe + - Pritchard + - Pycroft + - Quinn + - Quirin + - Rader + - Rahl + - Ramos + - Randolph + - Ratcliff + - Rathen + - Rathens + - Raub + - Ray + - Reade + - Reichard + - Reid + - Reighner + - Rhinehart + - Richards + - Richards + - Richardson + - Richter + - Rifler + - Riggle + - Riker + - Ringer + - Roadman + - Roberts + - Roberts + - Roberts + - Robertson + - Robinson + - Robinson + - Roby + - Rockwell + - Rogers + - Rohtin + - Rose + - Rosensteel + - Rowley + - Russell + - Ryals + - Sagan + - Sanders + - Sandford + - Sandys + - Sauter + - Saylor + - Schaeffer + - Scherer + - Schmidt + - Schofield + - Schrader + - Scott + - Scott + - Sealis + - Seelig + - Seidner + - Semenov + - Shafer + - Shaffer + - Shaner + - Shaw + - Sheets + - Shick + - Shirey + - Sholl + - Shupe + - Sidower + - Siegrist + - Simmons + - Simpson + - Singh + - Skywalker + - Sloan + - Smail + - Smirnov + - Smith + - Smith + - Snyder + - Sommer + - Spock + - Stafford + - Stahl + - Stainforth + - Stall + - Stamos + - Stange + - Staymates + - Steele + - Stephenson + - Stern + - Stewart + - Stewart + - Stocker + - Stone + - Stough + - Straub + - Stroble + - Stroh + - Styles + - Sullivan + - Sulyard + - Summy + - Sutton + - Swabey + - Swarner + - Sybilla + - Taggart + - Tanner + - Taylor + - Teagarden + - Tedrow + - Tennant + - Thomas + - Thomas + - Thomlinson + - Thompson + - Thomson + - Thorley + - Tilton + - Tireman + - Todd + - Todd + - Treeby + - Trovato + - Turner + - Ulery + - Ullman + - Unk + - Vader + - Vanleer + - Vasilyev + - Waldron + - Walker + - Wallick + - Ward + - Ward + - Wardle + - Warren + - Watson + - Watson + - Webb + - Weeter + - Weinstein + - Weisgarber + - Wells + - Welty + - Wentzel + - Werner + - Werry + - Wheeler + - Wheeler + - Whirlow + - White + - White + - Whiteman + - Whittier + - Wible + - Wile + - Wilkerson + - Wilkinson + - Willey + - Williams + - Williamson + - Wilo + - Wilson + - Winton + - Wise + - Wolfe + - Wolff + - Wood + - Wood + - Woodward + - Woodward + - Woodworth + - Woolery + - Woollard + - Wright + - Yeskey + - Young + - Young + - Zadovsky + - Zalack + - Zaun + - Zeal + - Zimmer + - Zoucks diff --git a/Resources/Prototypes/Datasets/Names/mushman_first.yml b/Resources/Prototypes/Datasets/Names/mushman_first.yml new file mode 100644 index 0000000000..d438293bc9 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/mushman_first.yml @@ -0,0 +1,57 @@ +- type: dataset + id: names_mushman_first + values: + - Pleurocybella + - Geastrum + - Tricholoma + - Ganoderma + - Galerina + - Fistulina + - Gyromitra + - Leccinum + - Crucilulum + - Craterellus + - Geoglossum + - Helvella + - Exidia + - Clitocybe + - Psilocybe + - Panaeolus + - Amanita + - Paxillus + - Spheaerobolus + - Sparassis + - Lepiota + - Leotia + - Clavariadelphus + - Annulohypoxylon + - Pisolitus + - Pluteus + - Flammulina + - Marasmius + - Clavaria + - Stereum + - Cortinarius + - Lyophyllum + - Hydnum + - Poria + - Armillaria + - Hypsizygus + - Agaricus + - Omphalotus + - Boletus + - Boletopsis + - Gymnopilus + - Hericium + - Grifola + - Morchella + - Clathrus + - Pleurotus + - Discina + - Chalciporus + - Calvatia + - Caulorhiza + - Tremella + - Volvariella + - Hypholoma + - Lactarius diff --git a/Resources/Prototypes/Datasets/Names/mushman_last.yml b/Resources/Prototypes/Datasets/Names/mushman_last.yml new file mode 100644 index 0000000000..32fc3f2f8a --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/mushman_last.yml @@ -0,0 +1,100 @@ +- type: dataset + id: names_mushman_last + values: + - Porrigens + - Deceptiva + - Fornicatum + - Magnivelare + - Applanatum + - Marginata + - Abietis + - Hepatica + - Esculenta + - Scabrum + - Laeve + - Cornucopioides + - Fallax + - Lacunosa + - Glandulosa + - Caerulipes + - Cyanescens + - Novinupta + - Involutus + - Bisporus + - Rubidus + - Stellatus + - Crispa + - Campestris + - Castenea + - Viscosa + - Occidentalis + - Lanei + - Thouarsianum + - Brunneoincarnata + - Josserandi + - Tinctorius + - Phalloides + - Cervinus + - Ocreata + - Subjunquillea + - Velutipes + - Virosa + - Oreades + - Vermicularis + - Rivulosa + - Hirsutum + - Verna + - Orellanus + - Decastes + - Tubaeformis + - Constricta + - Exitialis + - Caperatus + - Umbilicatum + - Cocos + - Mellea + - Tessulatus + - Arvensis + - Dealbata + - Olearius + - Edulis + - Baeocystis + - Leucomelaena + - Caerulescens + - Junonius + - Erinaceum + - Aeruginosus + - Frondosa + - Elata + - Archeri + - Tropicalis + - Pantherina + - Piperaturs + - Perlata + - Orcharaceus + - Augustus + - Subsculpta + - Cyathiformis + - Regineus + - Erubescens + - Rubripes + - Umbonata + - Lucidium + - Eastwoodiae + - Sculpta + - Edodes + - Fuciformis + - Velosa + - Rex-ceris + - Volvacea + - Fasciculare + - Bitorquis + - Flaviporus + - Pachycolea + - Subaldidus + - Rugosoannulata + - Subrutilescens + - Nuda + - Torminosus + - Equestre + - Xanthodermus diff --git a/Resources/Prototypes/Datasets/Names/ninja.yml b/Resources/Prototypes/Datasets/Names/ninja.yml new file mode 100644 index 0000000000..d284661392 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/ninja.yml @@ -0,0 +1,47 @@ +- type: dataset + id: names_ninja + values: + - Shadow + - Sarutobi + - Smoke + - Rain + - Scorpion + - Zero + - Ermac + - Saibot + - Cyrax + - Raphael + - Michaelangelo + - Donatello + - Leonardo + - Splinter + - Shredder + - Hazuki + - Hien + - Hiryu + - Ryu + - Hayabusa + - Midnight + - Seven + - McNinja + - Hanzo + - Blood + - Iga + - Koga + - Hero + - Hiro + - Phantom + - Baki + - Ogre + - Daemon + - Goemon + - McAwesome + - Throat + - Death + - Aria + - Bro + - Fox + - Null + - Raiden + - Samurai + - Eater diff --git a/Resources/Prototypes/Datasets/Names/ninja_title.yml b/Resources/Prototypes/Datasets/Names/ninja_title.yml new file mode 100644 index 0000000000..07029d0c15 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/ninja_title.yml @@ -0,0 +1,49 @@ +- type: dataset + id: names_ninja_title + values: + - Master + - Sensei + - Swift + - Merciless + - Assassin + - Rogue + - Hunter + - Widower + - Orphaner + - Stalker + - Killer + - Silent + - Silencing + - Quick + - Agile + - Merciful + - Ninja + - Shinobi + - Initiate + - Grandmaster + - Strider + - Striker + - Slayer + - Awesome + - Ender + - Dr. + - Noob + - Night + - Crimson + - Grappler + - Ulimate + - Remorseless + - Deep + - Dragon + - Cruel + - Nightshade + - Black + - Gray + - Solid + - Liquid + - Solidus + - Steel + - Nickel + - Silver + - Singing + - Snake diff --git a/Resources/Prototypes/Datasets/Names/wizard_first.yml b/Resources/Prototypes/Datasets/Names/wizard_first.yml new file mode 100644 index 0000000000..6fa5dbf82f --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/wizard_first.yml @@ -0,0 +1,40 @@ +- type: dataset + id: names_wizard_first + values: + - Alatar + - Archchancellor + - Boccob + - Circe + - Doctor + - Dumbledor + - Elminister + - Gandalf + - Grimm + - Gulstaff + - Houdini + - Jim + - Kaschei + - Khelben + - Kreol + - Lina + - Merlin + - Mogan + - Mordenkainen + - Morgan + - Mystryl + - Nihilus + - Palando + - Prospero + - Radagast + - Raistlin + - Rasputin + - Saruman + - Tenser + - Terefi + - Tzeentch + - Urza + - Vaarsuvius + - Vecna + - Yoda + - Zagyg + - Zul diff --git a/Resources/Prototypes/Datasets/Names/wizard_last.yml b/Resources/Prototypes/Datasets/Names/wizard_last.yml new file mode 100644 index 0000000000..34b51f4967 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/wizard_last.yml @@ -0,0 +1,43 @@ +- type: dataset + id: names_wizard_last + values: + - Dark + - Darkmagic + - Darko + - Gray + - Honko + - Inverse + - Shado + - Smith + - Unseen + - Weatherwax + - Whom + - Yagg + - le Fay + - of Void + - the All Knowing + - the Amazing + - the Bandit Killer + - the Benevolent + - the Blue + - the Brown + - the Conquerer + - the Deathless + - the Destroyer + - the Dragon Spooker + - the Emperor + - the Gray + - the Great + - the Magician + - the Powerful + - the Raven + - the Red + - the Remorseful + - the Seething + - the Sorcelator + - the Spiral King + - the Unending + - the Unstoppable + - the Weeping + - the White + - the Wise diff --git a/Resources/Prototypes/Datasets/news.yml b/Resources/Prototypes/Datasets/news.yml new file mode 100644 index 0000000000..b99d020b13 --- /dev/null +++ b/Resources/Prototypes/Datasets/news.yml @@ -0,0 +1,85 @@ +- type: dataset + id: news + values: + - "Tree stuck in tajaran; firefighters baffled." + - "Armadillos want aardvarks removed from dictionary claims 'here first'." + - "Angel found dancing on pinhead ordered to stop; cited for public nuisance." + - "Letters claim they are better than number; 'Always have been'." + - "Pens proclaim pencils obsolete, 'lead is dead'." + - "Rock and paper sues scissors for discrimination." + - "Steak tell-all book reveals he never liked sitting by potato." + - "Woodchuck stops counting how many times he’s chucked 'Never again'." +# - "{{AFFECTED}} clerk first person able to pronounce '@*$%!'." +# - "{{AFFECTED}} delis serving boiled paperback dictionaries, 'Adjectives chewy' customers declare." +# - "{{AFFECTED}} weather deemed 'boring'; meteors and rad storms to be imported." +# - "Most {{AFFECTED}} security officers prefer cream over sugar." +# - "Palindrome speakers conference in {{AFFECTED}}; 'Wow!' says Otto." +# - "Question mark worshipped as deity by ancient {{AFFECTED}} dwellers." +# - "Spilled milk causes whole {{AFFECTED}} populace to cry." +# - "World largest carp patty at display on {{AFFECTED}}." + - "'Here kitty kitty' no longer preferred tajaran retrieval technique." + - "Man travels 7000 light years to retrieve lost hankie, 'It was my favourite'." + - "New bowling lane that shoots mini-meteors at bowlers very popular." +# - "Guy gets tattoo of Tau Ceti on chest '[pick("CentComm","star","starship","asteroid")] tickles most'." + - "Skrell marries computer; wedding attended by 100 modems." + - "Chef reports successfully using harmonica as cheese grater." + - "Nanotrasen invents handkerchief that says 'Bless you' after sneeze." + - "Clone accused of posing for other clones’s school photo." + - "Clone accused of stealing other clones’s employee of the month award." + - "Woman robs station with hair dryer; crewmen love new style." + - "This space for rent." +# - "{{AFFECTED}} Baker Wins Pickled Crumpet Toss Three Years Running" + - "Skrell Scientist Discovers Abacus Can Be Used To Dry Towels" + - "Survey: 'Cheese Louise' Voted Best Pizza Restaurant In Tau Ceti" +# - "I Was Framed, jokes {{AFFECTED}} artist" +# - "Mysterious Loud Rumbling Noises In {{AFFECTED}} Found To Be Mysterious Loud Rumblings" +# - "Alien ambassador becomes lost on {{AFFECTED}}, refuses to ask for directions" + - "Swamp Gas Verified To Be Exhalations Of Stars--Movie Stars--Long Passed" + - "Tainted Broccoli Weapon Of Choice For Syndicate Assassins" + - "Chefs Find Broccoli Effective Tool For Cutting Cheese" + - "Broccoli Found To Cause Grumpiness In Monkeys" +# - "Survey: 80% Of People on {{AFFECTED}} Love Clog-Dancing" + - "Giant Hairball Has Perfect Grammar But Rolls rr's Too Much, Linguists Say" +# - "{{AFFECTED}} Phonebooks Print All Wrong Numbers; Results In 15 New Marriages" +# - "Tajaran Burglar Spotted on {{AFFECTED}}, Mistaken For Dalmatian" + - "Gibson Gazette Updates Frequently Absurd, Poll Indicates" +# - "Esoteric Verbosity Culminates In Communicative Ennui, {{AFFECTED}} Academics Note" + - "Taj Demand Longer Breaks, Cleaner Litter, Slower Mice" + - "Survey: 3 Out Of 5 Skrell Loathe Modern Art" + - "Skrell Scientist Discovers Gravity While Falling Down Stairs" +# - "Boy Saves Tajaran From Tree on {{AFFECTED}}, Thousands Cheer" +# - "Shipment Of Apples Overturns, {{AFFECTED}} Diner Offers Applesauce Special" +# - "Spotted Owl Spotted on {{AFFECTED}}" + - "Humans Everywhere Agree: Purring Tajarans Are Happy Tajarans" + - "From The Desk Of Wise Guy Sammy: One Word In This Gazette Is Sdrawkcab" + - "From The Desk Of Wise Guy Sammy: It's Hard To Have Too Much Shelf Space" + - "From The Desk Of Wise Guy Sammy: Wine And Friendships Get Better With Age" + - "From The Desk Of Wise Guy Sammy: The Insides Of Golf Balls Are Mostly Rubber Bands" + - "From The Desk Of Wise Guy Sammy: You Don't Have To Fool All The People, Just The Right Ones" + - "From The Desk Of Wise Guy Sammy: If You Made The Mess, You Clean It Up" + - "From The Desk Of Wise Guy Sammy: It Is Easier To Get Forgiveness Than Permission" + - "From The Desk Of Wise Guy Sammy: Check Your Facts Before Making A Fool Of Yourself" + - "From The Desk Of Wise Guy Sammy: You Can't Outwait A Bureaucracy" + - "From The Desk Of Wise Guy Sammy: It's Better To Yield Right Of Way Than To Demand It" + - "From The Desk Of Wise Guy Sammy: A Person Who Likes Cats Can't Be All Bad" + - "From The Desk Of Wise Guy Sammy: Help Is The Sunny Side Of Control" + - "From The Desk Of Wise Guy Sammy: Two Points Determine A Straight Line" + - "From The Desk Of Wise Guy Sammy: Reading Improves The Mind And Lifts The Spirit" + - "From The Desk Of Wise Guy Sammy: Better To Aim High And Miss Then To Aim Low And Hit" + - "From The Desk Of Wise Guy Sammy: Meteors Often Strike The Same Place More Than Once" + - "Tommy B. Saif Sez: Look Both Ways Before Boarding The Shuttle" + - "Tommy B. Saif Sez: Hold On; Sudden Stops Sometimes Necessary" + - "Tommy B. Saif Sez: Keep Fingers Away From Moving Panels" + - "Tommy B. Saif Sez: No Left Turn, Except Shuttles" + - "Tommy B. Saif Sez: Return Seats And Trays To Their Proper Upright Position" + - "Tommy B. Saif Sez: Eating And Drinking In Docking Bays Is Prohibited" + - "Tommy B. Saif Sez: Accept No Substitutes, And Don't Be Fooled By Imitations" + - "Tommy B. Saif Sez: Do Not Remove This Tag Under Penalty Of Law" + - "Tommy B. Saif Sez: Always Mix Thoroughly When So Instructed" + - "Tommy B. Saif Sez: Try To Keep Six Month's Expenses In Reserve" + - "Tommy B. Saif Sez: Change Not Given Without Purchase" + - "Tommy B. Saif Sez: If You Break It, You Buy It" + - "Tommy B. Saif Sez: Reservations Must Be Cancelled 48 Hours Prior To Event To Obtain Refund" + - "Doughnuts: Is There Anything They Can't Do" + - "If Tin Whistles Are Made Of Tin, What Do They Make Foghorns Out Of?" + - "Broccoli discovered to be colonies of tiny aliens with murder on their minds" From f7ac546f392be5c01177f02e86e597fc0a6b6afb Mon Sep 17 00:00:00 2001 From: Manel Navola <6786088+ManelNavola@users.noreply.github.com> Date: Thu, 14 Jan 2021 08:57:24 +0100 Subject: [PATCH 132/166] Added suicide for Crematorium and Recycler, soft fixed Recycled gibbing (#2610) * Added suicide for Crematorium and Recycler, soft fixed Recycled gibbing * Renamed _cancelToken to _cremateCancelToken, made _cremateCancelToken nullable * Update Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Added Ownder.Deleted check inside timer * Added TODO gibbing comments * Removed innecessary code and removed deleting entities when getting 'gibbed' * Fix ghosting with gibbing. Co-authored-by: Manel Navola Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Metal Gear Sloth --- Content.Server/Commands/Observer/Ghost.cs | 2 +- .../CrematoriumEntityStorageComponent.cs | 64 +++++++++++++++++-- .../Components/Recycling/RecyclerComponent.cs | 34 +++++++++- 3 files changed, 92 insertions(+), 8 deletions(-) diff --git a/Content.Server/Commands/Observer/Ghost.cs b/Content.Server/Commands/Observer/Ghost.cs index 2e1dcd027c..6aa887dd47 100644 --- a/Content.Server/Commands/Observer/Ghost.cs +++ b/Content.Server/Commands/Observer/Ghost.cs @@ -31,7 +31,7 @@ namespace Content.Server.Commands.Observer return; } - var mind = player!.ContentData()?.Mind; + var mind = player.ContentData()?.Mind; if (mind == null) { shell?.SendText(player, "You have no Mind, you can't ghost."); diff --git a/Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs b/Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs index 0ba0ddd75d..1f22c0a91d 100644 --- a/Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs @@ -1,5 +1,9 @@ #nullable enable using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.Interfaces.Chat; +using Content.Server.Interfaces.GameObjects; +using Content.Server.Utility; +using Content.Shared.GameObjects.Components.Body; using Content.Shared.GameObjects.Components.Morgue; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.GameObjects.EntitySystems.ActionBlocker; @@ -11,9 +15,14 @@ using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; -using Robust.Shared.Timers; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; +using System.Threading; +using Content.Server.Interfaces.GameTicking; +using Content.Server.Players; +using Robust.Server.Player; +using Robust.Shared.GameObjects.Components.Timers; +using Robust.Shared.IoC; namespace Content.Server.GameObjects.Components.Morgue { @@ -22,7 +31,7 @@ namespace Content.Server.GameObjects.Components.Morgue [ComponentReference(typeof(EntityStorageComponent))] [ComponentReference(typeof(IActivate))] [ComponentReference(typeof(IStorageComponent))] - public class CrematoriumEntityStorageComponent : MorgueEntityStorageComponent, IExamine + public class CrematoriumEntityStorageComponent : MorgueEntityStorageComponent, IExamine, ISuicideAct { public override string Name => "CrematoriumEntityStorage"; @@ -32,6 +41,8 @@ namespace Content.Server.GameObjects.Components.Morgue [ViewVariables(VVAccess.ReadWrite)] private int _burnMilis = 3000; + private CancellationTokenSource? _cremateCancelToken; + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) { if (Appearance == null) return; @@ -64,16 +75,30 @@ namespace Content.Server.GameObjects.Components.Morgue return base.CanOpen(user, silent); } - public void Cremate() + public void TryCremate() { if (Cooking) return; if (Open) return; + Cremate(); + } + + public void Cremate() + { + if (Open) + CloseStorage(); + Appearance?.SetData(CrematoriumVisuals.Burning, true); Cooking = true; - Timer.Spawn(_burnMilis, () => + _cremateCancelToken?.Cancel(); + + _cremateCancelToken = new CancellationTokenSource(); + Owner.SpawnTimer(_burnMilis, () => { + if (Owner.Deleted) + return; + Appearance?.SetData(CrematoriumVisuals.Burning, false); Cooking = false; @@ -93,7 +118,34 @@ namespace Content.Server.GameObjects.Components.Morgue TryOpenStorage(Owner); EntitySystem.Get().PlayFromEntity("/Audio/Machines/ding.ogg", Owner); - }); + }, _cremateCancelToken.Token); + } + + public SuicideKind Suicide(IEntity victim, IChatManager chat) + { + var mind = victim.PlayerSession()?.ContentData()?.Mind; + + if (mind != null) + { + IoCManager.Resolve().OnGhostAttempt(mind, false); + mind.OwnedEntity.PopupMessage(Loc.GetString("You cremate yourself!")); + } + + victim.PopupMessageOtherClients(Loc.GetString("{0:theName} is cremating {0:themself}!", victim)); + EntitySystem.Get().Down(victim, false, false, true); + + if (CanInsert(victim)) + { + Insert(victim); + } + else + { + victim.Delete(); + } + + Cremate(); + + return SuicideKind.Heat; } [Verb] @@ -113,7 +165,7 @@ namespace Content.Server.GameObjects.Components.Morgue /// protected override void Activate(IEntity user, CrematoriumEntityStorageComponent component) { - component.Cremate(); + component.TryCremate(); } } } diff --git a/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs b/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs index a9074492d5..dc0acb8636 100644 --- a/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs +++ b/Content.Server/GameObjects/Components/Recycling/RecyclerComponent.cs @@ -3,15 +3,25 @@ using System.Collections.Generic; using Content.Server.GameObjects.Components.Conveyor; using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.Interfaces.Chat; +using Content.Server.Interfaces.GameObjects; +using Content.Server.Interfaces.GameTicking; +using Content.Server.Players; +using Content.Server.Utility; using Content.Shared.GameObjects.Components.Body; +using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.Components.Recycling; +using Content.Shared.Interfaces; using Content.Shared.Physics; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Containers; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Components.Map; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; using Robust.Shared.Maths; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -20,7 +30,7 @@ namespace Content.Server.GameObjects.Components.Recycling { // TODO: Add sound and safe beep [RegisterComponent] - public class RecyclerComponent : Component, ICollideBehavior + public class RecyclerComponent : Component, ICollideBehavior, ISuicideAct { public override string Name => "Recycler"; @@ -174,5 +184,27 @@ namespace Content.Server.GameObjects.Components.Recycling { Recycle(collidedWith); } + + public SuicideKind Suicide(IEntity victim, IChatManager chat) + { + var mind = victim.PlayerSession()?.ContentData()?.Mind; + + if (mind != null) + { + IoCManager.Resolve().OnGhostAttempt(mind, false); + mind.OwnedEntity.PopupMessage(Loc.GetString("You recycle yourself!")); + } + + victim.PopupMessageOtherClients(Loc.GetString("{0:theName} tries to recycle {0:themself}!", victim)); + + if (victim.TryGetComponent(out var body)) + { + body.Gib(true); + } + + Bloodstain(); + + return SuicideKind.Bloodloss; + } } } From 0fa1208ec2ee6a42f919379aa58b3a9eec452530 Mon Sep 17 00:00:00 2001 From: DmitriyRubetskoy <75271456+DmitriyRubetskoy@users.noreply.github.com> Date: Thu, 14 Jan 2021 12:41:56 +0300 Subject: [PATCH 133/166] Alert polish and brushup (#2863) * Alerts rework Reworked some alert images so they aren't so rough around the edges, as well as adding an original drawing for being pulled (stun icon has a different route and foulder but is still the turned off stun baton, someone should draw a better one and I am not up to the task). There are minor description changes so they sounds either more resonable or more informational. * Updated weightless * Updated according to commentary * Quick fix of a fatal bug * Pulled icon improved * Pulling icon reverted Co-authored-by: Rubetskoy Dmitriy --- Resources/Prototypes/Alerts/alerts.yml | 18 ++++++++---------- .../Textures/Interface/Alerts/Pull/pulled.png | Bin 3952 -> 696 bytes .../Alerts/Weightless/weightless.png | Bin 786 -> 515 bytes 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml index d8f71e1d8e..ba9ee9ec27 100644 --- a/Resources/Prototypes/Alerts/alerts.yml +++ b/Resources/Prototypes/Alerts/alerts.yml @@ -40,7 +40,7 @@ icon: /Textures/Interface/Alerts/Pressure/highpressure.png maxSeverity: 2 name: "[color=red]High Pressure[/color]" - description: "The air around you is [color=red]hazardously thick[/color]. A [color=green]fire suit[/color] would protect you." + description: "The air around you is [color=red]hazardously thick[/color]. A [color=green]pressurized suit[/color] would be enough protect you" - type: alert alertType: Fire @@ -69,23 +69,21 @@ alertType: Weightless icon: /Textures/Interface/Alerts/Weightless/weightless.png name: Weightless - description: >- - Gravity has ceased affecting you, and you're floating around aimlessly. You'll need something large and heavy, like a - wall or lattice, to push yourself off if you want to move. A jetpack would enable free range of motion. A pair of - magboots would let you walk around normally on the floor. Barring those, you can throw things, use a fire extinguisher, - or shoot a gun to move around via Newton's 3rd Law of Motion. + description: > + Gravity has ceased affecting you, and you're floating around aimlessly. Find something sturdy to hold onto, or throw or shoot something in a direction opposite of you. + Mag-boots or jetpacks would help you move with more control - type: alert alertType: Stun - icon: /Textures/Objects/Weapons/Melee/stunbaton.rsi/stunbaton_off.png + icon: /Textures/Objects/Weapons/Melee/stunbaton.rsi/stunbaton_off.png #Should probably draw a proper icon name: "[color=yellow]Stunned[/color]" - description: "You're [color=yellow]stunned[/color]! Wait for it to wear off." + description: "You're [color=yellow]stunned[/color]! Something is impairing your ability to move or interact with objects" - type: alert alertType: Handcuffed icon: /Textures/Interface/Alerts/Handcuffed/Handcuffed.png name: "[color=yellow]Handcuffed[/color]" - description: "You're [color=yellow]handcuffed[/color] and can't act. If anyone drags you, you won't be able to move.." + description: "You're [color=yellow]handcuffed[/color] and can't use your hands. If anyone drags you, you won't be able to resist.." - type: alert alertType: Buckled @@ -107,7 +105,7 @@ category: Health icon: /Textures/Interface/Alerts/Human/humandead.png name: Dead - description: You're dead. + description: You're dead, note that you can still be revived! - type: alert alertType: HumanHealth diff --git a/Resources/Textures/Interface/Alerts/Pull/pulled.png b/Resources/Textures/Interface/Alerts/Pull/pulled.png index 3d1aec59f6b8ea7354fb78ea7729e1903517b09c..9c148fe459595e73eb3e2cdde68d14bcb1d8f56e 100644 GIT binary patch delta 673 zcmV;S0$%;_9=HXNBYyw^b5ch_0Itp)=>Px%a!Eu%R9J=WRzZ&1Fcf`1ynoCRad z!^vQSF4r55LLX7+qmP8ugud^q{&x3M^>@w5x=B@40Dw4-JM+Jou{+wo5%enX{l`}| zw?96r{ty+4EPtVwf;$QLzTZ)y%u@n@#j~V+vc_=?BEoXL;dwB@JeUB0bNy9n^xao9 z^-&*MECL_fW2?y7t{`2NEWzIpp>F=H*Z1srAYGL_3&vN0N8|wn&@*3;fGG4)H?0t+ zIF40zhyiuXf^p{>tposA7e%2D&-1|NOMtp*)m79@i+}QA&j3`tm*7u)zK}N#sjFbE zPM_}X@l7*ex+?kIGypSS0_G{DtFm)SAtiX?^W}u(DfvYOoq*MZdT;?Vcj%URN_Eph znmHCFg-DsFv_C##7K}SSv(^DUD3QB_n}*WIHZzNILZZx5ay~}yqYs_&`7a)5G2@6l z61AKPoKB|>^CC;AKD0P9u$bCO5RocE zW>6QL1WW~l#P-nkzJ@x)kOCWNCxI^ypRMynme8&_VIEF;tEL1lvV_bO9Yg@=e{@_b z==Gt<66(t$z>$V#VEyNm{Ld^Xx*B!Us&8aozZ!}gZqV@?>W9UzF^S@`00000NkvXX Hu0mjfALu$o literal 3952 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 KMNUMnLSTYpzkeA3 diff --git a/Resources/Textures/Interface/Alerts/Weightless/weightless.png b/Resources/Textures/Interface/Alerts/Weightless/weightless.png index 7ee4f0108359a9f9112e3aaa171ebfbc8f7b5dc6..87e541084e96f14642eddd3377f396ac92a73972 100644 GIT binary patch delta 490 zcmVPx$y-7qtR9J=WRy|L`P!v5i4p0~zOvFJF zScrorjK-EsN;38me{~(mS)od)C53VinZvhQC0PON0cI>h1LZ=N$R!RQ+0yN~@1b8^kpZ!hy zu-B!^2~~Ih`hP)UVgifE{S_-Ejrh;F3UKTZEYrYbGGUhdjQ{`u delta 763 zcmV21gNxb2S1OG9E0aK3IqU- z-tVasCjbC!h(POhz;T@8^SSvHWJv(WasCmY{oT~4RiG%!$2E`N{DiT7T8DO6mAQKunKyDSODPG~uoCo=TS2>>KlGWOcR1PGY1^Ub<3-!$V^ zwT#UDbz**IH855UXx$EENx=EJYV>iF)3dP%{B&&#(3%%ioz{ACB}3-sQ}Bhr_b(qu zZaNix-U%Jg$$(il0)Tzr?^U!Ooc;p<+zFhX{$kw@CSFVpJE%y~8Otz?-9Rjs&_t1E t+ilU;;~B#+&POw9!q4E2hOYZ~{tpv}y4I69@R9%k002ovPDHLkV1jz4Vf+99 From b6d97b606803073e659aa4fe868c7d0c681d6e83 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 14 Jan 2021 20:43:31 +1100 Subject: [PATCH 134/166] Add helper to send entity to ghost (#3003) Co-authored-by: Metal Gear Sloth --- Content.Server/Mobs/MindHelpers.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Content.Server/Mobs/MindHelpers.cs diff --git a/Content.Server/Mobs/MindHelpers.cs b/Content.Server/Mobs/MindHelpers.cs new file mode 100644 index 0000000000..017de12ff5 --- /dev/null +++ b/Content.Server/Mobs/MindHelpers.cs @@ -0,0 +1,20 @@ +using Content.Server.Interfaces.GameTicking; +using Content.Server.Players; +using Robust.Server.Player; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; + +namespace Content.Server.Mobs +{ + internal static class MindHelpers + { + internal static void SendToGhost(this IEntity entity, bool canReturn=false) + { + var mind = entity.PlayerSession()?.ContentData()?.Mind; + + if (mind == null) return; + + IoCManager.Resolve().OnGhostAttempt(mind, canReturn); + } + } +} From ba49ee60d85965ade349ff5c1d87ce5e5944417a Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Thu, 14 Jan 2021 20:41:13 +0100 Subject: [PATCH 135/166] Fix SaveLoadSaveTest blowing up harder when a test failure happened. --- .../Tests/SaveLoadSaveTest.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs b/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs index d130e3f821..347fb66499 100644 --- a/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs +++ b/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs @@ -58,13 +58,17 @@ namespace Content.IntegrationTests.Tests var failed = TestContext.CurrentContext.Result.Assertions.FirstOrDefault(); if (failed != null) { - var path1 = Path.Combine(userData.RootDir!,rp1.ToRelativeSystemPath()); - var path2 = Path.Combine(userData.RootDir!,rp2.ToRelativeSystemPath()); - TestContext.AddTestAttachment(path1); - TestContext.AddTestAttachment(path2); + var oneTmp = Path.GetTempFileName(); + var twoTmp = Path.GetTempFileName(); + + File.WriteAllText(oneTmp, one); + File.WriteAllText(twoTmp, two); + + TestContext.AddTestAttachment(oneTmp, "First save file"); + TestContext.AddTestAttachment(twoTmp, "Second save file"); TestContext.Error.WriteLine("Complete output:"); - TestContext.Error.WriteLine(path1); - TestContext.Error.WriteLine(path2); + TestContext.Error.WriteLine(oneTmp); + TestContext.Error.WriteLine(twoTmp); } }); } From 3079ddd962edbbdea5fc43983fd7d421a499e72c Mon Sep 17 00:00:00 2001 From: Swept Date: Fri, 15 Jan 2021 05:36:48 +0000 Subject: [PATCH 136/166] Fixes autoborg names dataset. (#3006) * Initial * Adds Recyclable to ignore * . --- Content.Client/IgnoredComponents.cs | 3 ++- Resources/Prototypes/Datasets/Names/autoborg.yml | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index a618a37aa6..f38cd10cf0 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -235,7 +235,8 @@ namespace Content.Client "SliceableFood", "DamageOtherOnHit", "DamageOnLand", - "GasFilter" + "GasFilter", + "Recyclable" }; } } diff --git a/Resources/Prototypes/Datasets/Names/autoborg.yml b/Resources/Prototypes/Datasets/Names/autoborg.yml index 52b27e706a..cb5f64afc2 100644 --- a/Resources/Prototypes/Datasets/Names/autoborg.yml +++ b/Resources/Prototypes/Datasets/Names/autoborg.yml @@ -8,7 +8,7 @@ - MY BODY IS IN THE AI CORE - Rogue Cyborg - IT'S MALF - - { AINAME } Minion {###} +# - { AINAME } Minion {###} - Terminator - Robocop - Johnny @@ -45,9 +45,9 @@ - Boop II - Buzz - Buzz II + - C'MON TARS - 3000 JIGGAWATTS - - Jojo Refrence - - Outbreak Handling Unit {###} +# - Outbreak Handling Unit {###} - ITS ROGAINE - Nokia - YES-Man From 138cdaba5bc8620e73ad965c00574843bc64065f Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Thu, 14 Jan 2021 23:40:10 -0600 Subject: [PATCH 137/166] Enable nullable in ReactionPrototype & ReagentPrototype (#3005) * Enable nullable in ReactionPrototype & ReagentPrototype * Remove unecessary sets * Fix updates branch * Review fixes Co-authored-by: py01 --- .../EntitySystems/ChemicalReactionSystem.cs | 4 ++- Content.Shared/Chemistry/ReactionPrototype.cs | 17 +++++++----- Content.Shared/Chemistry/ReagentPrototype.cs | 27 ++++++++++--------- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs b/Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs index 2fde1f8f59..5d4ad7c567 100644 --- a/Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/ChemicalReactionSystem.cs @@ -1,3 +1,4 @@ +#nullable enable using Content.Shared.Chemistry; using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects.EntitySystems; @@ -11,7 +12,8 @@ namespace Content.Server.GameObjects.EntitySystems.NewFolder { base.OnReaction(reaction, owner, unitReactions); - Get().PlayAtCoords(reaction.Sound, owner.Transform.Coordinates); + if (reaction.Sound != null) + Get().PlayAtCoords(reaction.Sound, owner.Transform.Coordinates); } } } diff --git a/Content.Shared/Chemistry/ReactionPrototype.cs b/Content.Shared/Chemistry/ReactionPrototype.cs index 02799b9229..7f2f9eb006 100644 --- a/Content.Shared/Chemistry/ReactionPrototype.cs +++ b/Content.Shared/Chemistry/ReactionPrototype.cs @@ -1,3 +1,4 @@ +#nullable enable using System.Collections.Generic; using Content.Server.Interfaces.Chemistry; using Content.Shared.Interfaces; @@ -15,11 +16,11 @@ namespace Content.Shared.Chemistry [Prototype("reaction")] public class ReactionPrototype : IPrototype, IIndexedPrototype { - private string _id; - private string _name; - private Dictionary _reactants; - private Dictionary _products; - private List _effects; + private string _id = default!; + private string _name = default!; + private Dictionary _reactants = default!; + private Dictionary _products = default!; + private List _effects = default!; public string ID => _id; public string Name => _name; @@ -36,7 +37,7 @@ namespace Content.Shared.Chemistry /// public IReadOnlyList Effects => _effects; - public string Sound { get; private set; } + public string? Sound { get; private set; } [Dependency] private readonly IModuleManager _moduleManager = default!; @@ -56,6 +57,10 @@ namespace Content.Shared.Chemistry //Some implementations of IReactionEffect can't currently be moved to shared, so this is here to prevent the client from breaking when reading server-only IReactionEffects. serializer.DataField(ref _effects, "effects", new List()); } + else + { + _effects = new(); //To ensure _effects isn't null since it is only serializable on the server right snow + } } } diff --git a/Content.Shared/Chemistry/ReagentPrototype.cs b/Content.Shared/Chemistry/ReagentPrototype.cs index 208d1d7e0d..2c27e6f824 100644 --- a/Content.Shared/Chemistry/ReagentPrototype.cs +++ b/Content.Shared/Chemistry/ReagentPrototype.cs @@ -1,4 +1,5 @@ -using System; +#nullable enable +using System; using System.Collections.Generic; using Content.Shared.Interfaces; using Content.Shared.Interfaces.Chemistry; @@ -18,16 +19,16 @@ namespace Content.Shared.Chemistry { [Dependency] private readonly IModuleManager _moduleManager = default!; - private string _id; - private string _name; - private string _description; - private string _physicalDescription; + private string _id = default!; + private string _name = default!; + private string _description = default!; + private string _physicalDescription = default!; private Color _substanceColor; - private string _spritePath; - private List _metabolism; - private List _tileReactions; - private List _plantMetabolism; - private float _customPlantMetabolism = 1f; + private string _spritePath = default!; + private List _metabolism = default!; + private List _tileReactions = default!; + private List _plantMetabolism = default!; + private float _customPlantMetabolism; public string ID => _id; public string Name => _name; @@ -60,15 +61,17 @@ namespace Content.Shared.Chemistry if (_moduleManager.IsServerModule) { + //Implementations of the needed interfaces are currently server-only, so they cannot be read on client serializer.DataField(ref _metabolism, "metabolism", new List { new DefaultMetabolizable() }); serializer.DataField(ref _tileReactions, "tileReactions", new List { }); serializer.DataField(ref _plantMetabolism, "plantMetabolism", new List { }); } else { + //ensure the following fields cannot null since they can only be serialized on server right now _metabolism = new List { new DefaultMetabolizable() }; - _tileReactions = new List(0); - _plantMetabolism = new List(0); + _tileReactions = new(); + _plantMetabolism = new(); } } From 295de8f11485b71c88f9a4290a82de7a8614f23f Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 15 Jan 2021 10:51:29 +0100 Subject: [PATCH 138/166] Fix autoborg properly. --- Resources/Prototypes/Datasets/Names/autoborg.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Datasets/Names/autoborg.yml b/Resources/Prototypes/Datasets/Names/autoborg.yml index cb5f64afc2..bbf0b03b2a 100644 --- a/Resources/Prototypes/Datasets/Names/autoborg.yml +++ b/Resources/Prototypes/Datasets/Names/autoborg.yml @@ -8,7 +8,7 @@ - MY BODY IS IN THE AI CORE - Rogue Cyborg - IT'S MALF -# - { AINAME } Minion {###} + - "{ AINAME } Minion {###}" - Terminator - Robocop - Johnny @@ -47,7 +47,7 @@ - Buzz II - C'MON TARS - 3000 JIGGAWATTS -# - Outbreak Handling Unit {###} + - "Outbreak Handling Unit {###}" - ITS ROGAINE - Nokia - YES-Man @@ -57,7 +57,6 @@ - Head of Robots - ww.nfl.com - Dilbert - - Nazi Zombie Robot - Lvl 99 Firestarter - EVA 1 - You but stronger From 6a74deab37606e6dd2e209c6f1c3cd1006e3937e Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 15 Jan 2021 10:58:09 +0100 Subject: [PATCH 139/166] Disable discord connections in integration tests again. ??? --- Content.IntegrationTests/ContentIntegrationTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.IntegrationTests/ContentIntegrationTest.cs b/Content.IntegrationTests/ContentIntegrationTest.cs index 63c05143c7..20b35baf4b 100644 --- a/Content.IntegrationTests/ContentIntegrationTest.cs +++ b/Content.IntegrationTests/ContentIntegrationTest.cs @@ -49,7 +49,7 @@ namespace Content.IntegrationTests // Connecting to Discord is a massive waste of time. // Basically just makes the CI logs a mess. - options.CVarOverrides["discord.enabled"] = "true"; + options.CVarOverrides["discord.enabled"] = "false"; return base.StartClient(options); } From 2526e98d472855e0ca7bbc775d2a23b97a4af68b Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 15 Jan 2021 11:49:57 +0100 Subject: [PATCH 140/166] Crisp double scale icons for top button bar. Still looks good on 100% scale mode but looks much better on higher modes than the previous bilinear scaling. --- Content.Client/UserInterface/GameHud.cs | 17 +++++++++-------- .../Interface/character.svg.192dpi.png | Bin 0 -> 1068 bytes ...pi.png.yml => character.svg.192dpi.png.yml} | 0 .../Textures/Interface/character.svg.96dpi.png | Bin 569 -> 0 bytes .../Textures/Interface/fist.svg.192dpi.png | Bin 0 -> 991 bytes ...g.96dpi.png.yml => fist.svg.192dpi.png.yml} | 0 .../Textures/Interface/fist.svg.96dpi.png | Bin 548 -> 0 bytes .../Textures/Interface/gavel.svg.192dpi.png | Bin 0 -> 1060 bytes ....96dpi.png.yml => gavel.svg.192dpi.png.yml} | 0 .../Textures/Interface/gavel.svg.96dpi.png | Bin 548 -> 0 bytes .../Interface/hamburger.svg.192dpi.png | Bin 0 -> 309 bytes ...pi.png.yml => hamburger.svg.192dpi.png.yml} | 0 .../Textures/Interface/hamburger.svg.96dpi.png | Bin 316 -> 0 bytes .../Textures/Interface/hammer.svg.192dpi.png | Bin 0 -> 808 bytes ...96dpi.png.yml => hammer.svg.192dpi.png.yml} | 0 .../Textures/Interface/hammer.svg.96dpi.png | Bin 459 -> 0 bytes .../Interface/inventory.svg.192dpi.png | Bin 0 -> 884 bytes ...pi.png.yml => inventory.svg.192dpi.png.yml} | 0 .../Textures/Interface/inventory.svg.96dpi.png | Bin 512 -> 0 bytes .../Textures/Interface/sandbox.svg.192dpi.png | Bin 0 -> 1469 bytes ...6dpi.png.yml => sandbox.svg.192dpi.png.yml} | 0 .../Textures/Interface/sandbox.svg.96dpi.png | Bin 731 -> 0 bytes .../Interface/students-cap.svg.192dpi.png | Bin 0 -> 1156 bytes ...png.yml => students-cap.svg.192dpi.png.yml} | 0 .../Interface/students-cap.svg.96dpi.png | Bin 596 -> 0 bytes .../Interface/target-doll-high.svg.192dpi.png | Bin 0 -> 735 bytes ...yml => target-doll-high.svg.192dpi.png.yml} | 0 .../Interface/target-doll-low.svg.192dpi.png | Bin 0 -> 781 bytes .../target-doll-low.svg.192dpi.png.yml | 2 ++ .../target-doll-middle.svg.192dpi.png | Bin 0 -> 1867 bytes .../target-doll-middle.svg.192dpi.png.yml | 2 ++ .../Interface/target-doll.svg.192dpi.png | Bin 0 -> 3419 bytes .../Interface/target-doll.svg.192dpi.png.yml | 2 ++ .../Textures/Interface/tutorial.svg.192dpi.png | Bin 0 -> 1076 bytes .../Interface/tutorial.svg.192dpi.png.yml | 2 ++ .../Textures/Interface/tutorial.svg.96dpi.png | Bin 644 -> 0 bytes 36 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 Resources/Textures/Interface/character.svg.192dpi.png rename Resources/Textures/Interface/{character.svg.96dpi.png.yml => character.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/character.svg.96dpi.png create mode 100644 Resources/Textures/Interface/fist.svg.192dpi.png rename Resources/Textures/Interface/{fist.svg.96dpi.png.yml => fist.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/fist.svg.96dpi.png create mode 100644 Resources/Textures/Interface/gavel.svg.192dpi.png rename Resources/Textures/Interface/{gavel.svg.96dpi.png.yml => gavel.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/gavel.svg.96dpi.png create mode 100644 Resources/Textures/Interface/hamburger.svg.192dpi.png rename Resources/Textures/Interface/{hamburger.svg.96dpi.png.yml => hamburger.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/hamburger.svg.96dpi.png create mode 100644 Resources/Textures/Interface/hammer.svg.192dpi.png rename Resources/Textures/Interface/{hammer.svg.96dpi.png.yml => hammer.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/hammer.svg.96dpi.png create mode 100644 Resources/Textures/Interface/inventory.svg.192dpi.png rename Resources/Textures/Interface/{inventory.svg.96dpi.png.yml => inventory.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/inventory.svg.96dpi.png create mode 100644 Resources/Textures/Interface/sandbox.svg.192dpi.png rename Resources/Textures/Interface/{sandbox.svg.96dpi.png.yml => sandbox.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/sandbox.svg.96dpi.png create mode 100644 Resources/Textures/Interface/students-cap.svg.192dpi.png rename Resources/Textures/Interface/{students-cap.svg.96dpi.png.yml => students-cap.svg.192dpi.png.yml} (100%) delete mode 100644 Resources/Textures/Interface/students-cap.svg.96dpi.png create mode 100644 Resources/Textures/Interface/target-doll-high.svg.192dpi.png rename Resources/Textures/Interface/{tutorial.svg.96dpi.png.yml => target-doll-high.svg.192dpi.png.yml} (100%) create mode 100644 Resources/Textures/Interface/target-doll-low.svg.192dpi.png create mode 100644 Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml create mode 100644 Resources/Textures/Interface/target-doll-middle.svg.192dpi.png create mode 100644 Resources/Textures/Interface/target-doll-middle.svg.192dpi.png.yml create mode 100644 Resources/Textures/Interface/target-doll.svg.192dpi.png create mode 100644 Resources/Textures/Interface/target-doll.svg.192dpi.png.yml create mode 100644 Resources/Textures/Interface/tutorial.svg.192dpi.png create mode 100644 Resources/Textures/Interface/tutorial.svg.192dpi.png.yml delete mode 100644 Resources/Textures/Interface/tutorial.svg.96dpi.png diff --git a/Content.Client/UserInterface/GameHud.cs b/Content.Client/UserInterface/GameHud.cs index 9050be9136..07a5db624b 100644 --- a/Content.Client/UserInterface/GameHud.cs +++ b/Content.Client/UserInterface/GameHud.cs @@ -128,14 +128,14 @@ namespace Content.Client.UserInterface RootControl = new LayoutContainer(); LayoutContainer.SetAnchorPreset(RootControl, LayoutContainer.LayoutPreset.Wide); - var escapeTexture = _resourceCache.GetTexture("/Textures/Interface/hamburger.svg.96dpi.png"); - var characterTexture = _resourceCache.GetTexture("/Textures/Interface/character.svg.96dpi.png"); - var inventoryTexture = _resourceCache.GetTexture("/Textures/Interface/inventory.svg.96dpi.png"); - var craftingTexture = _resourceCache.GetTexture("/Textures/Interface/hammer.svg.96dpi.png"); - var actionsTexture = _resourceCache.GetTexture("/Textures/Interface/fist.svg.96dpi.png"); - var adminTexture = _resourceCache.GetTexture("/Textures/Interface/gavel.svg.96dpi.png"); - var tutorialTexture = _resourceCache.GetTexture("/Textures/Interface/tutorial.svg.96dpi.png"); - var sandboxTexture = _resourceCache.GetTexture("/Textures/Interface/sandbox.svg.96dpi.png"); + var escapeTexture = _resourceCache.GetTexture("/Textures/Interface/hamburger.svg.192dpi.png"); + var characterTexture = _resourceCache.GetTexture("/Textures/Interface/character.svg.192dpi.png"); + var inventoryTexture = _resourceCache.GetTexture("/Textures/Interface/inventory.svg.192dpi.png"); + var craftingTexture = _resourceCache.GetTexture("/Textures/Interface/hammer.svg.192dpi.png"); + var actionsTexture = _resourceCache.GetTexture("/Textures/Interface/fist.svg.192dpi.png"); + var adminTexture = _resourceCache.GetTexture("/Textures/Interface/gavel.svg.192dpi.png"); + var tutorialTexture = _resourceCache.GetTexture("/Textures/Interface/tutorial.svg.192dpi.png"); + var sandboxTexture = _resourceCache.GetTexture("/Textures/Interface/sandbox.svg.192dpi.png"); _topButtonsContainer = new HBoxContainer { @@ -473,6 +473,7 @@ namespace Content.Client.UserInterface new Control {CustomMinimumSize = (0, VertPad)}, (_textureRect = new TextureRect { + TextureScale = (0.5f, 0.5f), Texture = texture, SizeFlagsHorizontal = SizeFlags.ShrinkCenter, SizeFlagsVertical = SizeFlags.Expand | SizeFlags.ShrinkCenter, diff --git a/Resources/Textures/Interface/character.svg.192dpi.png b/Resources/Textures/Interface/character.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..471a543c2bf8eb7d0d142e9135109c2fc5b4adae GIT binary patch literal 1068 zcmV+{1k?M8P)A!2Q53U^B1*xEdG&&H`tE?}0CXqrkBc!o{lE&qlpR{oHg;tNYYOUBa8{ z!3^O`IjXMfxA>sGR)P2yU#YA6X<&ba;#(Z*m-sRDY!3{mPNwR~xq+Sp)@0B4>IPsURaF8_U@|2kbqL)}Mz3YGQJPc(wz%_~SIa~o;SvEM;z(`_zF00B0{_hOTCC2CSd)dHL z1JjA|Is5_4mJJ?61JfY{%Lb&dFvA&95V&YI2;!mpUYZ2dOVn}_?^n2n}_1ap+x1&y|hta*$x>gKn>l?sTb*t!tRSn|fXr(fGSr}OHL#Xtc z>;N(v)Y9uw1BeY^zHSv=Fy8>4sar)CJPm;QnEGd3<%SFv)Tb`7qVBYO0jo~FQFkrd zAL_7iOXaD0H7?63qqgCW150hFyN$)9`5HyftM8}}_%B9^w`N0000=G`P)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10k%m*K~zYIwU#kY6hRzE->g!2T;PakA{s4Bgv5fxn2=~|AyWAX z^b1({35TwG#)1Th&}qETK<-)GUb2C`+na^`C6jGt-kY8O z?td2wqCQkVs=w5hdZ=!z^XlWG^+oX4YTN$#poTK=rv>0_UX&4RLsr_n8_&(x8AI~`Wv+WDa5rKN7Aqt#>1q54Lx zorI63#X7HSs$*Hf=W~R2^9dlRQ^1eBdYmzBU@`%oQ~)Ps&L+T21@LYjB*3i-1ve95 zqC&w$0t{Cus3*Xs3I(;Gwu%3P7&In8vm!V^6ZML^RKc74#ca1#=hPMT_zch^by=P3 za!;MT+5jE__kcUVBv1!N(<^k^_g~;2@G~9Xfv+KiKUv;?$QV^OEMX8C4mM&UEU_ww)3sL%cT8KuMFN`=N;i>y*ZS1D7lEZk5JY$_a*F z+wRyK;mUBwcKn3xK39(5=Z?1TIz0 zP3|kHVcr_sGm`!tmSB4g@JJjiZZx{b@_hs64YLXCmvpWK_Nd_`usM_}FMIAZ%op&q z;4Q=Hp1sfZ>cOP6AlMH46$%E~Jyxzxn`lO`+wevI66SC}3f_+e_GiHMTMdV8uPVeo z0$TlptCRqt564%5K}{#=uHeH!PZGnq`n1t9yi>g2fFoIWOek1P5;zqK20RYDm=7df zCVR1utD6aMJd_F`g_la93juaF6G_(yJ30Ua8;fJZ)d0JNq;GmCh$_>%()jlPuQU0( z@(_>)7(w;`j-f8_b9Tn0c_MZ=f%-v`2i1jO@BO67CHM>qWsjuqh}=+&saYtMJ%Tr# zJ&$I_FnqxFpt4Be;W0eUNSdph>Dha#RsvVzXM0!9vE-j*yJPqocy5d%4pCRILDDU# zD6J(e3SI~PSV=0wfgB1(JbP?EYxoLya0R$-3pPu-o(G0DBa%)ztF2Z--xr~vzDsIa zc86+7i8Qh8+Z3#=reJL~1#7D*SX)iO+UoxamV~!-jbvD|&|G)MqJAG5rX;JF%dwFf zy5<^LN6Udau#okKrkbnjjOxI?B>RBBY!V!(ijM@7bak0K^t-^pv9`3mI<=24M<3a< zKL|Q3+v`&MY-F&D#TD-mxTjKkJ`&V*+gpO63UH65_K85KqqaBJ@2x%DD%(3-p1nIg z`>^eoo9<`qRY2PUwx#fjvUQFpfhT~6fPa8F!?y{11I+e66Hc{k`VUsDBP&6GToeER N002ovPDHLkV1oZ5$+G|e literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/fist.svg.96dpi.png.yml b/Resources/Textures/Interface/fist.svg.192dpi.png.yml similarity index 100% rename from Resources/Textures/Interface/fist.svg.96dpi.png.yml rename to Resources/Textures/Interface/fist.svg.192dpi.png.yml diff --git a/Resources/Textures/Interface/fist.svg.96dpi.png b/Resources/Textures/Interface/fist.svg.96dpi.png deleted file mode 100644 index c64e2957ca1f35ffbca9a56d591a7320a485ed7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmV+<0^9wGP)Vc$h3!p`HXO(?*yLvq7 mLeh5`@S@f8>S1-mN%#dhNvb`+<>dYV0000C};=&d|P!R;?rlvNvXb}aq zNy1GFi3*BZjA1X75fMsJP-%iBA!J%=FE-An#l2^mxpVK_=ggcJC;YDNz2`jV{JxxX zpYuG=|3s7op2cx|iIrs?w^6X(M1H}FCNrH^(s8co_`V<_cHz2`j^7MehJQ@vCv-~B z9`IZjshmSt)^x_g;F&3;a(=*I(^-?jQwdTz-(hjnnfroA3rOXBg#}G#?+G57hE&d8 zT++0|B(Mc%W*`QiVW4T3F|fG=shm%6annwLjk-UpX2LKoY*K0iPM0i|v$H9wyYN>< zQaP*2&OPN=5qCz!TM=3)?Y46Y$i1e5abiEY zo1_ndw|2Chhj$X&zKX76)+*)J;*UPT9`Dh19^Olod%jk&cEEe^caK0recE1xj}qm! z)#Wrk;Jv!9cf6d?b^v=4GiW<8VZ*kJkV4jV#N?R?YIx zN@ZTW~4N{R9&?W{!#6Z%)*2Q2X#7x41fx$*%k=P9WEKMY~&Mk|) zZXyyfi9tdPLW!Y7)W3Qk!@G_4Tf2nx(OuVmZiCiRsDvp>7JYYM6N7@EaZAWkn=r|gV7u@>!&+F=1hyZu8FnWX#kCP}Dk6qgV9Z3scuHxm zI8P5EVnb1zTNuTp{-m{NW@GqTv`;6U(?1*K?g?eGHKjCDV0$BCPee>53`fM9J|Phi myHiRp^2YvNZU2$~5BdXCnc=W32p`V?0000RUHs0e1A11AHoR`I{NS(JZg`%|A@zYkY@kI#>hl@gD>nvePWQZd66h%gPgg&e IbxsLQ0FW7a{r~^~ diff --git a/Resources/Textures/Interface/hammer.svg.192dpi.png b/Resources/Textures/Interface/hammer.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffabe31d5d08cd2d35280bfecddd74bbbdf7d83 GIT binary patch literal 808 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 N002ovPDHLkV1g-JIx+wN diff --git a/Resources/Textures/Interface/students-cap.svg.192dpi.png b/Resources/Textures/Interface/students-cap.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..22e7e127258470f5bca199bd53efabd09307ee55 GIT binary patch literal 1156 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 RNF)FN002ovPDHLkV1kC(Oq~D# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/tutorial.svg.96dpi.png.yml b/Resources/Textures/Interface/target-doll-high.svg.192dpi.png.yml similarity index 100% rename from Resources/Textures/Interface/tutorial.svg.96dpi.png.yml rename to Resources/Textures/Interface/target-doll-high.svg.192dpi.png.yml diff --git a/Resources/Textures/Interface/target-doll-low.svg.192dpi.png b/Resources/Textures/Interface/target-doll-low.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6fc741c2cbc55c346a65fd76f7b04840326344 GIT binary patch literal 781 zcmeAS@N?(olHy`uVBq!ia0vp^4nUmC!3HD+qtnfR6lZ})WHAGSY&!@u_CNiY3KWzq zag8Vm&QB{TPb^AhC@(M9%goCzPEIUH)ypqRpZ(58ih+S?mZytjNX4ADb8NFi97WpZ zZ`RoaHgk-c>$JeK&Jvk~xFQ*M))WSiQNCu5+Z$%?;Z0-6V>G|Xa+fL3hyf^Yhix#y6E5N2aS|kI#BeIF2`B(kEy<8-elUh{Df@)m32Y8#2RDIL zc=0RL8wCF1I>BJXu!((&?@PufxdzM%vlDKDtpKXte((~|KNA>t0Br>tJmVx#`vb9p z$-WnKAE*IcKI3Gr!R!S<2ZKZ}Gls4F7r+1V2DTg@gMZP{O3W-Z?_G{qeOUT5i9uc| zY0?6F#@D$g8BPmsw5wsg^^ZBZVf$nrxt6V0CUGCAmiXF`t}7<>X~Qw&yT^3hY+3^u z`lEGN{@Q(Ba;&(2mYC#YMjob)j>=b@VNcUsYSw%w%)0xvz+?7BO3%j%UU`zvE7ZwWj6eDRXalf`apzudOuDkoQ|>fFq# zNA;C+CzQlr4SU(OBzn@foUgUF<62eUvYlfVZwNlXm>~c6@?)b73^we$1UKF|qOw}y yrA7g#1-lI6H|E)2`2E*6S|;cz{i{6nmp9^!!qMGX4`hHznZeW5&t;ucLK6U#Y)K~o literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml b/Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/target-doll-middle.svg.192dpi.png b/Resources/Textures/Interface/target-doll-middle.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..7b7e6e5671da68bb8176a190ca4777d31d5afc41 GIT binary patch literal 1867 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 uXMvq0A05}V zK~z|Uy_Y>}6j2n0pPOJz3L_%PY9aVRP!KExqp`5DGuSJplYo_$qC|s*SShjAzn~yi zVr)bMnpRC85o4-|ge0JOEOu9x>&|B8&TQUhVeWa~^V~BZ+=UWSC)F?Nn)+G2S|+ay z$SvFJ=5~V|R@XCNHq?>rgn6C;($ur<0y(R0ZULiuuG=6z>U`AnojRkwkFL+FJ>7(v zh#JnctOfOPv_8=-kO6fuYBm(r3`gsW>OePOrlLk08Fd>`-Bi^eHT7pA%rA9+l`v2J zUwL6vpHu~MLj7G5=8t-^3Yb@I!i&PFz9|bbo)Me^qk16~q*wh^G0cLxBdcepFXT1g zc+yU?bqts+ich&j|91S6?H6P#`B|u(K{}jAT^dA7O1OHBE zD~ThXZcSD1CFZQC!>ErE12)w?5zJnTy^XDU7}W2;zQhsNLI}$(Fg0K)G3#3oFqmit zxNGCpZ2V4dQQt{}L7fH8mk9X?d;rb>r%L3!4(cfI7T8%LsI1n3`ae+hv^uM Date: Fri, 15 Jan 2021 17:19:52 +0100 Subject: [PATCH 141/166] Fixed SaveLoadSave swapping order of expected/actual in assert. --- Content.IntegrationTests/Tests/SaveLoadSaveTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs b/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs index 347fb66499..23ab959a3e 100644 --- a/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs +++ b/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs @@ -54,7 +54,7 @@ namespace Content.IntegrationTests.Tests } Assert.Multiple(() => { - Assert.That(one, Is.EqualTo(two)); + Assert.That(two, Is.EqualTo(one)); var failed = TestContext.CurrentContext.Result.Assertions.FirstOrDefault(); if (failed != null) { From e51f74a1f18e7e4debc4cc32d71660c960931c96 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 15 Jan 2021 17:20:02 +0100 Subject: [PATCH 142/166] Fixed some map saving bugs with ID cards/PDAs. --- .../GameObjects/Components/Access/IdCardComponent.cs | 3 ++- .../GameObjects/Components/PDA/PDAComponent.cs | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Content.Server/GameObjects/Components/Access/IdCardComponent.cs b/Content.Server/GameObjects/Components/Access/IdCardComponent.cs index 2bd23e5cdd..fca076ed8b 100644 --- a/Content.Server/GameObjects/Components/Access/IdCardComponent.cs +++ b/Content.Server/GameObjects/Components/Access/IdCardComponent.cs @@ -67,7 +67,7 @@ namespace Content.Server.GameObjects.Components.Access public override void Initialize() { base.Initialize(); - _ownerOriginalName = Owner.Name; + _ownerOriginalName ??= Owner.Name; UpdateEntityName(); } @@ -77,6 +77,7 @@ namespace Content.Server.GameObjects.Components.Access serializer.DataField(ref _fullName, "fullName", string.Empty); serializer.DataField(ref _jobTitle, "jobTitle", string.Empty); + serializer.DataField(ref _ownerOriginalName, "originalOwnerName", null); } } } diff --git a/Content.Server/GameObjects/Components/PDA/PDAComponent.cs b/Content.Server/GameObjects/Components/PDA/PDAComponent.cs index c5ed36ede8..efd7c1da4b 100644 --- a/Content.Server/GameObjects/Components/PDA/PDAComponent.cs +++ b/Content.Server/GameObjects/Components/PDA/PDAComponent.cs @@ -36,7 +36,7 @@ namespace Content.Server.GameObjects.Components.PDA [RegisterComponent] [ComponentReference(typeof(IActivate))] [ComponentReference(typeof(IAccess))] - public class PDAComponent : SharedPDAComponent, IInteractUsing, IActivate, IUse, IAccess + public class PDAComponent : SharedPDAComponent, IInteractUsing, IActivate, IUse, IAccess, IMapInit { [Dependency] private readonly IPDAUplinkManager _uplinkManager = default!; [Dependency] private readonly IEntityManager _entityManager = default!; @@ -86,6 +86,11 @@ namespace Content.Server.GameObjects.Components.PDA UserInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; } + UpdatePDAAppearance(); + } + + public void MapInit() + { if (!string.IsNullOrEmpty(_startingIdCard)) { var idCard = _entityManager.SpawnEntity(_startingIdCard, Owner.Transform.Coordinates); @@ -99,8 +104,6 @@ namespace Content.Server.GameObjects.Components.PDA var pen = _entityManager.SpawnEntity(_startingPen, Owner.Transform.Coordinates); _penSlot.Insert(pen); } - - UpdatePDAAppearance(); } private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message) @@ -434,6 +437,7 @@ namespace Content.Server.GameObjects.Components.PDA } ISet IAccess.Tags => _accessSet; + bool IAccess.IsReadOnly => true; void IAccess.SetTags(IEnumerable newTags) From bca0f7b1b04b7d77b8c2c9eddf43dc4cc8efade5 Mon Sep 17 00:00:00 2001 From: 20kdc Date: Sat, 16 Jan 2021 19:13:11 +0000 Subject: [PATCH 143/166] Singularity Engine: Containment field emitters emit soft light (#3004) * Singularity Engine: Containment field emitters emit light, making use of soft shadows * Singularity Engine Containment Emitter Lights: Clean up component dependencies & remove now-useless point light enable check --- .../ContainmentFieldGeneratorComponent.cs | 31 +++++++++++-------- Resources/Prototypes/Entities/singularity.yml | 6 ++++ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs index ba5e54100a..d06732e2ee 100644 --- a/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs +++ b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs @@ -7,6 +7,7 @@ using Content.Server.Utility; using Content.Shared.Physics; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Physics; using Robust.Shared.IoC; @@ -14,6 +15,7 @@ using Robust.Shared.Log; using Robust.Shared.Maths; using Robust.Shared.Physics; using Robust.Shared.ViewVariables; +using Robust.Server.GameObjects; namespace Content.Server.GameObjects.Components.Singularity { @@ -63,7 +65,8 @@ namespace Content.Server.GameObjects.Components.Singularity } } - private PhysicsComponent? _collidableComponent; + [ComponentDependency] private readonly PhysicsComponent? _collidableComponent = default; + [ComponentDependency] private readonly PointLightComponent? _pointLightComponent = default; private Tuple? _connection1; private Tuple? _connection2; @@ -71,16 +74,6 @@ namespace Content.Server.GameObjects.Components.Singularity public bool CanRepell(IEntity toRepell) => _connection1?.Item2?.CanRepell(toRepell) == true || _connection2?.Item2?.CanRepell(toRepell) == true; - public override void Initialize() - { - base.Initialize(); - if (!Owner.TryGetComponent(out _collidableComponent)) - { - Logger.Error("ContainmentFieldGeneratorComponent created with no CollidableComponent"); - return; - } - } - public override void HandleMessage(ComponentMessage message, IComponent? component) { base.HandleMessage(message, component); @@ -168,7 +161,7 @@ namespace Content.Server.GameObjects.Components.Singularity { Logger.Error("When trying to connect two Containmentfieldgenerators, the second one already had two connection but the check didn't catch it"); } - + UpdateConnectionLights(); return true; } @@ -180,9 +173,12 @@ namespace Content.Server.GameObjects.Components.Singularity if (_connection1?.Item2 == connection) { _connection1 = null; - }else if (_connection2?.Item2 == connection) + UpdateConnectionLights(); + } + else if (_connection2?.Item2 == connection) { _connection2 = null; + UpdateConnectionLights(); } else if(connection != null) { @@ -198,6 +194,15 @@ namespace Content.Server.GameObjects.Components.Singularity } } + public void UpdateConnectionLights() + { + if (_pointLightComponent != null) + { + bool hasAnyConnection = (_connection1 != null) || (_connection2 != null); + _pointLightComponent.Enabled = hasAnyConnection; + } + } + public override void OnRemove() { _connection1?.Item2.Dispose(); diff --git a/Resources/Prototypes/Entities/singularity.yml b/Resources/Prototypes/Entities/singularity.yml index 97cc72271b..e1576249ed 100644 --- a/Resources/Prototypes/Entities/singularity.yml +++ b/Resources/Prototypes/Entities/singularity.yml @@ -85,6 +85,12 @@ - type: ContainmentFieldGenerator - type: Anchorable - type: Pullable + - type: PointLight + enabled: false + color: "#4080FF" + radius: 32 + energy: 2.0 + softness: 32.0 - type: entity name: Containment Field From 855ba90ce5fb782b01226cc6a1ec492ddd49a6ce Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Sat, 16 Jan 2021 13:20:31 -0600 Subject: [PATCH 144/166] Gas canister port sprites (#3009) Co-authored-by: py01 --- .../Constructible/Ground/gascanisterports.yml | 18 ++++++++++++------ .../gascanisterport.rsi/gasCanisterPort.png | Bin 0 -> 288 bytes .../Atmos/gascanisterport.rsi/meta.json | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 Resources/Textures/Constructible/Atmos/gascanisterport.rsi/gasCanisterPort.png create mode 100644 Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml b/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml index a38ca76f30..e23edfc1e3 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml @@ -10,6 +10,15 @@ - type: SnapGrid offset: Center - type: Sprite + sprite: Constructible/Atmos/gascanisterport.rsi + state: gasCanisterPort + - type: Icon + sprite: Constructible/Atmos/gascanisterport.rsi + state: gasCanisterPort + - type: Appearance + visuals: + - type: PipeVisualizer + pipeRSI: Constructible/Atmos/pipe.rsi - type: Damageable - type: Destructible thresholds: @@ -21,14 +30,11 @@ - type: entity parent: GasCanisterPortBase - id: FourwayGasCanisterPort - name: Fourway Gas Canister Port + id: GasCanisterPort + name: Gas Canister Port components: - type: NodeContainer nodes: - !type:PipeNode nodeGroupID: Pipe - pipeDirection: Fourway - - type: Sprite - sprite: Constructible/Power/smes.rsi - state: smes + pipeDirection: East diff --git a/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/gasCanisterPort.png b/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/gasCanisterPort.png new file mode 100644 index 0000000000000000000000000000000000000000..93a3d5fb6f2dadd9ebad80e1236952ab3637ed85 GIT binary patch literal 288 zcmV+*0pI?KP)ST5Ji8Yh>FfLFai=Ki+Be{VFwnmu3UO|mBmz%_ao7n}tE0Bzf{ z!{>Qs_p$-F#u88fxKqVxnnY$f_elV2EkX!z&WVDZa|j{8TB`%NLIr>XSe8X)&bd#H zq4yqL*NGQV-}i_y!h4_WO-_MEKQRTOO(@-Rrvga!`{@9hCs_@U^At;z^(CvS3j4ml m&UIa5+qRD$sV`YkQPC4k)JGmAsq~2e0000 Date: Sat, 16 Jan 2021 20:22:44 +0100 Subject: [PATCH 145/166] updates submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index c4062bcae9..3ca686298e 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit c4062bcae95e965301c22768653b581287253763 +Subproject commit 3ca686298e35f2d7a3d8ce803a41be773fa13dfb From c6cb8597021fea141f6577a20590f599dd02c3f6 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 16 Jan 2021 21:48:44 +0100 Subject: [PATCH 146/166] Update submodule to fix movement oh god --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 3ca686298e..8e97982f1e 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 3ca686298e35f2d7a3d8ce803a41be773fa13dfb +Subproject commit 8e97982f1e1f12a119a0241fff6408a25c86fb5e From 28b129276ac02548868ebbd7db64cc936d3cfd56 Mon Sep 17 00:00:00 2001 From: DmitriyRubetskoy <75271456+DmitriyRubetskoy@users.noreply.github.com> Date: Sun, 17 Jan 2021 03:43:27 +0300 Subject: [PATCH 147/166] Lockers and flavortext (#2934) Co-authored-by: DrSmugleaf Co-authored-by: Rubetskoy Dmitriy Co-authored-by: Pieter-Jan Briers --- .../Prototypes/Catalog/Fills/lockers.yml | 285 +++++++++++++++++- .../Entities/Clothing/Belt/belts.yml | 2 +- .../Entities/Clothing/Head/hats.yml | 12 +- .../Entities/Clothing/Neck/cloaks.yml | 16 +- .../Entities/Clothing/OuterClothing/armor.yml | 18 +- .../Prototypes/Entities/Objects/Fun/toys.yml | 2 +- .../Entities/Objects/Misc/dat_fukken_disk.yml | 4 +- .../Entities/Objects/Weapons/security.yml | 3 +- 8 files changed, 311 insertions(+), 31 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/lockers.yml b/Resources/Prototypes/Catalog/Fills/lockers.yml index f2b3c447b9..a86fedc413 100644 --- a/Resources/Prototypes/Catalog/Fills/lockers.yml +++ b/Resources/Prototypes/Catalog/Fills/lockers.yml @@ -56,21 +56,105 @@ id: LockerBoozeFilled suffix: Filled parent: LockerBooze + components: + - type: StorageFill + contents: + - name: ClothingOuterArmorBulletproof + prob: 0.5 + - name: ShotgunSawn + prob: 0.8 + - name: DrinkShaker + prob: 1 + - name: ClothingEyesGlassesBeer + prob: 1 + - name: DrinkBeer + prob: 0.5 + - name: DrinkBottleBeer + prob: 0.5 - type: entity id: LockerQuarterMasterFilled suffix: Filled parent: LockerQuarterMaster + components: + - type: StorageFill + contents: + - name: ClothingNeckCloakQm + prob: 1 + - name: ClothingHeadsetCargo + prob: 1 + - name: PlushieLizard + prob: 0.1 + - name: ClothingHandsGlovesColorBrown + prob: 1 + - name: ClothingOuterSuitFire + prob: 0.5 + - name: ClothingShoesColorBrown + prob: 0.7 + - name: ClothingHeadHatCargosoft + prob: 0.8 + - name: SupplyRequestComputerCircuitboard + prob: 1 + - name: SupplyComputerCircuitboard + prob: 1 - type: entity id: LockerCaptainFilled suffix: Filled parent: LockerCaptain - + components: + - type: StorageFill + contents: + - name: NukeDisk + prob: 1 + - name: CaptainIDCard + prob: 1 + - name: ClothingHeadHatCaptain + prob: 1 + - name: ClothingNeckCloakCap + prob: 1 + - name: ClothingHandsGlovesCaptain + prob: 1 + - name: ClothingOuterHardsuitCap + prob: 1 + - name: TaserGun + prob: 1 + - name: ClothingShoesColorBlack + prob: 0.7 + - name: ClothingHeadHelmetHardsuitCap + prob: 1 + - name: CommsComputerCircuitboard + prob: 1 + - name: ClothingHeadsetAltCommand + prob: 1 + - name: PlushieNuke + prob: 0.1 + - type: entity id: LockerHeadOfPersonnelFilled suffix: Filled parent: LockerHeadOfPersonnel + components: + - type: StorageFill + contents: + - name: ClothingNeckCloakHop + prob: 1 + - name: ClothingHeadHatHopcap + prob: 1 + - name: HoPIDCard + prob: 0.9 + - name: ClothingHeadsetCommand + prob: 1 + - name: BoxPDA + prob: 1 + - name: IDComputerCircuitboard + prob: 1 + - name: TaserGun + prob: 1 + - name: ClothingShoesColorBlack + prob: 0.7 + - name: PlushieLizard + prob: 0.1 - type: entity id: LockerChiefEngineerFilled @@ -83,16 +167,42 @@ - name: ClothingOuterHardsuitEngineeringWhite - name: ClothingMaskBreath - name: OxygenTankFilled + - name: ClothingNeckCloakCe + - name: ClothingEyesGlassesMeson + - name: ClothingBeltChiefEngineerFilled + - name: ClothingHeadHatBeretEngineering - type: entity id: LockerElectricalSuppliesFilled suffix: Filled parent: LockerElectricalSupplies - + components: + - type: StorageFill + contents: + - name: ToolboxElectricalFilled + prob: 0.7 + - name: FirelockElectronics + prob: 0.05 + - name: APCElectronics + prob: 0.1 + - name: MVWireStack + prob: 0.2 + - name: ApcExtensionCableStack + prob: 0.3 + - type: entity id: LockerWeldingSuppliesFilled suffix: Filled parent: LockerWeldingSupplies + components: + - type: StorageFill + contents: + - name: WelderMini + prob: 1 + - name: Welder + prob: 0.1 + - name: ClothingHeadHatWelding + prob: 0.5 - type: entity id: LockerAtmosphericsFilled @@ -122,6 +232,27 @@ id: LockerBotanistFilled suffix: Filled parent: LockerBotanist + components: + - type: StorageFill + contents: + - name: ClothingHandsGlovesLeather + prob: 1 + - name: ClothingHandsGlovesLeather + prob: 0.8 + - name: ClothingOuterApronBotanist + prob: 1 + - name: ClothingOuterApronBotanist + prob: 0.8 + - name: TowercapSeeds + prob: 1 + - name: BananaSeeds + prob: 0.8 + - name: EggySeeds + prob: 0.5 + - name: AppleSeeds + prob: 0.8 + - name: TomatoSeeds + prob: 1 - type: entity id: LockerMedicineFilled @@ -136,37 +267,185 @@ - type: StorageFill contents: - name: ClothingHandsGlovesLatex - prob: 0.4 + prob: 1 + - name: ClothingHeadsetMedical + prob: 1 + # - name: ClothingEyesHudMedical #Removed until working properly + # prob: 1 + - name: ClothingBeltMedical + prob: 1 + - name: ClothingHeadHatSurgcapBlue + prob: 1 + orGroup: Surgcaps + - name: ClothingHeadHatSurgcapGreen + prob: 0.1 + orGroup: Surgcaps + - name: ClothingHeadHatSurgcapPurple + prob: 0.05 + orGroup: Surgcaps + - name: UniformScrubsColorBlue + prob: 0.5 + orGroup: Surgshrubs + - name: UniformScrubsColorGreen + prob: 0.1 + orGroup: Surgshrubs + - name: UniformScrubsColorPurple + prob: 0.05 + orGroup: Surgshrubs + - name: ClothingMaskSterile + prob: 1 + - type: entity id: LockerChemistryFilled suffix: Filled parent: LockerChemistry + components: + - type: StorageFill + contents: + - name: BoxSyringe + prob: 1 + - name: BoxBeaker + prob: 1 - type: entity id: LockerChiefMedicalOfficerFilled suffix: Filled parent: LockerChiefMedicalOfficer + components: + - type: StorageFill + contents: + - name: MedkitFilled + prob: 1 + - name: ClothingHandsGlovesLatex + prob: 1 + #- name: ClothingEyesHudMedical #Removed until working properly + # prob: 1 + - name: ClothingHeadsetAltMedical + prob: 1 + - name: ClothingCloakCmo + prob: 1 + - name: ClothingBackpackDuffelSurgeryFilled + prob: 1 + - name: ClothingOuterCoatLabCmo + prob: 1 + - name: ClothingMaskSterile + prob: 1 - type: entity id: LockerResearchDirectorFilled suffix: Filled parent: LockerResearchDirector + components: + - type: StorageFill + contents: + - name: ResearchComputerCircuitboard + prob: 1 + - name: ProtolatheMachineCircuitboard + prob: 1 + - name: ClothingNeckCloakRd + prob: 1 + - name: ClothingHeadsetMedicalScience + prob: 1 + - name: PlushieSlime + prob: 0.1 - type: entity id: LockerHeadOfSecurityFilled suffix: Filled parent: LockerHeadOfSecurity + components: + - type: StorageFill + contents: + - name: TaserGun + prob: 1 + - name: ClothingHeadHatBeretHoS + prob: 1 + - name: ClothingHeadHatHoshat + prob: 1 + - name: ClothingNeckCloakHos + prob: 1 + - name: ClothingOuterCoatHoSTrench + prob: 1 + - name: ClothingUniformJumpskirtHoSAlt + prob: 1 + - name: ClothingUniformJumpsuitHoSAlt + prob: 1 + - name: ClothingUniformJumpsuitHoSBlue + prob: 0.5 + - name: ClothingUniformJumpsuitHoSGrey + prob: 0.5 + - name: ClothingUniformJumpsuitHoSParadeMale + prob: 0.1 + - name: ClothingUniformJumpskirtHoSParadeMale + prob: 0.1 + - name: ClothingHeadHelmetHardsuitSecurityRed + prob: 1 + - name: ClothingOuterHardsuitSecurityRed + prob: 1 + - name: DrinkVacuumFlask + prob: 0.8 + - name: ClothingBeltSecurityFilled + prob: 1 + - name: ClothingHeadsetAltSecurity + prob: 1 + - name: ClothingEyesGlassesSecurity + prob: 1 + - name: ClothingShoesBootsJack + prob: 1 + - type: entity id: LockerWardenFilled suffix: Filled parent: LockerWarden + components: + - type: StorageFill + contents: + - name: TaserGun + prob: 0.3 + - name: ClothingHeadHatWarden + prob: 1 + - name: ClothingHeadHatBeretWarden + prob: 1 + - name: ClothingBeltSecurityFilled + prob: 1 + - name: Flash + prob: 1 + - name: ClothingEyesGlassesSecurity + prob: 1 + - name: ClothingHeadsetAltSecurity + prob: 1 + - name: ClothingHandsGlovesCombat + prob: 1 + - name: ClothingShoesBootsJack + prob: 1 - type: entity id: LockerSecurityFilled suffix: Filled parent: LockerSecurity + components: + - type: StorageFill + contents: + - name: ClothingUniformJumpsuitSecGrey + prob: 0.3 + - name: ClothingHeadHelmetHelmet + prob: 1 + - name: ClothingOuterArmorBulletproof + prob: 1 + - name: ClothingBeltSecurityFilled + prob: 1 + - name: Flash + prob: 0.5 + - name: ClothingEyesGlassesSecurity + prob: 1 + - name: ClothingHeadsetSecurity + prob: 1 + - name: ClothingHandsGlovesColorBlack + prob: 1 + - name: ClothingShoesBootsJack + prob: 1 # Before adding to this - See https://github.com/space-wizards/space-station-14/pull/2427#issuecomment-718152557 - type: entity diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml index e7af7db6e1..46be688719 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml @@ -35,7 +35,7 @@ - type: Clothing sprite: Clothing/Belt/ce.rsi - type: Storage - capacity: 60 + capacity: 100 - type: entity parent: ClothingBeltBase diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 1de485dd3f..783c4e9186 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -23,7 +23,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatBeretEngineering - name: beret engineering + name: engineering beret description: A beret with the engineering insignia emblazoned on it. For engineers that are more inclined towards style than safety. components: - type: Sprite @@ -34,7 +34,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatBeretHoS - name: beret HoS + name: HoS beret description: A black beret with a commander's rank emblem. For officers that are more inclined towards style than safety. components: - type: Sprite @@ -45,7 +45,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatBeretWarden - name: beret warden + name: warden's hat description: A corporate blue beret with a warden's rank emblem. For officers that are more inclined towards style than safety. components: - type: Sprite @@ -67,7 +67,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatCaptain - name: captain + name: captain's hardhat description: It's good being the king. components: - type: Sprite @@ -78,7 +78,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatCardborg - name: cardborg + name: cardborg helmet description: A hat made out of a box. components: - type: Sprite @@ -89,7 +89,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatCentcom - name: centcom + name: centcom brand hat description: "It's good to be the emperor." components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml index 3f715de010..aeb39f43e1 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml @@ -2,7 +2,7 @@ parent: ClothingNeckBase id: ClothingNeckCloakCap name: captain's cloak - description: A pompous and comfy blue cloak with a nice gold trim. + description: A pompous and comfy blue cloak with a nice gold trim, while not particularly valuable as your other posessions, it sure is fancy. components: - type: Sprite sprite: Clothing/Neck/Cloaks/cap.rsi @@ -13,7 +13,7 @@ parent: ClothingNeckBase id: ClothingNeckCloakHos name: HoS's cloak - description: An exquisite dark and red cloak of a Head of Security. + description: An exquisite dark and red cloak fitting for those who can assert dominance over wrongdoers. Take a stab at being civil in prosecution! components: - type: Sprite sprite: Clothing/Neck/Cloaks/hos.rsi @@ -24,7 +24,7 @@ parent: ClothingNeckBase id: ClothingNeckCloakCe name: CE's cloak - description: A dark green cloak with light blue ornaments. + description: A dark green cloak with light blue ornaments, given to those who proved themselves to master the precise art of engineering. components: - type: Sprite sprite: Clothing/Neck/Cloaks/ce.rsi @@ -34,9 +34,9 @@ - type: entity parent: ClothingNeckBase - id: CloathingCloakCmo + id: ClothingCloakCmo name: CMO's cloak - description: A sterile blue cloak with a green cross. + description: A sterile blue cloak with a green cross, radiating with a sense of duty and willingness to help others. components: - type: Sprite sprite: Clothing/Neck/Cloaks/cmo.rsi @@ -47,7 +47,7 @@ parent: ClothingNeckBase id: ClothingNeckCloakRd name: RD's cloak - description: A white cloak with violet stripes. + description: A white cloak with violet stripes, showing your status as the arbiter of cutting-edge technology. components: - type: Sprite sprite: Clothing/Neck/Cloaks/rd.rsi @@ -58,7 +58,7 @@ parent: ClothingNeckBase id: ClothingNeckCloakQm name: QM's cloak - description: A strong brown cloak with a reflective stripe. + description: A strong brown cloak with a reflective stripe, while not as fancy as others, it does show your managing skills. components: - type: Sprite sprite: Clothing/Neck/Cloaks/qm.rsi @@ -69,7 +69,7 @@ parent: ClothingNeckBase id: ClothingNeckCloakHop name: HoP's cloak - description: A blue cloak with red shoudlers and gold buttons. + description: A blue cloak with red shoudlers and gold buttons, proving you are the gatekeeper to any airlock on the station. components: - type: Sprite sprite: Clothing/Neck/Cloaks/hop.rsi diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index ff12784eb7..da84209ac2 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -1,7 +1,7 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorReflective - name: armor (reflective) + name: reflective vest description: An armored vest with advanced shielding to protect against energy weapons. components: - type: Sprite @@ -12,7 +12,7 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorBulletproof - name: bulletproof + name: bulletproof vest description: An armored vest with heavy plates to protect against ballistic projectiles. components: - type: Sprite @@ -23,7 +23,7 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorCult - name: cult armor + name: acolyte armor description: An evil-looking cult armor, made of bones. components: - type: Sprite @@ -34,7 +34,7 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorHeavy - name: heavy + name: heavy armor suit description: A heavily armored suit that protects against excessive damage. components: - type: Sprite @@ -45,7 +45,7 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorHeavyGreen - name: heavy + name: green heavy armor suit description: A heavily armored suit with green accents that protects against excessive damage. components: - type: Sprite @@ -56,7 +56,7 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorHeavyRed - name: heavy + name: red heavy armor suit description: A heavily armored suit with red accents that protects against excessive damage. components: - type: Sprite @@ -89,8 +89,8 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorRiot - name: riot - description: An armored vest with heavy padding to protect against melee attacks. + name: riot suit + description: An armored vest with heavy padding to protect against melee attacks, perfect for fighting delinquents around the station. components: - type: Sprite sprite: Clothing/OuterClothing/Armor/riot.rsi @@ -100,7 +100,7 @@ - type: entity parent: ClothingOuterBase id: ClothingOuterArmorScaf - name: scaf + name: scaf suit description: A green and brown tactical suit for combat situations. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index b6212ddf61..244cc4e5e7 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -34,7 +34,7 @@ name: lizard plushie parent: BaseItem id: PlushieLizard - description: An adorable stuffed toy that resembles a lizardperson. + description: An adorable stuffed toy that resembles a lizardperson. Made by CentCom as a token initiative to combat speciesism in work environments. "Welcome your new colleges as you do this plush, with open arms!" components: - type: Toys - type: LoopingSound diff --git a/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml b/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml index c1107f0d7f..62783ee50c 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml @@ -2,7 +2,7 @@ name: nuclear authentication disk parent: BaseItem id: NukeDisk - description: GET DAT FUCKKEN DISK + description: A nuclear auth disk, capable of arming a nuke if used along with a code. Note from nanotrasen reads "THIS IS YOUR MOST IMPORTANT POSESSION, SECURE DAT FUKKEN DISK!" components: - type: Sprite netsync: false @@ -16,4 +16,4 @@ - type: entity parent: NukeDisk id: NukeDiskFake - description: GET DAT FUCK- wait a second... + description: A nuclear auth disk, capable of.. WAIT THIS IS JUST PAINTED PLASTIC, FUCK- diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 362a32f6b2..44b3e66e5f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -1,8 +1,8 @@ - type: entity name: stun baton - description: A stun baton for incapacitating people with. parent: BaseItem id: Stunbaton + description: A stun baton for incapacitating people with. Actively harming with this is considered bad tone. components: - type: Sprite sprite: Objects/Weapons/Melee/stunbaton.rsi @@ -28,6 +28,7 @@ name: flash parent: BaseItem id: Flash + description: An ultrabright flashbulb with a trigger, causes the victum to be dazed and lose their eyesight for a moment. Useless when burnt out. components: - type: Sprite sprite: Objects/Weapons/Melee/flash.rsi From 5a248bdd86eea9e0a2ca3af3dcc3f72750cee25d Mon Sep 17 00:00:00 2001 From: Swept Date: Sun, 17 Jan 2021 08:32:31 +0000 Subject: [PATCH 148/166] Hotfixes thrown item damage (#3013) * Initial * A * Bye bye! --- .../GameObjects/Components/Projectiles/ThrownItemComponent.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs index 089a422711..9082154b55 100644 --- a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs +++ b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs @@ -45,10 +45,6 @@ namespace Content.Server.GameObjects.Components.Projectiles // Raise an event. EntitySystem.Get().ThrowCollideInteraction(User, Owner, entity, Owner.Transform.Coordinates); } - if (entity.TryGetComponent(out IDamageableComponent damage)) - { - damage.ChangeDamage(DamageType.Blunt, 10, false, Owner); - } // Stop colliding with mobs, this mimics not having enough velocity to do damage // after impacting the first object. From f85fc6b37068772af65aaa84c8b788181dc985f3 Mon Sep 17 00:00:00 2001 From: 20kdc Date: Sun, 17 Jan 2021 14:41:52 +0000 Subject: [PATCH 149/166] Buckle/Unbuckle icons (#3014) --- .../Components/Strap/StrapComponent.cs | 1 + .../Textures/Interface/VerbIcons/buckle.svg | 135 ++++++++++++++++++ .../Interface/VerbIcons/buckle.svg.96dpi.png | Bin 0 -> 545 bytes .../Textures/Interface/VerbIcons/unbuckle.svg | 122 ++++++++++++++++ .../VerbIcons/unbuckle.svg.96dpi.png | Bin 0 -> 516 bytes 5 files changed, 258 insertions(+) create mode 100644 Resources/Textures/Interface/VerbIcons/buckle.svg create mode 100644 Resources/Textures/Interface/VerbIcons/buckle.svg.96dpi.png create mode 100644 Resources/Textures/Interface/VerbIcons/unbuckle.svg create mode 100644 Resources/Textures/Interface/VerbIcons/unbuckle.svg.96dpi.png diff --git a/Content.Server/GameObjects/Components/Strap/StrapComponent.cs b/Content.Server/GameObjects/Components/Strap/StrapComponent.cs index a9a08ec31a..2642207c28 100644 --- a/Content.Server/GameObjects/Components/Strap/StrapComponent.cs +++ b/Content.Server/GameObjects/Components/Strap/StrapComponent.cs @@ -213,6 +213,7 @@ namespace Content.Server.GameObjects.Components.Strap } data.Visibility = VerbVisibility.Visible; + data.IconTexture = buckle.BuckledTo == null ? "/Textures/Interface/VerbIcons/buckle.svg.96dpi.png" : "/Textures/Interface/VerbIcons/unbuckle.svg.96dpi.png"; data.Text = Loc.GetString(buckle.BuckledTo == null ? "Buckle" : "Unbuckle"); } diff --git a/Resources/Textures/Interface/VerbIcons/buckle.svg b/Resources/Textures/Interface/VerbIcons/buckle.svg new file mode 100644 index 0000000000..6039683829 --- /dev/null +++ b/Resources/Textures/Interface/VerbIcons/buckle.svg @@ -0,0 +1,135 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Resources/Textures/Interface/VerbIcons/buckle.svg.96dpi.png b/Resources/Textures/Interface/VerbIcons/buckle.svg.96dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb8f793c243083f77b8d5c73acce876d84b7cd9 GIT binary patch literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1SdK#H96 z3o45;(=$pKoSh960!ou|GLsct@^ce2^AucCQ!7DVFWL%k0O}4>m9OU)PoG$LeuQ{LHWNXIX)atrg3siB9M| ze!=ylh*ipUq4TcQp5~LbP48J9uz04dDkIP7XAI0%4_Inkj{RneYY2Z3cxmp;ojDaP z@%+o>SS!9CuYGdO{DGobUK!Kr*GAL#>^6C)*80i(@+1pm>yU%R0SBgNtbSp=EJyoq z`y=@Xp|o!zuO#MfoGIJ*z}Irc`J4CVwYdNI5?jl@OO7c+$Up6i==Vu^s&lpWeafnN zUA|-=)7;+o$5!O8{ + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Resources/Textures/Interface/VerbIcons/unbuckle.svg.96dpi.png b/Resources/Textures/Interface/VerbIcons/unbuckle.svg.96dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3a60e6468312fd38b8bac8eede4d92579bb966 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq z_>O=u<5X=vX`rBFiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0u!AVtpk z1(ija=@}&q&dvr30i{VfnaK(+`MHUic?vG6DVfQMC7Jno3K=CO1y=g{$wjF^epzaA zer|4lUNOip{Q|I_6tEWks??% z`%%r$$3uZ=STK;~Ay5pT2M9xF@_O%tD=o*alCIitKB}?XF+o-EC4puKZ0EjT}pvLXRuv?k@btUa)wHL2-KCjQUyJMJH1l{dZ~!&%63$Rhv6^ zx9viQ1AO-<8E{QGtn3iOUEb_)$9`7H@%R?C#SQu^rwQy&SKZUw!eFo3uz@jO`(XX# zi+d`gIUk(Zb&`d-Mzv5w@WZ|R4f4yoZjx|edy$M@awwDDMGam sygK)NknJ@5&~qfBLgi!mUhmIrZT=d3ZG~q|fRVxA>FVdQ&MBb@0Cf<@AOHXW literal 0 HcmV?d00001 From 84eeba8e42c5ddff16c6b38aede349b670488e71 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 17 Jan 2021 15:51:44 +0100 Subject: [PATCH 150/166] Fix mapping command throwing. --- Content.Server/Commands/GameTicking/MappingCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Commands/GameTicking/MappingCommand.cs b/Content.Server/Commands/GameTicking/MappingCommand.cs index 8b82ca4fc8..889596352b 100644 --- a/Content.Server/Commands/GameTicking/MappingCommand.cs +++ b/Content.Server/Commands/GameTicking/MappingCommand.cs @@ -61,7 +61,7 @@ namespace Content.Server.Commands.GameTicking shell.ExecuteCommand(player, "aghost"); shell.ExecuteCommand(player, $"tp 0 0 {mapId}"); - var newGrid = mapManager.GetAllGrids().OrderByDescending(g => g.Index).First(); + var newGrid = mapManager.GetAllGrids().OrderByDescending(g => (int) g.Index).First(); var pauseManager = IoCManager.Resolve(); pauseManager.SetMapPaused(newGrid.ParentMapId, true); From 9d5e85ba1ea22eb31ab90685d5b88e84e4b71abf Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 17 Jan 2021 15:52:47 +0100 Subject: [PATCH 151/166] Add support for map UID persistence to mapping commands. Requires submodule update but does not break if not availabnle. --- Content.Server/Commands/GameTicking/MappingCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Commands/GameTicking/MappingCommand.cs b/Content.Server/Commands/GameTicking/MappingCommand.cs index 889596352b..abf94258b5 100644 --- a/Content.Server/Commands/GameTicking/MappingCommand.cs +++ b/Content.Server/Commands/GameTicking/MappingCommand.cs @@ -57,7 +57,7 @@ namespace Content.Server.Commands.GameTicking } shell.ExecuteCommand(player, $"addmap {mapId} false"); - shell.ExecuteCommand(player, $"loadbp {mapId} \"{CommandParsing.Escape(mapName)}\""); + shell.ExecuteCommand(player, $"loadbp {mapId} \"{CommandParsing.Escape(mapName)}\" true"); shell.ExecuteCommand(player, "aghost"); shell.ExecuteCommand(player, $"tp 0 0 {mapId}"); From e759a8aec946ccf1750e7c376191ecdc7e21945c Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Sun, 17 Jan 2021 09:10:22 -0600 Subject: [PATCH 152/166] Filter sprites & visualizer (#3008) Co-authored-by: py01 --- .../Components/Atmos/GasFilterVisualizer.cs | 52 ++++++++++++++++++ .../Atmos/Piping/GasFilterComponent.cs | 2 +- .../Components/Atmos/SharedFilterComponent.cs | 6 ++ .../Constructible/Ground/gasfilters.yml | 15 ++--- .../Entities/Constructible/Ground/pumps.yml | 6 +- .../Atmos/gasfilter.rsi/gasFilter.png | Bin 0 -> 825 bytes .../Atmos/gasfilter.rsi/gasFilterOn.png | Bin 0 -> 6420 bytes .../Atmos/gasfilter.rsi/meta.json | 1 + .../Constructible/Atmos/pump.rsi/meta.json | 2 +- ...DigitalValve2.png => pumpDigitalValve.png} | Bin ...mpManualValve2.png => pumpManualValve.png} | Bin ...mpPassiveGate2.png => pumpPassiveGate.png} | Bin ...ssiveGate2On.png => pumpPassiveGateOn.png} | Bin .../{pumpPressure2.png => pumpPressure.png} | Bin ...pumpPressure2On.png => pumpPressureOn.png} | Bin .../{pumpVolume2.png => pumpVolume.png} | Bin .../{pumpVolume2On.png => pumpVolumeOn.png} | Bin 17 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs create mode 100644 Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png create mode 100644 Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilterOn.png create mode 100644 Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpDigitalValve2.png => pumpDigitalValve.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpManualValve2.png => pumpManualValve.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPassiveGate2.png => pumpPassiveGate.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPassiveGate2On.png => pumpPassiveGateOn.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPressure2.png => pumpPressure.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPressure2On.png => pumpPressureOn.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpVolume2.png => pumpVolume.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpVolume2On.png => pumpVolumeOn.png} (100%) diff --git a/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs new file mode 100644 index 0000000000..9f9aa09c64 --- /dev/null +++ b/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs @@ -0,0 +1,52 @@ +#nullable enable +using Content.Shared.GameObjects.Components.Atmos; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Atmos +{ + [UsedImplicitly] + public class GasFilterVisualizer : AppearanceVisualizer + { + private string _filterEnabledState = default!; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _filterEnabledState, "filterEnabledState", "gasFilterOn"); + } + + public override void InitializeEntity(IEntity entity) + { + base.InitializeEntity(entity); + + if (!entity.TryGetComponent(out var sprite)) return; + + sprite.LayerMapReserveBlank(Layer.FilterEnabled); + var filterEnabledLayer = sprite.LayerMapGet(Layer.FilterEnabled); + sprite.LayerSetState(filterEnabledLayer, _filterEnabledState); + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out var sprite)) return; + if (!component.TryGetData(FilterVisuals.VisualState, out FilterVisualState filterVisualState)) return; + + var filterEnabledLayer = sprite.LayerMapGet(Layer.FilterEnabled); + sprite.LayerSetVisible(filterEnabledLayer, filterVisualState.Enabled); + } + + public enum Layer : byte + { + FilterEnabled, + } + } +} diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs index 70bbc7bbb6..8a6cd18f1d 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs @@ -148,7 +148,7 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Filters private void UpdateAppearance() { - _appearance?.SetData(FilterVisuals.VisualState, new FilterVisualState()); + _appearance?.SetData(FilterVisuals.VisualState, new FilterVisualState(FilterEnabled)); } private void SetPipes() diff --git a/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs b/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs index 8308d30cbb..11d7e9972a 100644 --- a/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs +++ b/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs @@ -1,3 +1,4 @@ +#nullable enable using System; using Robust.Shared.Serialization; @@ -12,6 +13,11 @@ namespace Content.Shared.GameObjects.Components.Atmos [Serializable, NetSerializable] public class FilterVisualState { + public bool Enabled { get; } + public FilterVisualState(bool enabled) + { + Enabled = enabled; + } } } diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml index fc84458bdc..ce2d6dafd5 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml @@ -9,9 +9,6 @@ - type: Physics - type: SnapGrid offset: Center - - type: Sprite - sprite: Constructible/Atmos/pipeitems.rsi - state: scrubber - type: Damageable resistances: metallicResistances - type: Destructible @@ -28,11 +25,11 @@ description: It filters gases. components: - type: Sprite - sprite: Constructible/Atmos/pipe.rsi - state: pipeTJunction2 + sprite: Constructible/Atmos/gasfilter.rsi + state: gasFilter - type: Icon - sprite: Constructible/Atmos/pipe.rsi - state: pipeTJunction2 + sprite: Constructible/Atmos/gasfilter.rsi + state: gasFilter - type: NodeContainer nodes: - !type:PipeNode @@ -48,3 +45,7 @@ inletDirection: South filterOutletDirection: East outletDirection: North + - type: Appearance + visuals: + - type: GasFilterVisualizer + filerEnabledState: gasFilterOn \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml index 31c2f366af..d79302849c 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml @@ -39,10 +39,10 @@ inletDirection: West outletDirection: East - type: Sprite - state: pumpPressure2 + state: pumpPressure - type: Icon - state: pumpPressure2 + state: pumpPressure - type: Appearance visuals: - type: PumpVisualizer - pumpEnabledState: pumpPressure2On + pumpEnabledState: pumpPressureOn diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png new file mode 100644 index 0000000000000000000000000000000000000000..0735d1b17b2ab1e3e4befe8da6bce98e915eca3a GIT binary patch literal 825 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 V`_Iz(({BerO+`z&R?#Z_e*v^0u^9jW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json new file mode 100644 index 0000000000..f715b8af46 --- /dev/null +++ b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "gasFilter", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "gasFilterOn", "directions": 4, "delays": [[0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json index eafa97cacb..5ad04657cb 100644 --- a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "pumpDigitalValve2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpManualValve2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate2On", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure2On", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "pumpVolume2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpVolume2On", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "pumpDigitalValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpManualValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGateOn", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressureOn", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "pumpVolume", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpVolumeOn", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2On.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGateOn.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2On.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGateOn.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2On.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressureOn.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2On.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressureOn.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2On.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolumeOn.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2On.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolumeOn.png From 883131e3159f18ae3af972410d33f84f72090052 Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 17 Jan 2021 18:58:22 +0100 Subject: [PATCH 153/166] i feel great pain inside --- .../Components/Chemistry/ChemMasterComponent.cs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs index ad6dee4f94..9747b61d70 100644 --- a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs @@ -43,7 +43,6 @@ namespace Content.Server.GameObjects.Components.Chemistry public class ChemMasterComponent : SharedChemMasterComponent, IActivate, IInteractUsing, ISolutionChange { [ViewVariables] private ContainerSlot _beakerContainer = default!; - [ViewVariables] private string _packPrototypeId = ""; [ViewVariables] private bool HasBeaker => _beakerContainer.ContainedEntity != null; [ViewVariables] private bool _bufferModeTransfer = true; @@ -53,17 +52,6 @@ namespace Content.Server.GameObjects.Components.Chemistry [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(ChemMasterUiKey.Key); - /// - /// Shows the serializer how to save/load this components yaml prototype. - /// - /// Yaml serializer - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - serializer.DataField(ref _packPrototypeId, "pack", string.Empty); - } - /// /// Called once per instance of this component. Gets references to any other components needed /// by this component and initializes it's UI and other data. From 719d5b7e2b69211d08f18ae7f5b62411af9c39ac Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 17 Jan 2021 21:43:17 +0100 Subject: [PATCH 154/166] removes unused usingstatements --- .../GameObjects/Components/Chemistry/ChemMasterComponent.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs index 9747b61d70..7d5d0625ab 100644 --- a/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/ChemMasterComponent.cs @@ -1,12 +1,10 @@ #nullable enable using System; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Power.ApcNetComponents; -using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces.GameObjects.Components.Items; using Content.Server.Utility; using Content.Shared.Chemistry; @@ -26,7 +24,6 @@ using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; -using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Chemistry From 51ad4f6c96dcd985e90af929c65ffc19bcf60797 Mon Sep 17 00:00:00 2001 From: Swept Date: Mon, 18 Jan 2021 07:21:35 +0000 Subject: [PATCH 155/166] Issue template now functions. (#3019) --- .github/ISSUE_TEMPLATE/issue_report.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/issue_report.md b/.github/ISSUE_TEMPLATE/issue_report.md index 9e014c19cc..0f386a9fc8 100644 --- a/.github/ISSUE_TEMPLATE/issue_report.md +++ b/.github/ISSUE_TEMPLATE/issue_report.md @@ -1,3 +1,12 @@ +--- +name: Report an Issue +about: "..." +title: '' +labels: '' +assignees: '' + +--- + ## Description From c30dc030c502dcfded2659325c865818b1af9ffc Mon Sep 17 00:00:00 2001 From: Letter N <24603524+LetterN@users.noreply.github.com> Date: Mon, 18 Jan 2021 18:14:53 +0800 Subject: [PATCH 156/166] Adds false alarm and updates events code (#2577) * oops accedentaly ports how ss13 deals with event randomness. Also renames FakeEvent to FalseAlarm! * thing * greytide but it's implemented badly * fixes&changies, also greytide! * rng actualy exists now * resync * Naming Schemes * Startup not init * areas are dead * very cool vsudio * this does not exist, wtf * Cleanup * Nullables, fixables, and timings Co-authored-by: Metal Gear Sloth --- .../StationEvents/StationEventsSystemTest.cs | 12 +- .../StationEvents/StationEventCommand.cs | 20 ++- .../StationEvents/StationEventSystem.cs | 29 ++-- Content.Server/StationEvents/FalseAlarm.cs | 30 ++++ .../StationEvents/PowerGridCheck.cs | 67 +++----- .../StationEvents/RadiationStorm.cs | 62 ++------ Content.Server/StationEvents/StationEvent.cs | 146 ++++++++++++++---- 7 files changed, 226 insertions(+), 140 deletions(-) create mode 100644 Content.Server/StationEvents/FalseAlarm.cs diff --git a/Content.IntegrationTests/Tests/StationEvents/StationEventsSystemTest.cs b/Content.IntegrationTests/Tests/StationEvents/StationEventsSystemTest.cs index 04b60218c7..cce62afc06 100644 --- a/Content.IntegrationTests/Tests/StationEvents/StationEventsSystemTest.cs +++ b/Content.IntegrationTests/Tests/StationEvents/StationEventsSystemTest.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.GameObjects.EntitySystems.StationEvents; using NUnit.Framework; using Robust.Shared.GameObjects.Systems; @@ -17,23 +17,27 @@ namespace Content.IntegrationTests.Tests.StationEvents server.Assert(() => { - // Idle each event once + // Idle each event var stationEventsSystem = EntitySystem.Get(); var dummyFrameTime = (float) IoCManager.Resolve().TickPeriod.TotalSeconds; foreach (var stationEvent in stationEventsSystem.StationEvents) { + stationEvent.Announce(); + stationEvent.Update(dummyFrameTime); stationEvent.Startup(); stationEvent.Update(dummyFrameTime); + stationEvent.Running = false; stationEvent.Shutdown(); - Assert.That(stationEvent.Occurrences == 1); + // Due to timings some events might startup twice when in reality they wouldn't. + Assert.That(stationEvent.Occurrences > 0); } stationEventsSystem.Reset(); foreach (var stationEvent in stationEventsSystem.StationEvents) { - Assert.That(stationEvent.Occurrences == 0); + Assert.That(stationEvent.Occurrences, Is.EqualTo(0)); } }); diff --git a/Content.Server/Commands/StationEvents/StationEventCommand.cs b/Content.Server/Commands/StationEvents/StationEventCommand.cs index 2dbcb806fa..95c8b910fd 100644 --- a/Content.Server/Commands/StationEvents/StationEventCommand.cs +++ b/Content.Server/Commands/StationEvents/StationEventCommand.cs @@ -14,7 +14,9 @@ namespace Content.Server.Commands.StationEvents { public string Command => "events"; public string Description => "Provides admin control to station events"; - public string Help => $"events >\n{ListHelp}\n{PauseHelp}\n{ResumeHelp}\n{RunHelp}"; + public string Help => $"events >\n{RunningHelp}\n{ListHelp}\n{PauseHelp}\n{ResumeHelp}\n{RunHelp}"; + + private const string RunningHelp = "running: return the current running event"; private const string ListHelp = "list: return all event names that can be run"; @@ -38,6 +40,9 @@ namespace Content.Server.Commands.StationEvents case "list": List(shell, player); break; + case "running": + Running(shell, player); + break; // Didn't use a "toggle" so it's explicit case "pause": Pause(shell, player); @@ -74,6 +79,19 @@ namespace Content.Server.Commands.StationEvents shell.SendText(player, resultText); } + private void Running(IConsoleShell shell, IPlayerSession? player) + { + var eventName = EntitySystem.Get().CurrentEvent?.Name; + if (!string.IsNullOrEmpty(eventName)) + { + shell.SendText(player, eventName); + } + else + { + shell.SendText(player, Loc.GetString("No station event running")); + } + } + private void List(IConsoleShell shell, IPlayerSession? player) { var resultText = "Random\n" + EntitySystem.Get().GetEventNames(); diff --git a/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs b/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs index c7403f55b8..0d5e79c6d8 100644 --- a/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs @@ -1,10 +1,11 @@ +#nullable enable using System; using System.Collections.Generic; using System.Linq; using System.Text; using Content.Server.GameTicking; -using Content.Server.Interfaces.GameTicking; using Content.Server.StationEvents; +using Content.Server.Interfaces.GameTicking; using Content.Shared; using Content.Shared.GameTicking; using Content.Shared.Network.NetMessages; @@ -34,7 +35,7 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IRobustRandom _random = default!; - public StationEvent CurrentEvent { get; private set; } + public StationEvent? CurrentEvent { get; private set; } public IReadOnlyCollection StationEvents => _stationEvents; private readonly List _stationEvents = new(); @@ -105,7 +106,7 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents CurrentEvent?.Shutdown(); CurrentEvent = stationEvent; - stationEvent.Startup(); + stationEvent.Announce(); return Loc.GetString("Running event ") + stationEvent.Name; } @@ -114,13 +115,12 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents } /// - /// Randomly run a valid event immediately, ignoring earlieststart + /// Randomly run a valid event immediately, ignoring earlieststart /// /// public string RunRandomEvent() { - var availableEvents = AvailableEvents(true); - var randomEvent = FindEvent(availableEvents); + var randomEvent = PickRandomEvent(); if (randomEvent == null) { @@ -134,6 +134,15 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents return Loc.GetString("Running ") + randomEvent.Name; } + /// + /// Randomly picks a valid event. + /// + public StationEvent? PickRandomEvent() + { + var availableEvents = AvailableEvents(true); + return FindEvent(availableEvents); + } + /// /// Admins can stop the currently running event (if applicable) and reset the timer /// @@ -246,7 +255,7 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents else { CurrentEvent = stationEvent; - CurrentEvent.Startup(); + CurrentEvent.Announce(); } } @@ -263,7 +272,7 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents /// Pick a random event from the available events at this time, also considering their weightings. /// /// - private StationEvent FindEvent(List availableEvents) + private StationEvent? FindEvent(List availableEvents) { if (availableEvents.Count == 0) { @@ -347,13 +356,13 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents public override void Shutdown() { - base.Shutdown(); CurrentEvent?.Shutdown(); + base.Shutdown(); } public void Reset() { - if (CurrentEvent != null && CurrentEvent.Running) + if (CurrentEvent?.Running == true) { CurrentEvent.Shutdown(); CurrentEvent = null; diff --git a/Content.Server/StationEvents/FalseAlarm.cs b/Content.Server/StationEvents/FalseAlarm.cs new file mode 100644 index 0000000000..70db0cc7bb --- /dev/null +++ b/Content.Server/StationEvents/FalseAlarm.cs @@ -0,0 +1,30 @@ +#nullable enable +using JetBrains.Annotations; +using Content.Server.GameObjects.EntitySystems.StationEvents; +using Robust.Shared.GameObjects.Systems; + +namespace Content.Server.StationEvents +{ + [UsedImplicitly] + public sealed class FalseAlarm : StationEvent + { + public override string Name => "FalseAlarm"; + public override float Weight => WeightHigh; + protected override float EndAfter => 1.0f; + public override int? MaxOccurrences => 5; + + public override void Announce() + { + var stationEventSystem = EntitySystem.Get(); + var randomEvent = stationEventSystem.PickRandomEvent(); + + if (randomEvent != null) + { + StartAnnouncement = randomEvent.StartAnnouncement; + StartAudio = randomEvent.StartAudio; + } + + base.Announce(); + } + } +} diff --git a/Content.Server/StationEvents/PowerGridCheck.cs b/Content.Server/StationEvents/PowerGridCheck.cs index eb422b0d5a..31b000b2e7 100644 --- a/Content.Server/StationEvents/PowerGridCheck.cs +++ b/Content.Server/StationEvents/PowerGridCheck.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +#nullable enable +using System.Collections.Generic; using System.Threading; using Content.Server.GameObjects.Components.Power.ApcNetComponents; using JetBrains.Annotations; @@ -16,59 +17,54 @@ namespace Content.Server.StationEvents public sealed class PowerGridCheck : StationEvent { public override string Name => "PowerGridCheck"; - - public override StationEventWeight Weight => StationEventWeight.Normal; - - public override int? MaxOccurrences => 2; - - protected override string StartAnnouncement => Loc.GetString( + public override float Weight => WeightNormal; + public override int? MaxOccurrences => 3; + public override string StartAnnouncement => Loc.GetString( "Abnormal activity detected in the station's powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration."); - protected override string EndAnnouncement => Loc.GetString( "Power has been restored to the station. We apologize for the inconvenience."); + public override string? StartAudio => "/Audio/Announcements/power_off.ogg"; - private float _elapsedTime; - private int _failDuration; + // If you need EndAudio it's down below. Not set here because we can't play it at the normal time without spamming sounds. - /// - /// So we don't overlap the announcement with power-down sounds we'll delay it a few seconds. - /// - private bool _announced; + protected override float StartAfter => 12.0f; - private CancellationTokenSource _announceCancelToken; + private CancellationTokenSource? _announceCancelToken; private readonly List _powered = new(); + public override void Announce() + { + base.Announce(); + EndAfter = IoCManager.Resolve().Next(60, 120); + } + public override void Startup() { - base.Startup(); - - _announced = false; - _elapsedTime = 0.0f; - _failDuration = IoCManager.Resolve().Next(60, 120); var componentManager = IoCManager.Resolve(); - foreach (PowerReceiverComponent component in componentManager.EntityQuery()) + foreach (var component in componentManager.EntityQuery()) { component.PowerDisabled = true; _powered.Add(component.Owner); } + + base.Startup(); } public override void Shutdown() { - base.Shutdown(); - foreach (var entity in _powered) { if (entity.Deleted) continue; - if (entity.TryGetComponent(out PowerReceiverComponent powerReceiverComponent)) + if (entity.TryGetComponent(out PowerReceiverComponent? powerReceiverComponent)) { powerReceiverComponent.PowerDisabled = false; } } + // Can't use the default EndAudio _announceCancelToken?.Cancel(); _announceCancelToken = new CancellationTokenSource(); Timer.Spawn(3000, () => @@ -76,29 +72,8 @@ namespace Content.Server.StationEvents EntitySystem.Get().PlayGlobal("/Audio/Announcements/power_on.ogg"); }, _announceCancelToken.Token); _powered.Clear(); - } - public override void Update(float frameTime) - { - if (!Running) - { - return; - } - - if (!_announced && _elapsedTime > 3.0f) - { - EntitySystem.Get().PlayGlobal("/Audio/Announcements/power_off.ogg"); - _announced = true; - } - - _elapsedTime += frameTime; - - if (_elapsedTime < _failDuration) - { - return; - } - - Running = false; + base.Shutdown(); } } } diff --git a/Content.Server/StationEvents/RadiationStorm.cs b/Content.Server/StationEvents/RadiationStorm.cs index 5b6a8f6fda..ee88eb47cb 100644 --- a/Content.Server/StationEvents/RadiationStorm.cs +++ b/Content.Server/StationEvents/RadiationStorm.cs @@ -1,12 +1,11 @@ +#nullable enable +using JetBrains.Annotations; using Content.Server.GameObjects.Components.Mobs; using Content.Server.GameObjects.Components.StationEvents; using Content.Server.Interfaces.GameTicking; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.Utility; -using JetBrains.Annotations; -using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.Timing; -using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Map; using Robust.Shared.Interfaces.Random; @@ -26,24 +25,14 @@ namespace Content.Server.StationEvents [Dependency] private IRobustRandom _robustRandom = default!; public override string Name => "RadiationStorm"; - - protected override string StartAnnouncement => Loc.GetString( + public override string StartAnnouncement => Loc.GetString( "High levels of radiation detected near the station. Evacuate any areas containing abnormal green energy fields."); - protected override string EndAnnouncement => Loc.GetString( "The radiation threat has passed. Please return to your workplaces."); + public override string StartAudio => "/Audio/Announcements/radiation.ogg"; + protected override float StartAfter => 10.0f; - /// - /// How long until the radiation storm starts - /// - private const float StartupTime = 5; - - /// - /// How long the radiation storm has been running for - /// - private float _timeElapsed; - - private int _pulsesRemaining; + // Event specific details private float _timeUntilPulse; private const float MinPulseDelay = 0.2f; private const float MaxPulseDelay = 0.8f; @@ -53,15 +42,15 @@ namespace Content.Server.StationEvents _timeUntilPulse = _robustRandom.NextFloat() * (MaxPulseDelay - MinPulseDelay) + MinPulseDelay; } + public override void Announce() + { + base.Announce(); + EndAfter = _robustRandom.Next(30, 80) + StartAfter; // We want to be forgiving about the radstorm. + } + public override void Startup() { - base.Startup(); - EntitySystem.Get().PlayGlobal("/Audio/Announcements/radiation.ogg"); - IoCManager.InjectDependencies(this); - ResetTimeUntilPulse(); - _timeElapsed = 0.0f; - _pulsesRemaining = _robustRandom.Next(30, 100); var componentManager = IoCManager.Resolve(); @@ -69,42 +58,26 @@ namespace Content.Server.StationEvents { overlay.AddOverlay(SharedOverlayID.RadiationPulseOverlay); } + + base.Startup(); } public override void Shutdown() { - base.Shutdown(); - - // IOC uninject? - _entityManager = null; - _robustRandom = null; - var componentManager = IoCManager.Resolve(); foreach (var overlay in componentManager.EntityQuery()) { overlay.RemoveOverlay(SharedOverlayID.RadiationPulseOverlay); } + base.Shutdown(); } public override void Update(float frameTime) { - _timeElapsed += frameTime; + base.Update(frameTime); - if (_pulsesRemaining == 0) - { - Running = false; - } - - if (!Running) - { - return; - } - - if (_timeElapsed < StartupTime) - { - return; - } + if (!Started || !Running) return; _timeUntilPulse -= frameTime; @@ -129,7 +102,6 @@ namespace Content.Server.StationEvents var pulse = _entityManager.SpawnEntity("RadiationPulse", coordinates); pulse.GetComponent().DoPulse(); ResetTimeUntilPulse(); - _pulsesRemaining -= 1; } private bool TryFindRandomGrid(IMapGrid mapGrid, out EntityCoordinates coordinates) diff --git a/Content.Server/StationEvents/StationEvent.cs b/Content.Server/StationEvents/StationEvent.cs index 244cd2a3ff..b4deed65ac 100644 --- a/Content.Server/StationEvents/StationEvent.cs +++ b/Content.Server/StationEvents/StationEvent.cs @@ -1,76 +1,135 @@ +#nullable enable using Content.Server.Interfaces.Chat; +using Robust.Shared.GameObjects.Systems; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.Audio; using Robust.Shared.IoC; namespace Content.Server.StationEvents { public abstract class StationEvent { + public const float WeightVeryLow = 0.0f; + public const float WeightLow = 5.0f; + public const float WeightNormal = 10.0f; + public const float WeightHigh = 15.0f; + public const float WeightVeryHigh = 20.0f; + /// - /// If the event has started and is currently running + /// If the event has started and is currently running. /// - public bool Running { get; protected set; } - + public bool Running { get; set; } + /// - /// Human-readable name for the event + /// Human-readable name for the event. /// public abstract string Name { get; } - public virtual StationEventWeight Weight { get; } = StationEventWeight.Normal; + /// + /// The weight this event has in the random-selection process. + /// + public virtual float Weight => WeightNormal; /// - /// What should be said in chat when the event starts (if anything). + /// What should be said in chat when the event starts (if anything). /// - protected virtual string StartAnnouncement { get; } = null; + public virtual string? StartAnnouncement { get; set; } = null; /// - /// What should be said in chat when the event end (if anything). + /// What should be said in chat when the event ends (if anything). /// - protected virtual string EndAnnouncement { get; } = null; + protected virtual string? EndAnnouncement { get; } = null; /// - /// In minutes, when is the first time this event can start + /// Starting audio of the event. + /// + public virtual string? StartAudio { get; set; } = null; + + /// + /// Ending audio of the event. + /// + public virtual string? EndAudio { get; } = null; + + /// + /// In minutes, when is the first round time this event can start /// - /// public virtual int EarliestStart { get; } = 5; /// - /// How many players need to be present on station for the event to run + /// When in the lifetime to call Start(). /// - /// To avoid running deadly events with low-pop + protected virtual float StartAfter { get; } = 0.0f; + + /// + /// When in the lifetime the event should end. + /// + protected virtual float EndAfter { get; set; } = 0.0f; + + /// + /// How long has the event existed. Do not change this. + /// + private float Elapsed { get; set; } = 0.0f; + + /// + /// How many players need to be present on station for the event to run + /// + /// + /// To avoid running deadly events with low-pop + /// public virtual int MinimumPlayers { get; } = 0; /// - /// How many times this event has run this round + /// How many times this event has run this round /// public int Occurrences { get; set; } = 0; /// - /// How many times this even can occur in a single round + /// How many times this even can occur in a single round /// public virtual int? MaxOccurrences { get; } = null; /// - /// Called once when the station event starts + /// Has the startup time elapsed? + /// + protected bool Started { get; set; } = false; + + /// + /// Has this event commenced (announcement may or may not be used)? + /// + private bool Announced { get; set; } = false; + + /// + /// Called once to setup the event after StartAfter has elapsed. /// public virtual void Startup() { - Running = true; + Started = true; Occurrences += 1; + } + + /// + /// Called once as soon as an event is active. + /// Can also be used for some initial setup. + /// + public virtual void Announce() + { if (StartAnnouncement != null) { var chatManager = IoCManager.Resolve(); chatManager.DispatchStationAnnouncement(StartAnnouncement); } + + if (StartAudio != null) + { + EntitySystem.Get().PlayGlobal(StartAudio, AudioParams.Default.WithVolume(-10f)); + } + + Announced = true; + Running = true; } /// - /// Called every tick when this event is active - /// - /// - public abstract void Update(float frameTime); - - /// - /// Called once when the station event ends + /// Called once when the station event ends for any reason. /// public virtual void Shutdown() { @@ -79,15 +138,34 @@ namespace Content.Server.StationEvents var chatManager = IoCManager.Resolve(); chatManager.DispatchStationAnnouncement(EndAnnouncement); } + + if (EndAudio != null) + { + EntitySystem.Get().PlayGlobal(EndAudio, AudioParams.Default.WithVolume(-10f)); + } + + Started = false; + Announced = false; + Elapsed = 0; + } + + /// + /// Called every tick when this event is running. + /// + /// + public virtual void Update(float frameTime) + { + Elapsed += frameTime; + + if (!Started && Elapsed >= StartAfter) + { + Startup(); + } + + if (EndAfter <= Elapsed) + { + Running = false; + } } } - - public enum StationEventWeight - { - VeryLow = 0, - Low = 5, - Normal = 10, - High = 15, - VeryHigh = 20, - } -} \ No newline at end of file +} From 2172d00409403dae8664763325c3d1bd27e222e2 Mon Sep 17 00:00:00 2001 From: komunre <49118681+komunre@users.noreply.github.com> Date: Mon, 18 Jan 2021 17:16:34 +0700 Subject: [PATCH 157/166] Clusterbang (#2712) * Code is ready but item now spawning * Prototype of SeveralExplosive component * Remaked to FlashExplosiveComponent using * Done. But i feel myself retarted * Remaked. Looks good * Full loaded prototype added * Throwing in progress. Fatal error is here * I forgot about shared * Sloth refactor * Delayed spawning and fix crashes * Full clusterbang code. * Removed useless variable and tuned delay * Delete wrong in CreamPiedComponent * Now yaml is code quality followed * Reworked to GetLevel with bugs * Never forget resources, guys * RoundToLevels added. Now it works. * New textures and sloth refactor is returned * Now it's TryGetComponent * Visualizer maximum fix and look fix * Logging and no max and min check * Removed max grenades sending * vizualizer is better now * GrenadesMax removed * grammar, checks, NextFloat and no more try catch * Unused using removed Co-authored-by: Metal Gear Sloth --- .../Explosion/ClusterFlashVisualizer.cs | 40 ++++ .../Explosion/ClusterFlashComponent.cs | 181 ++++++++++++++++++ .../Explosion/FlashExplosiveComponent.cs | 2 + .../Projectiles/ThrownItemComponent.cs | 2 +- .../OnUseTimerTriggerComponent.cs | 23 ++- .../Explosion/SharedClusterFlashComponent.cs | 13 ++ .../Weapons/Guns/Explosives/clusterbang.yml | 26 +++ .../Grenades/clusterbang.rsi/base-0.png | Bin 0 -> 313 bytes .../Grenades/clusterbang.rsi/base-1.png | Bin 0 -> 434 bytes .../Grenades/clusterbang.rsi/base-2.png | Bin 0 -> 477 bytes .../Grenades/clusterbang.rsi/base-3.png | Bin 0 -> 459 bytes .../Grenades/clusterbang.rsi/meta.json | 27 +++ 12 files changed, 303 insertions(+), 11 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Explosion/ClusterFlashVisualizer.cs create mode 100644 Content.Server/GameObjects/Components/Explosion/ClusterFlashComponent.cs create mode 100644 Content.Shared/GameObjects/Components/Explosion/SharedClusterFlashComponent.cs create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/clusterbang.yml create mode 100644 Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-0.png create mode 100644 Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-1.png create mode 100644 Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-2.png create mode 100644 Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-3.png create mode 100644 Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/meta.json diff --git a/Content.Client/GameObjects/Components/Explosion/ClusterFlashVisualizer.cs b/Content.Client/GameObjects/Components/Explosion/ClusterFlashVisualizer.cs new file mode 100644 index 0000000000..b366a11fd8 --- /dev/null +++ b/Content.Client/GameObjects/Components/Explosion/ClusterFlashVisualizer.cs @@ -0,0 +1,40 @@ +using Content.Shared.GameObjects.Components.Explosion; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Explosion +{ + [UsedImplicitly] + // ReSharper disable once InconsistentNaming + public class ClusterFlashVisualizer : AppearanceVisualizer + { + private string _state; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + if (node.TryGetNode("state", out var state)) + { + _state = state.AsString(); + } + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out var sprite)) + { + return; + } + + if (component.TryGetData(ClusterFlashVisuals.GrenadesCounter, out int grenadesCounter)) + { + sprite.LayerSetState(0, $"{_state}-{grenadesCounter}"); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Explosion/ClusterFlashComponent.cs b/Content.Server/GameObjects/Components/Explosion/ClusterFlashComponent.cs new file mode 100644 index 0000000000..bd2f90f054 --- /dev/null +++ b/Content.Server/GameObjects/Components/Explosion/ClusterFlashComponent.cs @@ -0,0 +1,181 @@ +#nullable enable +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Server.GameObjects.Components.Explosion; +using Robust.Shared.GameObjects; +using System.Threading.Tasks; +using Robust.Server.GameObjects.Components.Container; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; +using System; +using System.Diagnostics.CodeAnalysis; +using Content.Server.GameObjects.Components.Trigger.TimerTrigger; +using Content.Server.Throw; +using Robust.Server.GameObjects; +using Content.Shared.GameObjects.Components.Explosion; +using Robust.Shared.GameObjects.Components.Timers; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Map; +using Robust.Shared.Maths; +using Robust.Shared.Random; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Explosives +{ + [RegisterComponent] + public sealed class ClusterFlashComponent : Component, IInteractUsing, IUse + { + public override string Name => "ClusterFlash"; + + private Container _grenadesContainer = default!; + + /// + /// What we fill our prototype with if we want to pre-spawn with grenades. + /// + [ViewVariables] + private string? _fillPrototype; + + /// + /// If we have a pre-fill how many more can we spawn. + /// + private int _unspawnedCount; + + /// + /// Maximum grenades in the container. + /// + [ViewVariables] + private int _maxGrenades; + + /// + /// How long until our grenades are shot out and armed. + /// + [ViewVariables(VVAccess.ReadWrite)] + private float _delay; + + /// + /// Max distance grenades can be thrown. + /// + [ViewVariables(VVAccess.ReadWrite)] + private float _throwDistance; + + /// + /// This is the end. + /// + private bool _countDown; + + async Task IInteractUsing.InteractUsing(InteractUsingEventArgs args) + { + if (_grenadesContainer.ContainedEntities.Count >= _maxGrenades || !args.Using.HasComponent()) + return false; + + _grenadesContainer.Insert(args.Using); + UpdateAppearance(); + return true; + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _fillPrototype, "fillPrototype", null); + serializer.DataField(ref _maxGrenades, "maxGrenadesCount", 3); + serializer.DataField(ref _delay, "delay", 1.0f); + serializer.DataField(ref _throwDistance, "distance", 3.0f); + } + + public override void Initialize() + { + base.Initialize(); + + _grenadesContainer = ContainerManagerComponent.Ensure("cluster-flash", Owner); + + } + + protected override void Startup() + { + base.Startup(); + + if (_fillPrototype != null) + { + _unspawnedCount = Math.Max(0, _maxGrenades - _grenadesContainer.ContainedEntities.Count); + UpdateAppearance(); + } + } + + bool IUse.UseEntity(UseEntityEventArgs eventArgs) + { + if (_countDown || (_grenadesContainer.ContainedEntities.Count + _unspawnedCount) <= 0) + return false; + Owner.SpawnTimer((int) (_delay * 1000), () => + { + if (Owner.Deleted) + return; + _countDown = true; + var random = IoCManager.Resolve(); + var delay = 20; + var grenadesInserted = _grenadesContainer.ContainedEntities.Count + _unspawnedCount; + var thrownCount = 0; + var segmentAngle = (int) (360 / grenadesInserted); + while (TryGetGrenade(out var grenade)) + { + var angleMin = segmentAngle * thrownCount; + var angleMax = segmentAngle * (thrownCount + 1); + var angle = Angle.FromDegrees(random.Next(angleMin, angleMax)); + var distance = (float)random.NextFloat() * _throwDistance; + var target = new EntityCoordinates(Owner.Uid, angle.ToVec().Normalized * distance); + + grenade.Throw(0.5f, target, grenade.Transform.Coordinates); + + grenade.SpawnTimer(delay, () => + { + if (grenade.Deleted) + return; + + if (grenade.TryGetComponent(out OnUseTimerTriggerComponent? useTimer)) + { + useTimer.Trigger(eventArgs.User); + } + }); + + delay += random.Next(550, 900); + thrownCount++; + } + + Owner.Delete(); + }); + return true; + } + + private bool TryGetGrenade([NotNullWhen(true)] out IEntity? grenade) + { + grenade = null; + + if (_unspawnedCount > 0) + { + _unspawnedCount--; + grenade = Owner.EntityManager.SpawnEntity(_fillPrototype, Owner.Transform.Coordinates); + return true; + } + + if (_grenadesContainer.ContainedEntities.Count > 0) + { + grenade = _grenadesContainer.ContainedEntities[0]; + + // This shouldn't happen but you never know. + if (!_grenadesContainer.Remove(grenade)) + return false; + + return true; + } + + return false; + } + + private void UpdateAppearance() + { + if (!Owner.TryGetComponent(out AppearanceComponent? appearance)) return; + + appearance.SetData(ClusterFlashVisuals.GrenadesCounter, _grenadesContainer.ContainedEntities.Count + _unspawnedCount); + } + } +} diff --git a/Content.Server/GameObjects/Components/Explosion/FlashExplosiveComponent.cs b/Content.Server/GameObjects/Components/Explosion/FlashExplosiveComponent.cs index a6fa3dbcc1..47355f5942 100644 --- a/Content.Server/GameObjects/Components/Explosion/FlashExplosiveComponent.cs +++ b/Content.Server/GameObjects/Components/Explosion/FlashExplosiveComponent.cs @@ -19,7 +19,9 @@ namespace Content.Server.GameObjects.Components.Explosion public override string Name => "FlashExplosive"; private float _range; + private float _duration; + private string _sound; private bool _deleteOnFlash; diff --git a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs index 9082154b55..fb5f23ca4b 100644 --- a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs +++ b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs @@ -50,7 +50,7 @@ namespace Content.Server.GameObjects.Components.Projectiles // after impacting the first object. // For realism this should actually be changed when the velocity of the object is less than a threshold. // This would allow ricochets off walls, and weird gravity effects from slowing the object. - if (Owner.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1) + if (!Owner.Deleted && Owner.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1) { _shouldCollide = false; } diff --git a/Content.Server/GameObjects/Components/Trigger/TimerTrigger/OnUseTimerTriggerComponent.cs b/Content.Server/GameObjects/Components/Trigger/TimerTrigger/OnUseTimerTriggerComponent.cs index 800fc03f9e..e65cbfac74 100644 --- a/Content.Server/GameObjects/Components/Trigger/TimerTrigger/OnUseTimerTriggerComponent.cs +++ b/Content.Server/GameObjects/Components/Trigger/TimerTrigger/OnUseTimerTriggerComponent.cs @@ -1,11 +1,12 @@ -using System; +#nullable enable +using System; using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components.Trigger; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; using Robust.Shared.Serialization; namespace Content.Server.GameObjects.Components.Trigger.TimerTrigger @@ -13,11 +14,9 @@ namespace Content.Server.GameObjects.Components.Trigger.TimerTrigger [RegisterComponent] public class OnUseTimerTriggerComponent : Component, IUse { - [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; - public override string Name => "OnUseTimerTrigger"; - private float _delay = 0f; + private float _delay; public override void ExposeData(ObjectSerializer serializer) { @@ -26,13 +25,17 @@ namespace Content.Server.GameObjects.Components.Trigger.TimerTrigger serializer.DataField(ref _delay, "delay", 0f); } + public void Trigger(IEntity user) + { + if (Owner.TryGetComponent(out AppearanceComponent? appearance)) + appearance.SetData(TriggerVisuals.VisualState, TriggerVisualState.Primed); + + EntitySystem.Get().HandleTimerTrigger(TimeSpan.FromSeconds(_delay), user, Owner); + } + bool IUse.UseEntity(UseEntityEventArgs eventArgs) { - var triggerSystem = _entitySystemManager.GetEntitySystem(); - if (Owner.TryGetComponent(out var appearance)) { - appearance.SetData(TriggerVisuals.VisualState, TriggerVisualState.Primed); - } - triggerSystem.HandleTimerTrigger(TimeSpan.FromSeconds(_delay), eventArgs.User, Owner); + Trigger(eventArgs.User); return true; } } diff --git a/Content.Shared/GameObjects/Components/Explosion/SharedClusterFlashComponent.cs b/Content.Shared/GameObjects/Components/Explosion/SharedClusterFlashComponent.cs new file mode 100644 index 0000000000..f7822392dd --- /dev/null +++ b/Content.Shared/GameObjects/Components/Explosion/SharedClusterFlashComponent.cs @@ -0,0 +1,13 @@ +using System; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Explosion +{ + [Serializable, NetSerializable] + public enum ClusterFlashVisuals : byte + { + GrenadesCounter + } +} diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/clusterbang.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/clusterbang.yml new file mode 100644 index 0000000000..f307bc77cd --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/clusterbang.yml @@ -0,0 +1,26 @@ +- type: entity + parent: BaseItem + id: ClusterBang + name: ClusterBang + description: Can be used only with flashbangs. Explodes several times. + components: + - type: Sprite + sprite: Objects/Weapons/Grenades/clusterbang.rsi + netsync: false + state: base-0 + - type: Appearance + visuals: + - type: ClusterFlashVisualizer + state: base + - type: ClusterFlash + +- type: entity + parent: ClusterBang + id: ClusterBangFull + suffix: Full + components: + - type: Sprite + state: base-3 + - type: ClusterFlash + fillPrototype: GrenadeFlashBang + diff --git a/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-0.png b/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-0.png new file mode 100644 index 0000000000000000000000000000000000000000..16e1f3ccc8d20f06f86cff00d751920bf8c3fb73 GIT binary patch literal 313 zcmV-90mlA`P))_(LZvrSwe1|r@ zI=IJ1uvG;6PW29j7LD+ivnju5Cr3!d0=(k!`1WP?7Up!b4~E( z3Xro~9OG2JBn(4%)HO&c$MUMo zr&6O0#}=%cP(RPMX@vTb2{m7E*fqo~b!WOD{kClB1BPLkKL!AvDzs~ZPfzVO00000 LNkvXXu0mjf$RLJu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-1.png b/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f6a52f5bc2752f51fb3cc231883c6a1d2333a9 GIT binary patch literal 434 zcmV;j0ZsmiP)%Celb&lrI*(91*9kmvOpM4IQh z+I?(Wxn^PzflGxqk3`*X^(hu9P+s8j)eY{ zn(HILKWf?X&o7*!ubYih<}wBis+}I&mg?8n#H=E8-5dr5I)*0m6|6&f(Jlqx>e~wSm7a<=+ZaI3v}tmL!>KYiMn-R%wS%DNL^C7I>;dd zHby~e7k`q4ZSFgNcm6prFfcIqZ&>~Hvn*@-aUAph|1?dl&1NH&o#(ldL;WBKI{y}` z1fV0&^V+fR`>v_i5Ksa&IG=;#EKQHCns00vpPv1I|SzN7v==1Js0aLij zEzmlTqI$1SRR#CUCCJXx6bv#TJ47lJMFFfVCod-Rt=$40e$MAveC-xsl=P*O?Yb@( z7rxlk(QUWemV*#)(p3Tw?Cp}~#}eFU2Yc4TYQ=FO6yiF~94kw{d;b9VYRuhNN9%i% z0CLns(?o}d4{^Kbx`%mZL(p!4fq}uF0swvi&QRy{ TewkXf00000NkvXXu0mjf;kw$( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-3.png b/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/base-3.png new file mode 100644 index 0000000000000000000000000000000000000000..18a1d3042c744c236025d53273317d791192a086 GIT binary patch literal 459 zcmV;+0W|)JP)EfE%=JyPLbN3y$L`9W_nENkCbaP!vUv+#&*m?e!OI-d865Dg%^yirg>^P!XDPK8t_~mSqV9XnqWO1jgz`!1`8I)y+}n_hkr&(h0VY%E0#J z72rc!yxPI~#$0S`k^n`DU%J_w`#T{6hoKs{&FP^-| z^|*661ET~$dXmYI=Xoms-BYg886u#eq4B=}fFD$G5%ekS^Tq%G002ovPDHLkV1jqx B(SZN} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/meta.json b/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/meta.json new file mode 100644 index 0000000000..55dc82377a --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Grenades/clusterbang.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/29c0ed1b000619cb5398ef921000a8d4502ba0b6 and modified by Swept", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base-0", + "directions": 1 + }, + { + "name": "base-1", + "directions": 1 + }, + { + "name": "base-2", + "directions": 1 + }, + { + "name": "base-3", + "directions": 1 + } + ] +} From a7354f8e0d1ff8f930647a7a6e02c80744556bea Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Mon, 18 Jan 2021 04:51:16 -0600 Subject: [PATCH 158/166] DummyWireComponent (#3011) * DummyWireComponent * connector wire proto names * comment fix * Uses IMapInit * Removes unused icon components * Moves component to client * Renames component Co-authored-by: py01 --- .../ClientEntitySpawnerComponent.cs | 56 ++++++++++++++++++ Content.Server/IgnoredComponents.cs | 3 +- .../Constructible/Power/power_base.yml | 23 +++++++- .../Entities/Constructible/Power/wires.yml | 57 +++++++++++++++++++ 4 files changed, 135 insertions(+), 4 deletions(-) create mode 100644 Content.Client/GameObjects/Components/ClientEntitySpawnerComponent.cs diff --git a/Content.Client/GameObjects/Components/ClientEntitySpawnerComponent.cs b/Content.Client/GameObjects/Components/ClientEntitySpawnerComponent.cs new file mode 100644 index 0000000000..3ba2796272 --- /dev/null +++ b/Content.Client/GameObjects/Components/ClientEntitySpawnerComponent.cs @@ -0,0 +1,56 @@ +#nullable enable +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; +using System.Collections.Generic; + +namespace Content.Client.GameObjects.Components +{ + /// + /// Spawns a set of entities on the client only, and removes them when this component is removed. + /// + [RegisterComponent] + public class ClientEntitySpawnerComponent : Component + { + public override string Name => "ClientEntitySpawner"; + + private List _prototypes = default!; + + private List _entity = new(); + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _prototypes, "prototypes", new List { "HVDummyWire" }); + } + + public override void Initialize() + { + base.Initialize(); + SpawnEntities(); + } + + public override void OnRemove() + { + RemoveEntities(); + base.OnRemove(); + } + + private void SpawnEntities() + { + foreach (var proto in _prototypes) + { + var entity = Owner.EntityManager.SpawnEntity(proto, Owner.Transform.Coordinates); + _entity.Add(entity); + } + } + + private void RemoveEntities() + { + foreach (var entity in _entity) + { + Owner.EntityManager.DeleteEntity(entity); + } + } + } +} diff --git a/Content.Server/IgnoredComponents.cs b/Content.Server/IgnoredComponents.cs index 0be2eccd08..2a06e313f4 100644 --- a/Content.Server/IgnoredComponents.cs +++ b/Content.Server/IgnoredComponents.cs @@ -1,4 +1,4 @@ -namespace Content.Server +namespace Content.Server { public static class IgnoredComponents @@ -18,6 +18,7 @@ "Clickable", "RadiatingLight", "Icon", + "ClientEntitySpawner" }; } diff --git a/Resources/Prototypes/Entities/Constructible/Power/power_base.yml b/Resources/Prototypes/Entities/Constructible/Power/power_base.yml index 02680ecc4f..aa504efbe8 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/power_base.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/power_base.yml @@ -38,6 +38,9 @@ supplyRate: 3000 - type: Anchorable - type: Pullable + - type: ClientEntitySpawner + prototypes: + - HVDummyWire - type: entity id: BaseSmes @@ -93,7 +96,10 @@ activeSupplyRate: 1000 - type: Anchorable - type: Pullable - + - type: ClientEntitySpawner + prototypes: + - HVDummyWire + - type: entity id: BaseSubstation description: Reduces the voltage of electricity put into it. @@ -148,7 +154,11 @@ activeSupplyRate: 1000 - type: Anchorable - type: Pullable - + - type: ClientEntitySpawner + prototypes: + - HVDummyWire + - MVDummyWire + - type: entity id: BaseApc description: A control terminal for the area's electrical systems. @@ -201,7 +211,11 @@ - type: Construction graph: apc node: apc - + - type: ClientEntitySpawner + prototypes: + - MVDummyWire + - LVDummyWire + - type: entity id: SolarPanel name: solar panel @@ -249,3 +263,6 @@ acts: ["Breakage"] - type: Anchorable - type: Pullable + - type: ClientEntitySpawner + prototypes: + - HVDummyWire \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Constructible/Power/wires.yml b/Resources/Prototypes/Entities/Constructible/Power/wires.yml index eb7698f2e9..144c1e1550 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/wires.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/wires.yml @@ -138,3 +138,60 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] + +#Dummy wires + +- type: entity + abstract: true + id: BaseDummyWire + placement: + mode: SnapgridCenter + components: + - type: SnapGrid + offset: Center + - type: Sprite + drawdepth: BelowFloor + - type: IconSmooth + mode: CardinalFlags + - type: SubFloorHide + +- type: entity + abstract: true + parent: BaseDummyWire + id: HVDummyWire + name: HV Connector Wire + components: + - type: Sprite + sprite: Constructible/Power/hv_cable.rsi + state: hvcable_0 + - type: IconSmooth + base: hvcable_ + key: hv_cables + +- type: entity + abstract: true + parent: BaseDummyWire + id: MVDummyWire + name: MV Connector Wire + components: + - type: Sprite + sprite: Constructible/Power/mv_cable.rsi + state: mvcable_0 + color: Yellow + - type: IconSmooth + base: mvcable_ + key: mv_cables + +- type: entity + abstract: true + parent: BaseDummyWire + id: LVDummyWire + name: LV Connector Wire + components: + - type: Sprite + sprite: Constructible/Power/lv_cable.rsi + state: lvcable_0 + color: Green + - type: IconSmooth + base: lvcable_ + key: lv_cables \ No newline at end of file From 6f360b48bf53461df7d909c828427e296ca81be3 Mon Sep 17 00:00:00 2001 From: 20kdc Date: Tue, 19 Jan 2021 06:35:44 +0000 Subject: [PATCH 159/166] Stop singularity from pulling ghosts, stop singularity from leaving the pull controller attached (#3021) --- .../Components/Singularity/SingularityComponent.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/Components/Singularity/SingularityComponent.cs b/Content.Server/GameObjects/Components/Singularity/SingularityComponent.cs index a84fad68ac..a21601b660 100644 --- a/Content.Server/GameObjects/Components/Singularity/SingularityComponent.cs +++ b/Content.Server/GameObjects/Components/Singularity/SingularityComponent.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using Content.Server.GameObjects.Components.StationEvents; +using Content.Server.GameObjects.Components.Observer; using Content.Shared.GameObjects; using Content.Shared.Physics; using Robust.Server.GameObjects; @@ -159,7 +160,7 @@ namespace Content.Server.GameObjects.Components.Singularity } private readonly List _previousPulledEntities = new(); - public void PullUpdate() + public void CleanupPulledEntities() { foreach (var previousPulledEntity in _previousPulledEntities) { @@ -169,11 +170,16 @@ namespace Content.Server.GameObjects.Components.Singularity controller.StopPull(); } _previousPulledEntities.Clear(); + } + public void PullUpdate() + { + CleanupPulledEntities(); var entitiesToPull = Owner.EntityManager.GetEntitiesInRange(Owner.Transform.Coordinates, Level * 10); foreach (var entity in entitiesToPull) { if (!entity.TryGetComponent(out var collidableComponent)) continue; + if (entity.HasComponent()) continue; var controller = collidableComponent.EnsureController(); if(Owner.Transform.Coordinates.EntityId != entity.Transform.Coordinates.EntityId) continue; var vec = (Owner.Transform.Coordinates - entity.Transform.Coordinates).Position; @@ -215,6 +221,7 @@ namespace Content.Server.GameObjects.Components.Singularity { _playingSound?.Stop(); _audioSystem.PlayAtCoords("/Audio/Effects/singularity_collapse.ogg", Owner.Transform.Coordinates); + CleanupPulledEntities(); base.OnRemove(); } } From 5bc7343a9b737a4f2b59f2edf5db72bc4d205e3d Mon Sep 17 00:00:00 2001 From: Swept Date: Tue, 19 Jan 2021 08:53:39 +0000 Subject: [PATCH 160/166] Initial (#3024) --- Content.Client/IgnoredComponents.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index f38cd10cf0..77d93add0d 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -236,7 +236,8 @@ namespace Content.Client "DamageOtherOnHit", "DamageOnLand", "GasFilter", - "Recyclable" + "Recyclable", + "ClusterFlash" }; } } From 23c1b5e05d892c03ae17a6e2795149129cd38304 Mon Sep 17 00:00:00 2001 From: Swept Date: Tue, 19 Jan 2021 08:54:43 +0000 Subject: [PATCH 161/166] Adds Science, Chemistry, Mime Duffelbags. (#3026) * Sprites * Entities * Adds fills and roles * Cleans up inconsistent duffel bag naming. --- .../Backpacks/Starter Gear/duffelbag.yml | 25 +++++++++---- .../Catalog/Fills/Backpacks/duffelbag.yml | 8 ++-- .../Entities/Clothing/Back/duffel.yml | 35 +++++++++++++++++- .../Prototypes/Roles/Jobs/Civilian/mime.yml | 2 +- .../Roles/Jobs/Science/research_director.yml | 2 +- .../Roles/Jobs/Science/scientist.yml | 2 +- .../chemistry.rsi/equipped-BACKPACK.png | Bin 0 -> 657 bytes .../Back/Duffels/chemistry.rsi/icon.png | Bin 0 -> 477 bytes .../Duffels/chemistry.rsi/inhand-left.png | Bin 0 -> 579 bytes .../Duffels/chemistry.rsi/inhand-right.png | Bin 0 -> 534 bytes .../Back/Duffels/chemistry.rsi/meta.json | 27 ++++++++++++++ .../Duffels/medical.rsi/equipped-BACKPACK.png | Bin 795 -> 683 bytes .../Back/Duffels/medical.rsi/icon.png | Bin 524 -> 438 bytes .../Back/Duffels/medical.rsi/inhand-left.png | Bin 541 -> 591 bytes .../Back/Duffels/medical.rsi/inhand-right.png | Bin 551 -> 540 bytes .../Back/Duffels/medical.rsi/meta.json | 3 +- .../Duffels/mime.rsi/equipped-BACKPACK.png | Bin 0 -> 759 bytes .../Clothing/Back/Duffels/mime.rsi/icon.png | Bin 0 -> 502 bytes .../Back/Duffels/mime.rsi/inhand-left.png | Bin 0 -> 631 bytes .../Back/Duffels/mime.rsi/inhand-right.png | Bin 0 -> 593 bytes .../Clothing/Back/Duffels/mime.rsi/meta.json | 27 ++++++++++++++ .../Duffels/science.rsi/equipped-BACKPACK.png | Bin 0 -> 666 bytes .../Back/Duffels/science.rsi/icon.png | Bin 0 -> 403 bytes .../Back/Duffels/science.rsi/inhand-left.png | Bin 0 -> 565 bytes .../Back/Duffels/science.rsi/inhand-right.png | Bin 0 -> 526 bytes .../Back/Duffels/science.rsi/meta.json | 27 ++++++++++++++ 26 files changed, 141 insertions(+), 17 deletions(-) create mode 100644 Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Back/Duffels/mime.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/mime.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/mime.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/mime.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/mime.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Back/Duffels/science.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/science.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/science.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/science.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/science.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml index a359dfbd49..3a92d1f81a 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/duffelbag.yml @@ -56,14 +56,23 @@ contents: - name: BoxSurvival -#- type: entity -# abstract: true -# parent: ClothingBackpackDuffelScience -# id: ClothingBackpackDuffelScienceFilled -# components: -# - type: StorageFill -# contents: -# - name: BoxSurvival +- type: entity + abstract: true + parent: ClothingBackpackDuffelScience + id: ClothingBackpackDuffelScienceFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +- type: entity + abstract: true + parent: ClothingBackpackDuffelMime + id: ClothingBackpackDuffelMimeFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival #- type: entity # abstract: true diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index c8d13a07f8..279c68870f 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -1,7 +1,7 @@ - type: entity parent: ClothingBackpackDuffelMedical id: ClothingBackpackDuffelSurgeryFilled - name: surgical duffelbag + name: surgical duffel bag description: "A large duffel bag for holding extra medical supplies - this one seems to be designed for holding surgical tools." components: - type: StorageFill @@ -16,7 +16,7 @@ - type: entity parent: ClothingBackpackDuffelSyndicateMedical id: ClothingBackpackDuffelSyndicateFilledMedical - name: syndicate surgical duffelbag + name: syndicate surgical duffel bag description: "A large duffel bag for holding extra medical supplies - this one seems to be designed for holding surgical tools." components: - type: StorageFill @@ -86,7 +86,7 @@ - type: entity parent: ClothingBackpackDuffel id: ClothingBackpackDuffelSyndicateCostumeCentcom - name: Centcom official costume duffelbag + name: Centcom official costume duffel bag description: "Contains a full CentCom Official uniform set, headset and clipboard included. The headset comes without an encryption key." components: - type: StorageFill @@ -105,7 +105,7 @@ - type: entity parent: ClothingBackpackDuffelClown id: ClothingBackpackDuffelSyndicateCostumeClown - name: clown costume duffelbag + name: clown costume duffel bag description: "Contains a complete Clown outfit." components: - type: StorageFill diff --git a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml index 030eb987c0..fb5b80355a 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml @@ -16,7 +16,7 @@ - type: Storage capacity: 100 storageSoundCollection : storageRustle - + - type: entity parent: ClothingBackpackDuffel id: ClothingBackpackDuffelEngineering @@ -72,6 +72,39 @@ - type: Clothing sprite: Clothing/Back/Duffels/security.rsi +- type: entity + parent: ClothingBackpackDuffel + id: ClothingBackpackDuffelChemistry + name: chemistry duffel bag + description: "A large duffel bag for holding extra beakers and test tubes." + components: + - type: Sprite + sprite: Clothing/Back/Duffels/chemistry.rsi + - type: Clothing + sprite: Clothing/Back/Duffels/chemistry.rsi + +- type: entity + parent: ClothingBackpackDuffel + id: ClothingBackpackDuffelMime + name: mime duffel bag + description: "A large duffel bag for holding... mime... stuff." + components: + - type: Sprite + sprite: Clothing/Back/Duffels/mime.rsi + - type: Clothing + sprite: Clothing/Back/Duffels/mime.rsi + +- type: entity + parent: ClothingBackpackDuffel + id: ClothingBackpackDuffelScience + name: science duffel bag + description: "A large duffel bag for holding extra science related goods." + components: + - type: Sprite + sprite: Clothing/Back/Duffels/science.rsi + - type: Clothing + sprite: Clothing/Back/Duffels/science.rsi + - type: entity parent: ClothingBackpackDuffel id: ClothingBackpackDuffelSyndicate diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml index 1e8ed0e686..1732d2f1ab 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml @@ -26,4 +26,4 @@ ears: ClothingHeadsetService innerclothingskirt: ClothingUniformJumpskirtMime satchel: ClothingBackpackSatchelFilled - duffelbag: ClothingBackpackDuffelFilled + duffelbag: ClothingBackpackDuffelMimeFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 788f3a6365..e418eb00a0 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -24,4 +24,4 @@ ears: ClothingHeadsetScience innerclothingskirt: ClothingUniformJumpskirtResearchDirector satchel: ClothingBackpackSatchelScienceFilled - duffelbag: ClothingBackpackDuffelFilled + duffelbag: ClothingBackpackDuffelScienceFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index 7b4a14f302..f7cf2b8a08 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -22,4 +22,4 @@ ears: ClothingHeadsetScience innerclothingskirt: ClothingUniformJumpskirtScientist satchel: ClothingBackpackSatchelScienceFilled - duffelbag: ClothingBackpackDuffelFilled + duffelbag: ClothingBackpackDuffelScienceFilled diff --git a/Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/equipped-BACKPACK.png b/Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..e88663b3a60b045e98d354e9a448f4e01376e4a3 GIT binary patch literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L0m@TF)W0|OJU zr;B4qMcmt2j(yDrJgz%0#;lrUeYWZHhP2bF&jfnxX2nMesN2bPDNB8 zb~7$DE-^4L^m3s900CJ^L_t(oN9~u zIn_lzDMtbitlyRWQnwlv3jjukVaN{ALTH%d zTB~(oBNPET9mjEnKtCH@B7t#Dv@RF239%Ic0KfqD^z;76QJ^ydOw%L~=+GJZe2!Mb zno%$TzGeUzA%HfT`{_(b()%On86kE7z{)LvH39%h@{$Nx0Bze!*L7mG*t*>#upUGe zX1(XSzZ(Eg@LO*|&XCI?+$#^@e7LV+3BYUV&V?`)?aq|I3AT*b3nPfl(UT^y=7^PUS`(z zWlXi|p%Z8Q*#0;6%A9reUNs5~j2sROOacuIEGW#z#VmI7gX~rX9(T`}7n>Y4P4%?u z(X4|;uWJ1dOZBySf+XY^PJS0%If{MCF2+tJzZ&N zvW(@z?SJkJS7t3dTX9s>=_f;ut@tVRUmD^5#UkZ5Ybx(#F8-=6=^?l`|1me(f8YKy@`Canj`r-$d;Wh{>;9lr zkzLvGSwd0gBv5qPpV`^AZXDU4?ydgu$#u=u?u4}qcgLL(xCoM5&iFw>aSe!dO={Qc zr?(}a{~C=h$)ASmo=qI`_^4JuQyHAiluhRRu^TB zgJMS~o|`Nnlu%sjtmJz5*!sndZ?*QbdaBtLUXyC}Y8G)%Z+}^_O4c-y?ci@=_JNpUmR{J>)^iDl>Nc_;|E@Ip0M3Ceao`^pT*mP z1q$CyI?Q;pKYG@dQ(M*Ze+K36OSe8`ncWxlymH^ZWZfON{(PPLYkf%e)Zg~kzfaG- zt#~!(bBigue(wp{Pdz z>%RsV2Y5AEtq^nOH)UR`vgOFaxYrBQ7EEC&4OrW@IGfGOGo$zLmVMt22G2In{bz7a u_28?`H|t8yI^>@?>)<94@aIC~FY%6Y6%zr)Q+&W^WAJqKb6Mw<&;$Sm%GH+u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/meta.json new file mode 100644 index 0000000000..89236692cc --- /dev/null +++ b/Resources/Textures/Clothing/Back/Duffels/chemistry.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/547852588166c8e091b441e4e67169e156bb09c1", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Back/Duffels/medical.rsi/equipped-BACKPACK.png b/Resources/Textures/Clothing/Back/Duffels/medical.rsi/equipped-BACKPACK.png index 07c8e5e54ed0e2417b8bd8b94defa4824f945543..db2197028578d7349a12062e5d6d64323fd4b64e 100644 GIT binary patch delta 660 zcmbQuwwiT7s-0A%XK(NE$6@wCAzQuP z*q^VTbLH`2$99g61_VmsJo9-^n*OVbgNGl#J|%p2*K23?%O<>xjE%RM?@v$tc-72^ z;Sd8yxNsi>qodv4z4QI5W$gF+YZiWG$a@zT#=_08{rma-3U+<*{}?Q8x}0T|NMzx! z=ircYyv+MCW%klw}AQP6a@w$JVv!?Kp_ckfO8)W3Le-m*ViyUc}y z!HQAACf;S+8u>}T1E*XTmyfX5`F`Ho=AdTBLtUP>oiSy1wR`uo2u7vJu@Z+pq7 z{pI`x7r%J+BYcA7t9p)(14o57cn3uM{~pJr&+2A-;abg3o!Gu*I|3D!Sj}255zX-O zgp2cy*ZXhAF}smk7g^ZhxKxQ5L3z zhlS@E8!p{u-Fa!x)fm=>BL&7@=WV{PF_B_eJ#*Ja{J$^EY^__!j*Lx?Ik)L%V z9q{d_kD2Ky06_E0mJ^8M^NYyOlHv$Z6ouKg4bwDZ-Jb+i)7k4+&#~Oxz>B97n5|Xu zyK@8p`1{Ag%74;)Bu%j#kasGSiUn-0E&u=?J-F|j!84Lk^ON&ROq>P93A-GAO0y1g^!bE#NJH2XkGDUcOB zxU;pYbM5<&pSLFf9MNS-22T(KK@bE%5ClOG1VP+JLLDcGM^K+WzJn~w0J1*~_JbeG z+qR82Z$CKKQ#mek*Wtx49fyVqw+?sDK+ye>j>RQOaw5uSKhGfW?-rdXY7E2B0PqN| z?;Lp6-hU0lkZjw|B?!DO>6M1PlS`*$9^?Yw0Pq`mF*0cdCQGERVY_<9+VN^1?JtDT^kFFdZrGfr}{}3BC!k z`UAGMz0cOR_s8A=T&L9^gx(DKqG~$pSf|d;%IXi2J#fURn(hpoF~&O9X`tSr9U@LD z2=(}J=lJ}>=@$&sI}rKL(74y*Z<1DmAP9mW^5q|FzQvL@UTu5;00004)1hxZ^BYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D02*{fSaefwW^{L9a%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0003c zNklg#`kR&M)ACwBEm6^+UM+7^Ki-=|3O$jp#300000NkvXX Hu0mjfBm$~< delta 499 zcmVgVZ0$R23^!zF< zIx!vvty-Wp3jmNwC%ApM3;V|fJ2p21-7pcGn*jja-oJoWElf|1NhRF5x?yr9y1X>k z4HE;sVE};I7s1u_9R_;C!r{){Seb7+O{o9?tfv-mnA>8-0AO}xm@;CQ!4OL`)2Xw%|lz6 zc09hzzn&|QNhd;t5E}ryicWLqZo9>JIJpNW7dXsqd2APGMK?_L64IIl-7tmut+|No}cAuwWZhNb3Xt8002ovPDHLkV1mEA++hF! diff --git a/Resources/Textures/Clothing/Back/Duffels/medical.rsi/inhand-left.png b/Resources/Textures/Clothing/Back/Duffels/medical.rsi/inhand-left.png index 1be16c33e41588450c783e895f163e5cb74cb4c8..1388323fa93665ad6fd139dc6d17cb905178fd8e 100644 GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fyVChba4!+h#404jtJ?Jx!pOI}7d)!_~fe{C43}Y&vef+{I!}Z@U?Adla z@B0@1qRvQDoz?f;rIwip%3hZ;{rTsgpj;gP!yiAt7He|s&1al=xkQ#lP<*k~hBbyQ zx8L5*)ZeFXx-?GJ_sHVx-WhLy+gZLi`&{0XI5Oukb;=h*@rd?Iw=1 zcDncfUrdvWWVv$MRaU5FgUR<3N)f-r=U?q#I8C8t>rQvEgRc~S|Cz-QwTUB~xq(G- z%~_zfF#eu#M3doC_7CM{~g7MN#3pJd~_UwOs{Y&=mv&_?3>Q)0yVPrcj fz}%B}_fYgTe~DWM4fVwU6@ delta 516 zcmV+f0{i{X1f2wsBYy$pNklJU@>joK*`lB5K6r^-HnJD{gzEayoOwB_8}w;vGt0wN+JA|fIpA|g_h z=XvHDG6A5%4D)^806>;y0DvS(DxT*V$8i7vaU7pK-o8xIbbkQ=w~UZ{l8r_KtJMnK zZZ}``ZF#=kF@-pknIs8g%3Fo283cjp^?KX))9LhQ5q6eGQDiNGEz@;f>KSmu2zhA@ z88M}2?nAi*_6frfj^iN9GK@weS|%H{0EbTh^?FUqbX~X59Dkx*PeBlv_qP=upYL~e z9{Aje<#GuCSbxknm@i(fV;{<7-vel2&3ebwn|Ic2;yA7}>mBpk&f7B2`6|7bX1!zm zvGUt`)@M#ZucmFn#~yiG=D8UnA|fIpA|fIpBJv*;?Hjn-znEFQ2-IhTr#$~JItHs3 zfjZH_U|_yJ17sJXj9vsve*gfaX=>W-HmcPsYPA~r{eAxSC@``621@G>xTGSz2($u( zVMuF)I0ma1fp!Uu$75F1L6ga(^6*r}OKZ4y=K)|gn{9g$qA0>*zOiP~Zc=HQnsXW< z&QV4$LSeq|oBWkevdr;Vy$GdL=Tent^deAOWKJDi{(ui?bTbgMA5lgC0000JHpJI~s%xw$don3U6@y?z7s*Lq*i55Hu zmc=ADRL(nW(U&-D+0#|Wi*<1;i9^Q5>lSdb)G zP<#L+XHbLS(0qppf<&zf*`x&3se_iarG-MT$@5D{pyjSl@A^XMA0Q$kA|fIpA|j$F z?RMKQIzw7nvR0xN3L$&|@H`Kz)vBU8Gz4Swd3`A9j0kwyWIi+ z#^W&nKuQVIG_l|BQ*~a1-EQXt>9bbV8zF>091hP7ZQF)z+vhI^mn*ee&7aL?+6_XM ztZ(;jr2jd(x9Q6zWv#}oI3AA}3dVfAAtVYLgSnmKX7s05;QcC=M|Kj7zgpTLGx(EX4vW6B~jgG%@78P|j zh~sQd*f*>%rKL_|bHL_|bHL{u(i zsu_rr`fuYh*9;`N8Cs{B0hJ}sZ6rP%)um?OdJ^(D%PDHLkV1ig)_45D# diff --git a/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json index fce8c90ce8..89236692cc 100644 --- a/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/medical.rsi/meta.json @@ -8,7 +8,8 @@ }, "states": [ { - "name": "icon" + "name": "icon", + "directions": 1 }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Clothing/Back/Duffels/mime.rsi/equipped-BACKPACK.png b/Resources/Textures/Clothing/Back/Duffels/mime.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5f4cc5577c78387ebf6a9fca3305fb807eab7a GIT binary patch literal 759 zcmVN2bPDNB8 zb~7$DE-^4L^m3s900MJKL_t(|UhSGuZo?oDM02M~=?!v#Di`TZ^4kmKHu=tHj*?_3 zV-f1uK+3Xe$CA~4ICyx>E|_Jr(Io;RAOa#F0wN#+A|L{*1a`aKb@d^`2lo5@6*qNt z*M}Euw_6tw&~aSQ16{aJr&C{T9s%49H$eapfaz*N4-nAF!{HEa0zl`_=kxyofX)H{ zVF1AKc|IE@_D2FVoA;L>APHOCsRn}R<+iFpx9I%$Oy~3xfB_-k$_sLU9AG~S zC5-zoJ~#<5wIqr?vTu p@C7&Ory?K%A|L`HAOijg+yGe(UiN1`jHdtq002ovPDHLkV1kS^MI8VD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/mime.rsi/icon.png b/Resources/Textures/Clothing/Back/Duffels/mime.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..937e82349aff483f2c6a9c821741f36c68d75cbc GIT binary patch literal 502 zcmVN2bPDNB8 zb~7$DE-^4L^m3s900DAIL_t(oN9~qDO2se~Me73GhcgkO;#lYcq^l4I%HK$*&Kz}1 zT~7Qb{2QK+=KsVN5lJ8RVjxqV67b*(f9ngh*&zwE&E<7cN@t8>fR7;6}YU@L^B z1?<(+%QueFwJCVt_u)8*l|Et&NtzSJw9z&2;#gUq*JBr2a-N@DQ1CU9I41#ieX$5D zU>wJwI!#k}JG`c`o%4N5G{DrE0NoonA*-Dk%7}EJ*}?NJY$; zozeQrbBonR%Ay}p2!H_956|z>1qG1+g4};}L4~mj&n1G_##%V41Sl5>C; zO*Sx^vu^!ZfYj4k0d~h;0Jz;8$O*W;yNRbF*YfIicR-0q;7esU0m|UDQ?PadY_j^J zSe%3am4rHyzj_aN0XmkYHz7ESg|F%&l2ztfu5!}bKv117%Gy1Eyo+)Ja9w(eW_T%|J$8jQKQ`&ye*V2O`nstu z+rjg!3ZW58m(99u+R*apz?RP&md{tTeI9#g=RQ@}xm#z&wr@63-uNZTn1!?99)mv6 zi0(CYhN=vY~Ov4v$Fi) z$kWlxl?n_@IMD}v&WKv(YdZuu0?)49*C?ic=pBR7Z1)PmGFAm%Au;8a<&`bs2Nx^P zer)Kp#iaj((v~mlk5$z$tUar|hhwc&*GG4z9UZ%F7Dnym*v+UQco8JLn=!%JrCadO zWt&6Y4=#S3qFnzMZqQ>r_gP9W6n_2x6;=E8&w1wSTwk)}9=aAZH+CNEeRtzX{AvkB Vv+wi5S%B$+!PC{xWt~$(695xh^!oq+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/mime.rsi/inhand-right.png b/Resources/Textures/Clothing/Back/Duffels/mime.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc6579f336eb3110021d6bd74e47db3545f707d GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fyN&2ba4!+hR9}ArR^uNB$N%57{9|r~&tmvO%W1@sumLk5g+GUO#oL&RGAkMVs68*Io~+s{b>D_{F>}+#P0CvA0(LvWa0s>b&O{e*9x| z$u)lUCv9y?R`#TI=fCUSSv>FTXQnIbm%He0dd9N(nh1l{uZ>H-aQqQvP+Duq@Y-6z zhU>Smf>%`W>dQNGqrNlP+4(C9evh9%fBBI(#tCVY!^~V1lFnPJJ}qwv|6HQsu{cs& zabI{Q#*G!o^eFH2sIKBoM3*2mB3h!Dem&L|s zqA^Fp+4c(04yFr>(jFuT_uO7J!lvI6;>1s;*b z3=DkxL735kHCP2GC{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L0m@TF)W0|S$o zr;B4qMcmt2j(IHxJgz(4`!73xVR-5kd#>s7hP2bA%YG^UJ=N9lK*P`I>iQ##f)wtb zzu(wt?E6cYQBVMm8g&}qzkEJZ_DaD4oAds0Gt6S-)qec>A;rYRbpQL`_lN%9-gY!g zT9P4=!DR)fdqabQ{N=}`k>YD!|I+HL=V$PA*uc;*Nu?t-@)2Xf#+O^g41S-mF;U3a zrD*f}TGU>zgL-ug4C)tneHp(LG_9>ollOBln#JyKet}chi^);$s-4#YX$C7s1toiz zzBTukeshjD6zBK1uSxiux3!*C@l;oZURX`cOYwyDOHAfZzyFuz;+wtqZ7!W@dD*|< z;up_;j*bRw=)i5^4bcHN{`cQw`p&diE@Sn+*tG47H}d96D^09z*e!4=#Uc4>*iP07 zU9aA@Z2q~Lalz6HjT>)nSBMZQHxA3b6Iy)D%%>~5%&cPDg1#gD91T@BjdhwF7;^0A zTQUShIiJ}2Y;D?<4blwx8@}?-O8+Ly+hA*TIBYKWA;E?_UH7@1^nQB?9b3YkXvlEs zjI4tcE5msKh6Y>n2TTWcZBsXTC*xG$AN0ZN#M#0nmgVPH^4!Vz{UQ9dgQJe(_7A)V z_!m8Tu&~dz@>=jZ9w((Dn=7~EXRY3H{_VjQE&dXgC$dt@w*KPh$xrF~_ furOc|_`&+TXD|POY~F3abj0B4>gTe~DWM4fiaioh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/science.rsi/icon.png b/Resources/Textures/Clothing/Back/Duffels/science.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..709e67d3a41d218c161fa6277d3896da8fff902a GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}c0*}aI z1_r(ZAk3I`t&TG5#j& z4ZWC_#pf7xUcAbk!S!I<8e7gl_3Xy$Iu2bKL3Keg=O-semp?4fiqe;=j4qoTY{($7 vbhU-*(;4gR&+|@7@_M^)iSV2CvK34vM_2i|HO`&{3_u1?S3j3^P6!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3Q$0figD*u385kHh zdb&7{`WKp7He7pK z&*HFB(yB*mp28FU1GkD5>lb~m+GHf->sW(nOqMtUD1r@AtY}${&#qA{_pKSkr$LVakTHPtot86+ciZnM4!LZ zOW@FD8>Q|CFZb^Z=X9!=?VcjIM{d^dsR}LID_z76zFxR99!dDE_5)rgjk7>gy87E^ z*|0z1gz@A}D{#QOw}! L>gTe~DWM4fI78(( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/science.rsi/inhand-right.png b/Resources/Textures/Clothing/Back/Duffels/science.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..da549fec4c4b7de9a3be509ec0a0dd4854cfa722 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3Q$0figD*u385kJ5 zJY5_^D&pSGa?CrTz~frne^24|J%zhz_nA#j%Pb0iQKUERwLz(>cgG|qHb|m``o8n~c@}xCX8U1f zd*|`)m75=1%rU98Gve4B#(9cANVb*l@AD+%TUi#}iYvE@G~{(!Gn}|2#q{IHpQ6*7 zc9h1}SH=F@#k6To*@EP2Qp_K&n@NZ|(}Uq6>e-?|MStxnS3a2M)t`8d-a5W zw}1AXD+Gxu;f^_>5)kRuQ%V= pSANzZ`@~U)Dv5wU7aD#EPrdflh|7=TD=_XDJYD@<);T3K0RXiY&Yb`N literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/science.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/science.rsi/meta.json new file mode 100644 index 0000000000..89236692cc --- /dev/null +++ b/Resources/Textures/Clothing/Back/Duffels/science.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/547852588166c8e091b441e4e67169e156bb09c1", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From 6a41194bc94d04657f15e5d76672c950d62521ae Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 20 Jan 2021 00:16:41 +1100 Subject: [PATCH 162/166] Fix buckle drops. (#3023) Co-authored-by: Metal Gear Sloth --- .../GameObjects/EntitySystems/HandsSystem.cs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs index c3f7f22c14..471f9d369c 100644 --- a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs @@ -19,6 +19,7 @@ using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Map; +using Robust.Shared.Maths; using Robust.Shared.Players; using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefines; @@ -115,16 +116,23 @@ namespace Content.Server.GameObjects.EntitySystems if (!ent.TryGetComponent(out HandsComponent handsComp)) return false; - if (handsComp.GetActiveHand == null) + if (handsComp.ActiveHand == null || handsComp.GetActiveHand == null) return false; - var entCoords = ent.Transform.Coordinates.Position; - var entToDesiredDropCoords = coords.Position - entCoords; - var targetLength = Math.Min(entToDesiredDropCoords.Length, SharedInteractionSystem.InteractionRange - 0.001f); // InteractionRange is reduced due to InRange not dealing with floating point error - var newCoords = coords.WithPosition(entToDesiredDropCoords.Normalized * targetLength + entCoords).ToMap(EntityManager); - var rayLength = Get().UnobstructedDistance(ent.Transform.MapPosition, newCoords, ignoredEnt: ent); + var entMap = ent.Transform.MapPosition; + var targetPos = coords.ToMapPos(EntityManager); + var dropVector = targetPos - entMap.Position; + var targetVector = Vector2.Zero; - handsComp.Drop(handsComp.ActiveHand, coords.WithPosition(entCoords + entToDesiredDropCoords.Normalized * rayLength)); + if (dropVector != Vector2.Zero) + { + var targetLength = MathF.Min(dropVector.Length, SharedInteractionSystem.InteractionRange - 0.001f); // InteractionRange is reduced due to InRange not dealing with floating point error + var newCoords = coords.WithPosition(dropVector.Normalized * targetLength + entMap.Position).ToMap(EntityManager); + var rayLength = Get().UnobstructedDistance(entMap, newCoords, ignoredEnt: ent); + targetVector = dropVector.Normalized * rayLength; + } + + handsComp.Drop(handsComp.ActiveHand, coords.WithPosition(entMap.Position + targetVector)); return true; } From f9f724b4afb1be0135291dcede4463e5460d9300 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Tue, 19 Jan 2021 07:26:16 -0600 Subject: [PATCH 163/166] Piping sprites cleanup (#3022) * Moves piping visualizers to own folder * Pump visualizer update * Siphon and vent visualiser only set enabled visibility * PipeVisualizer cleanup * Replaces off vent/scrubber sprites * Gas filter sprite update * Revert "Gas filter sprite update" This reverts commit 676e5d55e1157a229b1445eeea53a5c8032dbbb5. * Rotates gas filter sprites to match T-junction pipe directions * Removes pipes from scruber and vent state * Makes sprite components use layers * disabled sprite netsync on piping entities * piping meta.json cleanup Co-authored-by: py01 --- .../Atmos/{ => Piping}/GasFilterVisualizer.cs | 1 - .../Atmos/{ => Piping}/PipeVisualizer.cs | 9 ++- .../Atmos/{ => Piping}/PumpVisualizer.cs | 8 +- .../Atmos/Piping/SiphonVisualizer.cs | 51 +++++++++++++ .../Components/Atmos/Piping/VentVisualizer.cs | 51 +++++++++++++ .../Components/Atmos/SiphonVisualizer.cs | 72 ------------------ .../Components/Atmos/VentVisualizer.cs | 72 ------------------ .../Constructible/Ground/gascanisterports.yml | 13 ++-- .../Constructible/Ground/gasfilters.yml | 22 +++--- .../Entities/Constructible/Ground/pipes.yml | 2 +- .../Entities/Constructible/Ground/pumps.yml | 19 +++-- .../Constructible/Ground/scrubbers.yml | 22 +++--- .../Entities/Constructible/Ground/vents.yml | 22 +++--- .../Atmos/gascanisterport.rsi/meta.json | 16 +++- .../Atmos/gasfilter.rsi/gasFilter.png | Bin 825 -> 5791 bytes .../Atmos/gasfilter.rsi/gasFilterOn.png | Bin 6420 -> 16173 bytes .../Atmos/gasfilter.rsi/meta.json | 21 ++++- .../Constructible/Atmos/pipe.rsi/meta.json | 71 ++--------------- .../Atmos/pipeitems.rsi/meta.json | 47 ------------ .../Atmos/pipeitems.rsi/scrubber.png | Bin 649 -> 0 bytes .../Atmos/pipeitems.rsi/vent.png | Bin 1106 -> 0 bytes .../Constructible/Atmos/pump.rsi/meta.json | 46 ++++++++++- .../Atmos/pump.rsi/pumpPressure.png | Bin 1303 -> 5258 bytes .../Atmos/scrubber.rsi/meta.json | 32 +------- .../Atmos/scrubber.rsi/scrubOff.png | Bin 767 -> 6169 bytes .../Constructible/Atmos/vent.rsi/meta.json | 12 +-- .../Constructible/Atmos/vent.rsi/ventOff.png | Bin 612 -> 6506 bytes 27 files changed, 251 insertions(+), 358 deletions(-) rename Content.Client/GameObjects/Components/Atmos/{ => Piping}/GasFilterVisualizer.cs (98%) rename Content.Client/GameObjects/Components/Atmos/{ => Piping}/PipeVisualizer.cs (89%) rename Content.Client/GameObjects/Components/Atmos/{ => Piping}/PumpVisualizer.cs (85%) create mode 100644 Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs create mode 100644 Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs delete mode 100644 Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs delete mode 100644 Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs delete mode 100644 Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json delete mode 100644 Resources/Textures/Constructible/Atmos/pipeitems.rsi/scrubber.png delete mode 100644 Resources/Textures/Constructible/Atmos/pipeitems.rsi/vent.png diff --git a/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/GasFilterVisualizer.cs similarity index 98% rename from Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs rename to Content.Client/GameObjects/Components/Atmos/Piping/GasFilterVisualizer.cs index 9f9aa09c64..cc99c6c827 100644 --- a/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs +++ b/Content.Client/GameObjects/Components/Atmos/Piping/GasFilterVisualizer.cs @@ -5,7 +5,6 @@ using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Serialization; -using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; namespace Content.Client.GameObjects.Components.Atmos diff --git a/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/PipeVisualizer.cs similarity index 89% rename from Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs rename to Content.Client/GameObjects/Components/Atmos/Piping/PipeVisualizer.cs index 0ff952ce6a..b0f3de2c2a 100644 --- a/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs +++ b/Content.Client/GameObjects/Components/Atmos/Piping/PipeVisualizer.cs @@ -10,6 +10,7 @@ using Robust.Shared.GameObjects.Components.Renderable; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Log; +using Robust.Shared.Serialization; using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; @@ -18,14 +19,18 @@ namespace Content.Client.GameObjects.Components.Atmos [UsedImplicitly] public class PipeVisualizer : AppearanceVisualizer { + private string _rsiString; + private RSI _pipeRSI; public override void LoadData(YamlMappingNode node) { base.LoadData(node); - var rsiString = node.GetNode("pipeRSI").ToString(); - var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _rsiString, "rsiString", "Constructible/Atmos/pipe.rsi"); + + var rsiPath = SharedSpriteComponent.TextureRoot / _rsiString; try { var resourceCache = IoCManager.Resolve(); diff --git a/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/PumpVisualizer.cs similarity index 85% rename from Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs rename to Content.Client/GameObjects/Components/Atmos/Piping/PumpVisualizer.cs index 2f4f38ccd6..e3ce6d930a 100644 --- a/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs +++ b/Content.Client/GameObjects/Components/Atmos/Piping/PumpVisualizer.cs @@ -1,9 +1,9 @@ -using Content.Shared.GameObjects.Components.Atmos; +using Content.Shared.GameObjects.Components.Atmos; using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Utility; +using Robust.Shared.Serialization; using YamlDotNet.RepresentationModel; namespace Content.Client.GameObjects.Components.Atmos @@ -16,7 +16,9 @@ namespace Content.Client.GameObjects.Components.Atmos public override void LoadData(YamlMappingNode node) { base.LoadData(node); - _pumpEnabledState = node.GetNode("pumpEnabledState").ToString(); + + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _pumpEnabledState, "pumpEnabledState", "pumpPressureOn"); } public override void InitializeEntity(IEntity entity) diff --git a/Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs new file mode 100644 index 0000000000..965810bf59 --- /dev/null +++ b/Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs @@ -0,0 +1,51 @@ +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Content.Shared.GameObjects.Components.Atmos; +using YamlDotNet.RepresentationModel; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Client.GameObjects.Components.Atmos +{ + [UsedImplicitly] + public class SiphonVisualizer : AppearanceVisualizer + { + private string _siphonOnState; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _siphonOnState, "siphonOnState", "scrubOn"); + } + + public override void InitializeEntity(IEntity entity) + { + base.InitializeEntity(entity); + + if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; + + sprite.LayerMapReserveBlank(Layer.SiphonEnabled); + var layer = sprite.LayerMapGet(Layer.SiphonEnabled); + sprite.LayerSetState(layer, _siphonOnState); + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; + if (!component.TryGetData(SiphonVisuals.VisualState, out SiphonVisualState siphonVisualState)) return; + + var layer = sprite.LayerMapGet(Layer.SiphonEnabled); + sprite.LayerSetVisible(layer, siphonVisualState.SiphonEnabled); + } + + private enum Layer : byte + { + SiphonEnabled, + } + } +} diff --git a/Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs new file mode 100644 index 0000000000..7a9cc36e10 --- /dev/null +++ b/Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs @@ -0,0 +1,51 @@ +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Content.Shared.GameObjects.Components.Atmos; +using YamlDotNet.RepresentationModel; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Client.GameObjects.Components.Atmos +{ + [UsedImplicitly] + public class VentVisualizer : AppearanceVisualizer + { + private string _ventOnstate; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _ventOnstate, "ventOnState", "ventOn"); + } + + public override void InitializeEntity(IEntity entity) + { + base.InitializeEntity(entity); + + if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; + + sprite.LayerMapReserveBlank(Layer.VentEnabled); + var layer = sprite.LayerMapGet(Layer.VentEnabled); + sprite.LayerSetState(layer, _ventOnstate); + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; + if (!component.TryGetData(VentVisuals.VisualState, out VentVisualState ventVisualState)) return; + + var layer = sprite.LayerMapGet(Layer.VentEnabled); + sprite.LayerSetVisible(layer, ventVisualState.VentEnabled); + } + + private enum Layer : byte + { + VentEnabled, + } + } +} diff --git a/Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs deleted file mode 100644 index 8dcee9a7b3..0000000000 --- a/Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs +++ /dev/null @@ -1,72 +0,0 @@ -using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Client.Graphics; -using Robust.Client.Interfaces.GameObjects.Components; -using Robust.Client.Interfaces.ResourceManagement; -using Robust.Client.ResourceManagement; -using Robust.Shared.GameObjects.Components.Renderable; -using Robust.Shared.IoC; -using Robust.Shared.Log; -using Robust.Shared.Utility; -using System; -using Content.Shared.GameObjects.Components.Atmos; -using YamlDotNet.RepresentationModel; -using Robust.Shared.Interfaces.GameObjects; - -namespace Content.Client.GameObjects.Components.Atmos -{ - [UsedImplicitly] - public class SiphonVisualizer : AppearanceVisualizer - { - private RSI _siphonRSI; - - public override void LoadData(YamlMappingNode node) - { - base.LoadData(node); - - var rsiString = node.GetNode("siphonRSI").ToString(); - var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; - try - { - var resourceCache = IoCManager.Resolve(); - var resource = resourceCache.GetResource(rsiPath); - _siphonRSI = resource.RSI; - } - catch (Exception e) - { - Logger.ErrorS("go.siphonvisualizer", "Unable to load RSI '{0}'. Trace:\n{1}", rsiPath, e); - } - } - - public override void InitializeEntity(IEntity entity) - { - base.InitializeEntity(entity); - if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; - sprite.LayerMapReserveBlank(Layer.SiphonBase); - var pipeBaseLayer = sprite.LayerMapGet(Layer.SiphonBase); - sprite.LayerSetRSI(pipeBaseLayer, _siphonRSI); - sprite.LayerSetVisible(pipeBaseLayer, true); - } - - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; - if (!component.TryGetData(SiphonVisuals.VisualState, out SiphonVisualState siphonVisualState)) return; - - var siphonBaseState = "scrub"; - siphonBaseState += siphonVisualState.SiphonEnabled ? "On" : "Off"; - - var baseSiphonLayer = sprite.LayerMapGet(Layer.SiphonBase); - sprite.LayerSetRSI(baseSiphonLayer, _siphonRSI); - sprite.LayerSetState(baseSiphonLayer, siphonBaseState); - sprite.LayerSetVisible(baseSiphonLayer, true); - } - - private enum Layer : byte - { - SiphonBase, - } - } -} diff --git a/Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs deleted file mode 100644 index aee70602d8..0000000000 --- a/Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs +++ /dev/null @@ -1,72 +0,0 @@ -using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Client.Graphics; -using Robust.Client.Interfaces.GameObjects.Components; -using Robust.Client.Interfaces.ResourceManagement; -using Robust.Client.ResourceManagement; -using Robust.Shared.GameObjects.Components.Renderable; -using Robust.Shared.IoC; -using Robust.Shared.Log; -using Robust.Shared.Utility; -using System; -using Content.Shared.GameObjects.Components.Atmos; -using YamlDotNet.RepresentationModel; -using Robust.Shared.Interfaces.GameObjects; - -namespace Content.Client.GameObjects.Components.Atmos -{ - [UsedImplicitly] - public class VentVisualizer : AppearanceVisualizer - { - private RSI _ventRSI; - - public override void LoadData(YamlMappingNode node) - { - base.LoadData(node); - - var rsiString = node.GetNode("ventRSI").ToString(); - var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; - try - { - var resourceCache = IoCManager.Resolve(); - var resource = resourceCache.GetResource(rsiPath); - _ventRSI = resource.RSI; - } - catch (Exception e) - { - Logger.ErrorS("go.ventvisualizer", "Unable to load RSI '{0}'. Trace:\n{1}", rsiPath, e); - } - } - - public override void InitializeEntity(IEntity entity) - { - base.InitializeEntity(entity); - if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; - sprite.LayerMapReserveBlank(Layer.VentBase); - var pipeBaseLayer = sprite.LayerMapGet(Layer.VentBase); - sprite.LayerSetRSI(pipeBaseLayer, _ventRSI); - sprite.LayerSetVisible(pipeBaseLayer, true); - } - - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; - if (!component.TryGetData(VentVisuals.VisualState, out VentVisualState ventVisualState)) return; - - var ventBaseState = "vent"; - ventBaseState += ventVisualState.VentEnabled ? "On" : "Off"; - - var baseVentLayer = sprite.LayerMapGet(Layer.VentBase); - sprite.LayerSetRSI(baseVentLayer, _ventRSI); - sprite.LayerSetState(baseVentLayer, ventBaseState); - sprite.LayerSetVisible(baseVentLayer, true); - } - - private enum Layer : byte - { - VentBase, - } - } -} diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml b/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml index e23edfc1e3..52fbfd854c 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml @@ -10,15 +10,12 @@ - type: SnapGrid offset: Center - type: Sprite + netsync: false sprite: Constructible/Atmos/gascanisterport.rsi - state: gasCanisterPort - - type: Icon - sprite: Constructible/Atmos/gascanisterport.rsi - state: gasCanisterPort - - type: Appearance - visuals: - - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeHalf + - state: gasCanisterPort - type: Damageable - type: Destructible thresholds: diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml index ce2d6dafd5..19a2f0e1cb 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml @@ -17,19 +17,23 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - + - type: Sprite + netsync: false + sprite: Constructible/Atmos/gasfilter.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeTJunction + - state: gasFilter + - type: Appearance + visuals: + - type: GasFilterVisualizer + - type: entity parent: GasFilterBase id: GasFilter name: Gas Filter description: It filters gases. components: - - type: Sprite - sprite: Constructible/Atmos/gasfilter.rsi - state: gasFilter - - type: Icon - sprite: Constructible/Atmos/gasfilter.rsi - state: gasFilter - type: NodeContainer nodes: - !type:PipeNode @@ -45,7 +49,3 @@ inletDirection: South filterOutletDirection: East outletDirection: North - - type: Appearance - visuals: - - type: GasFilterVisualizer - filerEnabledState: gasFilterOn \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml index 952ca8cce9..1d0732e4d3 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml @@ -19,10 +19,10 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: Sprite + netsync: false - type: Appearance visuals: - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi - type: Icon sprite: Constructible/Atmos/pipe.rsi diff --git a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml index d79302849c..fc5f3d712c 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml @@ -18,9 +18,15 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: Sprite + netsync: false sprite: Constructible/Atmos/pump.rsi - - type: Icon - sprite: Constructible/Atmos/pump.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeStraight + - state: pumpPressure + - type: Appearance + visuals: + - type: PumpVisualizer - type: entity parent: PumpBase @@ -38,11 +44,4 @@ - type: PressurePump inletDirection: West outletDirection: East - - type: Sprite - state: pumpPressure - - type: Icon - state: pumpPressure - - type: Appearance - visuals: - - type: PumpVisualizer - pumpEnabledState: pumpPressureOn + \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml b/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml index 9a6858382f..f83102c2b7 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml @@ -9,16 +9,6 @@ - type: Physics - type: SnapGrid offset: Center - - - type: Sprite - sprite: Constructible/Atmos/pipeitems.rsi - state: scrubber - - type: Appearance - visuals: - - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi - - type: SiphonVisualizer - siphonRSI: Constructible/Atmos/scrubber.rsi - type: Damageable resistances: metallicResistances - type: Destructible @@ -27,7 +17,17 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - + - type: Sprite + netsync: false + sprite: Constructible/Atmos/scrubber.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeHalf + - state: scrubOff + - type: Appearance + visuals: + - type: SiphonVisualizer + - type: entity parent: ScrubberBase id: Scrubber diff --git a/Resources/Prototypes/Entities/Constructible/Ground/vents.yml b/Resources/Prototypes/Entities/Constructible/Ground/vents.yml index 030275ec7c..08c981107a 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/vents.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/vents.yml @@ -9,16 +9,6 @@ - type: Physics - type: SnapGrid offset: Center - - - type: Sprite - sprite: Constructible/Atmos/pipeitems.rsi - state: vent - - type: Appearance - visuals: - - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi - - type: VentVisualizer - ventRSI: Constructible/Atmos/vent.rsi - type: Damageable resistances: metallicResistances - type: Destructible @@ -27,7 +17,17 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - + - type: Sprite + netsync: false + sprite: Constructible/Atmos/vent.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeHalf + - state: ventOff + - type: Appearance + visuals: + - type: VentVisualizer + - type: entity parent: VentBase id: Vent diff --git a/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json b/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json index 6e45e0d979..6cbbd9f2e8 100644 --- a/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json @@ -1 +1,15 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "gasCanisterPort", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", + "states":[ + { + "name":"gasCanisterPort", + "directions":1 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png index 0735d1b17b2ab1e3e4befe8da6bce98e915eca3a..2c65982213274a32ad23c03ba31aa5b00e03be1c 100644 GIT binary patch literal 5791 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 delta 803 zcmV+;1Kj+dEx87eBYy(`Nkl>pq$JGQ_Wx@At3~Qps#9bX3(RhpVkAZ0f)n}WPXVr`o90wS7^0b z;dZ+<|F73;T(8$&Lzl}%XzS7TI}d%||Jv{OS`8h-;c(CrVSjG>e`E#D=d(5Ao6Tl$ znYrvs1yB{#WlTrru-_{H0BpBgX<8h|D2f7gT?^Asr<1CBC4Kf)=-5{ZpsMKK=O@al z>O3FQa2@+$5MY-iV2laN=-U5n(x5a=JO774U{aM4)Ok@`hGHZDW2`Z}OA;KjOy~tu zK%GBkS*I-~7=H;sh5^jlc>pM@s^j*uVW5MS0AUaaRc4H#tg6|EfK8MFc%Ij|To?qM zj;3ikyB7dIp1{AHp~FGB3Pe!^0L`QW{J7ksI!}mJ0-6)@JlCp2DL|g*h~v03&YrFF z{F@iGS%lUcz|XYL)_LH2GNvB@D2hU>F6~u-ce6)Let)tJP+3(dtE!o=WV=%y<7Mzs z$R`Mi(aU3;y_ADBHp0JwLxKDQg| zl5?XK9}osX<7#0LfHBtTD8&v?K03Cxg(wC&EX zut9sw1K;Cb)KNa44qEX6v<&eENQ7gS-94uO1%Dg+fH;nuI@@;1)A;xRKA#HhIY6c^ ziJ;173f=Sb_y1*8-FX5%r#zF!2LShhQ@mH$q^|4cZBq;Y(H4RJrhIP|A3&W`rS;{L zVJ$vjYWi-Vd9N6PkpS)8m+dh>H%0=qUG0@S4_Jy1m>Qd3mOL*VA7BF)A0SI`@c})& h(;Tt5!{Jyq{{j8BLrl`1S#|&b002ovPDHLkV1l}OdAk4r diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilterOn.png b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilterOn.png index 9688ee0b37b0109486db27759e2c79a282696592..891eface878691c8b320b85da128b36823b53629 100644 GIT binary patch literal 16173 zcma)iQ;=p&ux;D6ZDZQDrfu7H_t&<~Y1_7K+nTm*-uchNx%ctzh*}xBBX(6qRqR}u zt13c4P68eV2L=cT2wqB3ROz4f|F1zo{KG+h!$}|@3KxKihKrJ+JCTEvy_uzrDUpk( zgDH`zhou=1kjF-Km!=aQ*J6`boT|5s#gLAY?Ad;=f{1I3{)Fp~`;Tp{!?*X#!rM#O>huL}Y#OiM z$49OuUyXei!7hLN;K9@PoomwQ0soOB=?CE8A$OJI;$_tJpLcV;dUdc{!q2}t(0RrC z?SA06IXW%y!($T6O#1RL({@zd`^tK%-SyqtbJzOa)Wi9u_PYHb_t0N@(!g5V>x;5; zVV`T_-aLBoT}U;RLV#H$&jRSOJ1AZKx>#*Pq;0U@{rnpf|Mm2@*S%rWE46#IyAuN? zQTn*PJgquwx2?{Z){j5+b^Md?jW0KMLf$Y6G)A^*{SA9W?IQlUrC)CIvgP8F@6sTm zpFZtvvpoReQR{A9l_QoV(D%}9U0nbk$I&;BZFch7mHye=o^O}K=5J={k+gaHpCeR# z->F8-pQDo}aj!|2>h6ikDvh)x*+w`^IX@?KnEDUmMUO)--zlEX_8sb#!hVk-oi&5b zcb_PNt4!OsLi1VIJDB4R-NECxHeizdPSU7)0(hPAcZ;O%2IqCHLyb9kDTF+dE>B=+hhZ)*;mLcfsTAnGY>YHmD&pelH zi!+^<9h;Ra1X^EZY#&n20@l;~O%yR9&bq#fIE*KsPOy~@D8;P5jswLGG;#X!vR&NJ zaRZZ%iyAArvq-p`%nFlPtAB+;3^p*>eN=REOn;SepbqMvP5YE`kuHBR{xUD>2s`dM zzlvBf4WQEK4D!M_6hL2G^aM0KKj1IU9&J>;ycLBe7>=;)AB|d zd)7_w71MbCL0?Q7F}+UO(jc=HQ08~m;3~DUbv`JIbVffXuf)nF_C5SzNZ8nJHOR?? zQea<=&q`-pFl0ojzSP2d-;qIU8%BYzzj$ZF1lFFh|LAqufpYKUNoS`gp0g=ONiAR0 zb+FMH93F7JU8B8f2!OLendp~*3Syk*v7C={C#%1ZgadW!M7FGT2JaZdodvwTiX=lV zbYZS#c6Er*=q%oo0nMOLOkC5hWsIh`jZ0dlVATwx8=GyyE0SqxY9vS2su)uU4zYA3 zg&fuUjG)%r2V*4a28F?N5xjTCyMd(?(so@Ytt)zbk}UX8hghm>y|tT5YL0sLXQn(L%i<7lQJanB zpdSR`g@mKCz8xH(n3R07Mn^8UKpMzc4uFp4>cs@@UGSveP&BMfNzXWFM5BN zLXU2LEhy`~1qy07t<8WR5@G?#A5(%dncC)Yv=dnW%x%B52c2C`WpInW2dHk4YN}Ed z>A;<#ivTg!(DpQ>$!h+%g1@;NBXvLkcK_*>*6fD60@@nG`h94#A{efUC|Q+>#xC02 zWJLu!ZkiTLO69`_T%~91hKw8Kx}7GmZ_19;paDk2ATTHZr(_*BRbkDQSg;fwS_mCi zJY}6^f0#u|VL%>x6Yq=#wt}iFsJ-zq_B0~i7#|dTd5=zm7>CdmqIGduq`yx5L`cpcip#efJD{<1{F?_!l#)d4bT zjojXyvY6;|b8{O^1+s0%dP{w&PpqnaP+WaYkhy3bl?Ch$*5tu>j3^Y?7X|}}Ce9z9 zr$EG7k;RC%oz%jJW35M6YMs13y8ASe9!e9;hO5O@ zC-?7Zn-cjWqZpuw49;g*M**SS)QE$9RI7;!*1?!QJ&aTV5mXvT2x)5p1kc|N=gr)Z zxN1(F^DR;Xf2+-H_Jz9T5y;Za)j!NvYAKRDR6f?{w<>U7182N0amiZN7g-z;#{J|# z5_e@=ozNVQ!hIj03&?npmWZ8%I##9bc%Q<8Ac5p(i-rum61a%GV3r~~@m7KGHB&ND zkq8w`5b2&wMEO2tvTgtgDN_vNjT+s%1vWg54z!bLl&Qwu@vlVFtq~hxbSV9lEqf|{ zLtr^MSVS#%+MvJ0gOP93wpylD<*H)3vkYc@WeQv%##Mb@XjbLHJHt%KlKnotlW}LHS5u2q7M&TaR+> zAB9eFcB6O4@=SuOc^76ofBhMm1U=LR`^0+wHsq-iQ+lX6dElSbA2BhDx0fK_-QT7g zV{h{mpEgz$6blk0|xPF-qd|117GrZ?DK*lZG<@0wN9TvF2x?kHO>9-TS`W8$sk+zV?yJW z3+xH8-CNuSbgJ>c`U3^X= zHaL|@=-qMFDvq@tAm7vWAEH7fd)7%8^RUBfh5mrF;9F9Gly^Jpa(bo1Kx^pK<8gO_ z@JCU}VCRYT#YudM5`b+5B%ycVR*;IDo9j1k#1h3AtU$`c*e06_O(F}!4qMN&DL`V8 zxOh~pz(Dznn8;U!cpOPONJ5+fduGxOksvIDzjt$I8B`ly(O|T*9~o`}n>B=qG6ac% zD?xxIauOGTU>Yup(g7KO0-G%WK>;Iz*89RR%qP7H^}Id5(d72(`T`wIC9_L+(mZzm z7ww54aCShDKQpvQ=sZ%LN&#aq8UZT$-opUFKE<8SEnRzi zHoyIv;nXyxVTvFWX4Q&#T_e^2aMc8ysnJP#;7J`98uYQf8dcF+ZtOA?Ylk5XJ(`Mj zq{%(SH*l15dV`pYQfWusQn|m916EpRBz3$Ut%P8;n27?z~{ECIlVZ5aS-uw4d8&>!rzjt)TwYA;ZG9|etGn7EJ*6j^Gf~mm@l%yVgM;x z1$rCYy2#Urj!=)XB5YD@=~@|Jsc=g}RwE8jh%T9yaCwmogB%tX)`hiwKp+1>or7PV zqKji9{D$%?aQLco=k+f|>CS1c5p#vM5#IT%#K-Z`dYUzeY)jjSast4I(<(fxQ9wNJCY+ty^ ze2WXfMJI4&7>?gtC&#=uAvH3lgnU3C!K`BARP~cGB?)*`B}b?VDsqLD1hhDC&m;j{9F|`^nIxnRwCi|n<%YOB!wp=A4Ryw6Fs2f)gH4L;JE^47CH`|4M zjqp6OEk#@P#jP1Kfx4yZs^U^$7{RxcIq;I4J)l!d#tjn?`~mtVS`wL8pwwxJCOR#B zm3w%0ej_1){$`ZEtuVFm(uFY3avvzPt@LT1Y9C%L^6O^Rg`Otq-*8cvF4AD5(imW> z5h*~Cj0b84k|uP^~^QFhax7a8_ zgTUr|JSVNqIjNr!)-e`0V)7!TUaj|reD@1^kuuaNPu(;@S4__XSw*b1k>laZiZ&qD zAOEu31A`tyJfMP=`&3pZGk>6j`jBcC@m4>rfxYS6jK!<@+51icLE>x}&ke`yYz@mj-3AgajN2`M2PzDMStzg!-T#-w6IZ>ZAjzfSlb3J}$g zv{XN_W_HsH$`k4%3jBbB9_IyI#T&eJR_oO<_qY4AN#KcO;&EBIhXTQDU@_%x{`u%! zIHIunwOlBbQmkLajWqWWt(}q^4nsW2$@mWOW{h7Xh_@<>935B>kKQC)>zZ^YsAF|# zV8iBU-m^oog?>OpFp2m9JJa)}xE$P>4suC^+(We{* z94>=C56=%4T&A_5@Fgiz4%KdcU#5Cdiv2NON8pCe&rV+Pvz1ELfF6YxLbwc^zXfRdtYGHHAZMek~UOs4JR9n&*+} zJx8=Hqtu0Y$d?69P^Zi)o-&ad%v7Fznpz6r)id5XC8GJ@MhZ!HbiHnh`dee7$^kk679=KVk zE7O>I=%s+$j}C3j-sg*_I6ONBsp?v{-%78ptlBTqkj7o;l(<|Nxf9FuS~ueGUVmr} zBBeP0KvHkjp z>DaRotXcLRQHk&z#<5@Nt&(EHLSx}0@eJLRcwW*aKv4Qj=2~Zbo+?@9$fm8q%LRh9 zCIqZJh%ppa7rOvFG75uMz*KCqhQI=4665G8>xz^;Q3$e;t0K5;6Hy~HQK(v6Eas-PN-;tp8^?II;(4q}Qchp~Z;scLQ)-LIV|ku3D#VA;rBUHc$Cmx1r7&2$a>z z#y}Ub_Yuqhxq2p1x)!Rx4!99-XHo0SNcg$UDY6KzSuS-XP!z}w zii>hHA1bUI82_>0N*FgVgh)j_)b9WwX%Sdl0_hnm7W+m-my6O}lvKdYD_viHWjcSc z%w_z>rL_@6#-d{>7yEMi7SV(u&N!f~mLIS@y0VQT`&BKsv9l~?uY(Nhp99tF z59NXU7y{`G;*D_ zjxGXhE0YUB=hoo9J4lOUA^kF|ZlxsGnCX$ciujpS6B6=>bFAQh_@O; zrx%&;u1l+&W!<0R|1b01=zI?ugL;JekiS1`WRKst#;6_pk}B0@#j&N0@zK+20zD;CAYQiyCcNldnvV-TA)Xb zaC-J=)c(Zg%9`t$xy@!Ljq;}r>aD22T8{16U2JSonyEKS*VmRjJ+3?0&z?N}W}@A1 zQ<{m;3;JhAnkh~XqzjZoHP**Ay9ub$DFbeZFKPtxX4ww+=Fi9xc`X77m0{4D3yJN9 z+-DinR{?5EJOm6cD~Nm0QFrRnpu!KH%NZrvuu+Zu~HHZ)gV7TvOnnC{}j<7T#XD2?OOK3iv~K z5IJ$P5#rXD9b@gJ!SDsL;pZV7jBrj_A`r?e9%=>w1765rttFF^^oll_zW-;??`HQ;3X?3IdsA&+BuVpimeI=cq zzI#MsYbwfxMMB5FM(Z%NhZiop)^f$gphfA+9(z!W#)(8?t_)pp&T6b!e7?n#@w9Le zND*Mo9BHl`&CyAnVhyPMBi=&p@e)giTyg@l{v2+H%n^tdA%0!P;R?|xnc*mjyB`-b1*B zeMf#0jVM6U1QNyY1tSs>OASV&_$>(qXtE@Cc*!Sn9h7sEBaya^Z^bOUd(wR_33d!0 zKM#enJ;Ow5=qi70bXvu0H-t^)Rs`M!BgOM=@gvn$+7N*jRArbwwE&|al!x7P6h3K= zk<)T^_HVVHFbTL%e_v23dSnx`3uKeOKT{!#Ba|1N_+UyE+z26`rMr3zSiF)sHe^EPH zL;Mr&Ggh;tf1T@w0rjyim$y2Wvj$wij+M25vGi}sAN}H|DYa+)du&Rjqe*F_y3PnM z;h*4wQB9-ea^oO(n~YnQr{{!fWRqHNdI^7D4Z~xJ!1z!3z_{utzSC%h(kR`FYzAmL z#ybhq>smyO)v~zrJHvNv)|f$rM~0)|EriQ~iOJgoF`?#-7tzEcWaU!bf`yF*EzP8-7;vpclWtWoH|AXN|bvgjNj12{}50X_2+TYIQmk0rQ=UA27DbqJpUpcc6EeBL7n984z+u7`312xq%l-jax0RFfmfdSmwz!WR(1+c?0 zDwwO~m}SlZvCIj`bYU>R9CSB7b$(hAb|r{1Z;+#M^@6{ws^_2A*bpYY&C@)VncO(+ zQ>r~Q!me4tS1>Si1<1YEuwdKlb8NfDDi+<(R zys`Tea3v3nQ#@T1l*3cy#nS6*H=IuSWSMQ(`VQtsEfwe!;N$u3R!BUoi#dp7y|a9{;T@(9dg0^?Abi z(3pblS21@!cr!ZpzRAmT{r9E(m-eM9QDL6+WXYa^aUoGBcwpHlDIMr!sJO96}3uEQv0b6j;R@^)q=E6x0 zG|N$f$VTahndJdRaomvhtX2q|C8%V2Y0<}29B3L7HuYWDf*sKF5$%$HbaNaL2!}gja7BHBF^> z5d;?m9if=d3|YXH3MbakXsS$`9>V3O_mERkVWe5nl>E)9|%R zuN*i2)>Qa#T`9m?wnPBjY`Ih*@#MTtsk3lS+g+|bbksEzA4DOg;JZpngd;%^f(Z$##{- zZYM81HKFloOCdt3IE$daLy?icNL1#pM((ojx7q@r(xq##>T{5XGFmEMmol!egA!R? ztVTZ{ISFf}^~Epzp|KXUXjN9|5SP%*woeX+hpJM~<8@$*qGx~mgMT3|{ZN*w@9g`( z;cU@U2*Z`X@w&$Ru04c#o`m)(D60`aaKJ22#?xucSwqD{D?pN~Zzuv45e25@>&yAo z)a8I)1$%PLUZJ*^pMlgxt1Tw)M{1JzAjg{IdNC(9D<{9$4^u5S9Ugk7XtbqDtSFBH znvYE4Q00Zj%~x_#U2+0kNGOrNuB{GTU}jF5F|=J2j;fqC<2VI?^DC5VmUY=**+eS~W2of4UJkoDV%c9dKzJnr2|;052NVOY25-m3bSRrWA+f4v z^zY+St|^C;7TCjmeoqGxDV)+Qfa?m5Pxopd^HXkbrA$bP=#y*HyqjW{M)n ztZM)zI4L#fO}XeBON;7!p1yX}lJBlv`B?$i<&4=1-l_6^8iILjZSkDestU(%1xm1b zu=?W`wB-~X@B08x#6zIg&X=zIdwzV-TW9%mxT`}8dCNtJ&!q;^U@6~^4jPd-IzHkK z)~UMUk4zZGuWtoRiXv8UIkBJ*MH%g|hg7Ru46!&*LY_$)K%n@})5c-YO;eRZrMUn~ zG#iTZG2!22^K?9JcDa!7SqLL9B`l#x<%hF$1m0LCxNuw=OrruDt1zw62J&$yEqPa`Ro0l4j<#JY06QjO(KAlt&6)3e0rzp z4|s9XGt8X*8I*7@j!XyPR3g1gvjMgASuNr$pkPIBw0>%Bt~vtVF2+6)bb)%@`kowC z6B516wML$gd!I+4>bzafTc37uWhC;h(3ht?qFA8nEe1_0TDDqiEq7wtyB>kFLOO0N zOzW!)%j9=Mpj*Jo{JrMz`7i=cNHqbHYu!|zukh~;N3NZp%d;`=5@oe#Zv z&Zvfk>Txec#q5H>tcn1(JO`n5!4IeM7q|C&WyYy43R`b-{9e@L$Q@UUp{-PLTk z^TN*G#C~5mva5Q~o4H$igVN%fTK|h9Yve6&jv}q5G{CCv-8NRI^Wpmga)%dy*VB8o z{dq6NTkFN)_e_>k8K==7~4GqFbMnd$T{r9|ybo%`>&<>KC&Oks6r2jQwk75D0e=i|jq-4b) zkAP8uh&a~D9KL{nu(+i}g;YE?uCl!x@Rn0X{I*$1<7^)O6%Au0`zj&Q?49fIQPXxU z?C9!O!sF=%7*Of|2D8y>00xB}Y0+ZuxhDkX1mau`JPMZ;P#nqkC!BgAWQrQ zS>XlnFJ>YlLA(ob=jZ2GSXfj)0-pCK2n4(yqIun3FII*0DuDvNuNw|~QJ9ReS(do$ zHdw0UWUmKNxddmB_Pt+jCVS@Dt}E$&NqcdKzTD@566KPCgaW?r798pPK7i#tK0ZD+ z+W5WEsN9+(@l;bocenk+hXjmI< zPmkL|tt#K&>rwO6MCA8R@5TBB|54*M0h2U*J>nyH+DD1%HCr2L&-w-Nz1 zk013^RloH5s6!!{Nki#nwuny&ge981(9pjId}vh|YoXIm8qwjGCOY(Ey~~G)epILW z-^*P{S4&mHr1LtArAio?QX*7cM1yLraxG!$Q7vznrDEhs^*y|;+FMp`6D5t_wc?&q z%jVX;jwX`6BJQfU9KH2lE4TtGe6!%I`f&MZR_FZ49Br$DYfG=?WmNeGQ7UnJ1t9((GxaErNf3?Lh8lC|1 zdjYFTl~On{EK-h_GX65c-2ZHEo)&7#AM~$z1Z*r;GQ{vL4xM{8{FWq~-RJ>!Jg}Xg z_Tfd*mbVwtVegGLp4E?hT2fQ}(K_|AwMBP}G=Z|Pvf{3SL=rY|cQM*&$C}@%(K=F{ zSX(KsQLo@Y?p?Mb0LjS6=+gXwG4+pdg|Y^JM&+7%BWigGVyN$MFJHM^C{&>7mx&|l z`K~?>1F{dd&Uof2UL_}&uZ1%jg9|SSoEQv9_W^wlG)>o5BW2Lc5bkaSw+pRP+#$~szDvsUe0xD`zd2RZa-3mx1oaBNVhts6EV{p4n^9jH z_;AS%0Izy;Mx{nq>Piayya|2<6|5e;u=jk0;DAIe_~asz{wfTIVw#i0=Z1hKqrA{J z|3}=6AU^vDE#3B-j$YcJSqwV(^YTK{9Me6AYjIN~%#&?Bdr!52GcR@3o>gh;b~bq6 zu)m$YM{SXC)c7aedai!z6{|HWyUwPrBK{@i4Tv717r0Q5G@dCpxWbDLS>Ejz4)?Jy z3&w)1vn#TJ2wD#Qn4d@Aatd>l9n`kELR~C z9|9hxxbNO!&zo^2Lf;ox-o}iz5vZ{@GCXV89 z{PMzWmVtW#RdR2q=~`vVyY(!z~8Vw@j!gJlmYNyP*Jmc5w7WJ_ye2|a8H0I7PvtywerYhX2nOKjPsZ& zb9SRFLqQ+>V|4K7*&Jv}bJaeJGQ9b}laY2?TU1Oq&habEehuKpk@--6q$+tq)?G~b z-fkqwOuK)cNp>23M_$`Zvk7^bi!z_xVzXaajw5CWw4)I!(3k z(9mp*9WgnzJK-6!XT}sEn_XNm!-0NeMlt8^ggb6nhHo3_wGkdnQ9C4(1k78A#vz(C zK4FO?c-_HF-9Sf&LJX;&81&4QNAHD{;D#zH%CAQ}MS`&%n1gm}p+OHFQIvFRAursd ze7^VEK_Aa}jjfnVEQ1!sagG$Zn0X(yru@!oCcKLeZFA;2zG^k_JMqOE?YFV3dEJS| zW*xz+9si4w6~ni( zfcKappbbF0pL=ZJw!XHj5$=2{GPMo~J&R!O{l+$wvoUyJK9#PhNYGe}O}xQ}Qq^y# z7u#shcwF}^n6A#I?eEqo1sXf(pqHl2R@Ul^jH z*=(Te=;*N0hm?_8-G6%Q`o?8^{y`pUPa6mTX=B*G~}>iy(2mAm$DqQPrEg456}+$+Ok9ll@ckI8ztPYs@A z&=-cyn$q&r{mW?3Ej9h@X~YblZta&V&YNcq?2C=&@-ZTU^Yo)5nwXf#ojRwC0|tsd z6y!!JWfor|jS)-Sa3A%KEB`3XOsBZO?E_N9T0lealFn#`AF0S90%eymn6{o^J-E%v z5UEn#DIaQo%iieQrLrO^z(_$}OuZX30SxfQ9AD8KHEB1r)l-AVXvx>gM>I$!>23l7 z2O!=FgFxDZsR+Tx@ee>5DK9OzK~pg+2yeRoI$cW?^}d=gfYx$hrpOI!cHz3b5wYPf z6K>bVCiXS0D{pHkCRv&1{Bo%xbQv&!zFTcnU3->aQK{Be5;``o$VV|bqjn_gbZCsvw?On4?z zZzNtjl*GO}zNa=OrP&o!;D=I}IEzm1A7EdlSPCB1UniCQrqb-FCnd9ysicZU z=V9ZnA8NiyR_<5)fui|Xm(v0M4#71XFLiV>)Es3{R`i+`G~5%?1UP04psN{AqUH(` zN=AGgn(#3pB#-E-d?`s9ZOFKK|7NZH(-sM)Hrk!9a8KkpWC0b=Z*&106YzIEq1zF) zWF7A--EXPE<293K;vx2~AMphW$L+ysYWfPsPaV=o&Y4_uF#nGEG2ZP0XUZ)Fedt^# zj>*1~%;rzu(i~`VXF@)G|0MijadbrYeOQ9SM8@49;#uyjaVwqrt9rU#3(`%Zo%aZ1 zY4o^pYmMUT@s$XQdbF(71mfKCG8==c-`1YB%I~3$728T1DrUZ-ia7z5&>GuLgq!>V z3PF_IUDm_(At*%Cfrn7er&+YY%UO#wA(p}YQi6A=Qw)o2@!Y4PuK8M8e}Pla1V-u#ffX`_!zm>WEekJ z;QF;AHdU3`e`5$vys$s;52VJ!myk(*Fz+v@5RwK3kX6(7rtmwqn`k3l2^mW)@mO4U z`@FAD>%Nq+M8EhHl75S)+H(i}-h1K^{QgmNU!?UaHrf32% zE0o0~by<-`YFxs+r(p>}^&53m-x780x4*J~4x|E&qiPMaR{H)8|4%zr2G)4MqsvT! zK0*nf{RR>bV);(3T&i!nVm+ZjdF{d_{Z5Dem*0fBb{@2|zNYVcg^ASoHVLfV2q+jm z8H4s;>LZ$}%r{#kiAWaveR!&efq0Nzo#^9h_(qHVesD~CkCsOJ3t2lv(l3cuRfkV)Lx;l28CVrvh@Te+U@M}FoZfU4q#d96n!YJ&SmCeDhm1-i-oBeuV5W(~X@ zD<;(IXgRl8F}(eDea6KQ+GxP4dPT1f7nwV`k@eGK@Tl^oq&~S1bm41?Y{j%K@Zn@- zW$&V=Gayh|vGmg;J^LYP^!vRCjkepHNVqASyagoDFv~Bn#7WK4rYoEoM0}Uxo~B~= zcn$N)tFf8A^d3c*R6^Mc>ye$mV1}AG2J@ntjYT|)^2*P|GAV=k(ZMqTe?4M*ar!+Y(se(nexMnVH6PyI1MhexO9Q5xwB{a3 zlsmtn)Q20It+vBdtL=i&h4@9TmDXysnO(@=>suuf z=Xi`Z_2*{sI~m~(F<(Qt zyV0Ch(Z7i98}8MUf}|(SpP4iyaoOGkzv@~9{JTXJPH9EsiHs~RWG*-%1q_z6F-A&f z4BnbGo20Ot-d(tCGupJ_{Fc1Y;O5w}UI3PUb%ce<`A^HE#MOmwcAB~(RguuUqzrz& zC@OAF_h7-LGu5S7rW0pj20aW8u>K=y&6d-IY&lu5d`N# zgUM;D;(1?H*y=df;Cs-v0A!<6V1$R@8WfG{6+`0B`9nyoYRb!b-xR5#7_NZY8|X~m zax23gN}Km$p~z&%K1_A?FcK%|Z+C3h;n98Q6ys4sQ(u3}3Rm;T`-j`hA-Y?L6Ypmk zEBJE(M8Zca;sI$Yfpr=l4TT7#084#-9u30LrSrf~pn#}lc~Pz_+7pEYdC8G*LKMQ@ zmC~HTNyNRl3vAt(r=4JX*En(cyH!2urbMSG@!$TD68$2H60JYmyA>>>DoI+_o z*p2H3>nqV5BAkc$N!vV?5_axQ3b7cHXQ7t{gTj3cv37ky%&htAE6;d%CUfk|C)9sy zL7N4gKm;#q{u6Nh^Gy;W64Lh?BqSz^Ls%OUeT|%Vw*KUz-=lNoPaiV2hfVzc`YC$#^zuv*T|g>myiW?}H`vU~-O5g@1K`0y za6o8}w3)~JoeOzn^yZ8!%bx}%y7l`tbpxCy*nfWX1d%vjBCz%QM79~0>o-5PpD&pH z4&Y(h&|OF(m$1*?)3T0XvLDP(D({;E$4O`vZxt}i>i_hShK^D3d*w#|89|L==L=`& zs~SI3m@=&FXY%!cNJM0pZnEON?{Yqqc4;`m{6XVq3&{Ts(clLz3-SKWE*x%K-TV7O zqt{FG@6V|6+9KodI>&qWZF8!~Rvnb}CPhfE9r<%&3iGfq9OK_t3BNFh=GXW1XnimU ze}1G{YQYclGGc?i4_*Y6*Ov!MFEJ!@AKkxxSJHS~Klv`<5&2<^Xv0G%4aV!LtkZTPjIHQJcO>iCB&_z4HGm*# z+91GW@h_Q${pflxqV=Q?mbj}(pCVklASwEM^Qglow{s?OWn2oU<AeA(KDwS_!srn&73#SBO*XQpMXUhHPl+T z@DyR}A0FGa-K)O0B-E)uQg&hR9u82H_*UoEN zd8c9U)&4`em0AMzk)K_668=`s;NCr$5Wk-ZBFMq5%;dYPx;s-|u+#H%rTXVe;d!bc zgX*R_4)^^}uAOmx?A*of;|41r{kBDJH#%~Cx+ik$@U~Argd#* z$SZ}J6TlrSu}^E0tNVvuLTLf|1(Bw8{1~Lc`aEymvKO;f=H1>)acgRQ|JI^P`v#BD z8-D1`nYd7>BAD}qB}>F_q@x4)fD!J9DAWI)mqK5(9a4}4V=K0CwjW?fDPEXg&`|kX z`sr>G#jQ?X_kg-bQCV;!WQoY6d-lA0(vJcK61d5MtB5;~`w&Wmu;DY7Ro-AJr|bYj zpP)2H0lwloopFWK2YA&1V@)fJfO$vHQw`8$s5yXg#F z1PJ?yv+IIwk1SnFK-H5n3M{U;a7BO@@s`3{*N;{9?B}ff4*7qSlrhJk8&o1xq`WTT z;&75agGVr`1M7T#uOfJAyCE>n>-~o~a$gUL1xc2v*rEg7pZX(6ED5RGxPS4NY_!E^ m;SN=bEI}0IAISH73gBDP^p)|?;{SK*ASEUzS|e-__Jo zs-~=<@0WjC5bRF77d$N2;mcm+OlslHO*^Mq@KsQ4zMNpF{B6Zohw>)3@jT{ZW_5u4RmbM9)~0s4s2(|&qe3_)&T~yw4wh4A2M2fP z-DmUW$#hbp`yw_647rb^ z`zf4{13sd{!s6UUwXe8KSS(yJzPqh9*HkN3#)I%*B3a-Ss#4phEt`bheicb~$Hehx zkEtyA{`+5T^Tn}2nXySd`I6F#SUF<|hWYPlqy~%_zc~2^9`avP2N53vv1t*%3AKK* zv5oC>D`C@;&Ktfxzy@4_0B}{S;8X?} zJtd9e5;+LQnrPYc3h}tZIf2NwqMIVRH?Nsvs8~?ns=hYZxOh3gq1! z`%X@(b9$tK7x<=_*rBq-(`t%v)e+O)(7?_YT3hDR$0y_p`3Tn0$06?ee6*3NXOcx8 z7b*IAN=L*?b*V@vQ7bwbbjPNDQxxIEikEq8i}x`KKdKR&<7kc1v`|Tm_~esQ&~9%G zBmJ~ZSNd@4uzcRv^kJthfC+ERtScrVKgT?iY#{xjCb`Wlej_x6hz4zN?C}rEL3J7% ze8N`UZ9`cn8<*u&{T{D!&yzCcgtFPv+uMpxA`yIVAzTA7?QJdSbrwz7SP6IZQTJ7g z_n4Fx9C175bcm@r?@UmxLWcaj-fFsre=^N~O%?NDz0Q)I4;0-^T z7HtLW__ zk722>OzrJ=GlaI+X#HJUfNzt%Ya5(WAd&X-ILR4_ow`JHo-La`+79Aj_Up*Ojgd5|iH_$^ ze%#%+?IK*ElC!2El>~wA4$I5)4hnd?DVWdzY6(#aIpdLZHI#4#>aVVUhoJv2hR!ixZa*f}y=`P0boF zX=zl>N=V7Q;1XcHH6Ulr3wNfrwZpE_vH6Wq{e5++kgteyaLY&*FCO)L*@xf{X{$!h z)3UN+M+sN))}&;3E%s_3r-W|7M~q~>h+6=YUlh@R(V-SLTahJ9g-ZRkiqi!61o;h6 z-6kC&$P)F%!wt{ENhkdy2M1R-3~j|C2vfhU=XumcBwa6eP(uSLWi54;h}Nr~aGy^Y z<5P0bLWUyr-tq&h$bJOJHLm(0$jtpCN@}W$Ypa1ya;gJ&^ODqiP)^o% zM*EjNV_uq4eRm&qn)sQg^Y2-`I}Py%U97+OE0F1f*0P#N;c##>=G;~?OH*aqMtA8S zj%Iy=AE9)fksjJ$-rk>aCcG5n$y&Nz&U^6Kz~U@Lqvwo)2n^QzZsx9@ zbK9MW;9a|d*Q<4f*u#Bby2OKjC6T6~l!(1C%ir6_r<3zAKBF|J5o_ADqZUzU_dUkX zECo3a;4=ax;kQbbv+;+-VLri-v(am+#_0(aOLt6<-Yg#Znp?V?ccW0M`V#F()bqBK zg6NHfxZ5km{IKWoJ2M`z>&9STH-3FMaSWfhf=1+N>iFJFOO5?NsUcMX){~kHE(bok zqjdPerlAK5Tn@Rf$6dsjMcpu0OM=Y<9cVT6=NZ_^ue&uW(fnY}Db)wc=@YLQYgg2&DKTF5;P82wf(HPr222usEIBA5 z)>oVab~C-8DQ?^QH25WNxa%W=kT@4-o?66Y#ZATezHP6DCDc+S2$dnt`#bv_Js(5X1Ii!)W^!ATGM! z)N)UL7A<3Xh=MA0UN#g#r&Gdx0$A=AeV%OSm&YLk!U?yR0)oA0)`@~+j6x)3LH>kW zpZWE0SB|J_OwW`XH(Bim*6d~_?_{sC9ZXlF9et9iyC5H09cQL;B0^C2-qK}?C?$?8 zcU{~k@h#r9qQthdC%9c#{ttr*M2u5yzY6YK6m)_-%3&uK6Rbbi4ofms&nO9Uv%H*8 zNquiH#avU-p&R!CMmSV53sgmoNZHU*d6OZ@e`qvk{4=s4l1_D_r4wVtzbcs0!yDsU zHGaLR=5&)=4D9ljUQRI_oB20C%v4kAHxH=_U)E*`SwgD`DkLa+G-`a$ZX?~Sw|F-r zT;1vrN9H6s6-yLd6=l0eVpJzDwI_`KjbO83EhNm?vtc&|l3%L{%;6HUF216e6%=aQ z{#pQNd{{~sG~ZZm$Y$&Dq@<&@n+OF$FdS*29}bo#-8(XJz+6bX_I$3IGxtf+w8ac zs!a!y`p_5C=@&YF9?m)=|4L%z>;RzvA>00w2u8}R5UF&qQ6=~0;pBnTiX)roZaVbx zsKwBGT1#1(hyL}%gsUv!+Dt`CYUcDz+ydYLEWxTrX=y1Tyw1MgAk=#a?CZi9qV_Uk z8>ZWL%}AUVBa7pVGH_X6Lw?y>of+f~E3k;J2SfQb=G6#s z!c{0J1B(iLNfbt0`d0+FHw?VkN7Mbb>D=WX+KOwfJ_HP1@o^vDu0vyc!BCvvIjoOX zo*?_E3{P>G6Ub)$Id)k0mgXCxplZC7d;gKt-^J`d3B>>C$A5s;oz)*w1bn7F=T&4f>+1U2-gJ|9IFm;2F32E+S3;X>!IkOLar zgr|DN?p#|UbscGB-JW>ZHv$<$u;lW1Xw{hJcRk%$M4SYF10jT}Q6gzh;Pp(;@EuB) zkCc=ADOdJB0La;+x0fkDTY@76@y(G$%PEf@%+~y^Ou||S+j|njroFAiELR~ zYDxw_$g<9{G914+de9NAML|BLPGwN1ORvGVzJ5N;rdO5P@kaRXPz%4M5zq_J&y%`Exg?Z0d zkZHn3NZ|M4CNn~w?17ULWj9AyHjfb&)@Yq$j-`1V>dL24@0|)Q=0iV=gZ)HU`gc-? zBoic3Ueq+De2?F#R_QTI-pN5e$eQF1uVC)k5!uH%hujyO6(b#~(H zqr?5zN2wM+cQYTGe$L!%@?=jMy(A(k%FuPZL)J0JTw|#c6LH2$EtYQj2y~piMYP^oi*CTX81SC`gh@idv^Nm zc+U&9lx`))T9f443Y9~1w*BmE8@fm0;BA5au7UFDu4uo{BQkC1!XhFnbKhE;8I@y> zG4uFM7eCO+Muu4Z)Msr|b1><^^yvG%V*zT#h?M%wnpa!&$STtljQ3ZU(vnkMCS;VH zxz*I19wGMlKe0B1)(p>kLROCC{ zD(xXKqpJ*ygx#{|k#Orq8o{DujArJ7t+2N_chrMXmN)aR(kqJK-{Chfy^4&8ZkZOLs4R;Y@#X87!|hqdy&m_I@>mocKQB5HIEK zTa+=POL>_P$|6N<#CtQ(5}_0>e(>{9E=WFWR9=9iqLk-mD3a0g>|!;o$=oae<8Fhe zTX4+J)olykAVCSJ0qIR4V*E$;kw8iofWg|Rr#0l@1}xQS|G*RU?%c?e*s_zEGW>;0 z<8OAGY70EoJ7TGnK6#yHbucUtE6Mwc+k}PWP2;@Qz^xWLeikvPOFKFV!J)4ep+eQk z#C8kyl`1n)A{^*c-S^+tUE-u0L@Z(b$rp?s8E``jxfP&^XKlMCNaiQ9S_+}>%{E(2 z^QW|o4*ve`MKc9tAsJrQrSx(s-r2`iqSEtGUdNDlHLWg*pkS<+CxybCJ=UwcpQbS2 zCTN(DE5SacYHyoW)vnY5$h3TiUD6W^Zsu_Ze4_lyU3~-pXx~ig@CR5HLH*NkJUqD} zHMpy&1xwEfN~)WCx*)tWTX4B(%%NzhlcfhHYb^HYt9gj_uS0%daZBkq!E-PsiLZ1-47OxS4*QOXxFmqpVy&9#}x z>|ub*w}K#v@FXJUG~e~^_GqeT5SX)% zR0|4q{4cbvc}9JzxWT>hIzVIT<01T=_#+;XwT0Jx+|FhP0emXC>Xtjix4z}MI5U)% ztD+Wb?U?3xrA+^4lZb`NC1w705Y=YjGr+@khtsqidSch=%g3zdr#+sb7wTs7C(1n@ zZ5b~s%tj$57^)YRra!H`*H|}Aa@EvOwz_I#f<0`u0E|oJZG74B1cjI; z2IwefY~3pF=#pbt)#u1Y8V064>=Eq?73M#s$7O7anJ-B2vReD7qrbP9*k4>02kafb z=`L%*48onG;xbD%EC`V(8>^X0icZsNo0U2#1`K@tK^CIGfyUlj-QGLf`S~LGUZD(9 zjBg=%ETqu=_t@+@jVG!kg4O>)a|QIZnJn2aHM(jAgE>t{k=7!%FoXJnBeMpVw|IcE~T*kqD6M4;#~2f3b5VI6W#)(%3n=t>`zDE388_XGp?yKZb;H*i^LxIxe0 zaRG_P_9HtKJV1k?PG{DATka!^hM$n+*;D}4x?4W^?(uzvm8{hG-n0#`!_e(-1%D(V zlheW9w>eIta}O7K;8^AMbA+$|Lz(Z`X}f_gy$?r9n==74ohTH2pAaGF(%?m5XJ29I zx?^ny4*C9}&G-xQ-A92eJ22saKo11{Ve}qctwe?!HHJ?tTjroAzCkgXZTlWVY7DV0 zeC0Gb28Ux4Zto&%2R(WbeV%hloU;9AAbHmLJ$i=$J-y!14W{E3=Ok39u z_D{_p#^={}D}Kja7A>KbuPj0-g22XKqUm2LY|5wBePPG&B`D!AHl&|kt?nd`6_HW# zD7&B?&8l(PHQ7)d;-SgbD=!PuH^cZ91_MF_3PfQ&r{EG*cB4+h;bp zyi9iY{&IoZ8c+55^NsJgUEsoioWTn6ze`n8V5G>z|MP(VFC6dxzX85ac<>R!yppTe V`_Iz(({BerO+`z&R?#Z_e*v^0u^9jW diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json index f715b8af46..c65ad1d7e1 100644 --- a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json @@ -1 +1,20 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "gasFilter", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "gasFilterOn", "directions": 4, "delays": [[0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2]]}]} \ No newline at end of file +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", + "states":[ + { + "name":"gasFilter", + "directions":4 + }, + { + "name":"gasFilterOn", + "directions":4, + "delays":[ [ 0.2, 0.2, 0.2, 0.2 ], [ 0.2, 0.2, 0.2, 0.2 ], [ 0.2, 0.2, 0.2, 0.2 ], [ 0.2, 0.2, 0.2, 0.2 ] ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json index 7b7c971c8d..d9f1869ab8 100644 --- a/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json @@ -9,84 +9,23 @@ "states":[ { "name":"pipeTJunction", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 }, { "name":"pipeHalf", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 }, { "name":"pipeBend", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 }, { "name":"pipeFourway", - "directions":1, - "delays":[ - [ - 1.0 - ] - ] + "directions":1 }, { "name":"pipeStraight", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 } ] } \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json deleted file mode 100644 index e395e59a0f..0000000000 --- a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version":1, - "size":{ - "x":32, - "y":32 - }, - "license":"CC-BY-SA-3.0", - "copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", - "states":[ - { - "name": "scrubber", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "vent", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - } - ] -} diff --git a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/scrubber.png b/Resources/Textures/Constructible/Atmos/pipeitems.rsi/scrubber.png deleted file mode 100644 index 4a5d1d9d9e3455a4b6b0d7340ec54a686fee4560..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmV;40(Sk0P)R9JLGWpiV4 zX>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t zGfE(w;*!LYR3KBSIJu}aDJiu`L03VEi!&v&s2C_}$igNKs4FKwiAG+c?2h9Kg0b)r+K~z|U?Uvh$gfI+-Ydsq^)i!N?{}V_MGh{k+=9=F|oRxk*T zh#cU1i6RGb9t?O#@Xn*i`F{@~2ELQaJ&GI%f^{)QX9MIhN?alH7`=_wM~*`HB{$$0 z#^9}IKkHo*qQsRU&n|(9w}G)I^A%Tk@CmK=&N|Pb0vz}iX9vUivF^I~m&pX~x%>p; z9Ejh7_&bn)iQ-z2SEIZisI%kPeY@#drH*wftjk@`E7}ZGClVNkUM5htx{(R+>=Ow* z_LwSHTY+=E({UVh(+}?Xvmd0B=e4S<;(p+g+2^o2jZs~XbA=gC_XA3%FKtWLHJXub z2SA(gbi7kC|7l;RUSCZ2)4FFo6G$UigrU7o&~)9hl}_+32lH5;tNoRWVh+S_;n@#< jJ%s&0i96C`|JQy14suv+{o8JP00000NkvXXu0mjfa$p!K diff --git a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/vent.png b/Resources/Textures/Constructible/Atmos/pipeitems.rsi/vent.png deleted file mode 100644 index f639ab114d45a9967007bc7e3f6073323ce15985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 zcmV-Y1g-mtP)vxaydwnWR=ThU-hh|0P%PnJ3Bk5)oSQ;Iv9;c+;y#`0P~2)2QQrLrtLzi)1CxJCXOKcy6@ zR0{2O+u$lF; z3fo^YOmoL7_&tZf*KG<)DR%evXC{|LFburK&2b)vEI>lgXgp@8kOV zdhN~_xeU%`vzG0z4~Ih#LbwklR}IfO;BPPt1INe5I6pr}tJT8g)z2?N)?z<4|k z+K!chOMqA`hS6w*VzKD!Qetfp zHBED#+nCC?f`|_Yi+`#309~J)%YEIZPWt`F&zb-8>7PMAu=s#5`CWYhP18`ndjzEv z0GQJH-D4p40%7wn6kvMH*-Eme^YySm6hD(UXiqL)X;=t@Ur3x_p-^D<7VYjFHn>iN zSdmJlkj-YT_xJai=iP310|0DydNdj#9*;woWvHr(hlhvIZ4)9uyWNIqnz*>Q05FN{ ztW+va{$Mabxm-r4(*Xc98VyvdRb(>$Zvf(}*OwEzGB07*qoM6N<$f|z6pTmS$7 diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json index 5ad04657cb..8f00e4796d 100644 --- a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json @@ -1 +1,45 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "pumpDigitalValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpManualValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGateOn", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressureOn", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "pumpVolume", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpVolumeOn", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}]} \ No newline at end of file +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", + "states":[ + { + "name":"pumpDigitalValve", + "directions":4 + }, + { + "name":"pumpManualValve", + "directions":4 + }, + { + "name":"pumpPassiveGate", + "directions":4 + }, + { + "name":"pumpPassiveGateOn", + "directions":4 + }, + { + "name":"pumpPressure", + "directions":4 + }, + { + "name":"pumpPressureOn", + "directions":4, + "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1 ] ] + }, + { + "name":"pumpVolume", + "directions":4 + }, + { + "name":"pumpVolumeOn", + "directions":4, + "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ] ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure.png index 7401c6bfd261806d81437362fa416d4e98c9dde1..8903bc856494bc09fcbca8b79ba7ac1de14bb100 100644 GIT binary patch literal 5258 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 Q2mk;807*qoM6N<$f-spcUjP6A delta 1284 zcmV+f1^fDnDVGY6BYyzgUtSBGY2E6nyZZwXwm8sX~14 zslkarRzO-!56)~QL0W5eqiyN@Kxid)-}~>(+cz_B7T}<}yMLQTA`zO+X6ek#4E1`w zl*bM)cKUZ&5mK#Itz2#yJN$DsfXj7qnPC_(48yVrC;eNB0H>%{t56gLvMgJ+#btqo zo+L?-B+0UfW|1TbpXPGte)td8rs!B&b{D7*eYH1?W^eCXJD%CU%05Cc_ik+PuY;SKv*L7Mb6v*FSZ4bp_ z5%0bG4&Hq0ZK!9?Vs%yLw#6O8yQvheU%7&XXq4MI4}Yqv(qJ%v*V@|QJ?}+l=Q#v} z0q{m4_e`R9e7r6KT1i`5J9bkkFBExd3yz-}sq>#3Aw0lf5%k0TroV{2;*dwYA_ zb}U7}*w`30Ha3vY=eY&&vYSfb3mZDXQUpvp7yFt1b+enEH5u37K@>yql4QPR|BwuL?)Br zc5D^9DpFhxP^nY^)K_L&jiM-^lv=I`ag73m5PY(}j_wB!aN*fAd~ZntpMSe5QrtO! z5aMVA01oa98HRyx{C@lzk7LDwNzlJyXNXmWo!A&*J+CN=b5-G5AxOVf-MR(+#tmG(eH$y& z)9`=(8Ae7ltgh;a#bTz7(EL0Am=&bPWq&O5d-cU`4}1Slk|ZP&35<+r=+7rg9vT|LT>w6x z4?2MU{(h_gc%!EWvMk~9B|j301TvWn2q8Fg?;Z#t7#J7;rPO@KP?97Vh5?t$1%E;a z&fd8LN-2CkA1I{=hr_sh$&aqCE_ly-k*o2=d^0VL8V3glQLR=%DK+oOFbuPjWf%tJ zbUF>-q{LN=q9`br%jW;=JoY{RqDL1O7XkdWN3fpD;d$v8KmGg*G)=?O(h@3_3SK`v z1R=z{{$+F>9)ePebUF=LmZ51HbbVb%xm-a$|ESIv^Ubt0YMh;&g`z0ty)@n*01%JI zLu-4Qm6>Ya!z~tzP3Hi&+ikXVrBbPDbwY?4VJsThF*}D+3R#xT<6^PcbPjO4-R5sr u!LF?)5kkZ$AP@)y0)apv5C{bSOa26QMsAyGunHOg00008*i%W5rYY#16++7Y1iaQi5ez?24yIX+*<%&~^dnqo(;V4?1Lm%JY z%Qty>d4Io6<}fWw8C-|jg+ zU|tv8JXKte-_cMydgVVL9QCd*%uh z?@yNRp2}AX>^35{R-RT`GCE10Zl4ml24X+M^PETZ15V!$8Ft(^b)AB`YdKVnh>b8F z>AN4UVed{jx?i6>%#tn}9{H~Y@P)Ph@{_nVE4lNd==Xi|q>b2Qr7vzNBeq&GfMX@P}7>5Y-9WR$_9M#~SqkO8Pp*%P> z(RxRUvry-szBlD>GFnq0GA~p7gkzlp?*uS!t|pCtNWiGG@cTM!wAgCT1_j+zG`PY; z4m`gP?3MFUta%nV;Y@w+L@2|&Yh#W(UNx^r?xjq&l;4IoNk*=-L?DOjU2tW-Hjfre z|6r~p8b+k4D2OT7eCRsFRgvpD%=>LqiM63LSqa$ub-y~|hnWg*j-G98t@HH2uQ)aS zx{tN($3A-v75P4Yn!h3W%D#3kO_C#X|N5uAAoNN3U5>6*p2H$qs`dxxvNRoC_vTk~ zur<@cJm{+B{O{FHsLy57{2}S&!;;f7jOm#`W`Cb2xfcyX9C+sywj6aOI${JjA2wV5L ze}hv$T*b{>O~-D|N)UvZO^-T8#$jvQ)bR`}sEOq`KK--hNN12iEur$HJe(XB2idb)4 zVTQN1k=b36-40nah#){Ts?#TV3*k8dzM`&17f{HRrH;uOhxGQ5T5gAaA}DL5Z^!QdR9R-ur0WBS(nm$6v= z=FQ>I>{SQL+p@8N-+L?cSuUqIoRk!UB$sXmIUhOFT)#}!@nO4eU3bXgHb$&k51ymF z)~Ty<%^7d?9t8BFC?f|?rZIYG*|BjK1{XTZ#ge-A%2qikcXNra@E+7E|LKYkbBEe4 zC%{rTd<0hI2k(KkUOwQ-pLPp#OpEf%zv0d82BtIp_RNPMc34X$YwY{falWC!&_%^| z?Ob)?E|?7Tmw7Fx?pHcJKR!ne(R^3hCsGp#G{Nfv2koW{b+X0TJ6fkcakS~u{DQaU zSpH@A?UM86FO7JJZAMFSt}Pb_4_?loMTVK!7!E45b)o1B@^%1%k08R>1V3f6xz%IT zuy6=B7Q^$rGEH7D&sECJ+x4niiJ6{aP(D&wVlDPJ$AR^kl1fY!5{1CA^mmd7ko%B} zNbm+5bRgW-`WUH%{0oXEqgWVzb&jA>mktQuw0Z0iu8zWiQG1yQGp0-uu_~rI*i#Wq zq7x6ChUkb)^~*@%yr7&W$j{8X`@B`90S~NM{2II*opth)Pr_Jy*7tCP@jfYXJfBEP zVhA$ghfrBbh@L9%4T_)7RXQ1Tn6tbH&v$PSUPrm0lp$S1Lj5y$id6S0*Jp$H=4E?a zE11O1ogST}UpA#w!1fl+p+_6_t#kcPUHrPuhW{ z36}8x4&mT>md^Nv;3m4l*UOo%SlwwRmZi+9K5%{)dT)lkA`|Q6D8^(jsBjR+%HsU0 zC`!PLp6X3}b>ElFxn7RTLpd`J-XT1XO?_TJHP026p1JVU@1_%ss*N)CY-FA!KWkYv zV#$CnXj6+j2Cd90tN5=3zDP5$Y%vNuB@^uwFT~mt_TcA)esB^nofE{9=AB~?VgusN zvb|qKRw?T9V>8vc`Y}imMMf&6Tea?g_W89gn9NJ;goNs;lh)3rixMx|z}5lEmI8`yHXpf=U!2$k+em-iw7_P!+z;dn zWk$cq!YQ-Q&IaM+WouhF7X{5ZBv9<)YxY{jbUR@R%82*S<9HCfH4BKciXvt}rJJh) zqw*e9R)R3O*c(GgNrJfLF;K}s$RSoe)fTqOhbO3XH}9mXnwoz(q>c5R{p86IpLX$o zg}E;!g8XecHKH(H-6W^9_0Qg94@?&y+0kEKg4qVm(WeKj_Sr5@qbNOU`j_fdoF7&!!#xw)ds$1){LbjD-EZ!WT{g|3 zXx)_Q;4y3xprgp6`$Bbr2~lzk5l|hoz1qlT6fcs&nv4IcISS_s^?S??0e9Q92@)bx z7qGo(pI#V;s)lS~=}gL>Eenqd1NmvDDeYV1kY6v}JfX41X(n{wC^A&ulNR#)DLl4R zCzsgi29)7zJ!1ba(KslXdl*L%B7_I5YMCSoAa`fgA6tZFDy5Yw4J=(0F68nkB-i|E z(ar)a{nOTEEwY5=vM_*=kSvnCxMlgPj3k610uur}=x8gOX3 z9$P$7j&pc8!>M`Rq5|6xMM66P0Pb)GlG zPA1aVpJADy{gb+@$1s&*<9vM5N5_Pu@IXbmYrPlwm-?>ArGnM;Kx4&cE5<-&`EWNm zJ8K}z(}3BYvM<@ugyZWp=WOY=$sO3_1$0jRHJZ~7rfk)R$R$bOTwXr?ub7XMrJWg! z`qeG8i?EFn9Cvx23eV(tIOAb5g-E>p7bP5$Wx*9OE~%>c$3!b)Yb_fN#?3XbQ&=*2i94q3}1-B_ljW}N6X+|ICh^po^rhTMq zyQnBUV;ANC3Rf8`?XROAzl7W|=ub zC6@B{QUMMPnAGR7nv`mr)smz+b%WDeBE0($l8Kw7?MK8IMbZhlv|lGJ*KRucbW1T& z2|p94{#HXnjf_k4Ru3j}>Ssi?zEdGP$?fslcsW8%fk}-S%;afgfNEAcIS-N~V^Kj5 z0)#gar5;KJZ+s=s?PT3}|E1sGmf%iajTJ4EL@sQ9{3j;!QN6fJMQn+mZDPssKn-|hNs(B#RAP)9Q<;LbHG z64lF7lwwXW9nmh*{q_tv5Jp|tZc=ZxYh22lQnCVOG=EwJmuTY(8dAQ((VvH+PvU72 zD5Jh^#eSza4{XAS^R^L{4;`(6M83e%&O&Ef#7NRV317HhAY*CcTkfORxc*RjNfEj{ z#QzC&{aT8XEgWmaL6R5Z#8_C~Io9xlnLwc(jcKbGC0U;QBi*ppXDrOoUB)rqEq%5% zK?omMd(=}@NijLP-RlU#gsReiJ{-l+Ddax-Hwp~!0Qm661>thP#ks}4y2e8h0@2t zfkH(ubuk-dh*nnrinX@#;)bvZvibUJ_xR*OAxL9Ar_Qt;?>G|<=()iab! z@#cH*`I-r!&3XZ9`j#*-ZO7?S+7Fd zXZ9G6nsmf`h1^$VP(bJv<$raDW!@>0*iAL>CRz;1;A>1uZwt*;2cRnIAzZ8&m7d3_ zx$2!iGw0HGjvCE2&_*j|>d!K|8DuWM51$lZz4X9!ItA(SYfZfVm0duRCO3@4U-zIZ zXHF8DoDlBB7q$LZvSpNu+{;nE0%bY8vh|a~s=Fo*io=K}TJk1-KO(46`w)fpT>sug zkZiV0*(3D#YB{@Z#K-(_t(1t_a2?<_PX{-QZr^m+J?X~lP?y#iWZg1!;JKCR`p%fB zqDpDV{*?)4r~i$VgM5wH(H7J00Wavna`!66+AOb6Yp8vC;gR<;DY+0tO<)i41Gj_i zW=A3nBxmp?NFq3R(K)$#(M@OEaoIwZ-G1eSD+^YXO3NG8{C?0ly3!ju(-=vwWRO+D z0QU2OU`y`-}!}5YIAsib; zgm!OHH%c;BW^j#r*r5lh>}mU*H%8^r#if3tQ+GjQ2`tr@%P*eBT}!ip;8_1ToVE`} zSF}q=7v!XiXc)IW6TS}`$(i6@dE{NcY;)d2vUC|Smr)~L)H0j^{ujmc_8^lSBewo{ zB3p2UeD;_7cVKHwng>Cw?f|}e_P@r)tQbN>WF{GllYttniWM=b4eEHOOjLw^V!ZLG zsdup}5z14c@iK~Yj}U7ITQf2ND1u}Vs@3dAlIwH%8D-bfEgHBd931P(u4QP@m#VKP zz*-(18dFJAnf|+~T5JHON7JeHDd6=ASo?{LnNDGZ+Rozp8$q5t|ByH05Xu*U++_3_ zhO56K{`Qt!Ia6KsdRoe+iN)V=VPzej$h>mZikp{tb&lQrlvZgPUwzv4FRltL>ilc| zk5gQU)#X2~cob^U6h8P* zpvi=B4PK)Hnw%2b4pA{axmiy?fBWZL_|LZ_qAeZrG~I{veQY9C!c#JccDW@}@k>vx ziO@?@3eQRCElh{&&4l6?sb0mvD7P4WyW`yMOD9xn>ED44fgPzQS>~_LUP&(Xw(dy$D!k~S%fpWGqwFMOqx$bvLux7Y$X0v7 zjxcmzI+%pWKN%+XQI1@#XEPl~`=f`@8~RV`8OKZcz3vQYi9DE^@DG|t=5Pc925U?m ztzvqLmo0JZh`8U%QQbvidj6;+gV%ls)98v$2Jo!80GO&qOwZ*@e{<{pGKWLr9vHkf zb%()a-vwbVh%`NCiqw335nmwpH_AB9NWqezdsiau{_bY>JclEDJ8E^Zp$7Gw7mBpw zbD`*NNv$>P{r3*9r#sR(uR)|TIiUWj^45IY&ZT0!9Wq?<6nR^+H7f=Q7{fiAbeyHB z#qckF%2Y%Cd2&(kyj4g^6R1#rP%91nO7t|dQ-Um+(gLgGDyj9b=6aHV0ba(GgK4(EY64@`E zS_Q{eax5NeXFN}Wi2=EH>zT3&Sh;sO7_%sMr(#0+d=adC=*`zzQf<>Y;j=sP6})+= z^YE>!5g}Ramd2WCH7J!%n12`g^tfXe+WC{7$;QR^zIzN4M1);@$d2msUlh8TlAQE2 ze_jZw_JC)G=_Ie~3IMP({6k2dWn$20C5D@ViVVgM5+UFX+ZvPUD*yoP`Mr?P@?1K~ zR#BtSAqp=z9Sp{7dL7)rupDTO$@_gmn1G&VNIDI~OXs)qs;=jTd9zUfjEre-0JBZ!lY zPz%(qK?`J5_-6E0C=xj~F79+^l+<9ppY!Evcfe!>E{%}h!2m&BT^$Ty+nnvmk*0|B z1qNfjydCw(5rYzL>eYrq{MsI}KsWg4iLEDFV<&pH>hsD^N z&koCGDdII0^cUG;E>t@xE(dAD{@_UgR$2(v9Uo{cfhTaNotX$ynMWib?%wZ@@Vviy@VAD<`DC=wzRZ=gMJYr z23@?Y(a!OGT!9L7KVH3m&M7^56u=t&WA!+GVZp7=A>x2y`3Dy-`4&}$Xq(d)8?BA(TO_`uX-V!Uem>w`l4R2&KvAr1eIIopk3fC(`!>v4>c=*AMgx*KFFg`Xzz*Ua)f(d~&zJAxD~C zf}5=08BFDO>VImykNT=te3}Pv1@-77MtQ!7!=q!)ylE%Oh{hdtm_L3+DJxdE>B|1a zT~9y}=I7d4g>oDEQSQ2fO@Vk%n3e$v-#6ptFmq%lN{o5;Bulbsp7%IWcl|W&`{d{n zGJ(p>A;qklJkQnfdbH1fE>HXx=bfPuDu+b+9PqX$z(%AHT-A~Le9=krjPe!JH~ukh zLcKjbNcfKfBDX^ii!Y}>#y)EzK`|dzU`P5a(hutihVVDY@WuuJ;qXkWJt#{VDnfC{ z`_#-&w!MY$ef;6O!lUACh`Y!4^iwBPXzB0F3=ttA;dAkx`-f8{h2L@YrJC-_wcqaU zuIJe{W=u>>?>y;8zMS0re0qgnwFhU<&7+=xyMHdlBF;##vArE?)uhn0NGXcc#pK2) zUNW_QbCdbaaSdFhb#w8DkWMo61wMV>I$bVqi;XDt1V-pN(uS|N01e)MME-+GH5HYI zlUoTAuc^-`{O@QIC*isV21Gkeg^|x80GU}?HpYVi1&*IST{(!Zj~E9%UBQ*!=Gv(g z_=zkR6v&sixK?xyboyL-UhLr~GfvqyhXS^?wg47Qx^&O|+~NO_T~bm~cexsJJf$HcL!zZlKrzwP)|%cZHXOe8%N}P=X2g$@mPW;htem*^)2k&p^~{wl`pNq^ zx*60phG8(vgIRZ{ON15XBubl$`vQ*g0}<#XS~!0%WsHx7PcI#bM;HG33BZe5G2oMC RJn+wORgh7Yu9Gwg{x9Bn1k3;c literal 767 zcmVR6!QBm`Qb3|ehdpt+nh z+(3Z?heK{F)WOviE@1r#T4adcM&9w>g*bnkN-vBgC$NM8psK$fcB? zynd`$Ej3Ch7PSFjQ5%#}td^Skv7#(Xf*?Rj>GSf{0-B~F%Q8>Cs11|p9BVD((GY;~ zXo$6z$#l-5HeN)QWzT|ow17O%H))#UoFfcF;`kq{KhHkVPZZ>Zmsp?+cIo30dPKuky0Kc;KdR|QACowV!aLl z`1zM#vDW$w^b_UDS4)jChU=SKKD@s`YfTu2^m?x_Ci*%70A*RClmg)4{?1zr&`%T( z_jmLYg)xRjZCKR5d6$F`lx4Zsffq|q6vbIpRRlpm+qM{E{Mz-+t*`lNseLd3j4`xr zOArK9Rkim@-swOTMgCIRB93E(5Z;Z+bk2wO7mPxR8v@91uLaNpj} x18JJRI1f}+#s4x7{96e8cN5VGC!Fxj@fX&mfot!0*Ny-H002ovPDHLkV1m4Lc^&`& diff --git a/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json b/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json index b5dbb04a19..0346b40ada 100644 --- a/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json @@ -9,20 +9,12 @@ "states":[ { "name":"ventOff", - "directions":1, - "delays":[ [ 1.0 ] ] + "directions":4 }, { "name":"ventOn", "directions":1, - "delays":[ - [ - 0.08, - 0.08, - 0.08, - 0.08 - ] - ] + "delays":[ [ 0.08, 0.08, 0.08, 0.08 ] ] } ] } \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/vent.rsi/ventOff.png b/Resources/Textures/Constructible/Atmos/vent.rsi/ventOff.png index e8e469dc4b685f7ecdff3a39a1a3fe0baf8f20d1..bda0e1482652bcde93ccda7737ad0d20716d4587 100644 GIT binary patch literal 6506 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 Q?EnA(07*qoM6N<$g5XL$r2qf` literal 612 zcmV-q0-ODbP)6H0@K80(r5j{WSdgeCiLjSqu_&PpDnUi;2k1q56ngh82p+|YAHYkMke0NB zl#19x_mG4rLDNpq<;w0zlLO>) zv!pZG$hc4d$8k_f#ZIQxsMk(Vg?L=6|sMOH_-EP-&K(FfB?Freeq)T z{p*>u7dvev`;(3Wpie=k?INWloyi7VIG-r9u$cF*UDu^iuQ8L7OdClo%c4{&jStXn zp8@D|0q|_z+ANd1eT%hs?|Jy(eqi?nY%epXTLkr z{>KK;4)|AEscy5eUP4Mqxw6~WE8^^bB!FQYpwu4+I{RH7JzfG}VKL9v=1~pkI?y$s z9Wac8;{n*VO?77vfcd!_eEhIOuh--A*Kc0T_g)X6?|!rO500S_BG3o)>cixBK?rgD zM&$2=t1n* Date: Wed, 20 Jan 2021 10:02:34 +0300 Subject: [PATCH 164/166] Toilet (#3012) * Ported sprites from eris * Added yml * lid open/close logic * interactivity * Working on new secret stash component * Object will drop on destruction * Can get item and examine message * Reagent container and some cleaning * Moved potted plant to stash * New base prefab * Now you can deconstruct toilet * Small fixes * Fixed unknown components errors * Fixed grammar errors Co-authored-by: Paul Ritter * Now use prob * More grammar * Update Content.Server/Construction/Conditions/ToiletLidClosed.cs Aaaaaaaa Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * No delays * Amazing sound design * Moved sound to mono * Toilet viz Co-authored-by: Paul Ritter Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Watercloset/ToiletVisualizer.cs | 26 +++ Content.Client/IgnoredComponents.cs | 2 + .../Conditions/ToiletLidClosed.cs | 35 ++++ .../Items/Storage/SecretStashComponent.cs | 119 ++++++++++++ .../Components/PottedPlantHideComponent.cs | 53 +----- .../Components/Watercloset/ToiletComponent.cs | 174 ++++++++++++++++++ .../Watercloset/SharedWaterclosetVisuals.cs | 13 ++ Resources/Audio/Effects/toilet_seat_down.ogg | Bin 0 -> 10856 bytes .../Constructible/Furniture/potted_plants.yml | 4 +- .../Constructible/Watercloset/toilet.yml | 39 ++++ .../Recipes/Construction/Graphs/toilet.yml | 29 +++ .../toilet.rsi/closed_toilet_seat_down.png | Bin 0 -> 1469 bytes .../toilet.rsi/closed_toilet_seat_up.png | Bin 0 -> 1597 bytes .../Watercloset/toilet.rsi/meta.json | 27 +++ .../toilet.rsi/open_toilet_seat_down.png | Bin 0 -> 1390 bytes .../toilet.rsi/open_toilet_seat_up.png | Bin 0 -> 1540 bytes 16 files changed, 473 insertions(+), 48 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Watercloset/ToiletVisualizer.cs create mode 100644 Content.Server/Construction/Conditions/ToiletLidClosed.cs create mode 100644 Content.Server/GameObjects/Components/Items/Storage/SecretStashComponent.cs create mode 100644 Content.Server/GameObjects/Components/Watercloset/ToiletComponent.cs create mode 100644 Content.Shared/GameObjects/Components/Watercloset/SharedWaterclosetVisuals.cs create mode 100644 Resources/Audio/Effects/toilet_seat_down.ogg create mode 100644 Resources/Prototypes/Entities/Constructible/Watercloset/toilet.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/toilet.yml create mode 100644 Resources/Textures/Constructible/Watercloset/toilet.rsi/closed_toilet_seat_down.png create mode 100644 Resources/Textures/Constructible/Watercloset/toilet.rsi/closed_toilet_seat_up.png create mode 100644 Resources/Textures/Constructible/Watercloset/toilet.rsi/meta.json create mode 100644 Resources/Textures/Constructible/Watercloset/toilet.rsi/open_toilet_seat_down.png create mode 100644 Resources/Textures/Constructible/Watercloset/toilet.rsi/open_toilet_seat_up.png diff --git a/Content.Client/GameObjects/Components/Watercloset/ToiletVisualizer.cs b/Content.Client/GameObjects/Components/Watercloset/ToiletVisualizer.cs new file mode 100644 index 0000000000..f776b68e75 --- /dev/null +++ b/Content.Client/GameObjects/Components/Watercloset/ToiletVisualizer.cs @@ -0,0 +1,26 @@ +#nullable enable +using Content.Shared.GameObjects.Components.Watercloset; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; + +namespace Content.Client.GameObjects.Components.Watercloset +{ + public class ToiletVisualizer : AppearanceVisualizer + { + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent? sprite)) return; + + if (!component.TryGetData(ToiletVisuals.LidOpen, out bool lidOpen)) lidOpen = false; + if (!component.TryGetData(ToiletVisuals.SeatUp, out bool seatUp)) seatUp = false; + + var state = string.Format("{0}_toilet_{1}", + lidOpen ? "open" : "closed", + seatUp ? "seat_up" : "seat_down"); + + sprite.LayerSetState(0, state); + } + } +} diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index 77d93add0d..6823e56a43 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -237,6 +237,8 @@ namespace Content.Client "DamageOnLand", "GasFilter", "Recyclable", + "SecretStash", + "Toilet", "ClusterFlash" }; } diff --git a/Content.Server/Construction/Conditions/ToiletLidClosed.cs b/Content.Server/Construction/Conditions/ToiletLidClosed.cs new file mode 100644 index 0000000000..a1ad695bf6 --- /dev/null +++ b/Content.Server/Construction/Conditions/ToiletLidClosed.cs @@ -0,0 +1,35 @@ +#nullable enable +using System.Threading.Tasks; +using Content.Server.GameObjects.Components.Watercloset; +using Content.Shared.Construction; +using JetBrains.Annotations; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; + +namespace Content.Server.Construction.Conditions +{ + [UsedImplicitly] + public class ToiletLidClosed : IEdgeCondition + { + public async Task Condition(IEntity entity) + { + if (!entity.TryGetComponent(out ToiletComponent? toilet)) return false; + return !toilet.LidOpen; + } + + public bool DoExamine(IEntity entity, FormattedMessage message, bool inExamineRange) + { + if (!entity.TryGetComponent(out ToiletComponent? toilet)) return false; + if (!toilet.LidOpen) return false; + + message.AddMarkup(Loc.GetString("Use a [color=yellow]crowbar[/color] to close the lid.\n")); + return true; + } + + public void ExposeData(ObjectSerializer serializer) + { + } + } +} diff --git a/Content.Server/GameObjects/Components/Items/Storage/SecretStashComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/SecretStashComponent.cs new file mode 100644 index 0000000000..b2255dee11 --- /dev/null +++ b/Content.Server/GameObjects/Components/Items/Storage/SecretStashComponent.cs @@ -0,0 +1,119 @@ +#nullable enable +using Content.Server.GameObjects.Components.GUI; +using Content.Server.Interfaces.GameObjects.Components.Items; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces; +using Robust.Server.GameObjects.Components.Container; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Items.Storage +{ + /// + /// Logic for secret single slot stash, like plant pot or toilet cistern + /// + [RegisterComponent] + public class SecretStashComponent : Component, IDestroyAct + { + public override string Name => "SecretStash"; + + [ViewVariables] private int _maxItemSize; + [ViewVariables] private string _secretPartName = ""; + + [ViewVariables] private ContainerSlot _itemContainer = default!; + + public override void Initialize() + { + base.Initialize(); + _itemContainer = ContainerManagerComponent.Ensure("stash", Owner, out _); + } + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _maxItemSize, "maxItemSize", (int) ReferenceSizes.Pocket); + serializer.DataField(ref _secretPartName, "secretPartName", Loc.GetString("{0:theName}")); + } + + /// + /// Tries to hide item inside secret stash from hands of user + /// + /// + /// + /// True if item was hidden inside stash + public bool TryHideItem(IEntity user, IEntity itemToHide) + { + if (_itemContainer.ContainedEntity != null) + { + Owner.PopupMessage(user, Loc.GetString("There's already something in here?!")); + return false; + } + + if (!itemToHide.TryGetComponent(out ItemComponent? item)) + return false; + + if (item.Size > _maxItemSize) + { + Owner.PopupMessage(user, + Loc.GetString("{0:TheName} is too big to fit in {1}!", itemToHide, _secretPartName)); + return false; + } + + if (!user.TryGetComponent(out IHandsComponent? hands)) + return false; + + if (!hands.Drop(itemToHide, _itemContainer)) + return false; + + Owner.PopupMessage(user, Loc.GetString("You hide {0:theName} in {1}.", itemToHide, _secretPartName)); + return true; + } + + /// + /// Try get item and place it in users hand + /// If user can't take it by hands, will drop item from container + /// + /// + /// True if user recieved item + public bool TryGetItem(IEntity user) + { + if (_itemContainer.ContainedEntity == null) + return false; + + Owner.PopupMessage(user, Loc.GetString("There was something inside {0}!", _secretPartName)); + + if (user.TryGetComponent(out HandsComponent? hands)) + { + if (!_itemContainer.ContainedEntity.TryGetComponent(out ItemComponent? item)) + return false; + hands.PutInHandOrDrop(item); + } + else if (_itemContainer.Remove(_itemContainer.ContainedEntity)) + { + _itemContainer.ContainedEntity.Transform.Coordinates = Owner.Transform.Coordinates; + } + + return true; + } + + /// + /// Is there something inside secret stash item container? + /// + /// + public bool HasItemInside() + { + return _itemContainer.ContainedEntity != null; + } + + public void OnDestroy(DestructionEventArgs eventArgs) + { + // drop item inside + if (_itemContainer.ContainedEntity != null) + { + _itemContainer.ContainedEntity.Transform.Coordinates = Owner.Transform.Coordinates; + } + } + } +} diff --git a/Content.Server/GameObjects/Components/PottedPlantHideComponent.cs b/Content.Server/GameObjects/Components/PottedPlantHideComponent.cs index cc924cffd4..288fa0242d 100644 --- a/Content.Server/GameObjects/Components/PottedPlantHideComponent.cs +++ b/Content.Server/GameObjects/Components/PottedPlantHideComponent.cs @@ -17,74 +17,33 @@ namespace Content.Server.GameObjects.Components [RegisterComponent] public class PottedPlantHideComponent : Component, IInteractUsing, IInteractHand { - private const int MaxItemSize = (int) ReferenceSizes.Pocket; - public override string Name => "PottedPlantHide"; - [ViewVariables] private ContainerSlot _itemContainer; + [ViewVariables] private SecretStashComponent _secretStash = default!; public override void Initialize() { base.Initialize(); - - _itemContainer = - ContainerManagerComponent.Ensure("potted_plant_hide", Owner, out _); + _secretStash = Owner.EnsureComponent(); } async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) { - if (_itemContainer.ContainedEntity != null) - { - Rustle(); - - Owner.PopupMessage(eventArgs.User, Loc.GetString("There's already something in here?!")); - return false; - } - - var size = eventArgs.Using.GetComponent().Size; - - // TODO: use proper text macro system for this. - - if (size > MaxItemSize) - { - Owner.PopupMessage(eventArgs.User, - Loc.GetString("{0:TheName} is too big to fit in the plant!", eventArgs.Using)); - return false; - } - - var handsComponent = eventArgs.User.GetComponent(); - - if (!handsComponent.Drop(eventArgs.Using, _itemContainer)) - { - return false; - } - - Owner.PopupMessage(eventArgs.User, Loc.GetString("You hide {0:theName} in the plant.", eventArgs.Using)); Rustle(); - return true; + return _secretStash.TryHideItem(eventArgs.User, eventArgs.Using); } bool IInteractHand.InteractHand(InteractHandEventArgs eventArgs) { Rustle(); - if (_itemContainer.ContainedEntity == null) + var gotItem = _secretStash.TryGetItem(eventArgs.User); + if (!gotItem) { Owner.PopupMessage(eventArgs.User, Loc.GetString("You root around in the roots.")); - return true; } - Owner.PopupMessage(eventArgs.User, Loc.GetString("There was something in there!")); - if (eventArgs.User.TryGetComponent(out HandsComponent hands)) - { - hands.PutInHandOrDrop(_itemContainer.ContainedEntity.GetComponent()); - } - else if (_itemContainer.Remove(_itemContainer.ContainedEntity)) - { - _itemContainer.ContainedEntity.Transform.Coordinates = Owner.Transform.Coordinates; - } - - return true; + return gotItem; } private void Rustle() diff --git a/Content.Server/GameObjects/Components/Watercloset/ToiletComponent.cs b/Content.Server/GameObjects/Components/Watercloset/ToiletComponent.cs new file mode 100644 index 0000000000..e2f0ff1376 --- /dev/null +++ b/Content.Server/GameObjects/Components/Watercloset/ToiletComponent.cs @@ -0,0 +1,174 @@ +#nullable enable +using Content.Server.GameObjects.Components.Interactable; +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.GameObjects.Components.Strap; +using Content.Server.Interfaces.Chat; +using Content.Server.Interfaces.GameObjects; +using Content.Server.Utility; +using Content.Shared.Audio; +using Content.Shared.GameObjects.Components.Body; +using Content.Shared.GameObjects.Components.Body.Part; +using Content.Shared.GameObjects.Components.Interactable; +using Content.Shared.GameObjects.Components.Watercloset; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Random; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; +using System.Threading.Tasks; + +namespace Content.Server.GameObjects.Components.Watercloset +{ + [RegisterComponent] + public class ToiletComponent : Component, IInteractUsing, + IInteractHand, IMapInit, IExamine, ISuicideAct + { + public sealed override string Name => "Toilet"; + + private const float PryLidTime = 1f; + + private bool _isPrying = false; + + [ViewVariables] public bool LidOpen { get; private set; } + [ViewVariables] public bool IsSeatUp { get; private set; } + + [ViewVariables] private SecretStashComponent _secretStash = default!; + + public override void Initialize() + { + base.Initialize(); + _secretStash = Owner.EnsureComponent(); + } + + public void MapInit() + { + // roll is toilet seat will be up or down + var random = IoCManager.Resolve(); + IsSeatUp = random.Prob(0.5f); + UpdateSprite(); + } + + public async Task InteractUsing(InteractUsingEventArgs eventArgs) + { + // are player trying place or lift of cistern lid? + if (eventArgs.Using.TryGetComponent(out ToolComponent? tool) + && tool!.HasQuality(ToolQuality.Prying)) + { + // check if someone is already prying this toilet + if (_isPrying) + return false; + _isPrying = true; + + if (!await tool.UseTool(eventArgs.User, Owner, PryLidTime, ToolQuality.Prying)) + { + _isPrying = false; + return false; + } + + _isPrying = false; + + // all cool - toggle lid + LidOpen = !LidOpen; + UpdateSprite(); + + return true; + } + // maybe player trying to hide something inside cistern? + else if (LidOpen) + { + return _secretStash.TryHideItem(eventArgs.User, eventArgs.Using); + } + + return false; + } + + public bool InteractHand(InteractHandEventArgs eventArgs) + { + // trying get something from stash? + if (LidOpen) + { + var gotItem = _secretStash.TryGetItem(eventArgs.User); + + if (gotItem) + return true; + } + + // just want to up/down seat? + // check that nobody seats on seat right now + if (Owner.TryGetComponent(out StrapComponent? strap)) + { + if (strap.BuckledEntities.Count != 0) + return false; + } + + ToggleToiletSeat(); + return true; + } + + public void Examine(FormattedMessage message, bool inDetailsRange) + { + if (inDetailsRange && LidOpen) + { + if (_secretStash.HasItemInside()) + { + message.AddMarkup(Loc.GetString("There is [color=darkgreen]something[/color] inside cistern!")); + } + } + } + + public void ToggleToiletSeat() + { + IsSeatUp = !IsSeatUp; + EntitySystem.Get() + .PlayFromEntity("/Audio/Effects/toilet_seat_down.ogg", Owner, AudioHelpers.WithVariation(0.05f)); + + UpdateSprite(); + } + + private void UpdateSprite() + { + if (Owner.TryGetComponent(out AppearanceComponent? appearance)) + { + appearance.SetData(ToiletVisuals.LidOpen, LidOpen); + appearance.SetData(ToiletVisuals.SeatUp, IsSeatUp); + } + } + + public SuicideKind Suicide(IEntity victim, IChatManager chat) + { + // check that victim even have head + if (victim.TryGetComponent(out var body) && + body.GetPartsOfType(BodyPartType.Head).Count != 0) + { + var othersMessage = Loc.GetString("{0:theName} sticks their head into {1:theName} and flushes it!", victim, Owner); + victim.PopupMessageOtherClients(othersMessage); + + var selfMessage = Loc.GetString("You stick your head into {0:theName} and flush it!", Owner); + victim.PopupMessage(selfMessage); + + return SuicideKind.Asphyxiation; + } + else + { + var othersMessage = Loc.GetString("{0:theName} bashes themselves with {1:theName}!", victim, Owner); + victim.PopupMessageOtherClients(othersMessage); + + var selfMessage = Loc.GetString("You bash yourself with {0:theName}!", Owner); + victim.PopupMessage(selfMessage); + + return SuicideKind.Blunt; + } + } + + } +} diff --git a/Content.Shared/GameObjects/Components/Watercloset/SharedWaterclosetVisuals.cs b/Content.Shared/GameObjects/Components/Watercloset/SharedWaterclosetVisuals.cs new file mode 100644 index 0000000000..0ee66dd2c9 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Watercloset/SharedWaterclosetVisuals.cs @@ -0,0 +1,13 @@ +#nullable enable +using Robust.Shared.Serialization; +using System; + +namespace Content.Shared.GameObjects.Components.Watercloset +{ + [Serializable, NetSerializable] + public enum ToiletVisuals + { + LidOpen, + SeatUp + } +} diff --git a/Resources/Audio/Effects/toilet_seat_down.ogg b/Resources/Audio/Effects/toilet_seat_down.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dc568adf232c1c36ccaef9d1d66a2fb895f387da GIT binary patch literal 10856 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 CEJ`*2 literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml b/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml index a5bcf67edd..8272e0e572 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: PottedPlantBase abstract: true components: @@ -23,6 +23,8 @@ - type: Sprite sprite: Constructible/Misc/potted_plants.rsi - type: PottedPlantHide + - type: SecretStash + secretPartName: the plant - type: Anchorable - type: Pullable diff --git a/Resources/Prototypes/Entities/Constructible/Watercloset/toilet.yml b/Resources/Prototypes/Entities/Constructible/Watercloset/toilet.yml new file mode 100644 index 0000000000..cb73fef1f9 --- /dev/null +++ b/Resources/Prototypes/Entities/Constructible/Watercloset/toilet.yml @@ -0,0 +1,39 @@ +- type: entity + name: toilet + id: ToiletEmpty + suffix: Empty + parent: SeatBase + description: The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean. + components: + - type: Sprite + sprite: Constructible/Watercloset/toilet.rsi + state: closed_toilet_seat_up + netsync: false + - type: Toilet + - type: SecretStash + secretPartName: the toilet cistern + - type: SolutionContainer + maxVol: 250 + - type: Physics + shapes: + - !type:PhysShapeAabb + layer: [ Passable ] + - type: Construction + graph: toilet + node: toilet + - type: Appearance + visuals: + - type: ToiletVisualizer + +- type: entity + id: ToiletDirtyWater + parent: ToiletEmpty + suffix: Dirty Water + components: + - type: SolutionContainer + contents: + reagents: + - ReagentId: chem.Water + Quantity: 180 + - ReagentId: chem.Toxin + Quantity: 20 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/toilet.yml b/Resources/Prototypes/Recipes/Construction/Graphs/toilet.yml new file mode 100644 index 0000000000..faf5cc9f6b --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/toilet.yml @@ -0,0 +1,29 @@ +- type: constructionGraph + id: toilet + start: start + graph: + - node: start + edges: + - to: toilet + completed: + - !type:SnapToGrid { } + steps: + - material: Metal + amount: 5 + doAfter: 1 + - node: toilet + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SteelSheet1 + amount: 5 + - !type:EmptyAllContainers {} + - !type:DeleteEntity {} + conditions: + - !type:EntityAnchored + anchored: false + - !type:ToiletLidClosed {} + steps: + - tool: Welding + doAfter: 2 \ No newline at end of file diff --git a/Resources/Textures/Constructible/Watercloset/toilet.rsi/closed_toilet_seat_down.png b/Resources/Textures/Constructible/Watercloset/toilet.rsi/closed_toilet_seat_down.png new file mode 100644 index 0000000000000000000000000000000000000000..af9b04af2b1852d090135f38323bab318333e4c4 GIT binary patch literal 1469 zcmV;u1w#6XP)~cJ6!^^47&L7fnx^$B z&KLs#6z2f|{4p6piCV43Z*OlM50P4}#_wBRRen&d`0>*_*X!+e8|`)*r>Cc$bsrMS zU0`w|X*F||x*xDRuu#K9*#H1w7zTi@<715V`2hgRMtUgtGC-+Rvc8K3Af@TNQmF(b zU+5?s;OxBFb8Z-hWe~$KpzFG0-JmF!%bw14ZEelh=%ZXYohfhtSY9ePHgiqWu)JCa zfWYSh<#L%l}g2z5tLd$E}!L-6Ju5r7rO#M{-HQO4aOMaqgnpp-`zlsK+gyg zB?C-OB%$lNtjRfM`m;H@gcGnfTYAaBl2ao|SE-oDFBoYZx zh)}Sbh1!*=qHF*nkw^^mps&HNa(?RjHo&)rZv(hlchF|&M!8((c23ugQmLdgWCA`6 z;Ku_8?X8`LUBBgaJoqkfaB>BpS1HDrbuNAv>(TGLP#Ol$&YOVoW%}#no5!hnx{M-063A z_?ikYFBLrdx3240Uabc@6;8!dd}VW`Zxt#o#;BYzhF8D7!cpre*oagrp5nQDmNyy= zZknd;(P%VyE}!M8cq;ISP%56{rfKq8t;S8$?1@I1rpeQp0yj<5_p^NmMZ0l9`{9l; zhJ%x<(1N1W3hjK5VHg9oJYS=X*7^2c{i4$U0t6RMog_^0djOYiP9HW%Kr<|eX7u8%rakJFzdh2FfEh=2C zR360-Q`nuun-u&)wIlg72y2ZsmEIE6GO=k*xYyGwL1Gg3-K45F-vnXKb&^*34KkX_P zA$A#2dB7$?LNtPWBfEYcWcS&CMic4QR9OnUtd-aip*(QJc-&+8W z=f6O*oC~uHuK5hEO@g9Cb5EZE=Jcng9R(|L4!2 zKQU+`U&zs*_g_98#&pMgFvu5j^!oZb@Cg&peS`AX$`^8U|Kn%awjJ1y5Q3!_&mN2> z#8o;m<{1pbkoI$37XYyT@iUfQJfjam2tVj_wr$&&d7vwpFb%nH&=SCZ5lSY&5cKtR z`rHMjQpwlJzIpRT+vKzaFm9AeC2Cog_kW47sjd*TOn^DLyY?9brBaC!Li*-n^SQ1I z%d!GBLNt+{X*3!%U&zr^GBxzfa4MOij^ohn?QQBfPERJ4Y$&Z1bILI0e(pfX~T=M$*nx?a+)++E|(&9I#Z9M+z@wmyDV1fxI zm|%hlCYa#=iFDS~j8weUQx}+>xjo`C z3OF?`L{MYSJPhVEDm%#vZ@a;wPaZqGK;vk zYVQX>jb*|pu7I|h^;jI}rkaAXDw+8NbkFC;3Cps8S}m}ih^5cs`9hA)&dl|tn4+%t z8wF%Mv9{TnIiLU<2f7jy85V!Q5M>>}T_MuOAD_ue?8@t_{;L3=d5z+nFKX~K2c2dG zE`w1OJ&qD#JopNLH;cuE=fkCH1Yk59h7st%<1E$8I*VX7R9;`j*6X*}+j)grE#WPT zqIpDpM?k!h!pAL^WqGvD&ddcK;juKjQdYQHt)j*)E22b&Gy2FbO5_VUy14MX?{rwC zV{zfR^0FOoHS4jRsSCRD+wamr83-YP=W?E{eN~!wV2J0D;yWPN?%CJhdG`le&BJaW z)VZ4OTk>SJcwvJ^eLBONYYvn(#ZN2S2jF4dx+)t1mXc?kVDzqKjsOH9Bj8&TzV3EfeYxZB;}b0Bn1+@ z5X6CG1xZmBM1+AAY%s{2BmcL^Jm6CyA_{?rSddg+Ume>W!F(Y{w_d;XrHzM-`9QFm z8}{(^IE_Z*UfdMrZ?dx5C7w?91SLp(Cb=&;1CbW?H~UB|`y>0UuK;dN v+gN_O96EWoOn&sGDV?inWEOw9b5+{EEF|u^sd{$w00000NkvXXu0mjffJX~C literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Watercloset/toilet.rsi/meta.json b/Resources/Textures/Constructible/Watercloset/toilet.rsi/meta.json new file mode 100644 index 0000000000..0761994277 --- /dev/null +++ b/Resources/Textures/Constructible/Watercloset/toilet.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/2cb66bae0e253e13d37f8939e0983bb94fee243e", + "states": [ + { + "name": "closed_toilet_seat_down", + "directions": 4 + }, + { + "name": "closed_toilet_seat_up", + "directions": 4 + }, + { + "name": "open_toilet_seat_down", + "directions": 4 + }, + { + "name": "open_toilet_seat_up", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Watercloset/toilet.rsi/open_toilet_seat_down.png b/Resources/Textures/Constructible/Watercloset/toilet.rsi/open_toilet_seat_down.png new file mode 100644 index 0000000000000000000000000000000000000000..a0844c8793be34c452bbbe35ca434b5e14fca19f GIT binary patch literal 1390 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 literal 0 HcmV?d00001 From f9670d36c41bf9786b482a586069232062c687f9 Mon Sep 17 00:00:00 2001 From: chairbender Date: Wed, 20 Jan 2021 00:32:44 -0800 Subject: [PATCH 165/166] Improved Inventory / Hand Slots UI (#2965) --- .../HumanInventoryInterfaceController.cs | 27 +++-- Content.Client/UserInterface/GameHud.cs | 56 +++++----- Content.Client/UserInterface/HandButton.cs | 22 ++++ Content.Client/UserInterface/HandsGui.cs | 37 +------ .../UserInterface/ItemSlotButton.cs | 22 ++-- .../UserInterface/ItemStatusPanel.cs | 28 +++-- .../UserInterface/Stylesheets/StyleNano.cs | 31 ++++++ .../Inventory/hand_slot_highlight.png | Bin 0 -> 146 bytes .../Inventory/inv_slot_background.png | Bin 0 -> 147 bytes .../Interface/Nano/item_status_left.svg | 64 +++++------ .../Nano/item_status_left.svg.96dpi.png | Bin 225 -> 453 bytes .../Interface/Nano/item_status_middle.svg | 100 ++++++++++++++++++ .../Nano/item_status_middle.svg.96dpi.png | Bin 0 -> 458 bytes .../Interface/Nano/item_status_right.svg | 69 ++++++------ .../Nano/item_status_right.svg.96dpi.png | Bin 228 -> 431 bytes 15 files changed, 304 insertions(+), 152 deletions(-) create mode 100644 Resources/Textures/Interface/Inventory/hand_slot_highlight.png create mode 100644 Resources/Textures/Interface/Inventory/inv_slot_background.png create mode 100644 Resources/Textures/Interface/Nano/item_status_middle.svg create mode 100644 Resources/Textures/Interface/Nano/item_status_middle.svg.96dpi.png diff --git a/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs b/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs index 135b9ca531..ecacae0d2b 100644 --- a/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs +++ b/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs @@ -30,7 +30,8 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory private ItemSlotButton _hudButtonBelt; private ItemSlotButton _hudButtonBack; private ItemSlotButton _hudButtonId; - private Control _quickButtonsContainer; + private Control _rightQuickButtonsContainer; + private Control _leftQuickButtonsContainer; public HumanInventoryInterfaceController(ClientInventoryComponent owner) : base(owner) { @@ -69,16 +70,26 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory AddButton(out _hudButtonBelt, Slots.BELT, "belt"); AddButton(out _hudButtonId, Slots.IDCARD, "id"); - _quickButtonsContainer = new HBoxContainer + _leftQuickButtonsContainer = new HBoxContainer { Children = { _hudButtonId, - _hudButtonBelt, _hudButtonBack, + _hudButtonBelt, + }, + SeparationOverride = 5 + }; + _rightQuickButtonsContainer = new HBoxContainer + { + Children = + { _hudButtonPocket1, _hudButtonPocket2, - } + // keeps this "balanced" with the left, so the hands will appear perfectly in the center + new Control{CustomMinimumSize = (64, 64)} + }, + SeparationOverride = 5 }; } @@ -161,7 +172,8 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory { base.PlayerAttached(); - GameHud.InventoryQuickButtonContainer.AddChild(_quickButtonsContainer); + GameHud.RightInventoryQuickButtonContainer.AddChild(_rightQuickButtonsContainer); + GameHud.LeftInventoryQuickButtonContainer.AddChild(_leftQuickButtonsContainer); // Update all the buttons to make sure they check out. @@ -183,7 +195,8 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory { base.PlayerDetached(); - GameHud.InventoryQuickButtonContainer.RemoveChild(_quickButtonsContainer); + GameHud.RightInventoryQuickButtonContainer.RemoveChild(_rightQuickButtonsContainer); + GameHud.LeftInventoryQuickButtonContainer.RemoveChild(_leftQuickButtonsContainer); foreach (var (slot, list) in _inventoryButtons) { @@ -197,7 +210,7 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory private class HumanInventoryWindow : SS14Window { private const int ButtonSize = 64; - private const int ButtonSeparation = 2; + private const int ButtonSeparation = 4; private const int RightSeparation = 2; public IReadOnlyDictionary Buttons { get; } diff --git a/Content.Client/UserInterface/GameHud.cs b/Content.Client/UserInterface/GameHud.cs index 07a5db624b..5feb17055d 100644 --- a/Content.Client/UserInterface/GameHud.cs +++ b/Content.Client/UserInterface/GameHud.cs @@ -66,7 +66,8 @@ namespace Content.Client.UserInterface Control HandsContainer { get; } Control SuspicionContainer { get; } - Control InventoryQuickButtonContainer { get; } + Control RightInventoryQuickButtonContainer { get; } + Control LeftInventoryQuickButtonContainer { get; } bool CombatPanelVisible { get; set; } bool CombatModeActive { get; set; } @@ -100,7 +101,8 @@ namespace Content.Client.UserInterface public Control HandsContainer { get; private set; } public Control SuspicionContainer { get; private set; } - public Control InventoryQuickButtonContainer { get; private set; } + public Control RightInventoryQuickButtonContainer { get; private set; } + public Control LeftInventoryQuickButtonContainer { get; private set; } public bool CombatPanelVisible { @@ -260,21 +262,6 @@ namespace Content.Client.UserInterface _inputManager.SetInputCommand(ContentKeyFunctions.OpenTutorial, InputCmdHandler.FromDelegate(s => ButtonTutorialOnOnToggled())); - var inventoryContainer = new HBoxContainer - { - SeparationOverride = 10 - }; - - RootControl.AddChild(inventoryContainer); - - LayoutContainer.SetGrowHorizontal(inventoryContainer, LayoutContainer.GrowDirection.Begin); - LayoutContainer.SetGrowVertical(inventoryContainer, LayoutContainer.GrowDirection.Begin); - LayoutContainer.SetAnchorAndMarginPreset(inventoryContainer, LayoutContainer.LayoutPreset.BottomRight); - - InventoryQuickButtonContainer = new MarginContainer - { - SizeFlagsVertical = Control.SizeFlags.ShrinkEnd - }; _combatPanelContainer = new VBoxContainer { @@ -289,23 +276,40 @@ namespace Content.Client.UserInterface } }; + LayoutContainer.SetGrowHorizontal(_combatPanelContainer, LayoutContainer.GrowDirection.Begin); + LayoutContainer.SetGrowVertical(_combatPanelContainer, LayoutContainer.GrowDirection.Begin); + LayoutContainer.SetAnchorAndMarginPreset(_combatPanelContainer, LayoutContainer.LayoutPreset.BottomRight); + LayoutContainer.SetMarginBottom(_combatPanelContainer, -10f); + RootControl.AddChild(_combatPanelContainer); + _combatModeButton.OnToggled += args => OnCombatModeChanged?.Invoke(args.Pressed); _targetingDoll.OnZoneChanged += args => OnTargetingZoneChanged?.Invoke(args); - inventoryContainer.Children.Add(InventoryQuickButtonContainer); - inventoryContainer.Children.Add(_combatPanelContainer); - + var centerBottomContainer = new HBoxContainer + { + SeparationOverride = 5 + }; + LayoutContainer.SetAnchorAndMarginPreset(centerBottomContainer, LayoutContainer.LayoutPreset.CenterBottom); + LayoutContainer.SetGrowHorizontal(centerBottomContainer, LayoutContainer.GrowDirection.Both); + LayoutContainer.SetGrowVertical(centerBottomContainer, LayoutContainer.GrowDirection.Begin); + LayoutContainer.SetMarginBottom(centerBottomContainer, -10f); + RootControl.AddChild(centerBottomContainer); HandsContainer = new MarginContainer { SizeFlagsVertical = Control.SizeFlags.ShrinkEnd }; - - RootControl.AddChild(HandsContainer); - - LayoutContainer.SetAnchorAndMarginPreset(HandsContainer, LayoutContainer.LayoutPreset.CenterBottom); - LayoutContainer.SetGrowHorizontal(HandsContainer, LayoutContainer.GrowDirection.Both); - LayoutContainer.SetGrowVertical(HandsContainer, LayoutContainer.GrowDirection.Begin); + RightInventoryQuickButtonContainer = new MarginContainer + { + SizeFlagsVertical = Control.SizeFlags.ShrinkEnd + }; + LeftInventoryQuickButtonContainer = new MarginContainer + { + SizeFlagsVertical = Control.SizeFlags.ShrinkEnd + }; + centerBottomContainer.AddChild(LeftInventoryQuickButtonContainer); + centerBottomContainer.AddChild(HandsContainer); + centerBottomContainer.AddChild(RightInventoryQuickButtonContainer); SuspicionContainer = new MarginContainer { diff --git a/Content.Client/UserInterface/HandButton.cs b/Content.Client/UserInterface/HandButton.cs index af152d5d6b..c7120a73ef 100644 --- a/Content.Client/UserInterface/HandButton.cs +++ b/Content.Client/UserInterface/HandButton.cs @@ -1,11 +1,15 @@ using Content.Shared.GameObjects.Components.Items; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Maths; namespace Content.Client.UserInterface { public class HandButton : ItemSlotButton { + private bool _activeHand; + private bool _highlighted; + public HandButton(Texture texture, Texture storageTexture, Texture blockedTexture, HandLocation location) : base(texture, storageTexture) { Location = location; @@ -21,5 +25,23 @@ namespace Content.Client.UserInterface public HandLocation Location { get; } public TextureRect Blocked { get; } + + public void SetActiveHand(bool active) + { + _activeHand = active; + UpdateHighlight(); + } + + public override void Highlight(bool highlight) + { + _highlighted = highlight; + UpdateHighlight(); + } + + private void UpdateHighlight() + { + // always stay highlighted if active + base.Highlight(_activeHand || _highlighted); + } } } diff --git a/Content.Client/UserInterface/HandsGui.cs b/Content.Client/UserInterface/HandsGui.cs index fca20f2b9a..01796984c1 100644 --- a/Content.Client/UserInterface/HandsGui.cs +++ b/Content.Client/UserInterface/HandsGui.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using Content.Client.GameObjects.Components.Items; +using Content.Client.UserInterface.Stylesheets; using Content.Client.Utility; using Content.Shared.GameObjects.Components.Items; using Content.Shared.Input; @@ -21,8 +22,6 @@ namespace Content.Client.UserInterface [Dependency] private readonly IResourceCache _resourceCache = default!; [Dependency] private readonly IItemSlotManager _itemSlotManager = default!; - private readonly TextureRect _activeHandRect; - private readonly Texture _leftHandTexture; private readonly Texture _middleHandTexture; private readonly Texture _rightHandTexture; @@ -52,24 +51,14 @@ namespace Content.Client.UserInterface Children = { (_topPanel = ItemStatusPanel.FromSide(HandLocation.Middle)), - (_handsContainer = new HBoxContainer {SeparationOverride = 0}) + (_handsContainer = new HBoxContainer()) } }), (_leftPanel = ItemStatusPanel.FromSide(HandLocation.Left)) } }); - - var textureHandActive = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_active.png"); - - // Active hand - _activeHandRect = new TextureRect - { - Texture = textureHandActive, - TextureScale = (2, 2) - }; - _leftHandTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_l.png"); - _middleHandTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_middle.png"); + _middleHandTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_l.png"); _rightHandTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_r.png"); } @@ -119,13 +108,6 @@ namespace Content.Client.UserInterface button.OnStoragePressed += args => _OnStoragePressed(args, slot); _handsContainer.AddChild(button); - - if (_activeHandRect.Parent == null) - { - button.AddChild(_activeHandRect); - _activeHandRect.SetPositionInParent(1); - } - hand.Button = button; } @@ -135,11 +117,6 @@ namespace Content.Client.UserInterface if (button != null) { - if (button.Children.Contains(_activeHandRect)) - { - button.RemoveChild(_activeHandRect); - } - _handsContainer.RemoveChild(button); } } @@ -186,14 +163,8 @@ namespace Content.Client.UserInterface hand.Button!.Button.Texture = HandTexture(hand.Location); hand.Button!.SetPositionInParent(i); _itemSlotManager.SetItemSlot(hand.Button, hand.Entity); - } - _activeHandRect.Parent?.RemoveChild(_activeHandRect); - component.GetHand(component.ActiveIndex)?.Button?.AddChild(_activeHandRect); - - if (hands.Length > 0) - { - _activeHandRect.SetPositionInParent(1); + hand.Button!.SetActiveHand(component.ActiveIndex == hand.Name); } _leftPanel.SetPositionFirst(); diff --git a/Content.Client/UserInterface/ItemSlotButton.cs b/Content.Client/UserInterface/ItemSlotButton.cs index 7715c565d9..773a1fb1bc 100644 --- a/Content.Client/UserInterface/ItemSlotButton.cs +++ b/Content.Client/UserInterface/ItemSlotButton.cs @@ -1,4 +1,5 @@ using System; +using Content.Client.UserInterface.Stylesheets; using Robust.Client.Graphics; using Robust.Client.Graphics.Shaders; using Robust.Client.UserInterface; @@ -26,11 +27,11 @@ namespace Content.Client.UserInterface public bool EntityHover => HoverSpriteView.Sprite != null; public bool MouseIsHovering = false; - private readonly ShaderInstance _highlightShader; + + private readonly PanelContainer _highlightRect; public ItemSlotButton(Texture texture, Texture storageTexture) { - _highlightShader = IoCManager.Resolve().Index(HighlightShader).Instance(); CustomMinimumSize = (64, 64); AddChild(Button = new TextureRect @@ -40,6 +41,13 @@ namespace Content.Client.UserInterface MouseFilter = MouseFilterMode.Stop }); + AddChild(_highlightRect = new PanelContainer + { + StyleClasses = { StyleNano.StyleClassHandSlotHighlight }, + CustomMinimumSize = (32, 32), + Visible = false + }); + Button.OnKeyBindDown += OnButtonPressed; AddChild(SpriteView = new SpriteView @@ -102,18 +110,16 @@ namespace Content.Client.UserInterface } } - public void Highlight(bool on) + public virtual void Highlight(bool highlight) { - // I make no claim that this actually looks good but it's a start. - if (on) + if (highlight) { - Button.ShaderOverride = _highlightShader; + _highlightRect.Visible = true; } else { - Button.ShaderOverride = null; + _highlightRect.Visible = false; } - } private void OnButtonPressed(GUIBoundKeyEventArgs args) diff --git a/Content.Client/UserInterface/ItemStatusPanel.cs b/Content.Client/UserInterface/ItemStatusPanel.cs index ca91e7ec0e..632a4cacf4 100644 --- a/Content.Client/UserInterface/ItemStatusPanel.cs +++ b/Content.Client/UserInterface/ItemStatusPanel.cs @@ -32,7 +32,7 @@ namespace Content.Client.UserInterface [ViewVariables] private IEntity? _entity; - public ItemStatusPanel(Texture texture, StyleBox.Margin margin) + public ItemStatusPanel(Texture texture, StyleBox.Margin cutout, StyleBox.Margin flat, Label.AlignMode textAlign) { var panel = new StyleBoxTexture { @@ -40,7 +40,8 @@ namespace Content.Client.UserInterface }; panel.SetContentMarginOverride(StyleBox.Margin.Vertical, 4); panel.SetContentMarginOverride(StyleBox.Margin.Horizontal, 6); - panel.SetPatchMargin(margin, 13); + panel.SetPatchMargin(flat, 2); + panel.SetPatchMargin(cutout, 13); AddChild(_panel = new PanelContainer { @@ -57,7 +58,8 @@ namespace Content.Client.UserInterface (_itemNameLabel = new Label { ClipText = true, - StyleClasses = {StyleNano.StyleClassItemStatus} + StyleClasses = {StyleNano.StyleClassItemStatus}, + Align = textAlign }) } } @@ -78,27 +80,35 @@ namespace Content.Client.UserInterface public static ItemStatusPanel FromSide(HandLocation location) { string texture; - StyleBox.Margin margin; + StyleBox.Margin cutOut; + StyleBox.Margin flat; + Label.AlignMode textAlign; switch (location) { case HandLocation.Left: texture = "/Textures/Interface/Nano/item_status_right.svg.96dpi.png"; - margin = StyleBox.Margin.Left | StyleBox.Margin.Top; + cutOut = StyleBox.Margin.Left | StyleBox.Margin.Top; + flat = StyleBox.Margin.Right | StyleBox.Margin.Bottom; + textAlign = Label.AlignMode.Right; break; case HandLocation.Middle: - texture = "/Textures/Interface/Nano/item_status_left.svg.96dpi.png"; - margin = StyleBox.Margin.Right | StyleBox.Margin.Top; + texture = "/Textures/Interface/Nano/item_status_middle.svg.96dpi.png"; + cutOut = StyleBox.Margin.Right | StyleBox.Margin.Top; + flat = StyleBox.Margin.Left | StyleBox.Margin.Bottom; + textAlign = Label.AlignMode.Left; break; case HandLocation.Right: texture = "/Textures/Interface/Nano/item_status_left.svg.96dpi.png"; - margin = StyleBox.Margin.Right | StyleBox.Margin.Top; + cutOut = StyleBox.Margin.Right | StyleBox.Margin.Top; + flat = StyleBox.Margin.Left | StyleBox.Margin.Bottom; + textAlign = Label.AlignMode.Left; break; default: throw new ArgumentOutOfRangeException(nameof(location), location, null); } - return new ItemStatusPanel(ResC.GetTexture(texture), margin); + return new ItemStatusPanel(ResC.GetTexture(texture), cutOut, flat, textAlign); } public void Update(IEntity? entity) diff --git a/Content.Client/UserInterface/Stylesheets/StyleNano.cs b/Content.Client/UserInterface/Stylesheets/StyleNano.cs index ba2372b4a4..4f7e058093 100644 --- a/Content.Client/UserInterface/Stylesheets/StyleNano.cs +++ b/Content.Client/UserInterface/Stylesheets/StyleNano.cs @@ -16,6 +16,8 @@ namespace Content.Client.UserInterface.Stylesheets public sealed class StyleNano : StyleBase { public const string StyleClassBorderedWindowPanel = "BorderedWindowPanel"; + public const string StyleClassInventorySlotBackground = "InventorySlotBackground"; + public const string StyleClassHandSlotHighlight = "HandSlotHighlight"; public const string StyleClassTransparentBorderedWindowPanel = "TransparentBorderedWindowPanel"; public const string StyleClassHotbarPanel = "HotbarPanel"; public const string StyleClassTooltipPanel = "tooltipBox"; @@ -103,6 +105,21 @@ namespace Content.Client.UserInterface.Stylesheets }; borderedWindowBackground.SetPatchMargin(StyleBox.Margin.All, 2); + var invSlotBgTex = resCache.GetTexture("/Textures/Interface/Inventory/inv_slot_background.png"); + var invSlotBg = new StyleBoxTexture + { + Texture = invSlotBgTex, + }; + invSlotBg.SetPatchMargin(StyleBox.Margin.All, 2); + invSlotBg.SetContentMarginOverride(StyleBox.Margin.All, 0); + + var handSlotHighlightTex = resCache.GetTexture("/Textures/Interface/Inventory/hand_slot_highlight.png"); + var handSlotHighlight = new StyleBoxTexture + { + Texture = handSlotHighlightTex, + }; + handSlotHighlight.SetPatchMargin(StyleBox.Margin.All, 2); + var borderedTransparentWindowBackgroundTex = resCache.GetTexture("/Textures/Interface/Nano/transparent_window_background_bordered.png"); var borderedTransparentWindowBackground = new StyleBoxTexture { @@ -385,6 +402,20 @@ namespace Content.Client.UserInterface.Stylesheets { new StyleProperty(PanelContainer.StylePropertyPanel, borderedTransparentWindowBackground), }), + // inventory slot background + new StyleRule( + new SelectorElement(null, new[] {StyleClassInventorySlotBackground}, null, null), + new[] + { + new StyleProperty(PanelContainer.StylePropertyPanel, invSlotBg), + }), + // hand slot highlight + new StyleRule( + new SelectorElement(null, new[] {StyleClassHandSlotHighlight}, null, null), + new[] + { + new StyleProperty(PanelContainer.StylePropertyPanel, handSlotHighlight), + }), // Hotbar background new StyleRule(new SelectorElement(typeof(PanelContainer), new[] {StyleClassHotbarPanel}, null, null), new[] diff --git a/Resources/Textures/Interface/Inventory/hand_slot_highlight.png b/Resources/Textures/Interface/Inventory/hand_slot_highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..da20cd46deb47ecb51655b10b817841e85e3b5f0 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=wj^(N7ltN=Wen3Bf7kB-if|Tq zL>4nJ=qZCRW5rVYGN2%PiKnkC`%^|PCR3SQlf{>SLh_z2jv*Y^lXIfX{@OE3B_thS mdeD?Du9MlYQL^(I9|PMJ_HVb0Q`&$^89ZJ6T-G@yGywn|;3csD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Inventory/inv_slot_background.png b/Resources/Textures/Interface/Inventory/inv_slot_background.png new file mode 100644 index 0000000000000000000000000000000000000000..aa85c0f0ba491ace62a53820d794281bfc2c76e8 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=wj^(N7X~W^2Zq2pmG8fRBAf*t zk;M!QddeWoSh3W;3@FH6;_2(k{*;l6QG##JLo*$qkb - - + inkscape:export-filename="C:\ss14\space-station-14\Resources\Textures\Interface\Nano\item_status_left.svg.96dpi.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + inkscape:snap-page="true" + inkscape:document-rotation="0" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0"> + id="grid817" + originx="0.44979165" + originy="1.5931808" /> @@ -66,35 +71,30 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(-26.597681,-208.71661)"> + transform="translate(-26.372785,-208.49171)"> - diff --git a/Resources/Textures/Interface/Nano/item_status_left.svg.96dpi.png b/Resources/Textures/Interface/Nano/item_status_left.svg.96dpi.png index 9fb2e1748426d2d9227d0927fe9098c3e1adfebb..5169343ea4fe9a88df5a21d069d3dec0c99b8654 100644 GIT binary patch delta 425 zcmV;a0apIu0mTD0iBL{Q4GJ0x0000DNk~Le0000I0000I2nGNE09MY9R{#J232;bR za{vGi!vFvd!vV){sAQ2vCw~D_Nkl`8^Y(iqf>uk0(zjlrc#sGJfS7ef*m`9e+R;R1*Dsb5K>)y`o(!9H zrj#OpF1ZEac% z)1>TbE}gO+leE5K-D-_et#-lZh5&%bpzPXK+IBJ~fIAyjaptFekJd`JTa7`?dIG>6 zhqy@u4KakR7bbY5G~gwMMp05~V2;-Q%Kw9`<@MYG%~}5sAmtbUU=9C5VrZ04gpil) ThZ}Vi00000NkvXXu0mjf@2j&` delta 195 zcmX@g{E*SLGr-TCmrII^fq{Y7)59eQNDF{43p0>>d-oAYfVtSoGlYYK859IqHcoD6W98;pSn)qh + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/Resources/Textures/Interface/Nano/item_status_middle.svg.96dpi.png b/Resources/Textures/Interface/Nano/item_status_middle.svg.96dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1f84cea83c98404f6a032bcb659a2163e5069f GIT binary patch literal 458 zcmV;*0X6=KP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10ar;x zK~y-6&C)MV96=a>@n`myTp)!6(WC;0#bL;;xFrOEW1G~VP#6@dwi1Ox*YqPGN>WFP z=L--L4rtoFa(e{sW_M=Zw}O8HnjDMaNnSOXUnY~+w9-rf!_$sq@yiDXdneDFJt+c^ z5Y&}}@HoQ&%z6_aw$f~FWXStcdimM#aXQ1R%ipEK2Zf&tiyxDbpy#rKzU%+JC{dY; zM1Lgh)s~*cHzsz{gEMn;GOpJQ|qcSC~PL}qi^%`8)Gkq;CAPV zyko0!5Y(8p=4AdoO+USRF$AD0+V5TrD|_RCC5PXy1>Ip3-E-?*DGEt#=spQSp~fHm zueS%q0CC)mrr*zu*8;|x(E}7U8YXH?G+y(fe-)&;>sB*rcK`qY07*qoM6N<$f>@Hr AOaK4? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Nano/item_status_right.svg b/Resources/Textures/Interface/Nano/item_status_right.svg index d07333ec22..d898bb2ce0 100644 --- a/Resources/Textures/Interface/Nano/item_status_right.svg +++ b/Resources/Textures/Interface/Nano/item_status_right.svg @@ -1,6 +1,4 @@ - - + inkscape:export-filename="C:\ss14\space-station-14\Resources\Textures\Interface\Nano\item_status_right.svg.96dpi.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + inkscape:snap-page="true" + inkscape:document-rotation="0" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0"> - + id="grid817" + originx="0.44979165" + originy="1.5931808" /> @@ -71,35 +71,30 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(-26.597681,-208.71661)"> + transform="translate(-26.372785,-208.49171)"> - diff --git a/Resources/Textures/Interface/Nano/item_status_right.svg.96dpi.png b/Resources/Textures/Interface/Nano/item_status_right.svg.96dpi.png index 35e200c21f12576efb7d1db12c6c7c12391890ba..72f7e6de6b8775b85f3ef9e546634889061758c4 100644 GIT binary patch delta 403 zcmV;E0c`%{0j~o#iBL{Q4GJ0x0000DNk~Le0000I0000I2nGNE09MY9R{#J232;bR za{vGi!vFvd!vV){sAQ2vCw~DvNkln0RaAK%_7me1aR)1^)eY6?`%;A0p^!2gy1=AU4wAyUG8Nv)ZV%8Z@dWVcDs#< zYTghKTcf;8N16)16jTBLe5{(!08Vl}bK~??6V;yPD+J)!SyRa5MXw~x697Q5!YHNC xU*!Km8~`|P1g))|wO>O)7_uN-ul&Gu@&UC%j@96n?DPNt002ovPDHLkV1n*JtVRF; delta 198 zcmZ3_{Djf9Gr-TCmrII^fq{Y7)59eQNDF{43p0>>d-oAYfVtSoGlYYKsFWnf@pXlUZ*=H~A1zVUFLEl`4~ zB*-tA;lSJP{2f4^v8Rh;2*>r_6NZ8Z6c`R1NLa+A#K@U(fa%Bd15@_izRzrMPN*S2 hI}rjD%h~=vX6*76;uP*xoCVa*;OXk;vd$@?2>?WhIC200 From b2ae658c8109b2604ba56764bce1c68b2496f7ed Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Wed, 20 Jan 2021 21:25:14 +0100 Subject: [PATCH 166/166] Update submodule. Critical fixes like no more mem leak and TPS fixing. --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 8e97982f1e..b205a14f69 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 8e97982f1e1f12a119a0241fff6408a25c86fb5e +Subproject commit b205a14f69d585f04ff2b2eba27a76926b7ba51b @@ -460,28 +432,14 @@ namespace Content.Server.GameObjects.Components.Chemistry /// Return true if the solution contains the reagent. public bool ContainsReagent(string reagentId, out ReagentUnit quantity) { - foreach (var reagent in Solution.Contents) - { - if (reagent.ReagentId == reagentId) - { - quantity = reagent.Quantity; - return true; - } - } - - quantity = ReagentUnit.New(0); - return false; + var containsReagent = Solution.ContainsReagent(reagentId, out var quantityFound); + quantity = quantityFound; + return containsReagent; } public string GetMajorReagentId() { - if (Solution.Contents.Count == 0) - { - return ""; - } - - var majorReagent = Solution.Contents.OrderByDescending(reagent => reagent.Quantity).First();; - return majorReagent.ReagentId; + return Solution.GetPrimaryReagentId(); } protected void UpdateFillIcon() diff --git a/Content.Shared/Chemistry/Solution.cs b/Content.Shared/Chemistry/Solution.cs index f515721e0f..9730bae940 100644 --- a/Content.Shared/Chemistry/Solution.cs +++ b/Content.Shared/Chemistry/Solution.cs @@ -1,8 +1,12 @@ -using System; +using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.Linq; using Robust.Shared.Interfaces.Serialization; +using Robust.Shared.IoC; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; @@ -27,6 +31,8 @@ namespace Content.Shared.Chemistry [ViewVariables] public ReagentUnit TotalVolume { get; private set; } + public Color Color => GetColor(); + /// /// Constructs an empty solution (ex. an empty beaker). /// @@ -57,6 +63,32 @@ namespace Content.Shared.Chemistry () => _contents); } + public bool ContainsReagent(string reagentId, out ReagentUnit quantity) + { + foreach (var reagent in Contents) + { + if (reagent.ReagentId == reagentId) + { + quantity = reagent.Quantity; + return true; + } + } + + quantity = ReagentUnit.New(0); + return false; + } + + public string GetPrimaryReagentId() + { + if (Contents.Count == 0) + { + return ""; + } + + var majorReagent = Contents.OrderByDescending(reagent => reagent.Quantity).First(); ; + return majorReagent.ReagentId; + } + /// /// Adds a given quantity of a reagent directly into the solution. /// @@ -231,6 +263,37 @@ namespace Content.Shared.Chemistry TotalVolume += otherSolution.TotalVolume; } + private Color GetColor() + { + if (TotalVolume == 0) + { + return Color.Transparent; + } + + Color mixColor = default; + var runningTotalQuantity = ReagentUnit.New(0); + + foreach (var reagent in Contents) + { + runningTotalQuantity += reagent.Quantity; + + if (!IoCManager.Resolve().TryIndex(reagent.ReagentId, out ReagentPrototype proto)) + { + continue; + } + + if (mixColor == default) + { + mixColor = proto.SubstanceColor; + continue; + } + + var interpolateValue = (1 / runningTotalQuantity.Float()) * reagent.Quantity.Float(); + mixColor = Color.InterpolateBetween(mixColor, proto.SubstanceColor, interpolateValue); + } + return mixColor; + } + public Solution Clone() { var volume = ReagentUnit.New(0); diff --git a/Content.Shared/Chemistry/SolutionCaps.cs b/Content.Shared/Chemistry/SolutionCaps.cs index c1047d265b..3dada4d98e 100644 --- a/Content.Shared/Chemistry/SolutionCaps.cs +++ b/Content.Shared/Chemistry/SolutionCaps.cs @@ -1,4 +1,4 @@ -using System; +using System; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry @@ -33,6 +33,14 @@ namespace Content.Shared.Chemistry /// /// Can people examine the solution in the container or is it impossible to see? /// - NoExamine = 8, + CanExamine = 8, + } + + public static class SolutionContainerCapsHelpers + { + public static bool HasCap(this SolutionContainerCaps cap, SolutionContainerCaps other) + { + return (cap & other) == other; + } } } diff --git a/Resources/Prototypes/Entities/Constructible/Specific/hydroponics.yml b/Resources/Prototypes/Entities/Constructible/Specific/hydroponics.yml index db7e51649b..416b1324de 100644 --- a/Resources/Prototypes/Entities/Constructible/Specific/hydroponics.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/hydroponics.yml @@ -38,7 +38,7 @@ drawWarnings: false - type: SolutionContainer maxVol: 200 - caps: AddTo, NoExamine + caps: AddTo - type: Pourable - type: SnapGrid offset: Center diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 1837d88b4c..21c5c58232 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -20,7 +20,7 @@ # Organs - type: SolutionContainer maxVol: 250 - caps: AddTo, RemoveFrom, NoExamine + caps: AddTo, RemoveFrom - type: Bloodstream max_volume: 100 # StatusEffects diff --git a/Resources/Prototypes/Entities/Objects/Consumable/botany.yml b/Resources/Prototypes/Entities/Objects/Consumable/botany.yml index def7c602af..89b6eb8e13 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/botany.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/botany.yml @@ -1,10 +1,10 @@ -- type: entity +- type: entity parent: BaseItem id: ProduceBase abstract: true components: - type: SolutionContainer - caps: NoExamine + caps: None - type: Sprite state: produce - type: Produce @@ -18,7 +18,7 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/wheat.rsi - type: SolutionContainer - caps: NoExamine + caps: None contents: reagents: - ReagentId: chem.Nutriment @@ -38,7 +38,7 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/sugarcane.rsi - type: SolutionContainer - caps: NoExamine + caps: None contents: reagents: - ReagentId: chem.Nutriment @@ -58,7 +58,7 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/towercap.rsi - type: SolutionContainer - caps: NoExamine + caps: None - type: MeleeWeapon - type: Produce seed: towercap diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml index b9f5ee51a8..ef17deb41c 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks.yml @@ -1,4 +1,4 @@ -# TODO: Find remaining cans and move to drinks_cans +# TODO: Find remaining cans and move to drinks_cans # TODO: Find empty containers (e.g. mug, pitcher) and move to their own yml # TODO: Move bottles to their own yml - type: entity @@ -8,7 +8,6 @@ components: - type: SolutionContainer maxVol: 50 - caps: AddTo, RemoveFrom - type: Pourable transferAmount: 5 - type: Drink @@ -55,7 +54,6 @@ - type: SolutionContainer fillingState: glass maxVol: 50 - caps: AddTo, RemoveFrom - type: Pourable transferAmount: 5 - type: TransformableContainer diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml index 82619079a7..51fe476ff3 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks_bottles.yml @@ -6,7 +6,6 @@ - type: Drink openSounds: bottleOpenSounds - type: SolutionContainer - caps: AddTo, RemoveFrom - type: Pourable transferAmount: 5 - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Consumable/drinks_cups.yml b/Resources/Prototypes/Entities/Objects/Consumable/drinks_cups.yml index fb0c3db10c..5094bb3266 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/drinks_cups.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/drinks_cups.yml @@ -7,7 +7,6 @@ components: - type: SolutionContainer maxVol: 20 - caps: AddTo, RemoveFrom - type: Pourable transferAmount: 5 - type: Drink diff --git a/Resources/Prototypes/Entities/Objects/Consumable/food.yml b/Resources/Prototypes/Entities/Objects/Consumable/food.yml index 0d5a0f08e2..f9a78fc99d 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/food.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/food.yml @@ -6,7 +6,7 @@ - type: Food - type: LoopingSound - type: SolutionContainer - caps: NoExamine + caps: None - type: Sprite state: icon netsync: false diff --git a/Resources/Prototypes/Entities/Objects/Consumable/kitchen_reagent_containers.yml b/Resources/Prototypes/Entities/Objects/Consumable/kitchen_reagent_containers.yml index 0815d3ac06..3a0fc6f0d4 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/kitchen_reagent_containers.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/kitchen_reagent_containers.yml @@ -6,7 +6,6 @@ components: - type: SolutionContainer maxVol: 50 - caps: AddTo, RemoveFrom contents: reagents: - ReagentId: chem.Flour diff --git a/Resources/Prototypes/Entities/Objects/Consumable/trash_drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/trash_drinks.yml index 16cb3c0946..5364681a1f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/trash_drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/trash_drinks.yml @@ -1,4 +1,4 @@ -# These can still be used as containers +# These can still be used as containers - type: entity name: base empty bottle parent: BaseItem @@ -12,7 +12,6 @@ - type: SolutionContainer maxVol: 10 - caps: AddTo, RemoveFrom - type: Pourable transferAmount: 5 - type: Drink diff --git a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml index 6eb6422959..7070e43629 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml @@ -14,7 +14,7 @@ size: 10 - type: SolutionContainer maxVol: 100 - caps: AddTo, RemoveFrom, NoExamine + caps: AddTo, RemoveFrom contents: reagents: - ReagentId: chem.Water diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index 45e43067c9..28bfe4a37c 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -13,7 +13,7 @@ - type: SolutionContainer fillingState: beaker maxVol: 50 - caps: AddTo, RemoveFrom, FitsInDispenser # can add and remove solutions and fits in the chemmaster. + caps: CanExamine, AddTo, RemoveFrom, FitsInDispenser # can add and remove solutions and fits in the chemmaster. - type: Pourable transferAmount: 5.0 - type: Spillable @@ -34,7 +34,7 @@ - type: SolutionContainer fillingState: beakerlarge maxVol: 100 - caps: AddTo, RemoveFrom, FitsInDispenser + caps: CanExamine, AddTo, RemoveFrom, FitsInDispenser - type: Pourable transferAmount: 5.0 - type: Spillable @@ -53,7 +53,6 @@ fillingState: dropper fillingSteps: 2 maxVol: 5 - caps: AddTo, RemoveFrom - type: Pourable transferAmount: 5.0 - type: Spillable @@ -71,7 +70,6 @@ fillingState: syringe fillingSteps: 5 maxVol: 15 - caps: AddTo, RemoveFrom - type: Injector injectOnly: false - type: Spillable @@ -87,7 +85,6 @@ - type: Drink - type: SolutionContainer maxVol: 30 - caps: AddTo, RemoveFrom - type: Pourable transferAmount: 5 - type: Spillable @@ -104,4 +101,4 @@ - type: Pill - type: SolutionContainer maxVol: 50 - caps: RemoveFrom + caps: None diff --git a/Resources/Prototypes/Entities/Objects/Specific/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/janitor.yml index 2792c4b479..4b4ba32251 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/janitor.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseItem name: mop id: MopItem @@ -13,7 +13,6 @@ - type: Mop - type: SolutionContainer maxVol: 10 - caps: AddTo, RemoveFrom - type: LoopingSound - type: entity @@ -33,7 +32,6 @@ - type: LoopingSound - type: SolutionContainer maxVol: 500 - caps: AddTo, RemoveFrom - type: Physics mass: 5 anchored: false @@ -65,7 +63,6 @@ - type: LoopingSound - type: SolutionContainer maxVol: 500 - caps: AddTo, RemoveFrom - type: Physics mass: 5 anchored: false @@ -219,7 +216,6 @@ components: - type: SolutionContainer maxVol: 100 - caps: AddTo, RemoveFrom contents: reagents: - ReagentId: chem.Water @@ -234,7 +230,6 @@ components: - type: SolutionContainer maxVol: 100 - caps: AddTo, RemoveFrom contents: reagents: - ReagentId: chem.SpaceCleaner diff --git a/Resources/Prototypes/Entities/Objects/Specific/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/seeds.yml index d4e6acff32..c98868dd24 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/seeds.yml @@ -1,11 +1,11 @@ -- type: entity +- type: entity parent: BaseItem id: SeedBase abstract: true components: - type: Seed - type: SolutionContainer - caps: NoExamine + caps: None - type: Sprite sprite: Objects/Specific/Hydroponics/seeds.rsi state: seed diff --git a/Resources/Prototypes/Entities/Objects/Tools/botany_tools.yml b/Resources/Prototypes/Entities/Objects/Tools/botany_tools.yml index c3b1f3d47e..b4dceedbf2 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/botany_tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/botany_tools.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: mini hoe parent: BaseItem id: MiniHoe @@ -24,7 +24,7 @@ state: plantbgone - type: SolutionContainer maxVol: 100 - caps: RemoveFrom, NoExamine + caps: RemoveFrom contents: reagents: - ReagentId: chem.PlantBGone @@ -42,7 +42,7 @@ state: weedspray - type: SolutionContainer maxVol: 50 - caps: RemoveFrom, NoExamine + caps: RemoveFrom contents: reagents: - ReagentId: chem.WeedKiller @@ -65,7 +65,7 @@ state: pestspray - type: SolutionContainer maxVol: 50 - caps: RemoveFrom, NoExamine + caps: RemoveFrom contents: reagents: - ReagentId: chem.PestKiller diff --git a/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml b/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml index e839e1ad94..0545aad5fd 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: haycutters parent: BaseItem id: Haycutters @@ -114,7 +114,7 @@ - type: ItemStatus - type: SolutionContainer maxVol: 50 - caps: AddTo, NoExamine + caps: AddTo contents: reagents: - ReagentId: chem.WeldingFuel diff --git a/Resources/Prototypes/Entities/Objects/Tools/welders.yml b/Resources/Prototypes/Entities/Objects/Tools/welders.yml index d36404eeb6..7906328243 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/welders.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/welders.yml @@ -20,7 +20,7 @@ - type: ItemStatus - type: SolutionContainer maxVol: 100 - caps: AddTo, NoExamine + caps: AddTo contents: reagents: - ReagentId: chem.WeldingFuel @@ -44,7 +44,7 @@ sprite: Objects/Tools/welder_experimental.rsi - type: SolutionContainer maxVol: 1000 - caps: AddTo, NoExamine + caps: AddTo contents: reagents: - ReagentId: chem.WeldingFuel @@ -66,7 +66,7 @@ sprite: Objects/Tools/welder_mini.rsi - type: SolutionContainer maxVol: 25 - caps: AddTo, NoExamine + caps: AddTo contents: reagents: - ReagentId: chem.WeldingFuel diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml index f4b358ccb2..6df83f9c61 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: spear parent: BaseItem id: Spear @@ -22,7 +22,6 @@ - type: MeleeChemicalInjector - type: SolutionContainer maxVol: 5 - caps: AddTo, RemoveFrom - type: Pourable - type: MeleeWeaponAnimation diff --git a/Resources/Prototypes/Entities/puddle.yml b/Resources/Prototypes/Entities/puddle.yml index e14548bfd3..1cb3ec9b43 100644 --- a/Resources/Prototypes/Entities/puddle.yml +++ b/Resources/Prototypes/Entities/puddle.yml @@ -8,7 +8,6 @@ - type: Sprite drawdepth: FloorObjects - type: SolutionContainer - caps: AddTo, RemoveFrom - type: Puddle spill_sound: /Audio/Effects/Fluids/splat.ogg recolor: true From ff79798c2a461a4a63f65e968e60fb0bf284bde0 Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 7 Jan 2021 00:25:06 +0000 Subject: [PATCH 053/166] Adds SimpleMobBase for NPCs. (#2932) * Initial * Initial2 * Abstraction --- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 58 ++++-------- .../Prototypes/Entities/Mobs/NPCs/pets.yml | 77 ++-------------- .../Entities/Mobs/NPCs/simplemob.yml | 90 +++++++++++++++++++ 3 files changed, 110 insertions(+), 115 deletions(-) create mode 100644 Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 3b8bc5a20a..5eddf07663 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -9,11 +9,6 @@ drawdepth: Mobs suffix: AI components: - - type: AiController - logic: Civilian - - type: AiFactionTag - factions: - - SimpleNeutral - type: MovementSpeedModifier baseWalkSpeed : 4 baseSprintSpeed : 4 @@ -33,12 +28,10 @@ bounds: "-0.30,-0.25,0.40,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Damageable - type: MobState thresholds: @@ -60,6 +53,9 @@ - type: DamageStateVisualizer normal: monkey dead: dead + - type: FireVisualizer + sprite: Mobs/Effects/onfire.rsi + normalState: Monkey_burning - type: Pullable - type: Butcherable meat: FoodMeat @@ -67,7 +63,7 @@ - type: entity save: false name: gorilla - parent: MonkeyMob_Content + parent: SimpleMobBase id: GorillaMob_Content description: Smashes, roars, looks cool. Don't stand near one. drawdepth: Mobs @@ -87,12 +83,10 @@ bounds: "-0.90,-0.50,0.05,0.50" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -102,7 +96,7 @@ - type: entity save: false name: chicken - parent: MonkeyMob_Content + parent: SimpleMobBase id: ChickenMob_Content description: Comes before an egg, and IS a dinosaur! drawdepth: Mobs @@ -122,12 +116,10 @@ bounds: "-0.45,-0.20,0.10,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -137,7 +129,7 @@ - type: entity save: false name: butterfly - parent: MonkeyMob_Content + parent: SimpleMobBase id: ButterflyMob_Content description: Despite popular misconceptions, it's not actually made of butter. drawdepth: Mobs @@ -160,12 +152,10 @@ bounds: "-0.20,-0.20,0.20,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: RandomSpriteColor state: butterfly colors: @@ -185,7 +175,7 @@ - type: entity save: false name: bat - parent: MonkeyMob_Content + parent: SimpleMobBase id: BatMob_Content description: Some cultures find them terrifying, others crunchy on the teeth. drawdepth: Mobs @@ -208,12 +198,10 @@ bounds: "-0.20,-0.20,0.20,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -223,7 +211,7 @@ - type: entity save: false name: bee - parent: MonkeyMob_Content + parent: SimpleMobBase id: BeeMob_Content description: Nice to have, but you can't build a civilization on a foundation of honey alone. drawdepth: Mobs @@ -247,12 +235,10 @@ bounds: "-0.10,-0.10,0.10,0.10" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -262,7 +248,7 @@ - type: entity save: false name: goat - parent: MonkeyMob_Content + parent: SimpleMobBase id: GoatMob_Content description: His spine consists of long sharp segments, no wonder he is so grumpy. drawdepth: Mobs @@ -282,12 +268,10 @@ bounds: "-0.60,-0.50,0.05,0.50" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -298,7 +282,7 @@ - type: entity save: false name: goose - parent: MonkeyMob_Content + parent: SimpleMobBase id: GooseMob_Content description: Its stomach and mind are an enigma beyond human comprehension. drawdepth: Mobs @@ -318,12 +302,10 @@ bounds: "-0.45,-0.35,0.45,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -334,7 +316,7 @@ - type: entity save: false name: parrot - parent: MonkeyMob_Content + parent: SimpleMobBase id: ParrotMob_Content description: Infiltrates your domain, spies on you, and somehow still a cool pet. drawdepth: Mobs @@ -357,12 +339,10 @@ bounds: "-0.30,-0.35,0.35,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -372,7 +352,7 @@ - type: entity save: false name: snake - parent: MonkeyMob_Content + parent: SimpleMobBase id: SnakeMob_Content description: Hissss! Bites aren't poisonous. drawdepth: Mobs @@ -392,12 +372,10 @@ bounds: "-0.30,-0.30,0.25,0.30" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -410,7 +388,7 @@ - type: entity save: false name: tarantula - parent: MonkeyMob_Content + parent: SimpleMobBase id: GiantSpiderMob_Content description: Widely recognized to be the literal worst thing in existence. drawdepth: Mobs @@ -430,12 +408,10 @@ bounds: "-0.30,-0.40,0.45,0.40" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -445,7 +421,7 @@ - type: entity save: false name: crab - parent: MonkeyMob_Content + parent: SimpleMobBase id: CrabMob_Content description: A folk legend goes around that his claw snaps spacemen out of existance over distasteful remarks. Be polite and tolerant for your own safety. drawdepth: Mobs @@ -465,12 +441,10 @@ bounds: "-0.40,-0.35,0.20,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -480,7 +454,7 @@ - type: entity save: false name: penguin - parent: MonkeyMob_Content + parent: SimpleMobBase id: PenguinMob_Content description: Their lives are constant pain due to their inner-body knees. drawdepth: Mobs @@ -500,12 +474,10 @@ bounds: "-0.50,-0.30,0.35,0.30" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 20545cb1ba..0069a58a51 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -1,66 +1,10 @@ # Bounds Guide #1D2L3U4R -- type: entity - save: false - name: based on what? - abstract: true - id: PetBaseMob_Content - description: - drawdepth: Mobs - suffix: AI - components: - - type: AiController - logic: Civilian - - type: AiFactionTag - factions: - - SimpleNeutral - - type: MovementSpeedModifier - baseWalkSpeed : 5 - baseSprintSpeed : 5 - - type: InteractionOutline - - type: Clickable - - type: Physics - anchored: false - mass: 50 - shapes: - - !type:PhysShapeAabb - bounds: "-0.30,-0.35,0.45,0.35" - mask: - - Impassable - - MobImpassable - - VaultImpassable - - SmallImpassable - layer: - - Opaque - - MobImpassable - - type: Damageable - - type: MobState - thresholds: - 0: !type:NormalMobState {} - 50: !type:CriticalMobState {} - 100: !type:DeadMobState {} - - type: HeatResistance - - type: CombatMode - - type: Teleportable - - type: Stunnable - - type: UnarmedCombat - range: 1.5 - arcwidth: 0 - arc: bite - damage: 50 - - type: MovementIgnoreGravity - - type: Appearance - visuals: - - type: DamageStateVisualizer - normal: monkey - dead: dead - - type: Pullable - - type: entity save: false name: corgi - parent: PetBaseMob_Content + parent: SimpleMobBase id: CorgiMob_Content description: Finally, a space corgi! drawdepth: Mobs @@ -79,12 +23,10 @@ bounds: "-0.50,-0.25,0.30,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -94,7 +36,7 @@ - type: entity save: false name: ian - parent: PetBaseMob_Content + parent: SimpleMobBase id: IanMob_Content description: Favorite pet corgi. drawdepth: Mobs @@ -113,12 +55,10 @@ bounds: "-0.50,-0.25,0.30,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -128,7 +68,7 @@ - type: entity save: false name: cat - parent: PetBaseMob_Content + parent: SimpleMobBase id: CatMob_Content description: Feline pet, very funny. drawdepth: Mobs @@ -147,12 +87,10 @@ bounds: "-0.45,-0.20,0.30,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -162,7 +100,7 @@ - type: entity save: false name: calico cat - parent: PetBaseMob_Content + parent: SimpleMobBase id: CatCalicoMob_Content description: Feline pet, very funny. drawdepth: Mobs @@ -174,19 +112,16 @@ layers: - map: ["enum.DamageStateVisualLayers.Base"] state: cat2 - - type: Physics shapes: - !type:PhysShapeAabb bounds: "-0.50,-0.25,0.30,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -196,7 +131,7 @@ - type: entity save: false name: sloth - parent: PetBaseMob_Content + parent: SimpleMobBase id: SlothMob_Content description: Very slow animal. For people with low energy. drawdepth: Mobs @@ -218,12 +153,10 @@ bounds: "-0.45,-0.35,0.15,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml new file mode 100644 index 0000000000..69e591833f --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml @@ -0,0 +1,90 @@ +- type: entity + save: false + abstract: true + id: SimpleMobBase + drawdepth: Mobs + suffix: AI + components: + - type: AiController + logic: Civilian + - type: AiFactionTag + factions: + - SimpleNeutral + - type: MovementSpeedModifier + baseWalkSpeed : 4 + baseSprintSpeed : 4 + - type: MovedByPressure + - type: Barotrauma + - type: DamageOnHighSpeedImpact + soundHit: /Audio/Effects/hit_kick.ogg + - type: InteractionOutline + - type: Sprite + drawdepth: Mobs + - type: Clickable + - type: Physics + anchored: false + mass: 50 + shapes: + - !type:PhysShapeAabb + mask: + - Impassable +# - MobImpassable Turns these off for now since humans don't have collisions either. + - VaultImpassable + - SmallImpassable + layer: + - Opaque +# - MobImpassable + - type: Bloodstream + max_volume: 100 + - type: Damageable + damageContainer: biologicalDamageContainer + - type: AtmosExposed + - type: Flammable + fireSpread: true + canResistFire: true + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 260 + currentTemperature: 310.15 + specificHeat: 42 + tempDamageCoefficient: 0.1 + - type: Metabolism + metabolismHeat: 5000 + radiatedHeat: 400 + implicitHeatRegulation: 5000 + sweatHeatRegulation: 5000 + shiveringHeatRegulation: 5000 + normalBodyTemperature: 310.15 + thermalRegulationTemperatureThreshold: 25 + needsGases: + Oxygen: 0.00060763888 + producesGases: + Oxygen: 0.00045572916 + CarbonDioxide: 0.00015190972 + - type: MobState + thresholds: + 0: !type:NormalMobState {} + 50: !type:CriticalMobState {} + 100: !type:DeadMobState {} + - type: HeatResistance + - type: CombatMode + - type: Teleportable + - type: Internals + - type: Stunnable + - type: UnarmedCombat + range: 1.5 + arcwidth: 0 + arc: bite + damage: 50 + - type: Appearance + visuals: + - type: BuckleVisualizer + - type: FireVisualizer + sprite: Mobs/Effects/onfire.rsi + normalState: Generic_mob_burning + - type: Pullable + - type: Buckle + - type: Butcherable + meat: FoodMeat + - type: Recyclable + safe: false From 6c10341938a52a2d2e1c30c1501799dcb4d5e19d Mon Sep 17 00:00:00 2001 From: Tarlan2 <76408146+Tarlan2@users.noreply.github.com> Date: Thu, 7 Jan 2021 02:40:42 +0200 Subject: [PATCH 054/166] Update technologies.yml (#2911) Remade the technologies pull. --- .../Catalog/Research/technologies.yml | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index 9c76c76c2a..f470d0f465 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -21,6 +21,82 @@ requiredTechnologies: - BasicResearch +- type: technology + name: "advanced botany" + id: AdvancedBotany + description: A better understanding of botany. + icon: Objects/Specific/Hydroponics/potato.rsi + requiredPoints: 1500 + requiredTechnologies: + - BiologicalTechnology + +- type: technology + name: "advanced surgery" + id: AdvancedSugery + description: Research new surgical procedures. + icon: Objects/Specific/Medical/surgery_tools.rsi + requiredPoints: 1500 + requiredTechnologies: + - BiologicalTechnology + +# Chemistry Technology Tree + +type: technology + name: "chemistry technology" + id: ChemistryTechnology + description: A crash course in chemistry. + icon: Objects/Specific/Chemistry/beakers.rsi + requiredPoints: 1000 + requiredTechnologies: + - BasicResearch + +# Security Technology Tree + +- type: technology + name: "security technology" + id: SecurityTechnology + description: Beginning of the long hard road to exosuits. + icon: Objects/Weapons/Melee/stunbaton.rsi + requiredPoints: 1000 + requiredTechnologies: + -BasicResearch + +- type: technology + name: "ballistic technology" + id: BallisticTechnology + description: Just a fancy term for guns. + icon: Objects/Weapons/Guns/Pistols/clarissa.rsi + requiredPoints: 1500 + requiredTechnologies: + -SecurityTechnology + +- type: technology + name: "direct energy technology" + id: DirectEnergyTechnology + description: Basically laser guns. + icon: Objects/Weapons/Guns/Battery/taser.rsi + requiredPoints: 1500 + requiredTechnologies: + -SecurityTechnology + +- type: technology + name: "explosives technology" + id: ExplosivesTechnology + description: Let's just start with grenades for now. + icon: Objects/Weapons/Grenades/flashbang.rsi + requiredPoints: 1500 + requiredTechnologies: + -SecurityTechnology + +- type: technology + name: "armor technology" + id: ArmorTechnology + description: Basic protective gear for security personnel. + icon: Clothing/OuterClothing/Vests/kevlar.rsi + requiredPoints: 1500 + requiredTechnologies: + -SecurityTechnology + # Data Theory Technology Tree - type: technology From a7c4571075cb70f4d04cc7a92691591278f274a4 Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 7 Jan 2021 01:35:57 +0000 Subject: [PATCH 055/166] Fixes Botanist and Mime not spawning with unique backpacks. (#2937) * Botanist and Mime fixed * Fixed some unupdated duffels. * Fix * I am so goofy --- .../Fills/Backpacks/Starter Gear/backpack.yml | 18 ++++++++++++++++++ .../Fills/Backpacks/Starter Gear/satchel.yml | 9 +++++++++ .../Entities/Clothing/Back/backpacks.yml | 2 +- .../Roles/Jobs/Civilian/botanist.yml | 4 ++-- .../Prototypes/Roles/Jobs/Civilian/clown.yml | 1 + .../Prototypes/Roles/Jobs/Civilian/mime.yml | 5 +++-- .../Roles/Jobs/Science/research_director.yml | 1 + .../Roles/Jobs/Science/scientist.yml | 1 + 8 files changed, 36 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/backpack.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/backpack.yml index 2b1fbcd9bb..02d3dac53e 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/backpack.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/backpack.yml @@ -65,6 +65,24 @@ contents: - name: BoxSurvival +- type: entity + abstract: true + parent: ClothingBackpackHydroponics + id: ClothingBackpackHydroponicsFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + +- type: entity + abstract: true + parent: ClothingBackpackMime + id: ClothingBackpackMimeFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + - type: entity abstract: true parent: ClothingBackpackChemistry diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml index a53b54fa07..0505ddeeb2 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/Starter Gear/satchel.yml @@ -65,6 +65,15 @@ contents: - name: BoxSurvival +- type: entity + abstract: true + parent: ClothingBackpackSatchelHydroponics + id: ClothingBackpackSatchelHydroponicsFilled + components: + - type: StorageFill + contents: + - name: BoxSurvival + - type: entity abstract: true parent: ClothingBackpackSatchelChemistry diff --git a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml index 614642b9e3..67ef75c4fa 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml @@ -96,7 +96,7 @@ - type: entity parent: ClothingBackpack - id: ClothingBackpackBotany + id: ClothingBackpackHydroponics name: botany backpack description: It's a backpack made of all-natural fibers. components: diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml index 462bb1d2f2..0320603fd3 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml @@ -16,11 +16,11 @@ id: BotanistGear equipment: innerclothing: ClothingUniformJumpsuitHydroponics - backpack: ClothingBackpackFilled + backpack: ClothingBackpackHydroponicsFilled shoes: ClothingShoesColorBrown idcard: BotanistPDA ears: ClothingHeadsetService outerclothing: ClothingOuterApronBotanist innerclothingskirt: ClothingUniformJumpskirtHydroponics - satchel: ClothingBackpackSatchelFilled + satchel: ClothingBackpackSatchelHydroponicsFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml index 46ef1db39b..813f466790 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml @@ -21,4 +21,5 @@ pocket1: BikeHorn idcard: ClownPDA ears: ClothingHeadsetService + satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelClownFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml index 23317a6123..1e8ed0e686 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml @@ -14,7 +14,7 @@ id: MimeGear equipment: innerclothing: ClothingUniformJumpsuitMime - backpack: ClothingBackpackFilled + backpack: ClothingBackpackMimeFilled head: ClothingHeadHatBeret belt: ClothingBeltSuspenders gloves: ClothingHandsGlovesLatex @@ -25,4 +25,5 @@ idcard: MimePDA ears: ClothingHeadsetService innerclothingskirt: ClothingUniformJumpskirtMime - + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 7a89465e6d..788f3a6365 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -24,3 +24,4 @@ ears: ClothingHeadsetScience innerclothingskirt: ClothingUniformJumpskirtResearchDirector satchel: ClothingBackpackSatchelScienceFilled + duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index e37628b019..7b4a14f302 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -22,3 +22,4 @@ ears: ClothingHeadsetScience innerclothingskirt: ClothingUniformJumpskirtScientist satchel: ClothingBackpackSatchelScienceFilled + duffelbag: ClothingBackpackDuffelFilled From 7977992e5aab505370fd7484a7453a58f4a3cf11 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Wed, 6 Jan 2021 18:48:08 -0700 Subject: [PATCH 056/166] Add kitchen knife & sliceable foods (#2891) * sliceable food, kitchen knives * sprite fixes, sounds * add to vendor * address reviews * address reviews * stereo -> mono * fix wrong amount of nutriment being removed * oops im dumb * meta.json * fix merge * probably fix test * remove all instances of [ComponentReference(typeof(IAfterInteract))] Co-authored-by: cyclowns --- Content.Client/IgnoredComponents.cs | 1 + .../Components/Chemistry/PillComponent.cs | 3 +- .../Culinary/SliceableFoodComponent.cs | 92 ++++ .../{Utensil => Culinary}/UtensilComponent.cs | 2 +- .../Components/Nutrition/DrinkComponent.cs | 1 - .../Components/Nutrition/FoodComponent.cs | 3 +- .../Weapon/Melee/MeleeWeaponComponent.cs | 4 +- Resources/Audio/Items/Culinary/chop.ogg | Bin 0 -> 6710 bytes .../Catalog/VendingMachines/dinnerware.yml | 1 + .../Entities/Objects/Consumable/food.yml | 426 ++++++++++++++++++ .../Objects/Consumable/food_containers.yml | 274 ----------- .../Objects/Weapons/Melee/cleaver.yml | 19 - .../Entities/Objects/Weapons/Melee/knife.yml | 49 ++ .../apple_cake.rsi/icon.png | Bin .../apple_cake.rsi/meta.json | 0 .../bananabread.rsi/icon.png | Bin .../bananabread.rsi/meta.json | 0 .../birthdaycake.rsi/icon.png | Bin .../birthdaycake.rsi/meta.json | 0 .../braincake.rsi/icon.png | Bin .../braincake.rsi/meta.json | 0 .../bread.rsi/icon.png | Bin .../bread.rsi/meta.json | 0 .../carrotcake.rsi/icon.png | Bin .../carrotcake.rsi/meta.json | 0 .../cheesecake.rsi/icon.png | Bin .../cheesecake.rsi/meta.json | 0 .../cheesewheel.rsi/icon.png | Bin .../cheesewheel.rsi/meta.json | 0 .../chocolatecake.rsi/icon.png | Bin .../chocolatecake.rsi/meta.json | 0 .../creamcheesebread.rsi/icon.png | Bin .../creamcheesebread.rsi/meta.json | 0 .../lemoncake.rsi/icon.png | Bin .../lemoncake.rsi/meta.json | 0 .../limecake.rsi/icon.png | Bin .../limecake.rsi/meta.json | 0 .../meatbread.rsi/icon.png | Bin .../meatbread.rsi/meta.json | 0 .../meatpizza.rsi/icon.png | Bin .../meatpizza.rsi/meta.json | 0 .../mushroompizza.rsi/icon.png | Bin .../mushroompizza.rsi/meta.json | 0 .../orangecake.rsi/icon.png | Bin .../orangecake.rsi/meta.json | 0 .../pizzamargherita.rsi/icon.png | Bin .../pizzamargherita.rsi/meta.json | 0 .../plaincake.rsi/icon.png | Bin .../plaincake.rsi/meta.json | 0 .../pumpkinpie.rsi/icon.png | Bin .../pumpkinpie.rsi/inhand-left.png | Bin .../pumpkinpie.rsi/inhand-right.png | Bin .../pumpkinpie.rsi/meta.json | 0 .../tofubread.rsi/icon.png | Bin .../tofubread.rsi/meta.json | 0 .../vegetablepizza.rsi/icon.png | Bin .../vegetablepizza.rsi/meta.json | 0 .../xenomeatbread.rsi/icon.png | Bin .../xenomeatbread.rsi/meta.json | 0 .../Weapons/Melee/kitchen_knife.rsi/icon.png | Bin 0 -> 319 bytes .../Melee/kitchen_knife.rsi/inhand-left.png | Bin 0 -> 308 bytes .../Melee/kitchen_knife.rsi/inhand-right.png | Bin 0 -> 306 bytes .../Weapons/Melee/kitchen_knife.rsi/meta.json | 23 + 63 files changed, 597 insertions(+), 301 deletions(-) create mode 100644 Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs rename Content.Server/GameObjects/Components/{Utensil => Culinary}/UtensilComponent.cs (98%) create mode 100644 Resources/Audio/Items/Culinary/chop.ogg delete mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Melee/cleaver.yml create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/apple_cake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/apple_cake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bananabread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bananabread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/birthdaycake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/birthdaycake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/braincake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/braincake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/carrotcake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/carrotcake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesewheel.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesewheel.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/chocolatecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/chocolatecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/creamcheesebread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/creamcheesebread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/lemoncake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/lemoncake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/limecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/limecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatbread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatbread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatpizza.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatpizza.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/mushroompizza.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/mushroompizza.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/orangecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/orangecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pizzamargherita.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pizzamargherita.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/plaincake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/plaincake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/inhand-left.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/inhand-right.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/tofubread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/tofubread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/vegetablepizza.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/vegetablepizza.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/xenomeatbread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/xenomeatbread.rsi/meta.json (100%) create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index 9c2b038dec..616a90eb8a 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -229,6 +229,7 @@ namespace Content.Client "CargoTelepad", "TraitorDeathMatchRedemption", "GlassBeaker", + "SliceableFood", "DamageOtherOnHit", "DamageOnLand" }; diff --git a/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs b/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs index 638257ac8a..9c1bd88881 100644 --- a/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Content.Server.GameObjects.Components.Body.Behavior; using Content.Server.GameObjects.Components.Nutrition; -using Content.Server.GameObjects.Components.Utensil; +using Content.Server.GameObjects.Components.Culinary; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Body; using Content.Shared.Interfaces; @@ -21,7 +21,6 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Chemistry { [RegisterComponent] - [ComponentReference(typeof(IAfterInteract))] public class PillComponent : FoodComponent, IUse, IAfterInteract { [Dependency] private readonly IEntitySystemManager _entitySystem = default!; diff --git a/Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs b/Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs new file mode 100644 index 0000000000..24fafff61e --- /dev/null +++ b/Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs @@ -0,0 +1,92 @@ +using System.Threading.Tasks; +using Content.Shared.Chemistry; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.GameObjects.EntitySystems; +using Content.Server.GameObjects.Components.Nutrition; +using Content.Server.GameObjects.Components.Chemistry; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.GameObjects; +using Robust.Shared.Containers; +using Robust.Shared.Serialization; +using Robust.Shared.Localization; +using Robust.Shared.ViewVariables; +using Robust.Shared.Utility; +using Robust.Shared.Audio; + +namespace Content.Server.GameObjects.Components.Culinary +{ + [RegisterComponent] + class SliceableFoodComponent : Component, IInteractUsing, IExamine + { + public override string Name => "SliceableFood"; + + int IInteractUsing.Priority => 1; // take priority over eating with utensils + + [ViewVariables(VVAccess.ReadWrite)] private string _slice; + private ushort _totalCount; + [ViewVariables(VVAccess.ReadWrite)] private string _sound; + + [ViewVariables(VVAccess.ReadWrite)] public ushort Count; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _slice, "slice", string.Empty); + serializer.DataField(ref _sound, "sound", "/Audio/Items/Culinary/chop.ogg"); + serializer.DataField(ref _totalCount, "count", 5); + } + + public override void Initialize() + { + base.Initialize(); + Count = _totalCount; + Owner.EnsureComponent(); + Owner.EnsureComponent(); + } + + async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + if (string.IsNullOrEmpty(_slice)) + { + return false; + } + if (!Owner.TryGetComponent(out SolutionContainerComponent solution)) + { + return false; + } + if (!eventArgs.Using.TryGetComponent(out UtensilComponent utensil) || !utensil.HasType(UtensilType.Knife)) + { + return false; + } + + var itemToSpawn = Owner.EntityManager.SpawnEntity(_slice, Owner.Transform.Coordinates); + if (eventArgs.User.TryGetComponent(out HandsComponent handsComponent)) + { + if (ContainerHelpers.IsInContainer(Owner)) + { + handsComponent.PutInHandOrDrop(itemToSpawn.GetComponent()); + } + } + + EntitySystem.Get().PlayAtCoords(_sound, Owner.Transform.Coordinates, + AudioParams.Default.WithVolume(-2)); + + Count--; + if (Count < 1) + { + Owner.Delete(); + return true; + } + solution.TryRemoveReagent("chem.Nutriment", solution.CurrentVolume / ReagentUnit.New(Count + 1)); + return true; + } + + public void Examine(FormattedMessage message, bool inDetailsRange) + { + message.AddMarkup(Loc.GetString($"There are { Count } slices remaining.")); + } + } +} diff --git a/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs b/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs similarity index 98% rename from Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs rename to Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs index b3dfe87c6b..e86a311463 100644 --- a/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs +++ b/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs @@ -16,7 +16,7 @@ using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; -namespace Content.Server.GameObjects.Components.Utensil +namespace Content.Server.GameObjects.Components.Culinary { [RegisterComponent] public class UtensilComponent : Component, IAfterInteract diff --git a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs index 0507646acb..6ea6074a46 100644 --- a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs @@ -30,7 +30,6 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Nutrition { [RegisterComponent] - [ComponentReference(typeof(IAfterInteract))] public class DrinkComponent : Component, IUse, IAfterInteract, ISolutionChange, IExamine, ILand { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; diff --git a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs index 1b07a6bdce..94fef359b0 100644 --- a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs @@ -7,7 +7,7 @@ using Content.Server.GameObjects.Components.Body.Behavior; using Content.Server.GameObjects.Components.Chemistry; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; -using Content.Server.GameObjects.Components.Utensil; +using Content.Server.GameObjects.Components.Culinary; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Body; using Content.Shared.Interfaces; @@ -26,7 +26,6 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Nutrition { [RegisterComponent] - [ComponentReference(typeof(IAfterInteract))] public class FoodComponent : Component, IUse, IAfterInteract { [Dependency] private readonly IEntitySystemManager _entitySystem = default!; diff --git a/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs b/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs index 7630debec0..6fd87d0236 100644 --- a/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Content.Server.GameObjects.EntitySystems; @@ -65,7 +65,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee serializer.DataField(this, x => x.Arc, "arc", "default"); serializer.DataField(this, x => x.ClickArc, "clickArc", "punch"); serializer.DataField(this, x => x._hitSound, "hitSound", "/Audio/Weapons/genhit1.ogg"); - serializer.DataField(this, x => x._missSound, "hitSound", "/Audio/Weapons/punchmiss.ogg"); + serializer.DataField(this, x => x._missSound, "missSound", "/Audio/Weapons/punchmiss.ogg"); serializer.DataField(this, x => x.ArcCooldownTime, "arcCooldownTime", 1f); serializer.DataField(this, x => x.CooldownTime, "cooldownTime", 1f); serializer.DataField(this, x => x.DamageType, "damageType", DamageType.Blunt); diff --git a/Resources/Audio/Items/Culinary/chop.ogg b/Resources/Audio/Items/Culinary/chop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..87111639734441a70a91551d96edb7e714868311 GIT binary patch literal 6710 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 N44$rjF6*2UngEKvbBzE1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f253c30b7a7bb447137fd5ce3b2a96983cd340 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSJOMr-u0Xo3u5QVaB}PU@=ku_z{}NpA@#_;UZ(Xf( zXU+$22sOB9{NRz!c^}P_3`IS?J1mTYj4vB|Da?5^>ByuIgeE9_VDuX%whi!$u#YW;^o%G2?~u20>(<*4MOaTnVa~%_;`Fg xJlnQ1x+tki8XK(ayUmxTk?XKdnVp4!p>h(t_0o;2?f~s#@O1TaS?83{1OVVQVdMY+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3aec224798ca7e6e259498456b238cab53aa38 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSJOMr-uK)l4udA!OfB(Lbkx}5K zmpMRj#*!evU)e_1!5cyiE*d|0q;uX!^CUx2Pwx&3;~?Y9#$F0@9!)wjDMTSy(^}tHH?*_cSatIX zi6uaKt%jkw=n=CgL16`7iy5W48O;5pq_^al1Ojc1^K@|xvFJ@ska&22apqyBBaA1Q zlpJhWBNdoBLMQ&{;dE&F%;40popH6P4aYOaHC%27AF%TAOjyFm+@ru4rowoQP2u3n x1_1$PK_3s#muxfUG~ecnV6t?WC(I5E6H@~Y+j^$m@j#mxJYD@<);T3K0RVbSXzl<2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json new file mode 100644 index 0000000000..686b875dea --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/baeadc0388aba2e74106f99b1551a465b825e3b1", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From 429851140a083c43b8df002da40c615e53616763 Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 7 Jan 2021 06:27:46 +0000 Subject: [PATCH 057/166] Moves Filled stuff to Catalog/Fills. (#2938) * Moved boxes * Toolboxes * Gas Tanks * Fixed that last commit * Large gas tanks shouldn't fit on belts --- .../Fills/Boxes/food.yml} | 0 .../Fills/Boxes/general.yml} | 0 .../Fills/Boxes/medical.yml} | 0 .../Fills/Boxes/science.yml} | 0 .../Fills/Boxes/security.yml} | 0 .../Prototypes/Catalog/Fills/gas_tanks.yml | 121 +++++++++++++++ .../Prototypes/Catalog/Fills/toolboxes.yml | 69 +++++++++ .../{Boxes/boxbase.yml => Misc/box.yml} | 0 .../Entities/Objects/Tools/gas_tanks.yml | 138 ------------------ .../Entities/Objects/Tools/toolbox.yml | 70 --------- 10 files changed, 190 insertions(+), 208 deletions(-) rename Resources/Prototypes/{Entities/Objects/Boxes/boxes_food.yml => Catalog/Fills/Boxes/food.yml} (100%) rename Resources/Prototypes/{Entities/Objects/Boxes/boxes_general.yml => Catalog/Fills/Boxes/general.yml} (100%) rename Resources/Prototypes/{Entities/Objects/Boxes/boxes_medical.yml => Catalog/Fills/Boxes/medical.yml} (100%) rename Resources/Prototypes/{Entities/Objects/Boxes/boxes_science.yml => Catalog/Fills/Boxes/science.yml} (100%) rename Resources/Prototypes/{Entities/Objects/Boxes/boxes_security.yml => Catalog/Fills/Boxes/security.yml} (100%) create mode 100644 Resources/Prototypes/Catalog/Fills/gas_tanks.yml create mode 100644 Resources/Prototypes/Catalog/Fills/toolboxes.yml rename Resources/Prototypes/Entities/Objects/{Boxes/boxbase.yml => Misc/box.yml} (100%) diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxes_food.yml b/Resources/Prototypes/Catalog/Fills/Boxes/food.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Boxes/boxes_food.yml rename to Resources/Prototypes/Catalog/Fills/Boxes/food.yml diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml rename to Resources/Prototypes/Catalog/Fills/Boxes/general.yml diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxes_medical.yml b/Resources/Prototypes/Catalog/Fills/Boxes/medical.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Boxes/boxes_medical.yml rename to Resources/Prototypes/Catalog/Fills/Boxes/medical.yml diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxes_science.yml b/Resources/Prototypes/Catalog/Fills/Boxes/science.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Boxes/boxes_science.yml rename to Resources/Prototypes/Catalog/Fills/Boxes/science.yml diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxes_security.yml b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Boxes/boxes_security.yml rename to Resources/Prototypes/Catalog/Fills/Boxes/security.yml diff --git a/Resources/Prototypes/Catalog/Fills/gas_tanks.yml b/Resources/Prototypes/Catalog/Fills/gas_tanks.yml new file mode 100644 index 0000000000..2d88feee39 --- /dev/null +++ b/Resources/Prototypes/Catalog/Fills/gas_tanks.yml @@ -0,0 +1,121 @@ +- type: entity + id: OxygenTankFilled + parent: OxygenTank + name: oxygen tank + description: A tank of oxygen. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 70 + moles: + - 22.6293856 # oxygen + temperature: 293.15 + +- type: entity + id: YellowOxygenTankFilled + parent: OxygenTankFilled + name: oxygen tank + description: A tank of oxygen. This one is in yellow. + suffix: Filled + components: + - type: Sprite + sprite: Objects/Tanks/yellow.rsi + - type: Clothing + sprite: Objects/Tanks/yellow.rsi + +- type: entity + id: RedOxygenTankFilled + parent: OxygenTankFilled + name: oxygen tank + description: A tank of oxygen. This one is in yellow. + suffix: Filled + components: + - type: Sprite + sprite: Objects/Tanks/red.rsi + - type: Clothing + sprite: Objects/Tanks/red.rsi + +- type: entity + id: EmergencyOxygenTankFilled + parent: EmergencyOxygenTank + name: emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 2 + moles: + - 0.323460326 # oxygen + temperature: 293.15 + +- type: entity + id: ExtendedEmergencyOxygenTankFilled + parent: ExtendedEmergencyOxygenTank + name: extended-capacity emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 6 + moles: + - 0.969830813 # oxygen + temperature: 293.15 + +- type: entity + id: DoubleEmergencyOxygenTankFilled + parent: DoubleEmergencyOxygenTank + name: double emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 10 + moles: + - 1.61721219 # oxygen + temperature: 293.15 + +- type: entity + id: AirTankFilled + parent: GasTankBase + name: air tank + description: Mixed anyone? + suffix: Filled + components: + - type: Sprite + sprite: Objects/Tanks/generic.rsi + - type: GasTank + outputPressure: 101.325 + air: + volume: 70 + moles: + - 4.75217098 # oxygen + - 17.8772147 # nitrogen + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/generic.rsi + +- type: entity + id: PhoronTankFilled + parent: PhoronTank + name: phoron tank + suffix: Filled + description: "Contains dangerous phoron. Do not inhale. Warning: extremely flammable." + components: + - type: GasTank + outputPressure: 101.325 + air: + volume: 70 + moles: + - 0 + - 0 + - 0 + - 11.3146928 # phoron + temperature: 293.15 diff --git a/Resources/Prototypes/Catalog/Fills/toolboxes.yml b/Resources/Prototypes/Catalog/Fills/toolboxes.yml new file mode 100644 index 0000000000..d666245826 --- /dev/null +++ b/Resources/Prototypes/Catalog/Fills/toolboxes.yml @@ -0,0 +1,69 @@ +- type: entity + id: ToolboxEmergencyFilled + name: emergency toolbox + parent: ToolboxEmergency + suffix: Filled + components: + - type: StorageFill + contents: + - name: ClothingMaskBreath + amount: 2 + - name: FoodChocolateBar + - name: FlashlightLantern + amount: 2 + - name: HarmonicaInstrument + prob: 0.15 + orGroup: HarmonicaOrChocolate + - name: FoodChocolateBar + orGroup: HarmonicaOrChocolate + +- type: entity + id: ToolboxElectricalFilled + name: electrical toolbox + suffix: Filled + parent: ToolboxElectrical + components: + - type: StorageFill + contents: + - name: Screwdriver + - name: Crowbar + - name: Wirecutter + - name: ApcExtensionCableStack + - name: MVWireStack + - name: ClothingHandsGlovesColorYellow + prob: 0.05 + orGroup: GlovesOrWires + - name: HVWireStack + orGroup: GlovesOrWires + +- type: entity + id: ToolboxSyndicateFilled + name: suspicious toolbox + suffix: Filled + parent: ToolboxSyndicate + components: + - type: StorageFill + contents: + - name: Screwdriver + - name: Wrench + - name: Welder + - name: Crowbar + - name: Multitool + - name: Wirecutter + - name: ClothingHandsGlovesCombat + +- type: entity + id: ToolboxGoldFilled + name: golden toolbox + parent: ToolboxGolden + suffix: Filled + components: + - type: StorageFill + contents: + - name: GoldStack + amount: 5 + - name: DrinkGoldenCup + prob: 0.05 + orGroup: CupOrGold + - name: GoldStack + orGroup: CupOrGold diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxbase.yml b/Resources/Prototypes/Entities/Objects/Misc/box.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Boxes/boxbase.yml rename to Resources/Prototypes/Entities/Objects/Misc/box.yml diff --git a/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml b/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml index 26e3cc5788..6b219b7c63 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml @@ -15,9 +15,6 @@ - type: Clothing sprite: Objects/Tanks/generic.rsi QuickEquip: false - Slots: - - Back - - Belt - type: GasTank - type: ItemActions actions: @@ -41,22 +38,6 @@ sprite: Objects/Tanks/oxygen.rsi Slots: - Back - - Belt - -- type: entity - id: OxygenTankFilled - parent: OxygenTank - name: oxygen tank - description: A tank of oxygen. - suffix: Filled - components: - - type: GasTank - outputPressure: 21.27825 - air: - volume: 70 - moles: - - 22.6293856 # oxygen - temperature: 293.15 - type: entity id: YellowOxygenTank @@ -71,22 +52,6 @@ sprite: Objects/Tanks/yellow.rsi Slots: - Back - - Belt - -- type: entity - id: YellowOxygenTankFilled - parent: OxygenTankFilled - name: oxygen tank - description: A tank of oxygen. This one is in yellow. - suffix: Filled - components: - - type: Sprite - sprite: Objects/Tanks/yellow.rsi - - type: Clothing - sprite: Objects/Tanks/yellow.rsi - Slots: - - Back - - Belt - type: entity id: RedOxygenTank @@ -101,22 +66,6 @@ sprite: Objects/Tanks/red.rsi Slots: - Back - - Belt - -- type: entity - id: RedOxygenTankFilled - parent: OxygenTankFilled - name: oxygen tank - description: A tank of oxygen. This one is in yellow. - suffix: Filled - components: - - type: Sprite - sprite: Objects/Tanks/red.rsi - - type: Clothing - sprite: Objects/Tanks/red.rsi - Slots: - - Back - - Belt - type: entity id: EmergencyOxygenTank @@ -138,21 +87,6 @@ - Pocket - Belt -- type: entity - id: EmergencyOxygenTankFilled - parent: EmergencyOxygenTank - name: emergency oxygen tank - description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. - suffix: Filled - components: - - type: GasTank - outputPressure: 21.27825 - air: - volume: 2 - moles: - - 0.323460326 # oxygen - temperature: 293.15 - - type: entity id: ExtendedEmergencyOxygenTank parent: EmergencyOxygenTank @@ -173,21 +107,6 @@ - Pocket - Belt -- type: entity - id: ExtendedEmergencyOxygenTankFilled - parent: ExtendedEmergencyOxygenTank - name: extended-capacity emergency oxygen tank - description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. - suffix: Filled - components: - - type: GasTank - outputPressure: 21.27825 - air: - volume: 6 - moles: - - 0.969830813 # oxygen - temperature: 293.15 - - type: entity id: DoubleEmergencyOxygenTank parent: ExtendedEmergencyOxygenTank @@ -208,21 +127,6 @@ - Pocket - Belt -- type: entity - id: DoubleEmergencyOxygenTankFilled - parent: DoubleEmergencyOxygenTank - name: double emergency oxygen tank - description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. - suffix: Filled - components: - - type: GasTank - outputPressure: 21.27825 - air: - volume: 10 - moles: - - 1.61721219 # oxygen - temperature: 293.15 - - type: entity id: AirTank parent: GasTankBase @@ -241,30 +145,6 @@ sprite: Objects/Tanks/generic.rsi Slots: - Back - - Belt - -- type: entity - id: AirTankFilled - parent: GasTankBase - name: air tank - description: Mixed anyone? - suffix: Filled - components: - - type: Sprite - sprite: Objects/Tanks/generic.rsi - - type: GasTank - outputPressure: 101.325 - air: - volume: 70 - moles: - - 4.75217098 # oxygen - - 17.8772147 # nitrogen - temperature: 293.15 - - type: Clothing - sprite: Objects/Tanks/generic.rsi - Slots: - - Back - - Belt - type: entity id: PhoronTank @@ -284,21 +164,3 @@ sprite: Objects/Tanks/phoron.rsi Slots: - Belt - -- type: entity - id: PhoronTankFilled - parent: PhoronTank - name: phoron tank - suffix: Filled - description: "Contains dangerous phoron. Do not inhale. Warning: extremely flammable." - components: - - type: GasTank - outputPressure: 101.325 - air: - volume: 70 - moles: - - 0 - - 0 - - 0 - - 11.3146928 # phoron - temperature: 293.15 diff --git a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml index 282b5d590f..ec91c98612 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml @@ -24,25 +24,6 @@ - type: Item sprite: Objects/Tools/Toolboxes/toolbox_red.rsi -- type: entity - id: ToolboxEmergencyFilled - name: emergency toolbox - parent: ToolboxEmergency - suffix: Filled - components: - - type: StorageFill - contents: - - name: ClothingMaskBreath - amount: 2 - - name: FoodChocolateBar - - name: FlashlightLantern - amount: 2 - - name: HarmonicaInstrument - prob: 0.15 - orGroup: HarmonicaOrChocolate - - name: FoodChocolateBar - orGroup: HarmonicaOrChocolate - - type: entity name: mechanical toolbox parent: ToolboxBase @@ -67,25 +48,6 @@ - type: Item sprite: Objects/Tools/Toolboxes/toolbox_yellow.rsi -- type: entity - id: ToolboxElectricalFilled - name: electrical toolbox - suffix: Filled - parent: ToolboxElectrical - components: - - type: StorageFill - contents: - - name: Screwdriver - - name: Crowbar - - name: Wirecutter - - name: ApcExtensionCableStack - - name: MVWireStack - - name: ClothingHandsGlovesColorYellow - prob: 0.05 - orGroup: GlovesOrWires - - name: HVWireStack - orGroup: GlovesOrWires - - type: entity name: artistic toolbox parent: ToolboxBase @@ -112,22 +74,6 @@ - type: MeleeWeapon damage: 15 -- type: entity - id: ToolboxSyndicateFilled - name: suspicious toolbox - suffix: Filled - parent: ToolboxSyndicate - components: - - type: StorageFill - contents: - - name: Screwdriver - - name: Wrench - - name: Welder - - name: Crowbar - - name: Multitool - - name: Wirecutter - - name: ClothingHandsGlovesCombat - - type: entity name: golden toolbox parent: ToolboxBase @@ -139,19 +85,3 @@ state: icon - type: Item sprite: Objects/Tools/Toolboxes/toolbox_gold.rsi - -- type: entity - id: ToolboxGoldFilled - name: golden toolbox - parent: ToolboxGolden - suffix: Filled - components: - - type: StorageFill - contents: - - name: GoldStack - amount: 5 - - name: DrinkGoldenCup - prob: 0.05 - orGroup: CupOrGold - - name: GoldStack - orGroup: CupOrGold From 2b195fccb9a95cf74c31cd64af72c65bca64f3e7 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Thu, 7 Jan 2021 00:31:43 -0600 Subject: [PATCH 058/166] Chemical reaction refactor (#2936) * Moves ContainsReagent from SolutionContainer to Solution GetMajorReagentId from SOlutionContainer to Solution Makes capability checks use HasFlag Moves Solution Color calculation from SolutionContainer to Solution Replaces SolutionContainerCaps.NoExamine with CanExamine Misc SolutionContainer.Capabilities yaml cleanup * Moves IReactionEffect from server to shared * Moves ReactionPrototype from server to shared * Moves SolutionValidReaction from SolutionContainer to ChemicalReactionSystem * Moves PerformReaction from SolutionContainer to ChemicalReactionSystem * Moves CheckForReaction from SolutionContainer to ChemicalReactionSystem * Removes unused SolutionContainer methods * Removes now-unused GetMajorReagentId from SOlutionContainer * ChemicalReactionSystem comments * Replaces usage of SolutionContainer.ContainsReagent and replaces it with SolutionContainer.Solution.ContainsReagent * ChemicalReactionSystem ProcessReactions * Moves ExplosionReactionEffect to shared, comments out server code, TODO: figure out how to let ReactionEffects in shared do server stuff * Fixes SolutionContainer.CheckForReaction infinite recursion * Moves IReactionEffect and ExplosionReactionEffect back to server * Moves ChemicalReactionSystem and ReactionPrototype back to server * Uncomments out Explosion code * namespace fixes * Moves ReactionPrototype and IReactionEffect from Server to Shared * Moves ChemicalReactionSystem from Server to Shared * ChemicalReaction code partial rewrite * Moves CanReact and PerformReaction to Solution * Revert "Moves CanReact and PerformReaction to Solution" This reverts commit bab791c3ebd0ff39d22f2610e27ca04f0d46d6b8. * Moves ChemistrySystem from Server to Shared * diff fix * TODO warning Co-authored-by: py01 --- .../ExplosionReactionEffect.cs | 2 +- .../Chemistry/RehydratableComponent.cs | 2 +- .../Chemistry/SolutionContainerComponent.cs | 115 +------------- .../TransformableContainerComponent.cs | 6 +- .../Components/Kitchen/MicrowaveComponent.cs | 7 +- .../Chemistry/ReactionPrototype.cs | 17 +- .../EntitySystems/ChemicalReactionSystem.cs | 150 ++++++++++++++++++ .../EntitySystems/ChemistrySystem.cs | 4 +- .../Interfaces/Chemistry/IReactionEffect.cs | 2 +- 9 files changed, 179 insertions(+), 126 deletions(-) rename {Content.Server => Content.Shared}/Chemistry/ReactionPrototype.cs (79%) create mode 100644 Content.Shared/GameObjects/EntitySystems/ChemicalReactionSystem.cs rename {Content.Server => Content.Shared}/GameObjects/EntitySystems/ChemistrySystem.cs (94%) rename {Content.Server => Content.Shared}/Interfaces/Chemistry/IReactionEffect.cs (87%) diff --git a/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs b/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs index f552652678..d9cb1b4b3c 100644 --- a/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs +++ b/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Server.Explosions; using Content.Server.GameObjects.Components.Chemistry; using Content.Server.Interfaces.Chemistry; diff --git a/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs b/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs index a6194d8efb..e5cc33c2ff 100644 --- a/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/RehydratableComponent.cs @@ -1,7 +1,7 @@ #nullable enable -using Content.Server.GameObjects.EntitySystems; using Content.Server.Utility; using Content.Shared.Chemistry; +using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; using Robust.Shared.Localization; diff --git a/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs b/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs index 0cfb06bcdc..48cf119f7a 100644 --- a/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/SolutionContainerComponent.cs @@ -16,6 +16,7 @@ using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; +using Robust.Shared.Log; using Robust.Shared.Maths; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; @@ -35,6 +36,7 @@ namespace Content.Server.GameObjects.Components.Chemistry [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; private IEnumerable _reactions; + private ChemicalReactionSystem _reactionSystem; private string _fillInitState; private int _fillInitSteps; private string _fillPathString = "Objects/Specific/Chemistry/fillings.rsi"; @@ -49,7 +51,6 @@ namespace Content.Server.GameObjects.Components.Chemistry ///