From 4fe4ba157556a4a286fd649672e742ab7bf0e54c Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 17 Sep 2022 16:05:39 -0400 Subject: [PATCH] wall mounted lockers (#11382) --- .../EntitySystems/EntityStorageSystem.cs | 27 +-- .../Catalog/Fills/Lockers/medical.yml | 19 ++ .../Prototypes/Catalog/Fills/Lockers/misc.yml | 68 ++++++ .../Storage/Closets/base_structureclosets.yml | 82 +++++++ .../Storage/Closets/wall_lockers.yml | 218 ++++++++++++++---- .../Storage/wall_locker.rsi/atmos_door.png | Bin 0 -> 434 bytes .../Storage/wall_locker.rsi/black_door.png | Bin 0 -> 404 bytes .../Storage/wall_locker.rsi/blue_door.png | Bin 0 -> 431 bytes .../Storage/wall_locker.rsi/door.png | Bin 223 -> 0 bytes .../Storage/wall_locker.rsi/emergency.png | Bin 0 -> 272 bytes .../wall_locker.rsi/emergency_door.png | Bin 0 -> 364 bytes .../wall_locker.rsi/emergency_open.png | Bin 0 -> 280 bytes .../Storage/wall_locker.rsi/fire.png | Bin 0 -> 254 bytes .../Storage/wall_locker.rsi/fire_door.png | Bin 0 -> 344 bytes .../Storage/wall_locker.rsi/fire_open.png | Bin 0 -> 291 bytes .../Storage/wall_locker.rsi/generic.png | Bin 0 -> 274 bytes .../Storage/wall_locker.rsi/generic_door.png | Bin 0 -> 341 bytes .../Storage/wall_locker.rsi/generic_open.png | Bin 0 -> 291 bytes .../Storage/wall_locker.rsi/gray_door.png | Bin 0 -> 404 bytes .../Storage/wall_locker.rsi/green_door.png | Bin 0 -> 439 bytes .../Storage/wall_locker.rsi/locked.png | Bin 148 -> 172 bytes .../Storage/wall_locker.rsi/med.png | Bin 0 -> 248 bytes .../Storage/wall_locker.rsi/med_door.png | Bin 0 -> 361 bytes .../Storage/wall_locker.rsi/med_open.png | Bin 0 -> 230 bytes .../Storage/wall_locker.rsi/meta.json | 40 ++-- .../Storage/wall_locker.rsi/mixed_door.png | Bin 0 -> 453 bytes .../Storage/wall_locker.rsi/orange_door.png | Bin 0 -> 440 bytes .../Storage/wall_locker.rsi/pink_door.png | Bin 0 -> 430 bytes .../Storage/wall_locker.rsi/red_door.png | Bin 0 -> 425 bytes .../Storage/wall_locker.rsi/unlocked.png | Bin 148 -> 177 bytes .../Storage/wall_locker.rsi/welded.png | Bin 206 -> 218 bytes .../Storage/wall_locker.rsi/white_door.png | Bin 0 -> 419 bytes .../Storage/wall_locker.rsi/yellow_door.png | Bin 0 -> 421 bytes 33 files changed, 383 insertions(+), 71 deletions(-) create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/atmos_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/black_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/blue_door.png delete mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/emergency.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/emergency_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/emergency_open.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/fire.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/fire_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/fire_open.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/generic.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/generic_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/generic_open.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/gray_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/green_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/med.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/med_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/med_open.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/mixed_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/orange_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/pink_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/red_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/white_door.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/yellow_door.png diff --git a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs index 2c86d6e6e4..dc63d70e32 100644 --- a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs @@ -12,9 +12,9 @@ using Content.Shared.Interaction; using Content.Shared.Item; using Content.Shared.Placeable; using Content.Shared.Storage; +using Content.Shared.Wall; using Content.Shared.Whitelist; using Robust.Server.Containers; -using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.Map; using Robust.Shared.Physics; @@ -24,6 +24,8 @@ namespace Content.Server.Storage.EntitySystems; public sealed class EntityStorageSystem : EntitySystem { + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly ConstructionSystem _construction = default!; [Dependency] private readonly ContainerSystem _container = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; @@ -148,7 +150,7 @@ public sealed class EntityStorageSystem : EntitySystem component.Open = true; EmptyContents(uid, component); ModifyComponents(uid, component); - SoundSystem.Play(component.OpenSound.GetSound(), Filter.Pvs(component.Owner), component.Owner); + _audio.PlayPvs(component.OpenSound, component.Owner); ReleaseGas(uid, component); RaiseLocalEvent(uid, new StorageAfterOpenEvent()); } @@ -187,7 +189,7 @@ public sealed class EntityStorageSystem : EntitySystem TakeGas(uid, component); ModifyComponents(uid, component); - SoundSystem.Play(component.CloseSound.GetSound(), Filter.Pvs(uid), uid); + _audio.PlayPvs(component.CloseSound, component.Owner); component.LastInternalOpenAttempt = default; RaiseLocalEvent(uid, new StorageAfterCloseEvent()); } @@ -265,15 +267,14 @@ public sealed class EntityStorageSystem : EntitySystem } //Checks to see if the opening position, if offset, is inside of a wall. - if (component.EnteringOffset != (0, 0)) //if the entering position is offset + if (component.EnteringOffset != (0, 0) && !HasComp(target)) //if the entering position is offset { var targetXform = Transform(target); var newCoords = new EntityCoordinates(target, component.EnteringOffset); - if (!_interactionSystem.InRangeUnobstructed(target, newCoords, collisionMask: component.EnteringOffsetCollisionFlags)) + if (!_interactionSystem.InRangeUnobstructed(target, newCoords, 0, collisionMask: component.EnteringOffsetCollisionFlags)) { if (!silent) _popupSystem.PopupEntity(Loc.GetString("entity-storage-component-cannot-open-no-space"), target, Filter.Pvs(target)); - return false; } } @@ -301,8 +302,10 @@ public sealed class EntityStorageSystem : EntitySystem return false; if (TryComp(toAdd, out var phys)) + { if (component.MaxSize < phys.GetWorldAABB().Size.X || component.MaxSize < phys.GetWorldAABB().Size.Y) return false; + } return Insert(toAdd, container, component); } @@ -326,10 +329,7 @@ public sealed class EntityStorageSystem : EntitySystem var targetIsMob = HasComp(toInsert); var storageIsItem = HasComp(container); - - var allowedToEat = whitelist == null - ? HasComp(toInsert) - : whitelist.IsValid(toInsert); + var allowedToEat = whitelist?.IsValid(toInsert) ?? HasComp(toInsert); // BEFORE REPLACING THIS WITH, I.E. A PROPERTY: // Make absolutely 100% sure you have worked out how to stop people ending up in backpacks. @@ -379,11 +379,8 @@ public sealed class EntityStorageSystem : EntitySystem if (TryComp(uid, out var surface)) _placeableSurface.SetPlaceable(uid, component.Open, surface); - if (TryComp(uid, out var appearance)) - { - appearance.SetData(StorageVisuals.Open, component.Open); - appearance.SetData(StorageVisuals.HasContents, component.Contents.ContainedEntities.Any()); - } + _appearance.SetData(uid, StorageVisuals.Open, component.Open); + _appearance.SetData(uid, StorageVisuals.HasContents, component.Contents.ContainedEntities.Count > 0); } private void TakeGas(EntityUid uid, EntityStorageComponent component) diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml index b3ecf118bb..414c2aab07 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml @@ -16,6 +16,25 @@ - id: Ointment amount: 2 +- type: entity + id: LockerWallMedicalFilled + suffix: Filled + parent: LockerWallMedical + components: + - type: StorageFill + contents: + - id: BoxPillCanister + amount: 1 + - id: BoxSyringe + amount: 1 + - id: EpinephrineChemistryBottle + amount: 3 + - id: Brutepack + amount: 2 + - id: Ointment + amount: 2 + + - type: entity id: LockerMedicalFilled suffix: Filled diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml index bb93917cfc..bdb89a5f04 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml @@ -37,6 +37,32 @@ prob: 0.5 - id: BoxMRE prob: 0.1 + +- type: entity + id: ClosetWallEmergencyFilledRandom + parent: ClosetWallEmergency + suffix: Filled, Random + components: + - type: StorageFill + contents: + - id: ToolboxEmergencyFilled + prob: 0.4 + - id: ClothingMaskBreath + prob: 0.4 + - id: ClothingMaskBreath + prob: 0.25 + - id: EmergencyOxygenTankFilled + prob: 0.4 + - id: OxygenTankFilled + prob: 0.2 + - id: MedkitOxygenFilled + prob: 0.2 + - id: WeaponFlareGun + prob: 0.05 + - id: ClothingOuterSuitEmergency + prob: 0.5 + - id: BoxMRE + prob: 0.1 - type: entity id: ClosetFireFilled @@ -54,6 +80,22 @@ - id: ClothingHeadHelmetFire prob: 0.75 +- type: entity + id: ClosetWallFireFilledRandom + parent: ClosetWallFire + suffix: Filled + components: + - type: StorageFill + contents: + - id: YellowOxygenTankFilled + prob: 0.6 + - id: ClothingOuterSuitFire + prob: 0.75 + - id: ClothingMaskGas + prob: 0.75 + - id: ClothingHeadHelmetFire + prob: 0.75 + - type: entity id: ClosetMaintenanceFilledRandom suffix: Filled, Random @@ -93,3 +135,29 @@ prob: 0.1 - id: ClothingHandsGlovesColorYellowBudget prob: 0.33 + +- type: entity + id: ClosetWallMaintenanceFilledRandom + parent: ClosetWall + suffix: Filled, Random + components: + - type: StorageFill + contents: + - id: ToolboxEmergencyFilled + prob: 0.4 + - id: ClothingMaskBreath + prob: 0.4 + - id: ClothingMaskBreath + prob: 0.25 + - id: EmergencyOxygenTankFilled + prob: 0.4 + - id: OxygenTankFilled + prob: 0.2 + - id: MedkitOxygenFilled + prob: 0.2 + - id: WeaponFlareGun + prob: 0.05 + - id: ClothingOuterSuitEmergency + prob: 0.5 + - id: BoxMRE + prob: 0.1 \ 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 df794b2b0b..73010ba033 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -70,3 +70,85 @@ state: generic state_open: generic_open state_closed: generic_door + +#Wall Closet +- type: entity + id: BaseWallCloset + placement: + mode: SnapgridCenter + abstract: true + name: wall closet + description: A standard-issue Nanotrasen storage unit, now on walls. + components: + - type: InteractionOutline + - type: Clickable + - type: ResistLocker + - type: Weldable + - type: WallMount + arc: 180 + - type: Transform + noRot: false + - type: Sprite + drawdepth: WallMountedItems + netsync: false + noRot: false + sprite: Structures/Storage/wall_locker.rsi + layers: + - state: generic + - state: generic_door + map: ["enum.StorageVisualLayers.Door"] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - type: EntityStorage + isCollidableWhenOpen: true + enteringOffset: 0, -0.8 + closeSound: + path: /Audio/Items/deconstruct.ogg + openSound: + path: /Audio/Items/deconstruct.ogg + - type: ContainerContainer + containers: + entity_storage: !type:Container + ents: [] + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - 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 + +#Wall locker +- type: entity + id: BaseWallLocker + parent: BaseWallCloset + abstract: true + components: + - type: AccessReader + - type: Lock + - type: Sprite + netsync: false + sprite: Structures/Storage/wall_locker.rsi + layers: + - state: generic + - state: generic_door + map: ["enum.StorageVisualLayers.Door"] + - state: locked + map: ["enum.StorageVisualLayers.Lock"] + shader: unshaded + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml index 2646f4fae8..8d26eaa233 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml @@ -1,48 +1,180 @@ - type: entity - id: BaseWallLocker - placement: - mode: SnapgridCenter - abstract: true + id: ClosetWall + parent: BaseWallCloset + name: maintenance wall closet + description: It's a storage unit. components: - - type: Clickable - - type: InteractionOutline - - type: WallMount - arc: 180 - - type: Sprite - drawdepth: WallMountedItems - netsync: false - sprite: Structures/Storage/wall_locker.rsi - layers: - - state: door - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 50 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - path: /Audio/Effects/metalbreak.ogg - - !type:SpawnEntitiesBehavior - spawn: - SheetSteel1: - min: 1 - max: 2 - - type: Storage - capacity: 100 - - type: UserInterface - interfaces: - - key: enum.StorageUiKey.Key - type: StorageBoundUserInterface - - type: ContainerContainer - containers: - storagebase: !type:Container - ents: [] + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: generic_door - type: entity - id: WallLocker + id: ClosetWallEmergency + name: emergency wall closet + parent: BaseWallCloset + description: It's a storage unit for emergency breath masks and O2 tanks. + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: emergency + state_open: emergency_open + state_closed: emergency_door + +- type: entity + id: ClosetWallFire + name: fire-safety wall closet + parent: BaseWallCloset + description: It's a storage unit for fire-fighting supplies. + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: fire + state_open: fire_open + state_closed: fire_door + +- type: entity + id: ClosetWallBlue + parent: BaseWallCloset + name: blue wall closet + description: "A wardrobe packed with stylish blue clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: blue_door + +- type: entity + id: ClosetWallPink + parent: BaseWallCloset + name: pink wall closet + description: "A wardrobe packed with fabulous pink clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: pink_door + +- type: entity + id: ClosetWallBlack + parent: BaseWallCloset + name: black wall closet + description: "A wardrobe packed with stylish black clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: black_door + +- type: entity + id: ClosetWallGreen + parent: BaseWallCloset + name: green wall closet + description: "A wardrobe packed with stylish green clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: green_door + +- type: entity + id: ClosetWallOrange + parent: BaseWallCloset + name: prison wall closet + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: orange_door + +- type: entity + id: ClosetWallYellow + parent: BaseWallCloset + name: yellow wall closet + description: "A wardrobe packed with stylish yellow clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: yellow_door + +- type: entity + id: ClosetWallWhite + parent: BaseWallCloset + name: white wall closet + description: "A wardrobe packed with stylish white clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: white_door + +- type: entity + id: ClosetWallGrey + parent: BaseWallCloset + name: grey wall closet + description: "A wardrobe packed with a tide of grey clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: gray_door + +- type: entity + id: ClosetWallMixed + parent: BaseWallCloset + name: mixed wall closet + description: "A wardrobe packed with a mix of colorful clothing." + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: mixed_door + +- type: entity + id: ClosetWallAtmospherics + parent: BaseWallCloset + name: atmospherics wall closet + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: generic + state_open: generic_open + state_closed: atmos_door + +- type: entity + id: LockerWallMedical parent: BaseWallLocker - name: wall locker - description: A locker built into the wall. + name: medical doctor's wall locker + components: + - type: Appearance + visuals: + - type: StorageVisualizer + state: med + state_open: med_open + state_closed: med_door + - type: AccessReader + access: [["Medical"]] \ No newline at end of file diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/atmos_door.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/atmos_door.png new file mode 100644 index 0000000000000000000000000000000000000000..673ff2736a3ebc4f076cfa36536acd46d87c973e GIT binary patch literal 434 zcmV;j0ZsmiP)Px$Y)M2xR9J;$U>F6XV59>^LJBlAH2za!!HpX?@Y=ybj3Mss?hHbLf+Sh|?)`g) zojZ3DR7aEpgaic{9z1wJk^>YJ6o^vCM2w<$@86STIVpOG3ITM$$Is8e!otG9#>U3L zz`(%p>(?)aKY#u(eERs2WV6U}z?Lmr7(RUbgd!%u&&ObAYfB#o`1ttHHv}dM+cPi- zBlyY-OBud>`-Y;1i;IilZhSY2m<9uta={9bFjRqJTq?sDUO!}o^QJP$6EvHsT!3sS z0|Ns?c;;`cG%{Fs%7Pf9iE{v{V8R+H22o*Q!U`#I06yQNrw@F9tX!~iIxAlJs<;mf z>rTC;o&$2ZmohNCA<8@k25umghY1!$?Ck6e2Z%6x zXcR=~V9S;*SPLS$6~*LOgbUE593TY{6$0!W93&e|tRA8qaQxUYk{!Unz`(!`O{Ak> c6bxzr0Lf5rAB$m=pa1{>07*qoM6N<$f~uRd+yDRo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/black_door.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/black_door.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2972416566f9c39f78e7fcf255a8c08330b2ab GIT binary patch literal 404 zcmV;F0c-w=P)Px$PDw;TR9J=Wl)X-aP!z}i8UhUilvWld5;fr!80yNxr11^aCtzW-HYu;bh_0pu znn1!wqKjz?Ryda;F_GUw&gFdk@5wy}7#aERoV7U^hVgMq0pIrao~9#0FdW7%Cf{Rj+t|H z65u!vqIg$1o5~Vy7K>p7*tR`v2Ob`uD)v;Ckfv$nOccd$T~ROQ{Rp_ex}>;4RaF#4 zvA2^XX^kOG!C_JW@I3G6_Yg^vD5+@zSc#$t>b$-ECkbe}ef@nj(P;`y(`@{&X&T-) zoBjj@uWzJeb$XkE`@36YS+=)dR;$)UBnSeYm&<+x)ERsc)o~o>=pq_y6?ZB06Th+t ySRi#km`s=xQ)5U1y!Dz{000PIk91_@PxA?~&2*>{i^9GD0000Px$X-PyuR9J=Wl+8-RP!NTWH6$g{=4YpZMBEhWR@_*@RX~C-AU=z@_Bnh3xtpvi zTIvfZhJtMobZ3%QTS$o2jYj%=?~QFy%(n@1b7tmb$Q>Xh<-fB)6BG)C_n$Oy9A{z= zfu)FPn$R_ktFh~Oux*>FV=|y?8k)@}mjS~tm~o__xkDvZYt-Hre(lyKlH^b>%}3>Q{#5XM5k7tj)AS^5J3>c@g+H> zE+R>ia8aYz{u_&E5JE;TqPeZ&B#p)~lRdx#(*&e!mb)-(4wHfFYL(jn07#!dX-dkk Z<^!S`cn6D@S;qhX002ovPDHLkV1gtgyjK7K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/door.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/door.png deleted file mode 100644 index fbd0d5c854152cebc78f5ad0ee90d4ee60eb721e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|)B}7%T!AzP z2L~S?pS`_(Zfeu2@@tvoH%jGk|jrv9z7Gtuv}NK6R4E8B*-tA;Xe}4 zWpP{!l<@U*aSXBOO-_)=Y!K#52tUBfE~1gZ&Lq$p$|!w^#cU4O0<{NW4i{Jy9xyTO z;j(aGn9n5UCZ;CVC1TLbpcua)DfECBJF5r7>Lx*6hW&Nyjtf@&dIB_)gIqJrzRvNs-6B&U;oeO#f=|^ckFlbE|*f<w=)~RWH5+4Mh8eD#S zd-=Apv|+;*t;n|hbrsDEW-SzCJ@TU^4P@uynNJrdh!_9?14F8_x?JQ1mEAyJF?hQA KxvXbnx%y+aGQnbm~#$+t|v(^e9Os^3TJk+HK6;zd2VapJD`x z@Ra+>sGnri5}W3-5-4(Ff#GTK)_D6|@aZVC#NPDEH^Kz0W1&?%5oDAQ0`bx9P>NbiYNi49rKS%?UZldcxu2nOTiM zuq&{Eui)pq!>7Xw+%=3Mg7vvB99$G5zUEP#>1hwMZXNa`zW16#WyF|F$`3TOGgyi} zWC~f?v!T)a`+K3KeJcbMt{D_D1oG`DN)bLQW5DHhuz{Ij`}MH7pDK-Ifx*Y%>FVdQ I&MBb@0Axgu8UO$Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/emergency_open.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/emergency_open.png new file mode 100644 index 0000000000000000000000000000000000000000..81c00f85e5679e18ee1d5777283bca74cd93ed5c GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}mpok@Ln2y} z6C_v{CoEw;_W%F?$5TR#KK?s@;J|@`|8LCPqAVL&r!VCJ0xPpRp76e$MN{tzuq#A! zY@RZ&f%WdC^Xuae+}yKB=u08PuA^UAe3+A7uV8kQZFtwn4QPxu(Gf6-Q0v9i&74Ln4NcRaq9tb)$T@q zM#t+pyCVA@GJxnUj2o;N(hRGF-`tzIwx_4ZBwNVHKufB6p~=a2b8mJfO6$rRaJexu Y6ewFr*flnI0e#2d>FVdQ&MBb@0O1I5-T(jq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/fire.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/fire.png new file mode 100644 index 0000000000000000000000000000000000000000..d51cd0bfe2083fff1736deb706485a61e2e15744 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}J3L(+Ln2y} z6C_xfc_co1t}`*2+@)+v#C%NHFA z*p(w0XIde900;`6zKdm(6&2ki^FK_g+&i4v`bKz0G279Jp&larGo`S0&_{iZB7 z8y2=Zj4rN?2Qox12ndL>+UU4wDs%HxaP(LuTw!E>$FS(r^|$=;Y}Xhk+1LPe{W&fE u%A#Q!>%|BCO&Oe=vm))d+!&dGfT3oW#v93Rzkps~VDNPHb6Mw<&;$VTXjbPx$5=lfsR9J;$U>F6XV59>^LJIt)r2bQ4!NzCL@Y=ybj3G$|dJHnot|VFfWbbZ< zc^57bR7aEpWSm_Yp6uNX=l^{13adJH2{9Bs4AgP}Helf7#PC^C63)N7bSYWpknMoa zl9FUwN)-n%FfcGEM@PfibPoYaEJX%P6q`T~2O#GF7$D?(YErr6mqFuZs{9S5kdokp|+e!^%Rg%w#2AO)~Xh%xk% zpq?xT;Hnp32@hT*Q!5J4fm?eAR`Gde#w43XmIHQGR$vt;HtSLBfB_EyaxB6H2D~UH qDg=nl(=>CyQX;a`C>RAp761SkCrdFEeM>X|0000buAfo?04MA)Mcv4AX8Rt6L&u1oo0gGmmt3`)0gQo3zziB zDLivx$XIhUS7K4O?Lp~`-h-j96*^2GEHahK4xFay7kX6wf>iV7Af2TC8TD7rd~$W* zVljxVz0@$}2?L|g|NZWsCyknH56T1tEt7Yt6e;e1q_7~Y>nkH0W89zJO{II47iDNG nzS!ZoVN&Vd=o?9FDMs-o5{{BS*_(F)J<8ze>gTe~DWM4f#UpT1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/generic.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/generic.png new file mode 100644 index 0000000000000000000000000000000000000000..c3607015d36be4489ee930bfd6ef763461f8bd75 GIT binary patch literal 274 zcmV+t0qy>YP)Px#%t=H+R9J=Wl(7xNAP_~rP3$Uem;=ZdUd5efamOl*5z|-<;l}BcDpH!jh3JGV z@mr4n-`ydAs={hwhx0r?opXN$jN^!9S-$36VwatBn5GHd`>b%SHLSJKnkc}h5tpI> zMyX^6DH)}(ZCf6|TT;rb@O|HtH6(zxZLpC`ob4)-8!3I!#0>uGH zE9m>aEP!DAh)4iU{Rt}oqezc1gisd1+zf{6@RRZJII!N=WZgMdKPx$4@pEpR9J=WlrheNKoEtWhM=L4T}^DEDZG5E5-{ zppY3w{gZ!Rx0^TfzD#xp(9-(vnhY5{&%3=7kf!O=41>}n2m&mnWCfpNY0$PUE@jE?^%6i7MJUQk=T6uQ zY&Vw6P;C1_NDA*rH3b~uo{q;JR#Pm%=d)#^6@08rO8**iLb z6av2Q<9Ire{2y6FQV2MXgFMg20jRIn&Y7}^`ZaF>^raWkn2YEm-;g8H1ZML&yD_zf n1hC)j*Z=@9dpuGttv{_h$X9M&Tnk$N00000NkvXXu0mjf*Q1W? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/generic_open.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/generic_open.png new file mode 100644 index 0000000000000000000000000000000000000000..83448e47e624bb281edc6d243ad862d6bed965bc GIT binary patch literal 291 zcmV+;0o?wHP)Px#-AP12R9J=WmN5>3Fcd%^1TMe@q>D0g3mxIQ>`WX0=u#b7AbNp1m>Luv+nU&y zbZD3NO2SVe5cqqv)?ZguRk|n&ZPTB;AJldI6qaSlFbp>RBx|9Ox+Hm*HcbP-VZUdW z=WYT3F6T3&luXk^nx@vpn*ac%6hesSepwc`0YV5rU%=c{DaGk{bS4Lg*BjUJO@I$# zfUfKO2KXcd#PArqhEYmJDV+tp45FVK#m)n~jbg*kjpEz&N|t3-12#{x^&c?LGkxDj pQ54w=FmFC{)3$Bx*#dzN+yP%zV{M>qrPx$PDw;TR9J=Wl`(FEKoCWLA_NwN2|fV@1yXzk$LY4=FdT)3o6w-Rh-1mQfFn^* zZ~_xtAV5e-lUP||duNG_5{1{SW;C<&ceOJM3=I5tu0#QjYbcaW7-N{2 zrc~i=mLZBFVH`=o#59qnsgwZAvPf~)l%Q>vNfnpLA>BZmv0*?_6sW2S0I2I4P19hP z=hAz15)g(VUh^I2yD`SNo6Y(W;JR+VH(=W~XZya7q9{0@uIunTkMo_a3tl!GXrs~I zc3t;iT#_V|?KntX(8l-ugXkcI1aPLm;C4DC7yp_Q1c5M)+yzxt?d_-4N;rr#O(O~Y8-u7#7={N2QE#KTOQB<2 yWDdwcx&fIMl+7UtcwVoi1pt8d@kj>-el_oXczDRt>8C~j0000Px$aY;l$R9J=Wl`&6)P!PxeS^|Wjm740HLr0>m#zm)^II%GJDf|eI4*D^iom?DP zxH1XySVry%aGLBoVd;}PVk#7Z_5Bo9Oy09@E4r6PIqG12> zU}F1t2eJ-LVHS)=z&o1=1-9dM`2i`uryK`JJb`*To6o<>9u6 zy+&iX0%m=EvOi`)x(jwsH=(Lqq=4fd82^HW+y$d%4IV<00BqL)06WbZx>t{x?j!*l z);fY9nAnzWXAUAslF%i@{u_fRiD{atgDAIAJWrx&EM*SxK&pTw%iMvfdq@KAI~{HT h03dxeX+goS<`aQkeX~!eOo9La002ovPDHLkV1nb#xAFi0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/locked.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/locked.png index 51e409e869c9933ad8bf80543aff609fbcea5271..579d46f0697a9475148754f46623076a604acd7b 100644 GIT binary patch delta 155 zcmV;M0A&A^0jvR#8Gi-<0047(dh`GQ00DDSM?wIu&K&6g003r5L_t(oh3(S24S+BZ zgJCCP1lGy)w+=HP8X6D;PI3gr|FwD8x; z666=mU}N+D|LcSPi-7`4o-U3d7QM*{60FKH21Z6g0S9~>7=^io8CiW;M0%PWxfpaC W8N@69o2LO)GkCiCxvX<|{Ln2y} z6C_xfc_co1K70QB|Me?ZmYisMeSN*L&m0TE<+eIMOtQ1Gj4G@m4Q(p_&eS=b>Qc$M z>fmdJARZ-gfs%%J4<2T7e*Va|`oEuA6^*sI*Gs8w@>!-NQF@@kx?x3(f{u#Iw1@Hg zYZOw5XWSj8g n4;M8QUNAWIo(eSJ(qLuyS1TKFJh%Q6(De+Su6{1-oD!MPx$BS}O-R9J=Wm9cJuP!xuLtHW)oiwP59W6*Z-C3q7?AAqGh4^f_iG!BfsfHHLe z7xhXYF-C_@#!ish7&s?h22%d%-sEupFMrOt0G&GhclGKD9LKpnV&J-NrN@BM#Ih`y zhQ>0EH#veJsI4Obn1+UUld}L!Lqoki@I-00&Ce`zjz|drz{l5x)p#yw(4+*K6gdHV z(r*NyJqZ*lX5n5UVHn=rg%Iiisoo>!iQ5b%A!wqJYR0rtOOMyqQ_ z0;!a+Cu3IQR7y1fS(X6+jtAa;|NizN008)0EZF9qI<-bWVPsEaa>NEy00000NkvXX Hu0mjfJl>Uy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/med_open.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/med_open.png new file mode 100644 index 0000000000000000000000000000000000000000..70044b48d269427c6828035d8fee0b4000e49ab3 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}3p`yMLn2z= zPTRIV2dEmO+mL&EaJU5OS9=qHg)Ft3_hWCW!{Fci( cJjDm418gn!{Yl8?2fCHP)78&qol`;+02b|4CIA2c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/meta.json b/Resources/Textures/Structures/Storage/wall_locker.rsi/meta.json index 26a29349e1..bb115f3d02 100644 --- a/Resources/Textures/Structures/Storage/wall_locker.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/wall_locker.rsi/meta.json @@ -1,23 +1,37 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/space-wizards/space-station-14/pull/10673, modified from TGstation commit 4a274a6e4b195dfcaffd20d7348631131418ecb5", + "copyright": "Taken from shiptest at commmit https://github.com/shiptest-ss13/Shiptest/commit/440a15fb476a20d77ba28c1fe315c1b659032ce8", "size": { "x": 32, "y": 32 }, "states": [ - { - "name": "door" - }, - { - "name": "locked" - }, - { - "name": "unlocked" - }, - { - "name": "welded" - } + { "name": "atmos_door" }, + { "name": "black_door" }, + { "name": "blue_door" }, + { "name": "emergency" }, + { "name": "emergency_door" }, + { "name": "emergency_open" }, + { "name": "fire" }, + { "name": "fire_door" }, + { "name": "fire_open" }, + { "name": "generic" }, + { "name": "generic_door" }, + { "name": "generic_open" }, + { "name": "gray_door" }, + { "name": "green_door" }, + { "name": "locked" }, + { "name": "med" }, + { "name": "med_door" }, + { "name": "med_open" }, + { "name": "mixed_door" }, + { "name": "orange_door" }, + { "name": "pink_door" }, + { "name": "red_door" }, + { "name": "unlocked" }, + { "name": "welded" }, + { "name": "white_door" }, + { "name": "yellow_door" } ] } diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/mixed_door.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/mixed_door.png new file mode 100644 index 0000000000000000000000000000000000000000..25c245e59a5e05e480b204e3455269da7374b056 GIT binary patch literal 453 zcmV;$0XqJPP)Px$e@R3^R9J=Wl`%`hP!PxeN=#~?sp%qginyecgCbq3V?p{!9Q^=_U&4>z;+iEL zL|Ule;^1JGVyjXpg~ldQX$7DM2IK<|@v!hSUKTrBHw% z2oOaP0N{BZeBXyN9&_i4CBQHYyo{ZIZ>^wUuUbtPx$a!Eu%R9J=WmA^{EP!z^LB_uV3#uNp?!Hf|~@dfHs$kNH(cW`m`6?_nJF(L&g z3w07514@aAi%4UFq$JiqgKceM%{{laK`_51oXdC5`Eqk|E|8P+-v6B&KPiq-k7*JFbgHqrudX43sntj^l6{&~=@po2Q66uFF-NXAkKFk`z@Hf*?Q? zMF2n)MdFd+8!RCyCW;?9w+?;*KQ{k?;Tu?eU5T^OG-^M zz{|8&Al(JEwKps&3#5dD9vFOr>D&dC6;km})czh|_vnGCCK)*P z*Aa%{Fg|NGnS)4@Bmh$~kREv4beHQ9MbZpP0!U;DK}kQlY?|n7W5#;Jnr1 iHUI!pze#g){xlziQGX>T>cw#Y0000Px$Xh}ptR9J=Wl`%`hP!PxeN^DBN#I%Uu6bB)KZXF6z2bX~4Gx!}GUAj8DIQc0Y z-jc<^K%K?GY&KK2rmav&EX2iD6WY9cwGE2-Ey*4C?*8w1?;cQ6^50qG1(>Fp{G@>A zdAT(tN)pSmP}6mx!o4tr<2c+nl7O17qucEY2`~(U6t_+Z>V=_DagjBo4rEa^4U#0G zQmFs{;yA{5JjQS^5YDxb0LB>lgJH_IrKvb+wTcm7+jg-XIQI8b_N9A`(P)(NDT;!t zql+&`A8@dwTkw)RrR?*=)46f4Z|{_pQ%JWUOZ)D2=Jz{(;;&8s57&3GU9YcJK;G`N z=OYi&ThQEXVsCSUlyGte{KQ8P1j~5~&eR5}H~<`|lfMSq!3{T_B;bDM8Br8X?FZN8 z4kB5W0gs>iZw#U=jIo)6sIXDINTGSGWDbZx>VRCW3MZznAqjZwbc6)}fc$w#OGPx$V@X6oR9J=Wl(BAtP!xv$8UjjCil$3l7#Urh8aueKkn|Dy939%FLtlu6G-+Z< z?COXclbh1(0FglKVr(G@_fjNH%D0en^51iQZq7YGL&JaPqDY`=+Wt2U9LLG+!O;}a zbsc?0VQRebJXn@hsG~B_R}{Fe%Va=RRVrPJMzrxfrsgbXsBR!lPnN-P9C)4w0EA(P zD2lKpgt=BJ1Ey)>lWY^YOSy;J$)p|whGEou12?vvh#v@n@B4|ID2jNIveSorWpfw3hkhs5`w3y47`oU*zI=5_}#V(7m*+cz-(5H zfi$%*qBN#yW-g-IR&kj|r#QRNC=G&CtKT*&ye>w6GA$RL_Gou zv6ck+1vA*#{Qv*@p#Nf^fRd++V~9m>a)Jb_vXp_Lp097-1y85}Sb4q9e0Ka)9i2wiq diff --git a/Resources/Textures/Structures/Storage/wall_locker.rsi/welded.png b/Resources/Textures/Structures/Storage/wall_locker.rsi/welded.png index 5ba5dcc89629b486b489f8afc2a0ac2ed366c27f..355d7fa0cb2d9322575d2135867958a3e12356da 100644 GIT binary patch delta 151 zcmX@dc#Cm@gct`i0|SH0lCEPwim^Dz-HBn{IhmIe70t?cOM?7@8U7;yT^7f+KxH1D zE{-7~AjPx$T}ebiR9J=Wm9b8PP!xuL4Jn18NE>%XUZSoY%4P>~s?Wkhs83LbnslH8t4->5 zXGS)*A`B2Hi7wg*sc>$!L?hn<_vYMlelF+!7ieku@0`>H=(_&;odT}wR@M+GNk*d) z`l`xRcoPJ09H%ypB%rUV@H~%8fTn4rxKm2dCJ4BS^QD$ZQFPWqr%*o(!<4Y*o*+fFq++g>CLn-o?K24$8lj!mSxNz=Y=`SDIod4 zwP_;TZV6I>BuRGf%jL4x2S}$NjEeu;vaG$&&oIU)sc8auSu7Sf9}JEwpz7<({ZR#} z2gc(uBuOGA{OAG37<}Ka?E#X2*~5%fyo`Be{>)``e|v{CO?Ts`)vDHrL{TJ({2NA8 z#Px$Ur9tkR9J=Wl`&6)P!Pxe8hkViMcO#HF%myQV|8Rc-v`*XRw2Q)PNcQ%R~48vIcCV}HP zxj7`BAf{=eqiI5kJ>Q3I+l78y0y>%o*L8&i=(^73x5?w=`MywckuzKsU}>u=BuN4x z1OO1nF_I*~A_#25wcT_Oy_luc0-++1y? zY#c+tC*YnL<