From 19b5d9253d5045f9ef5b4a67dd7068855035a34b Mon Sep 17 00:00:00 2001 From: Flareguy <78941145+Flareguy@users.noreply.github.com> Date: Sat, 13 May 2023 20:36:46 -0500 Subject: [PATCH] Suit storage units (#16128) --- .../Prototypes/Catalog/Fills/Crates/antag.yml | 1 - .../Catalog/Fills/Lockers/cargo.yml | 6 - .../Catalog/Fills/Lockers/heads.yml | 13 - .../Catalog/Fills/Lockers/suit_storage.yml | 233 ++++++++++++++++++ .../Storage/Closets/base_structureclosets.yml | 84 +++++++ .../Storage/suit_storage.rsi/base.png | Bin 0 -> 2334 bytes .../Storage/suit_storage.rsi/closed.png | Bin 0 -> 1587 bytes .../Storage/suit_storage.rsi/meta.json | 20 ++ .../Storage/suit_storage.rsi/welded.png | Bin 0 -> 567 bytes 9 files changed, 337 insertions(+), 20 deletions(-) create mode 100644 Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/base.png create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/closed.png create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/meta.json create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/welded.png diff --git a/Resources/Prototypes/Catalog/Fills/Crates/antag.yml b/Resources/Prototypes/Catalog/Fills/Crates/antag.yml index 24f22ebef7..e874394eaa 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/antag.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/antag.yml @@ -6,7 +6,6 @@ components: - type: StorageFill contents: - - id: ClothingOuterHardsuitPirateCap - id: ClothingNeckCloakPirateCap - id: EnergyCutlass - id: MicroBombImplanter diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/cargo.yml b/Resources/Prototypes/Catalog/Fills/Lockers/cargo.yml index a0f17e0e37..772c7013f2 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/cargo.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/cargo.yml @@ -5,12 +5,6 @@ components: - type: StorageFill contents: -# Should be moved to a suit storage unit when/if they are added. - - id: ClothingOuterHardsuitSpatio - - id: YellowOxygenTankFilled - - id: NitrogenTankFilled - - id: ClothingShoesBootsMag - - id: ClothingMaskGasExplorer # Currently do not function as 'true' mesons, so they're useless for salvagers. # - id: ClothingEyesGlassesMeson - id: ClothingBeltUtilityFilled diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index 53707fe2d8..3bb14610d9 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -40,8 +40,6 @@ - id: ClothingHeadHatCaptain - id: ClothingNeckCloakCap - id: ClothingHandsGlovesCaptain - - id: ClothingOuterHardsuitCap - - id: ClothingMaskGasCaptain - id: WeaponDisabler - id: CommsComputerCircuitboard - id: ClothingHeadsetAltCommand @@ -98,21 +96,15 @@ components: - type: StorageFill contents: - - id: ClothingOuterHardsuitEngineeringWhite - - id: ClothingMaskBreath - - id: OxygenTankFilled - - id: NitrogenTankFilled - id: ClothingNeckCloakCe - id: ClothingEyesGlassesMeson - id: ClothingBeltChiefEngineerFilled - id: ClothingHeadHatBeretEngineering - - id: ClothingShoesBootsMagAdv - id: ClothingHandsGlovesColorYellow - id: CigarCase prob: 0.15 - id: DoorRemoteEngineering - id: RubberStampCE - - id: JetpackVoidFilled - id: ClothingHeadsetAltEngineering - id: BoxEncryptionKeyEngineering @@ -132,7 +124,6 @@ - id: ClothingOuterCoatLabCmo - id: ClothingMaskSterile - id: ClothingHeadHatBeretCmo - - id: ClothingOuterHardsuitMedical - id: DiagnoserMachineCircuitboard - id: VaccinatorMachineCircuitboard prob: 0.25 @@ -157,7 +148,6 @@ - id: CircuitImprinterMachineCircuitboard - id: ClothingNeckCloakRd - id: ClothingHeadsetMedicalScience - - id: ClothingOuterHardsuitRd - id: HandTeleporter - id: PlushieSlime prob: 0.1 @@ -190,8 +180,6 @@ prob: 0.1 - id: ClothingUniformJumpskirtHoSParadeMale prob: 0.1 - - id: ClothingOuterHardsuitSecurityRed - - id: ClothingMaskGasSwat - id: ClothingShoeSlippersDuck prob: 0.2 - id: DrinkVacuumFlask @@ -209,6 +197,5 @@ - id: ClothingUniformJumpsuitHosFormal - id: RubberStampHos - id: SecurityTechFabCircuitboard - - id: JetpackSecurityFilled - id: BoxEncryptionKeySecurity - id: HoloprojectorSecurity diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml new file mode 100644 index 0000000000..ff0f001afa --- /dev/null +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -0,0 +1,233 @@ +#SOFTSUITS +#Basic EVA +- type: entity + id: SuitStorageEVA + parent: SuitStorageBase + suffix: EVA + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitEVA + - id: ClothingHeadHelmetEVA + - id: ClothingMaskBreath + +#Prisoner EVA +- type: entity + id: SuitStorageEVAPrisoner + parent: SuitStorageBase + suffix: Prisoner EVA + components: + - type: StorageFill + contents: +# - id: NitrogenTankFilled #there's no emergency nitrogen tank to match yet so i have opted to remove it. call it cost cutting measures + - id: EmergencyOxygenTankFilled + - id: ClothingOuterHardsuitEVAPrisoner + - id: ClothingHeadHelmetEVA + - id: ClothingMaskBreath + +#Syndicate EVA +- type: entity + id: SuitStorageEVASyndicate + parent: SuitStorageBase + suffix: Syndicate EVA + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitSyndicate + - id: ClothingHeadHelmetSyndicate + - id: ClothingMaskGasSyndicate + +#Pirate EVA +- type: entity + id: SuitStorageEVAPirate + parent: SuitStorageBase + suffix: Pirate EVA + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitEVAPrisoner + - id: ClothingHeadHelmetEVA + - id: ClothingMaskGas + +#HARDSUITS +#Engineering hardsuit +- type: entity + id: SuitStorageEngi + parent: SuitStorageBase + suffix: Station Engineer + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingShoesBootsMag + - id: ClothingOuterHardsuitEngineering + - id: ClothingMaskBreath + +#Atmospherics hardsuit +- type: entity + id: SuitStorageAtmos + parent: SuitStorageBase + suffix: Atmospheric Technician + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitAtmos + - id: ClothingMaskBreath + +#Security hardsuit +- type: entity + id: SuitStorageSec + parent: SuitStorageBase + suffix: Security + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitSecurity + - id: ClothingMaskBreath + +#CE's hardsuit +- type: entity + id: SuitStorageCE + parent: SuitStorageBase + suffix: Chief Engineer + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: JetpackVoidFilled + - id: ClothingShoesBootsMagAdv + - id: ClothingOuterHardsuitEngineeringWhite + - id: ClothingMaskBreath + +#CMO's hardsuit +- type: entity + id: SuitStorageCMO + parent: SuitStorageBase + suffix: Chief Medical Officer + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitMedical + - id: ClothingMaskBreathMedical + +#RD's hardsuit +- type: entity + id: SuitStorageRD + parent: SuitStorageBase + suffix: Research Director + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitRd + - id: ClothingMaskBreath + +#HOS's hardsuit +- type: entity + id: SuitStorageHOS + parent: SuitStorageBase + suffix: Head of Security + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: JetpackSecurityFilled + - id: ClothingOuterHardsuitSecurityRed + - id: ClothingMaskGasSwat + +#Warden's hardsuit +- type: entity + id: SuitStorageWarden + parent: SuitStorageBase + suffix: Warden + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitWarden + - id: ClothingMaskBreath + +#Captain's hardsuit +- type: entity + id: SuitStorageCaptain + parent: SuitStorageBase + suffix: Captain + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitCap + - id: ClothingMaskGasCaptain + +#Salvage hardsuit +- type: entity + id: SuitStorageSalv + parent: SuitStorageBase + suffix: Salvage + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: YellowOxygenTankFilled + - id: ClothingShoesBootsMag + - id: ClothingOuterHardsuitSpatio + - id: ClothingMaskGasExplorer + +#Blood-red hardsuit +- type: entity + id: SuitStorageSyndie + parent: SuitStorageBase + suffix: Syndicate Hardsuit + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitSyndie + - id: ClothingShoesBootsMagSyndie + - id: ClothingMaskGasSyndicate + +#Pirate Captain's hardsuit +- type: entity + id: SuitStoragePirateCap + parent: SuitStorageBase + suffix: Pirate Captain + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitPirateCap + - id: ClothingMaskGas + +#Wizard +- type: entity + id: SuitStorageWizard + parent: SuitStorageBase + suffix: Wizard + components: + - type: StorageFill + contents: + - id: NitrogenTankFilled + - id: OxygenTankFilled + - id: ClothingOuterHardsuitWizard + - id: ClothingMaskBreath + \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml index 6c33daa069..6b12337bf5 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -167,3 +167,87 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + +#Base suit storage unit +#I am terribly sorry for duplicating the closet almost-wholesale, but the game malds at me if I don't so here we are. +- type: entity + id: SuitStorageBase + parent: BaseStructureDynamic + name: suit storage unit + description: A fancy hi-tech storage unit made for storing space suits. + components: + - type: StaticPrice + price: 80 + - type: ResistLocker + - type: Transform + noRot: true + - type: Sprite + noRot: true + netsync: false + sprite: Structures/Storage/suit_storage.rsi + layers: + - state: base + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - type: MovedByPressure + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 5 + soundHit: + path: /Audio/Effects/bang.ogg + - type: InteractionOutline + - type: Physics + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.48,0.25,0.48" + density: 145 + mask: + - MachineMask + layer: + - MachineLayer + - type: EntityStorage + - type: ContainerContainer + containers: + entity_storage: !type:Container + - type: Weldable + - type: PlaceableSurface + placeCentered: true + isPlaceable: false + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + SheetSteel1: + min: 1 + max: 1 + - type: Appearance + visuals: + - type: StorageVisualizer + state: base + state_open: base + state_closed: closed diff --git a/Resources/Textures/Structures/Storage/suit_storage.rsi/base.png b/Resources/Textures/Structures/Storage/suit_storage.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..d663fd569c2c744700b9092de176da73990d9cff GIT binary patch literal 2334 zcmV+(3E}pMP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2(w8&?sMOp-OZ9W7(#?hcm)Zs0h9;~EpMzvEA0$bTXe9BZ3i7X+EUBVVX)H~Xh*cQ zPg+VXQfe7cQ5irWk&*&ZB8hn?n{1NZ?0fI)^xw@!%#bXO-^|@R_wK#t|IYva=R4o! z@C8tFPZb-V?}EeE4^#gDw1^4|$6>%=aEd@k(V&0_pP!4?94ov|I}V>Z^M%G1GUrjz z*>s81eQj*2^y*Dm4u&!B(%mBa3%xRJS()DSD^my zI*J`;pud;*NCvyRVtnta#WQ<0+_#Wrh8h!D3Ct`ngxg`_OU922{;|H1JC%&Wl_TS? z&M5ZRoXu7n=AV?K&i>3Ec=M6(t%=W=0wtS?jcR(E>KDyeRsI zf1k6pUEho+m;VDVteFO$Y7U+Qiy2^rW*9*QOkw!WUoK+K!YW+%hcKnAr1ztbTk}rU z)n$#5H3R;Lg3FD5+Y=8@p#TOV5)W2c0BveM*fcuk6oHlIB015ESfLxm#cup`&s5Bw zX~KIK8}j_2L}sM1k(EHr^7VLp>m!(4o`X04)Pc@u0-TvgLZsJhGB~>gm?b1VMUcEQ zoKCu?%*5jgcE0qyzGBsy%t&J+D*ILd&A*;QVwdbAWK>iXwiSd1sO-h*vhXJPyHdAQUS!?F54tbC{fzJV}W zZiG>HsSmLz&CLLQxMd4F5tUF^tD^R-fXcGc5oO3qAoZlK(fW_7^dN_%qGRQj6O?il zVSfxe_twFmQ1SbHE1(!6y8C0;@JJz=JHpUZm3qa%qu-c~XP?=KCCh5CVD4NT*!#@z z&}n2PU>F8O$qv6ifeS}FpsNOs{(2>KryZtz4_@3pA8-G5EfigZs&kO7A_TjM%0mjt zX}mzaBHP>$>(3&$unZ252X7v`fW@<_GZF5T0ZoT)m~iHDH%`}v(MdDZ_4FSwn>mQG zK)PcMe7Q3A}Lot14;2x~Ix<=1Mmys14LU zX_B6srC_u|uD14J>AcCAr-zW0fGnFS#UlFp6F73X8~x!p)s~~#-qL~3Ll%i0wO6WP z6-8jYXhLCeG5V%-lcF+IP0YuID=nF)hmbu3G|PB2kWP2cfC?+seDu)iL}7Y~8+&)% zfPJ1$b14d_m$xBr%EA_5T#~68VQm; zFqM2lQb#DN&L!Bd$#Ll~35TQ6>7W{aI%qZv`Ezlpp+FKK>C z{d6*;w}B#D?hN1uyDMQLrQ|7X4p&b4uXbr>ELF8PPJfK~l@rorhB2xsJ^%7InZ2R{ zU2zwz7AMZVa~xvC3@#c+alQ>{I21=XOlLZJd||9wb{F)R3THtTOE8H) z`}X^I{WpiD*AJb zf3BU+3g_m+GQI%&KeVFpqZ2ss#(L~}_5-Y$UyS`n8sWBCs2m)6dx8+ORL#l4S*XtI z7vSK@I{1=q?Empn|n*{-TpU1d{F}yNkAx}qoFT}esV@X-?0%fmmQ&-wQwzDGkn7I zhObrcCZ{qIV-iTAcK1rQ>DB+@_~BoW;fSK)dJ_g{$D1*$6nTYS(g+^m!7w?dAPS3Q z5*`b>+ao9_DZ+!Be+DzG_~mQMCiS?jog1ruGO9<i>d97}7#_>z`BZ zDr3)W{t6Ks+z^hioG-_gQ3yaFKslsK|7&|>=p%5NcAN8K5)`%=naO+nhEf@9ME*ynr&v% zi9|YctzAA+8(nPe^o{8LVT?(jx}uULm83ecV4PNx=hDdsDw?L-DE(<4Njo38KJqB! zL;{h7M)6}VhqWghNmx7jg3T@6J;d3VBnnc+*ku6z4+nn06#0QW0000007*qoM6N<$ Eg5HBwkpKVy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/suit_storage.rsi/closed.png b/Resources/Textures/Structures/Storage/suit_storage.rsi/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..ca43c4f47ffaa3b235732b8e93d395f2d4b17c54 GIT binary patch literal 1587 zcmV-32F&@1P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1;|N6K~z{r?N)1S z6jc=d=FV$(XLs8zmeK-+5(=~g1c_-xFi{l69~$|gF~;~)h455C2pXV;s1Ou_8k8U* zgb*VSV`6Fuv5K)F#0R!eO3R~LO3Q9(OS`XmUe65sx3e|=B#1;}5CRhr4u=pc(x4c?PrqIGPcg^5_{gWLhf3#`XOA8KWy126 ziy`tP8rJ=c_jcD2iOD$q#W}2B`Ep01FBy1l*`~_;wt`^!--1X7IZ~n?5fz|0*#e6* zOq~(|VHE3;$qv_1p(=g_Re|*39_pHjIhtHgxyK|pfvN%m#43W(o2FJOb$l&W;9T-U)&|)g0 z6+!Izs1uFndSF;8t+5@lgzYdU$4bWKBaIGU0wcr25G9d|;HKa@jUX_F!65_d*G)xV zcN*KaTt!!}fmGT=kfkk!nWjtD%;`BjllJ2H!Iyv{%aDU%*%sB11t!sIan8&bHa66N z1!Z*fjkx;Yz>)a~g=7e(PD>n;z!o^;0af!d=L=r~^wv~u0<)N+Wt~u%bLx9ke(vY9 zT{kdiS`1rv)p~11Qby)!n^C@K8|Sv;FhTU5`N5X}ry{jXGFL8DemB`a?{;Ur?z_eg z?AUSz-3b#{yN19G3-7OLL0O3kRSS#|H?oZ&P`(6R&*dYHjsgm}nYY10u@S>kpd*Ot zDKXT}(y;fdhapK4P8{k2w=A4*Ng!nw+qO-^!Q0Dm|H>c!3ed-)+7>J$S304j)y`%S z)l|IndL<1cAW5ay9oMn_gDS5Znl>+{EuQXzqtncC+)H2h5^x*`iV|@Y=A=U`ld76K z<)4|;qTaLm4VO_-reW=l8b~n>v!<0mQ!_Lh+$x0Rzz(`zDFlB7EZZ$Zy7EGC%M`7% z%{|z@p%u(9P(4v|Sz^_SR$RI^Kq(Pj4{(9omXl58OzM(_;7dT)v#>3L+UtE;DYQMD zGEq$3a8vy(#KI~LY;Pwc+K{On71=gi0uC1hM+$+mR}j7gm?YB|y*-mW5({U~9Rv!f=BhY`_qO7{NzVKIoj$Y}J0oUEK$rZ`UN&1h! z#<91d9r`^TkJZGyQhDpmOUO_fyf)?bDegFeAQ|TW?E|`zgQ*)NtK|(M3hNA~vfi@~ zKd!;OVFSAxI=zOakOxG?ktq9gPm@TN8JW^s>jz%~fnXT2s&Y{vIo)YU3YQjZSVJBV zBP!%#g;Wx7@aQABmm#xS0-1oQQZ7VAkt0QJTkwa!2Ld5z;bM|jgp=!AXlIj8%&2l@ z=Q#HH4TNbvtzBK|m1{{Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0nAB6K~z{r?Uuhv z!%!5)o2E$$(Y6T)iZylZkVX81ql4n?pg1`RzJrrb;bZs$Zi0h|id6)ulXPgSw)79! zrb+$IZC)VXAc+0J$2~cB=+|@4{gayV@6qEiF~09xhGFC##|b^pn`tx}gLo3B>8 ze%!#YI~t8n!!X=Jysah(CoQPj$0GFCdBUcmRwB%K`A zKyN%AH&Fo-aRstemLRc#c>VXGfoYnHsK7enGnr#xDj)_nptVk?bA|C5%0d*3fdFc1 znpU(dYYuT6s>uXHVgr>*MGVx@19zyvGvZ}PDnY?EVHLZe*6;T}5YI!>h!m`WM>OAx zZQHU0!&nrofgXBb$#vZw#2&P%vIMLF8wLtN5OfgBSt13&t8mL3^&!q?CB&!$z! literal 0 HcmV?d00001 -- 2.51.2