From 4212fbb23e025c4f94c02ce3026a8602638b0a0c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 29 Apr 2024 07:45:41 -0400 Subject: [PATCH 01/68] Physics based air throws --- .../AtmosphereSystem.HighPressureDelta.cs | 41 +++---------------- .../Storage/Closets/base_structureclosets.yml | 6 +++ 2 files changed, 12 insertions(+), 35 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 53035e1ed3..cb788f4006 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -1,14 +1,11 @@ using Content.Server.Atmos.Components; using Content.Shared.Atmos; -using Content.Shared.Audio; using Content.Shared.Mobs.Components; using Content.Shared.Physics; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; -using Robust.Shared.Player; -using Robust.Shared.Random; using Robust.Shared.Utility; namespace Content.Server.Atmos.EntitySystems @@ -51,8 +48,7 @@ private void UpdateHighPressure(float frameTime) comp.Accumulator = 0f; toRemove.Add(ent); - if (HasComp(uid) && - TryComp(uid, out var body)) + if (TryComp(uid, out var body)) { _physics.SetBodyStatus(body, BodyStatus.OnGround); } @@ -162,7 +158,7 @@ private void HighPressureMovements(Entity gridAtmospher (entity, pressureMovements), gridAtmosphere.Comp.UpdateCounter, tile.PressureDifference, - tile.PressureDirection, 0, + tile.PressureDirection, tile.PressureSpecificTarget != null ? _mapSystem.ToCenterCoordinates(tile.GridIndex, tile.PressureSpecificTarget.GridIndices) : EntityCoordinates.Invalid, gridWorldRotation, xforms.GetComponent(entity), @@ -188,7 +184,6 @@ public void ExperiencePressureDifference( int cycle, float pressureDifference, AtmosDirection direction, - float pressureResistanceProbDelta, EntityCoordinates throwTarget, Angle gridWorldRotation, TransformComponent? xform = null, @@ -201,37 +196,14 @@ public void ExperiencePressureDifference( if (!Resolve(uid, ref xform)) return; - // TODO ATMOS stuns? - - var maxForce = MathF.Sqrt(pressureDifference) * 2.25f; - var moveProb = 100f; - - if (component.PressureResistance > 0) - moveProb = MathF.Abs((pressureDifference / component.PressureResistance * MovedByPressureComponent.ProbabilityBasePercent) - - MovedByPressureComponent.ProbabilityOffset); - // Can we yeet the thing (due to probability, strength, etc.) - if (moveProb > MovedByPressureComponent.ProbabilityOffset && _robustRandom.Prob(MathF.Min(moveProb / 100f, 1f)) - && !float.IsPositiveInfinity(component.MoveResist) - && (physics.BodyType != BodyType.Static - && (maxForce >= (component.MoveResist * MovedByPressureComponent.MoveForcePushRatio))) - || (physics.BodyType == BodyType.Static && (maxForce >= (component.MoveResist * MovedByPressureComponent.MoveForceForcePushRatio)))) + if (physics.BodyType != BodyType.Static && !float.IsPositiveInfinity(component.MoveResist)) { - if (HasComp(uid)) - { - AddMobMovedByPressure(uid, component, physics); - } + var moveForce = pressureDifference / physics.Mass; - if (maxForce > MovedByPressureComponent.ThrowForce) + if (moveForce > physics.Mass) { - var moveForce = maxForce; - moveForce /= (throwTarget != EntityCoordinates.Invalid) ? SpaceWindPressureForceDivisorThrow : SpaceWindPressureForceDivisorPush; - moveForce *= MathHelper.Clamp(moveProb, 0, 100); - - // Apply a sanity clamp to prevent being thrown through objects. - var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; - moveForce = MathF.Min(moveForce, maxSafeForceForObject); - + AddMobMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); @@ -243,7 +215,6 @@ public void ExperiencePressureDifference( } else { - moveForce = MathF.Min(moveForce, SpaceWindMaxPushForce); _physics.ApplyLinearImpulse(uid, dirVec * moveForce, body: physics); } diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml index 66647d168f..d7ee462d32 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -90,6 +90,12 @@ stateDoorClosed: generic_door - type: StaticPrice price: 50 + - type: DamageOtherOnHit #If the new atmos update throws a locker at you, you're in for a bad time. Enjoy. + damage: + types: + Blunt: 25 + - type: StaminaDamageOnCollide + damage: 75 # steel closet base (that can be constructed/deconstructed) - type: entity From bddb87b26ff8926275589a5f6ca88ec028bb39b6 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 29 Apr 2024 07:54:07 -0400 Subject: [PATCH 02/68] Update base_structureclosets.yml --- .../Structures/Storage/Closets/base_structureclosets.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml index d7ee462d32..66647d168f 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -90,12 +90,6 @@ stateDoorClosed: generic_door - type: StaticPrice price: 50 - - type: DamageOtherOnHit #If the new atmos update throws a locker at you, you're in for a bad time. Enjoy. - damage: - types: - Blunt: 25 - - type: StaminaDamageOnCollide - damage: 75 # steel closet base (that can be constructed/deconstructed) - type: entity From 162c2848a5700167976baa59956ddbe52afa468e Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 29 Apr 2024 09:12:01 -0400 Subject: [PATCH 03/68] Updates for review --- .../EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index cb788f4006..32c0ad03b1 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -68,7 +68,7 @@ private void UpdateHighPressure(float frameTime) } } - private void AddMobMovedByPressure(EntityUid uid, MovedByPressureComponent component, PhysicsComponent body) + private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent component, PhysicsComponent body) { if (!TryComp(uid, out var fixtures)) return; @@ -179,6 +179,8 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, tile.PressureDirection = differenceDirection; } + //The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function + //And it isn't working, you've probably still got the ResistancePobDelta line included. public void ExperiencePressureDifference( Entity ent, int cycle, @@ -203,7 +205,7 @@ public void ExperiencePressureDifference( if (moveForce > physics.Mass) { - AddMobMovedByPressure(uid, component, physics); + AddMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); From 3374757899282fb32c4372b8dd7d215d1fcb3adb Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 29 Apr 2024 09:21:14 -0400 Subject: [PATCH 04/68] Hello, this is an asymptote. Divide by zero must be an exit condition. --- .../EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 32c0ad03b1..f453f0d5ea 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -180,7 +180,7 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, } //The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function - //And it isn't working, you've probably still got the ResistancePobDelta line included. + //And it isn't working, you've probably still got the ResistancePobDelta line included. public void ExperiencePressureDifference( Entity ent, int cycle, @@ -199,7 +199,9 @@ public void ExperiencePressureDifference( return; // Can we yeet the thing (due to probability, strength, etc.) - if (physics.BodyType != BodyType.Static && !float.IsPositiveInfinity(component.MoveResist)) + if (physics.BodyType != BodyType.Static + && !float.IsPositiveInfinity(component.MoveResist) + && physics.Mass != 0) { var moveForce = pressureDifference / physics.Mass; From 3dc71fb95c374714a9f2f63869feed4ba094df56 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 29 Apr 2024 14:35:19 -0400 Subject: [PATCH 05/68] Adding the clamp back in --- .../EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index f453f0d5ea..889d9584fb 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -210,16 +210,17 @@ public void ExperiencePressureDifference( AddMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); + var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; // TODO: Technically these directions won't be correct but uhh I'm just here for optimisations buddy not to fix my old bugs. if (throwTarget != EntityCoordinates.Invalid) { var pos = ((throwTarget.ToMap(EntityManager).Position - xform.WorldPosition).Normalized() + dirVec).Normalized(); - _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics); + _physics.ApplyLinearImpulse(uid, pos * Math.Clamp(moveForce, 0, maxSafeForceForObject), body: physics); } else { - _physics.ApplyLinearImpulse(uid, dirVec * moveForce, body: physics); + _physics.ApplyLinearImpulse(uid, dirVec * Math.Clamp(moveForce, 0, maxSafeForceForObject), body: physics); } component.LastHighPressureMovementAirCycle = cycle; From b3c503c4eebaa53181bb6b58f517562f38d152a5 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 1 May 2024 15:51:15 -0400 Subject: [PATCH 06/68] I found another small optimization --- .../Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 889d9584fb..1738f9212d 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -203,7 +203,7 @@ public void ExperiencePressureDifference( && !float.IsPositiveInfinity(component.MoveResist) && physics.Mass != 0) { - var moveForce = pressureDifference / physics.Mass; + var moveForce = pressureDifference * physics.InvMass; if (moveForce > physics.Mass) { From 68e05100225838a470c89ce9ab02b29310e35fee Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 1 May 2024 15:54:01 -0400 Subject: [PATCH 07/68] Another one --- .../Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 1738f9212d..a67eb217e5 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -200,8 +200,7 @@ public void ExperiencePressureDifference( // Can we yeet the thing (due to probability, strength, etc.) if (physics.BodyType != BodyType.Static - && !float.IsPositiveInfinity(component.MoveResist) - && physics.Mass != 0) + && !float.IsPositiveInfinity(component.MoveResist)) { var moveForce = pressureDifference * physics.InvMass; From 9e7aa5d91e3c8ae1bab1008622dc21a9ea04c627 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 4 May 2024 17:24:19 -0400 Subject: [PATCH 08/68] New Cvar --- .../Atmos/EntitySystems/AtmosphereSystem.CVars.cs | 2 ++ .../AtmosphereSystem.HighPressureDelta.cs | 2 +- Content.Shared/CCVar/CCVars.cs | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 3aaa5429fb..f3ef2be6ca 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -12,6 +12,7 @@ public sealed partial class AtmosphereSystem public float SpaceWindPressureForceDivisorPush { get; private set; } public float SpaceWindMaxVelocity { get; private set; } public float SpaceWindMaxPushForce { get; private set; } + public float SpaceWindMinimumMassThreshold { get; private set; } public bool MonstermosEqualization { get; private set; } public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } @@ -41,6 +42,7 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.SpaceWindPressureForceDivisorPush, value => SpaceWindPressureForceDivisorPush = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxVelocity, value => SpaceWindMaxVelocity = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxPushForce, value => SpaceWindMaxPushForce = value, true); + Subs.CVar(_cfg, CCVars.SpaceWindMinimumMassThreshold, value => SpaceWindMinimumMassThreshold = value, true); Subs.CVar(_cfg, CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true); Subs.CVar(_cfg, CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index a67eb217e5..64b1f02542 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -204,7 +204,7 @@ public void ExperiencePressureDifference( { var moveForce = pressureDifference * physics.InvMass; - if (moveForce > physics.Mass) + if (moveForce > MathF.MaxMagnitude(physics.Mass, SpaceWindMinimumMassThreshold)) { AddMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 6427faa113..284ac57cfa 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1049,6 +1049,17 @@ public static readonly CVarDef public static readonly CVarDef SpaceWindMaxPushForce = CVarDef.Create("atmos.space_wind_max_push_force", 20f, CVar.SERVERONLY); + /// + /// If an object's mass is below this number, then this number is used in place of mass to determine whether air pressure can throw an object. + /// This has nothing to do with throwing force, only acting as a way of reducing the odds of tiny 5 gram objects from being yeeted by people's breath + /// + /// + /// If you are reading this because you want to change it, consider looking into why almost every item in the game weighs only 5 grams + /// And maybe do your part to fix that? :) + /// + public static readonly CVarDef SpaceWindMinimumMassThreshold = + CVarDef.Create("atmos.space_wind_minimum_mass_threshold", 10f, CVar.SERVERONLY); + /// /// Whether monstermos tile equalization is enabled. /// From 3d0326245bda042a1c4a173d9b7200c45d22fba2 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 4 May 2024 17:41:50 -0400 Subject: [PATCH 09/68] Update comments for documentation --- .../AtmosphereSystem.HighPressureDelta.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 64b1f02542..3c16a9b33b 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -198,7 +198,19 @@ public void ExperiencePressureDifference( if (!Resolve(uid, ref xform)) return; - // Can we yeet the thing (due to probability, strength, etc.) + // EXPLANATION: + // pressureDifference = Force of Air Flow on a given tile + // physics.Mass = Mass of the object potentially being thrown + // physics.InvMass = 1 divided by said Mass. More CPU efficient way to do division. + // + // Objects can only be thrown if the force of air flow is greater than the SQUARE of their mass or {SpaceWindMinimumMassThreshold}, whichever is heavier + // This means that the heavier an object is, the exponentially more force is required to move it + // The force of a throw is equal to the force of air pressure, divided by an object's mass. So not only are heavier objects + // less likely to be thrown, they are also harder to throw. + // While lighter objects are yeeted easily, and from great distance. + // + // For a human sized entity with a standard weight of 80kg and a spacing between a hard vacuum and a room pressurized at 101kpa, + // The human shall only be moved if he is either very close to the hole, or is standing in a region of high airflow if (physics.BodyType != BodyType.Static && !float.IsPositiveInfinity(component.MoveResist)) { @@ -211,7 +223,7 @@ public void ExperiencePressureDifference( var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; - // TODO: Technically these directions won't be correct but uhh I'm just here for optimisations buddy not to fix my old bugs. + // TODO: Consider replacing throw target with proper trigonometry angles. if (throwTarget != EntityCoordinates.Invalid) { var pos = ((throwTarget.ToMap(EntityManager).Position - xform.WorldPosition).Normalized() + dirVec).Normalized(); From 67fdaff50836631f647a15fc50b9fd0a6e152fc6 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 6 May 2024 02:39:27 -0400 Subject: [PATCH 10/68] Apply suggestions from code review Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- .../EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 3c16a9b33b..3a96c252cd 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -180,7 +180,7 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, } //The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function - //And it isn't working, you've probably still got the ResistancePobDelta line included. + //And it isn't working, you've probably still got the pressureResistanceProbDelta line included. public void ExperiencePressureDifference( Entity ent, int cycle, @@ -206,8 +206,8 @@ public void ExperiencePressureDifference( // Objects can only be thrown if the force of air flow is greater than the SQUARE of their mass or {SpaceWindMinimumMassThreshold}, whichever is heavier // This means that the heavier an object is, the exponentially more force is required to move it // The force of a throw is equal to the force of air pressure, divided by an object's mass. So not only are heavier objects - // less likely to be thrown, they are also harder to throw. - // While lighter objects are yeeted easily, and from great distance. + // less likely to be thrown, they are also harder to throw, + // while lighter objects are yeeted easily, and from great distance. // // For a human sized entity with a standard weight of 80kg and a spacing between a hard vacuum and a room pressurized at 101kpa, // The human shall only be moved if he is either very close to the hole, or is standing in a region of high airflow From 6cc47047edca5c71085ccdcbbdecc76bc305c93e Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 15 May 2024 23:57:38 -0400 Subject: [PATCH 11/68] MORE --- .../EntitySystems/AtmosphereSystem.CVars.cs | 6 +- .../AtmosphereSystem.HighPressureDelta.cs | 62 +++++++++++-------- Content.Shared/CCVar/CCVars.cs | 16 +++-- 3 files changed, 53 insertions(+), 31 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index f3ef2be6ca..211c5dd945 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -12,7 +12,8 @@ public sealed partial class AtmosphereSystem public float SpaceWindPressureForceDivisorPush { get; private set; } public float SpaceWindMaxVelocity { get; private set; } public float SpaceWindMaxPushForce { get; private set; } - public float SpaceWindMinimumMassThreshold { get; private set; } + public float SpaceWindMinimumCalculatedMass { get; private set; } + public float SpaceWindMaximumCalculatedInverseMass { get; private set; } public bool MonstermosEqualization { get; private set; } public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } @@ -42,7 +43,8 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.SpaceWindPressureForceDivisorPush, value => SpaceWindPressureForceDivisorPush = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxVelocity, value => SpaceWindMaxVelocity = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxPushForce, value => SpaceWindMaxPushForce = value, true); - Subs.CVar(_cfg, CCVars.SpaceWindMinimumMassThreshold, value => SpaceWindMinimumMassThreshold = value, true); + Subs.CVar(_cfg, CCVars.SpaceWindMinimumCalculatedMass, value => SpaceWindMinimumCalculatedMass = value, true); + Subs.CVar(_cfg, CCVars.SpaceWindMaximumCalculatedInverseMass, value => SpaceWindMaximumCalculatedInverseMass = value, true); Subs.CVar(_cfg, CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true); Subs.CVar(_cfg, CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 3a96c252cd..1f637ec951 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -1,6 +1,5 @@ using Content.Server.Atmos.Components; using Content.Shared.Atmos; -using Content.Shared.Mobs.Components; using Content.Shared.Physics; using Robust.Shared.Audio; using Robust.Shared.Map; @@ -89,10 +88,12 @@ private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent componen private void HighPressureMovements(Entity gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) { + if (tile.PressureDifference < MathF.Pow(SpaceWindMinimumCalculatedMass, 2)) + return; // TODO ATMOS finish this // Don't play the space wind sound on tiles that are on fire... - if(tile.PressureDifference > 15 && !tile.Hotspot.Valid) + if (tile.PressureDifference > 15 && !tile.Hotspot.Valid) { if(_spaceWindSoundCooldown == 0 && !string.IsNullOrEmpty(SpaceWindSound)) { @@ -118,7 +119,8 @@ private void HighPressureMovements(Entity gridAtmospher var gridWorldRotation = xforms.GetComponent(gridAtmosphere).WorldRotation; // If we're using monstermos, smooth out the yeet direction to follow the flow - if (MonstermosEqualization) + //WTF:This is bad, don't run this. It just makes the throws worse by somehow rounding them to orthogonal + if (!MonstermosEqualization) { // We step through tiles according to the pressure direction on the current tile. // The goal is to get a general direction of the airflow in the area. @@ -179,8 +181,32 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, tile.PressureDirection = differenceDirection; } - //The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function - //And it isn't working, you've probably still got the pressureResistanceProbDelta line included. + //INFO:The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function + //INFO:And it isn't working, you've probably still got the pressureResistanceProbDelta line included. + /// + /// EXPLANATION: + /// pressureDifference = Force of Air Flow on a given tile + /// physics.Mass = Mass of the object potentially being thrown + /// physics.InvMass = 1 divided by said Mass. More CPU efficient way to do division. + /// + /// Objects can only be thrown if the force of air flow is greater than the SQUARE of their mass or {SpaceWindMinimumCalculatedMass}, whichever is heavier + /// This means that the heavier an object is, the exponentially more force is required to move it + /// The force of a throw is equal to the force of air pressure, divided by an object's mass. So not only are heavier objects + /// less likely to be thrown, they are also harder to throw, + /// while lighter objects are yeeted easily, and from great distance. + /// + /// For a human sized entity with a standard weight of 80kg and a spacing between a hard vacuum and a room pressurized at 101kpa, + /// The human shall only be moved if he is either very close to the hole, or is standing in a region of high airflow + /// + /// + /// + /// + /// + /// + /// + /// + /// + public void ExperiencePressureDifference( Entity ent, int cycle, @@ -198,40 +224,26 @@ public void ExperiencePressureDifference( if (!Resolve(uid, ref xform)) return; - // EXPLANATION: - // pressureDifference = Force of Air Flow on a given tile - // physics.Mass = Mass of the object potentially being thrown - // physics.InvMass = 1 divided by said Mass. More CPU efficient way to do division. - // - // Objects can only be thrown if the force of air flow is greater than the SQUARE of their mass or {SpaceWindMinimumMassThreshold}, whichever is heavier - // This means that the heavier an object is, the exponentially more force is required to move it - // The force of a throw is equal to the force of air pressure, divided by an object's mass. So not only are heavier objects - // less likely to be thrown, they are also harder to throw, - // while lighter objects are yeeted easily, and from great distance. - // - // For a human sized entity with a standard weight of 80kg and a spacing between a hard vacuum and a room pressurized at 101kpa, - // The human shall only be moved if he is either very close to the hole, or is standing in a region of high airflow + if (physics.BodyType != BodyType.Static && !float.IsPositiveInfinity(component.MoveResist)) { - var moveForce = pressureDifference * physics.InvMass; - - if (moveForce > MathF.MaxMagnitude(physics.Mass, SpaceWindMinimumMassThreshold)) + var moveForce = pressureDifference * MathF.Max(physics.InvMass, SpaceWindMaximumCalculatedInverseMass); + if (moveForce > physics.Mass) { AddMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); - var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; // TODO: Consider replacing throw target with proper trigonometry angles. if (throwTarget != EntityCoordinates.Invalid) { - var pos = ((throwTarget.ToMap(EntityManager).Position - xform.WorldPosition).Normalized() + dirVec).Normalized(); - _physics.ApplyLinearImpulse(uid, pos * Math.Clamp(moveForce, 0, maxSafeForceForObject), body: physics); + var pos = throwTarget.ToMap(EntityManager).Position - xform.WorldPosition + dirVec; + _physics.ApplyLinearImpulse(uid, pos * Math.Clamp(moveForce, 0, SpaceWindMaxVelocity), body: physics); } else { - _physics.ApplyLinearImpulse(uid, dirVec * Math.Clamp(moveForce, 0, maxSafeForceForObject), body: physics); + _physics.ApplyLinearImpulse(uid, dirVec * Math.Clamp(moveForce, 0, SpaceWindMaxVelocity), body: physics); } component.LastHighPressureMovementAirCycle = cycle; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 284ac57cfa..a63c4be9a5 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1040,7 +1040,7 @@ public static readonly CVarDef /// Useful to prevent clipping through objects. /// public static readonly CVarDef SpaceWindMaxVelocity = - CVarDef.Create("atmos.space_wind_max_velocity", 30f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_max_velocity", 25f, CVar.SERVERONLY); /// /// The maximum force that may be applied to an object by pushing (i.e. not throwing) atmospheric pressure differences. @@ -1057,8 +1057,16 @@ public static readonly CVarDef /// If you are reading this because you want to change it, consider looking into why almost every item in the game weighs only 5 grams /// And maybe do your part to fix that? :) /// - public static readonly CVarDef SpaceWindMinimumMassThreshold = - CVarDef.Create("atmos.space_wind_minimum_mass_threshold", 10f, CVar.SERVERONLY); + public static readonly CVarDef SpaceWindMinimumCalculatedMass = + CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 10f, CVar.SERVERONLY); + + /// + /// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold. + /// If an object's inverse mass is lower than this, it is capped at this. Basically, an upper limit to how heavy an object can be + /// before it stops resisting space wind more. + /// + public static readonly CVarDef SpaceWindMaximumCalculatedInverseMass = + CVarDef.Create("atmos.space_wind_maximum_calculated_inverse_mass", 0.025f, CVar.SERVERONLY); /// /// Whether monstermos tile equalization is enabled. @@ -1081,7 +1089,7 @@ public static readonly CVarDef /// Also looks weird on slow spacing for unrelated reasons. If you do want to enable this, you should probably turn on instaspacing. /// public static readonly CVarDef MonstermosRipTiles = - CVarDef.Create("atmos.monstermos_rip_tiles", false, CVar.SERVERONLY); + CVarDef.Create("atmos.monstermos_rip_tiles", true, CVar.SERVERONLY); /// /// Whether explosive depressurization will cause the grid to gain an impulse. From 54ca8cef8ba0808da2603531fe80919489629b2d Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 16 May 2024 00:05:58 -0400 Subject: [PATCH 12/68] Update AtmosphereSystem.HighPressureDelta.cs --- .../Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 1f637ec951..61d6a35679 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -88,7 +88,8 @@ private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent componen private void HighPressureMovements(Entity gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) { - if (tile.PressureDifference < MathF.Pow(SpaceWindMinimumCalculatedMass, 2)) + //!MAGIC EXIT CONDITION THAT MAKES ALMOST 200 LINES RUN 1/100TH AS OFTEN. + if (tile.PressureDifference < SpaceWindMinimumCalculatedMass * SpaceWindMinimumCalculatedMass) return; // TODO ATMOS finish this From 7500efd72910c56d82c850fffc0ee48738d4fa38 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 16 May 2024 00:52:47 -0400 Subject: [PATCH 13/68] guh, last push --- .../EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 6 ++++-- Content.Shared/CCVar/CCVars.cs | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 61d6a35679..b64f8b4ccf 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -232,6 +232,8 @@ public void ExperiencePressureDifference( var moveForce = pressureDifference * MathF.Max(physics.InvMass, SpaceWindMaximumCalculatedInverseMass); if (moveForce > physics.Mass) { + var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; + moveForce = MathF.Min(moveForce, maxSafeForceForObject); AddMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); @@ -240,11 +242,11 @@ public void ExperiencePressureDifference( if (throwTarget != EntityCoordinates.Invalid) { var pos = throwTarget.ToMap(EntityManager).Position - xform.WorldPosition + dirVec; - _physics.ApplyLinearImpulse(uid, pos * Math.Clamp(moveForce, 0, SpaceWindMaxVelocity), body: physics); + _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics); } else { - _physics.ApplyLinearImpulse(uid, dirVec * Math.Clamp(moveForce, 0, SpaceWindMaxVelocity), body: physics); + _physics.ApplyLinearImpulse(uid, dirVec * moveForce, body: physics); } component.LastHighPressureMovementAirCycle = cycle; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index a63c4be9a5..784f87fdcb 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1058,7 +1058,7 @@ public static readonly CVarDef /// And maybe do your part to fix that? :) /// public static readonly CVarDef SpaceWindMinimumCalculatedMass = - CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 10f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 6f, CVar.SERVERONLY); /// /// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold. @@ -1066,7 +1066,7 @@ public static readonly CVarDef /// before it stops resisting space wind more. /// public static readonly CVarDef SpaceWindMaximumCalculatedInverseMass = - CVarDef.Create("atmos.space_wind_maximum_calculated_inverse_mass", 0.025f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_maximum_calculated_inverse_mass", 0.04f, CVar.SERVERONLY); /// /// Whether monstermos tile equalization is enabled. From 7470ba7d19c1466d027eeec6dafbf5a400f6923c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 16 May 2024 14:52:38 -0400 Subject: [PATCH 14/68] Fix for objects getting stuck on walls, new CVar for more expensive airflow option. --- .../Atmos/EntitySystems/AtmosphereSystem.CVars.cs | 2 ++ .../Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs | 2 +- Content.Shared/CCVar/CCVars.cs | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 211c5dd945..517fc1469b 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -14,6 +14,7 @@ public sealed partial class AtmosphereSystem public float SpaceWindMaxPushForce { get; private set; } public float SpaceWindMinimumCalculatedMass { get; private set; } public float SpaceWindMaximumCalculatedInverseMass { get; private set; } + public bool MonstermosUseExpensiveAirflow { get; private set; } public bool MonstermosEqualization { get; private set; } public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } @@ -45,6 +46,7 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.SpaceWindMaxPushForce, value => SpaceWindMaxPushForce = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMinimumCalculatedMass, value => SpaceWindMinimumCalculatedMass = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaximumCalculatedInverseMass, value => SpaceWindMaximumCalculatedInverseMass = value, true); + Subs.CVar(_cfg, CCVars.MonstermosUseExpensiveAirflow, value => MonstermosUseExpensiveAirflow = value, true); Subs.CVar(_cfg, CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true); Subs.CVar(_cfg, CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index aceda3cd33..ed1c877662 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -135,7 +135,7 @@ private void EqualizePressureInZone(Entity logN && takerTilesLength > logN) + if (!MonstermosUseExpensiveAirflow && giverTilesLength > logN && takerTilesLength > logN) { // Even if it fails, it will speed up the next part. Array.Sort(_equalizeTiles, 0, tileCount, _monstermosComparer); diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 2da77e1b37..449faba101 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1169,6 +1169,13 @@ public static readonly CVarDef public static readonly CVarDef AtmosSpacingMaxWind = CVarDef.Create("atmos.mmos_max_wind", 500f, CVar.SERVERONLY); + /// + /// Increases default airflow calculations to O(n^2) complexity, for use with heavy space wind optimizations. Potato servers BEWARE + /// This solves the problem of objects being trapped in an infinite loop of slamming into a wall repeatedly. + /// + public static readonly CVarDef MonstermosUseExpensiveAirflow = + CVarDef.Create("atmos.mmos_expensive_airflow", true, CVar.SERVERONLY); + /// /// Whether atmos superconduction is enabled. /// From b32872560669f6d5543180c26f173eead8d91f12 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 16 May 2024 15:17:17 -0400 Subject: [PATCH 15/68] Update animals.yml --- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 378b3f8a9d..d28bc4550a 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -22,7 +22,7 @@ shape: !type:PhysShapeCircle radius: 0.25 - density: 10 + density: 0.8 mask: - FlyingMobMask layer: @@ -84,7 +84,7 @@ shape: !type:PhysShapeCircle radius: 0.1 - density: 30 + density: 0.1 mask: - FlyingMobMask layer: @@ -328,7 +328,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 100 + density: 0.0007 mask: - SmallMobMask layer: @@ -432,7 +432,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 120 + density: 0.007 mask: - SmallMobMask layer: @@ -1508,7 +1508,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 100 + density: 0.76 mask: - SmallMobMask layer: @@ -2417,7 +2417,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 50 #They actually are pretty light, I looked it up + density: 16.66 mask: - MobMask layer: @@ -2494,7 +2494,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 50 + density: 25.5 mask: - MobMask layer: @@ -2644,7 +2644,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 15 + density: 9 mask: - MobMask layer: @@ -2787,6 +2787,17 @@ Base: caracal_flop Dead: Base: caracal_dead + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 30 + mask: + - MobMask + layer: + - MobLayer - type: entity name: kitten @@ -2820,6 +2831,17 @@ thresholds: 0: Alive 25: Dead + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 2 + mask: + - MobMask + layer: + - MobLayer - type: entity name: sloth @@ -2900,7 +2922,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 5 + density: 4 mask: - MobMask layer: @@ -2977,7 +2999,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 120 + density: 0.8 mask: - SmallMobMask layer: @@ -3095,7 +3117,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 250 + density: 750 mask: - MobMask layer: @@ -3168,7 +3190,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 100 # High, because wood is heavy. + density: 15 mask: - MobMask layer: From f7e2f70aef16c8952eddf54aa4adea07acf93128 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 16 May 2024 15:46:17 -0400 Subject: [PATCH 16/68] Fix tiny mobs boiling themselves to death --- Content.Server/Temperature/Systems/TemperatureSystem.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index aef4b89d50..aca902b9d3 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -163,8 +163,9 @@ public float GetHeatCapacity(EntityUid uid, TemperatureComponent? comp = null, P { return Atmospherics.MinimumHeatCapacity; } - - return comp.SpecificHeat * physics.FixturesMass; + if (physics.Mass < 1) + return comp.SpecificHeat; + else return comp.SpecificHeat * physics.FixturesMass; } private void OnInit(EntityUid uid, InternalTemperatureComponent comp, MapInitEvent args) From 9d81e241336ef1362869264ee403b5307613154d Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 11 Jun 2024 20:22:36 -0400 Subject: [PATCH 17/68] Initial Beta for Rip Tile Rework --- .../EntitySystems/AtmosphereSystem.CVars.cs | 2 + .../AtmosphereSystem.Monstermos.cs | 20 ++-- Content.Shared/CCVar/CCVars.cs | 7 ++ Content.Shared/Maps/ContentTileDefinition.cs | 3 + Resources/Prototypes/Tiles/floors.yml | 103 ++++++++++++++++++ 5 files changed, 127 insertions(+), 8 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 517fc1469b..9038200a30 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -18,6 +18,7 @@ public sealed partial class AtmosphereSystem public bool MonstermosEqualization { get; private set; } public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } + public float MonstermosRipTilesMinimumPressure { get; private set; } public bool GridImpulse { get; private set; } public float SpacingEscapeRatio { get; private set; } public float SpacingMinGas { get; private set; } @@ -50,6 +51,7 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true); Subs.CVar(_cfg, CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); + Subs.CVar(_cfg, CCVars.MonstermosRipTilesMinimumPressure, value => MonstermosRipTilesMinimumPressure = value, true); Subs.CVar(_cfg, CCVars.AtmosGridImpulse, value => GridImpulse = value, true); Subs.CVar(_cfg, CCVars.AtmosSpacingEscapeRatio, value => SpacingEscapeRatio = value, true); Subs.CVar(_cfg, CCVars.AtmosSpacingMinGas, value => SpacingMinGas = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index 934fc93f46..dee2bf1346 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -5,17 +5,18 @@ using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Database; +using Content.Shared.Maps; +using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; +using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; - namespace Content.Server.Atmos.EntitySystems { public sealed partial class AtmosphereSystem { [Dependency] private readonly FirelockSystem _firelockSystem = default!; - private readonly TileAtmosphereComparer _monstermosComparer = new(); private readonly TileAtmosphere?[] _equalizeTiles = new TileAtmosphere[Atmospherics.MonstermosHardTileLimit]; @@ -550,7 +551,8 @@ private void ExplosivelyDepressurize( } InvalidateVisuals(otherTile.GridIndex, otherTile.GridIndices, visuals); - HandleDecompressionFloorRip(mapGrid, otherTile, otherTile.MonstermosInfo.CurrentTransferAmount); + if (MonstermosRipTiles && otherTile.PressureDifference > MonstermosRipTilesMinimumPressure) + HandleDecompressionFloorRip(mapGrid, otherTile, otherTile.PressureDifference); } if (GridImpulse && tileCount > 0) @@ -676,15 +678,17 @@ private void AdjustEqMovement(TileAtmosphere tile, AtmosDirection direction, flo adj.MonstermosInfo[direction.GetOpposite()] -= amount; } - private void HandleDecompressionFloorRip(MapGridComponent mapGrid, TileAtmosphere tile, float sum) + private void HandleDecompressionFloorRip(MapGridComponent mapGrid, TileAtmosphere tile, float delta) { - if (!MonstermosRipTiles) + if (!mapGrid.TryGetTileRef(tile.GridIndices, out var tileRef)) return; + var tileref = tileRef.Tile; - var chance = MathHelper.Clamp(0.01f + (sum / SpacingMaxWind) * 0.3f, 0.003f, 0.3f); - - if (sum > 20 && _robustRandom.Prob(chance)) + var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileref.TypeId]; + if (!tileDef.Reinforced && tileDef.TileRipResistance < delta) + { PryTile(mapGrid, tile.GridIndices); + } } private sealed class TileAtmosphereComparer : IComparer diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 449faba101..ac0d0614fd 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1140,6 +1140,13 @@ public static readonly CVarDef public static readonly CVarDef MonstermosRipTiles = CVarDef.Create("atmos.monstermos_rip_tiles", true, CVar.SERVERONLY); + /// + /// Taken as the cube of a tile's mass, this acts as a minimum threshold of mass for which air pressure calculates whether or not to rip a tile from the floor + /// This should be set by default to the cube of the game's lowest mass tile as defined in .yml prototypes, but can be increased for server performance reasons + /// + public static readonly CVarDef MonstermosRipTilesMinimumPressure = + CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 125f, CVar.SERVERONLY); + /// /// Whether explosive depressurization will cause the grid to gain an impulse. /// Needs and to be enabled to work. diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index 32f5db0e82..339e9f6f39 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -121,5 +121,8 @@ public void AssignTileId(ushort id) { TileId = id; } + + [DataField] public bool Reinforced = false; + [DataField] public float TileRipResistance = 125f; } } diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index b5ca240d5c..b55eb0942f 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -15,6 +15,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelCheckerLight @@ -33,6 +34,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerLight heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelCheckerDark @@ -51,6 +53,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerDark heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelMini @@ -69,6 +72,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelPavement @@ -87,6 +91,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelDiagonal @@ -105,6 +110,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelOffset @@ -117,6 +123,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelMono @@ -135,6 +142,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelPavementVertical @@ -153,6 +161,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelHerringbone @@ -171,6 +180,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorSteelDiagonalMini @@ -189,6 +199,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorBrassFilled @@ -201,6 +212,7 @@ collection: FootstepHull itemDrop: FloorTileItemBrassFilled heatCapacity: 10000 + tileRipResistance: 220 - type: tile id: FloorBrassReebe @@ -213,6 +225,7 @@ collection: FootstepHull itemDrop: FloorTileItemBrassReebe heatCapacity: 10000 + tileRipResistance: 220 - type: tile id: FloorPlastic @@ -231,6 +244,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWood @@ -251,6 +265,7 @@ collection: BarestepWood itemDrop: FloorTileItemWood heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhite @@ -269,6 +284,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhiteMini @@ -287,6 +303,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhitePavement @@ -305,6 +322,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhiteDiagonal @@ -323,6 +341,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhiteOffset @@ -335,6 +354,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhiteMono @@ -353,6 +373,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhitePavementVertical @@ -371,6 +392,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhiteHerringbone @@ -389,6 +411,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhiteDiagonalMini @@ -407,6 +430,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorWhitePlastic @@ -425,6 +449,7 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorDark @@ -443,6 +468,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkMini @@ -461,6 +487,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkPavement @@ -479,6 +506,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkDiagonal @@ -497,6 +525,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkOffset @@ -509,6 +538,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkMono @@ -527,6 +557,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkPavementVertical @@ -545,6 +576,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkHerringbone @@ -563,6 +595,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkDiagonalMini @@ -581,6 +614,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorDarkPlastic @@ -599,6 +633,7 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorTechMaint @@ -611,6 +646,7 @@ collection: FootstepHull itemDrop: FloorTileItemTechmaint heatCapacity: 10000 + tileRipResistance: 250 - type: tile id: FloorReinforced @@ -623,6 +659,7 @@ collection: FootstepHull itemDrop: FloorTileItemReinforced heatCapacity: 10000 + reinforced: true - type: tile id: FloorMono @@ -635,6 +672,7 @@ collection: FootstepTile itemDrop: FloorTileItemMono heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorLino @@ -647,6 +685,7 @@ collection: FootstepTile itemDrop: FloorTileItemLino heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorSteelDirty @@ -659,6 +698,7 @@ collection: FootstepPlating itemDrop: FloorTileItemDirty heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorElevatorShaft @@ -671,6 +711,7 @@ collection: FootstepHull itemDrop: FloorTileItemElevatorShaft heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorMetalDiamond @@ -683,6 +724,7 @@ collection: FootstepHull itemDrop: FloorTileItemMetalDiamond heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorRockVault @@ -695,6 +737,7 @@ collection: FootstepAsteroid itemDrop: FloorTileItemRockVault heatCapacity: 10000 + tileRipResistance: 400 - type: tile id: FloorBlue @@ -707,6 +750,7 @@ collection: FootstepTile itemDrop: FloorTileItemBlue heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorSteelLime @@ -725,6 +769,7 @@ collection: FootstepFloor itemDrop: FloorTileItemLime heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorMining @@ -737,6 +782,7 @@ collection: FootstepTile itemDrop: FloorTileItemMining heatCapacity: 10000 + tileRipResistance: 250 - type: tile id: FloorMiningDark @@ -749,6 +795,7 @@ collection: FootstepTile itemDrop: FloorTileItemMiningDark heatCapacity: 10000 + tileRipResistance: 250 - type: tile id: FloorMiningLight @@ -761,6 +808,7 @@ collection: FootstepTile itemDrop: FloorTileItemMiningLight heatCapacity: 10000 + tileRipResistance: 250 # Departamental - type: tile @@ -774,6 +822,7 @@ collection: FootstepHull itemDrop: FloorTileItemFreezer heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorShowroom @@ -786,6 +835,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShowroom heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorHydro @@ -798,6 +848,7 @@ collection: FootstepFloor itemDrop: FloorTileItemHydro heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorBar @@ -816,6 +867,7 @@ collection: FootstepFloor itemDrop: FloorTileItemBar heatCapacity: 10000 + tileRipResistance: 100 - type: tile id: FloorClown @@ -828,6 +880,7 @@ collection: FootstepFloor itemDrop: FloorTileItemClown heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorMime @@ -840,6 +893,7 @@ collection: FootstepFloor itemDrop: FloorTileItemMime heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorKitchen @@ -852,6 +906,7 @@ collection: FootstepTile itemDrop: FloorTileItemKitchen heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorLaundry @@ -864,6 +919,7 @@ collection: FootstepTile itemDrop: FloorTileItemLaundry heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorSteelDamaged @@ -883,6 +939,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel #This should probably be made null when it becomes possible to make it such, in SS13 prying destroyed tiles wouldn't give you anything. heatCapacity: 10000 + tileRipResistance: 175 - type: tile id: FloorSteelBurnt @@ -899,6 +956,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel #Same case as FloorSteelDamaged, make it null when possible heatCapacity: 10000 + tileRipResistance: 175 # Concrete @@ -920,6 +978,7 @@ itemDrop: FloorTileItemConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorConcreteMono @@ -939,6 +998,7 @@ itemDrop: FloorTileItemConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorConcreteSmooth @@ -958,6 +1018,7 @@ itemDrop: FloorTileItemConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorGrayConcrete @@ -977,6 +1038,7 @@ itemDrop: FloorTileItemGrayConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorGrayConcreteMono @@ -996,6 +1058,7 @@ itemDrop: FloorTileItemGrayConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorGrayConcreteSmooth @@ -1015,6 +1078,7 @@ itemDrop: FloorTileItemGrayConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorOldConcrete @@ -1034,6 +1098,7 @@ itemDrop: FloorTileItemOldConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorOldConcreteMono @@ -1053,6 +1118,7 @@ itemDrop: FloorTileItemOldConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 - type: tile id: FloorOldConcreteSmooth @@ -1072,6 +1138,7 @@ itemDrop: FloorTileItemOldConcrete heatCapacity: 10000 weather: true + tileRipResistance: 300 # Carpets (non smoothing) - type: tile @@ -1088,6 +1155,7 @@ friction: 0.25 itemDrop: FloorTileItemArcadeBlue heatCapacity: 10000 + tileRipResistance: 75 - type: tile id: FloorArcadeBlue2 @@ -1103,6 +1171,7 @@ friction: 0.25 itemDrop: FloorTileItemArcadeBlue2 heatCapacity: 10000 + tileRipResistance: 75 - type: tile id: FloorArcadeRed @@ -1118,6 +1187,7 @@ friction: 0.25 itemDrop: FloorTileItemArcadeRed heatCapacity: 10000 + tileRipResistance: 75 - type: tile id: FloorEighties @@ -1133,6 +1203,7 @@ friction: 0.25 itemDrop: FloorTileItemEighties heatCapacity: 10000 + tileRipResistance: 75 - type: tile id: FloorCarpetClown @@ -1148,6 +1219,7 @@ friction: 0.25 itemDrop: FloorTileItemCarpetClown heatCapacity: 10000 + tileRipResistance: 75 - type: tile id: FloorCarpetOffice @@ -1163,6 +1235,7 @@ friction: 0.25 itemDrop: FloorTileItemCarpetOffice heatCapacity: 10000 + tileRipResistance: 75 - type: tile id: FloorBoxing @@ -1182,6 +1255,7 @@ friction: 0.25 itemDrop: FloorTileItemBoxing heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorGym @@ -1201,6 +1275,7 @@ friction: 0.25 itemDrop: FloorTileItemGym heatCapacity: 10000 + tileRipResistance: 50 # Shuttle - type: tile @@ -1214,6 +1289,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleWhite heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorShuttleGrey @@ -1226,6 +1302,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleGrey heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorShuttleBlack @@ -1238,6 +1315,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleBlack heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorShuttleBlue @@ -1250,6 +1328,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleBlue heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorShuttleOrange @@ -1262,6 +1341,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleOrange heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorShuttlePurple @@ -1274,6 +1354,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttlePurple heatCapacity: 10000 + tileRipResistance: 200 - type: tile id: FloorShuttleRed @@ -1286,6 +1367,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleRed heatCapacity: 10000 + tileRipResistance: 200 # Materials @@ -1300,6 +1382,7 @@ collection: FootstepTile itemDrop: FloorTileItemGold heatCapacity: 10000 + tileRipResistance: 600 - type: tile id: FloorSilver @@ -1312,6 +1395,7 @@ collection: FootstepTile itemDrop: FloorTileItemSilver heatCapacity: 10000 + tileRipResistance: 500 - type: tile id: FloorGlass @@ -1330,6 +1414,7 @@ collection: FootstepTile itemDrop: SheetGlass1 heatCapacity: 10000 + tileRipResistance: 150 - type: tile id: FloorRGlass @@ -1348,6 +1433,7 @@ collection: FootstepTile itemDrop: SheetRGlass1 heatCapacity: 10000 + tileRipResistance: 175 # Circuits - type: tile @@ -1361,6 +1447,7 @@ collection: FootstepHull itemDrop: FloorTileItemGCircuit heatCapacity: 10000 + tileRipResistance: 225 - type: tile id: FloorBlueCircuit @@ -1373,6 +1460,7 @@ collection: FootstepHull itemDrop: FloorTileItemBCircuit heatCapacity: 10000 + tileRipResistance: 225 # Terrain - type: tile @@ -1666,6 +1754,7 @@ itemDrop: FloorTileItemFlesh friction: 0.05 #slippy heatCapacity: 10000 + tileRipResistance: 80 - type: tile id: FloorTechMaint2 @@ -1678,6 +1767,7 @@ collection: FootstepHull itemDrop: FloorTileItemSteelMaint heatCapacity: 10000 + tileRipResistance: 225 - type: tile id: FloorTechMaint3 @@ -1696,6 +1786,7 @@ collection: FootstepHull itemDrop: FloorTileItemGratingMaint heatCapacity: 10000 + tileRipResistance: 225 - type: tile id: FloorWoodTile @@ -1716,6 +1807,7 @@ collection: BarestepWood itemDrop: FloorTileItemWoodPattern heatCapacity: 10000 + tileRipResistance: 75 - type: tile id: FloorBrokenWood @@ -1739,6 +1831,7 @@ collection: BarestepWood itemDrop: MaterialWoodPlank1 heatCapacity: 10000 + tileRipResistance: 60 - type: tile id: FloorWebTile @@ -1753,6 +1846,7 @@ collection: BarestepCarpet itemDrop: FloorTileItemWeb heatCapacity: 10000 + tileRipResistance: 30 - type: tile id: FloorChromite @@ -1784,6 +1878,7 @@ collection: FootstepHull itemDrop: FloorTileItemSteel #probably should not be normally obtainable, but the game shits itself and dies when you try to put null here heatCapacity: 10000 + tileRipResistance: 500 - type: tile id: FloorHullReinforced @@ -1796,6 +1891,7 @@ itemDrop: FloorTileItemSteel heatCapacity: 100000 #/tg/ has this set as "INFINITY." I don't know if that exists here so I've just added an extra 0 indestructible: true + reinforced: true - type: tile id: FloorReinforcedHardened @@ -1806,6 +1902,7 @@ footstepSounds: collection: FootstepHull itemDrop: FloorTileItemReinforced #same case as FloorHull + reinforced: true # Faux sci tiles @@ -1837,6 +1934,7 @@ collection: FootstepGrass itemDrop: FloorTileItemAstroGrass heatCapacity: 10000 + tileRipResistance: 50 - type: tile id: FloorMowedAstroGrass @@ -1846,6 +1944,7 @@ isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemMowedAstroGrass + tileRipResistance: 50 - type: tile id: FloorJungleAstroGrass @@ -1855,6 +1954,7 @@ isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemJungleAstroGrass + tileRipResistance: 50 # Ice - type: tile @@ -1870,6 +1970,7 @@ mobFrictionNoInput: 0.05 mobAcceleration: 2 itemDrop: FloorTileItemAstroIce + tileRipResistance: 50 - type: tile id: FloorAstroSnow @@ -1879,6 +1980,7 @@ isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroSnow + tileRipResistance: 50 - type: tile id: FloorWoodLarge @@ -1899,3 +2001,4 @@ collection: BarestepWood itemDrop: FloorTileItemWoodLarge heatCapacity: 10000 + tileRipResistance: 100 From 70a9345453a410f8e8c9ab609499bd4ec4341731 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 11 Jun 2024 20:31:32 -0400 Subject: [PATCH 18/68] Tentative fixes for wall quantum tunneling --- .../Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 4 ++-- Content.Shared/CCVar/CCVars.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index d1939a92b1..c00a5df747 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -244,11 +244,11 @@ public void ExperiencePressureDifference( if (throwTarget != EntityCoordinates.Invalid) { var pos = throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition + dirVec; - _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics); + _physics.ApplyLinearImpulse(uid, pos.Normalized() * moveForce, body: physics); } else { - _physics.ApplyLinearImpulse(uid, dirVec * moveForce, body: physics); + _physics.ApplyLinearImpulse(uid, dirVec.Normalized() * moveForce, body: physics); } component.LastHighPressureMovementAirCycle = cycle; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index ac0d0614fd..1719682ed0 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1089,7 +1089,7 @@ public static readonly CVarDef /// Useful to prevent clipping through objects. /// public static readonly CVarDef SpaceWindMaxVelocity = - CVarDef.Create("atmos.space_wind_max_velocity", 25f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_max_velocity", 15f, CVar.SERVERONLY); /// /// The maximum force that may be applied to an object by pushing (i.e. not throwing) atmospheric pressure differences. @@ -1107,7 +1107,7 @@ public static readonly CVarDef /// And maybe do your part to fix that? :) /// public static readonly CVarDef SpaceWindMinimumCalculatedMass = - CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 6f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 10f, CVar.SERVERONLY); /// /// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold. From 4d1cf7de380c99c0aecaf0c8e4b0f23450f269ef Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 11 Jun 2024 21:56:21 -0400 Subject: [PATCH 19/68] More fixes --- .../EntitySystems/AtmosphereSystem.CVars.cs | 2 + .../AtmosphereSystem.Monstermos.cs | 3 +- Content.Shared/CCVar/CCVars.cs | 9 +++- Resources/Prototypes/Tiles/floors.yml | 44 +++++++++---------- 4 files changed, 34 insertions(+), 24 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 9038200a30..7b0b357041 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -19,6 +19,7 @@ public sealed partial class AtmosphereSystem public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } public float MonstermosRipTilesMinimumPressure { get; private set; } + public float MonstermosRipTilesPressureOffset { get; private set; } public bool GridImpulse { get; private set; } public float SpacingEscapeRatio { get; private set; } public float SpacingMinGas { get; private set; } @@ -52,6 +53,7 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTilesMinimumPressure, value => MonstermosRipTilesMinimumPressure = value, true); + Subs.CVar(_cfg, CCVars.MonstermosRipTilesPressureOffset, value => MonstermosRipTilesPressureOffset = value, true); Subs.CVar(_cfg, CCVars.AtmosGridImpulse, value => GridImpulse = value, true); Subs.CVar(_cfg, CCVars.AtmosSpacingEscapeRatio, value => SpacingEscapeRatio = value, true); Subs.CVar(_cfg, CCVars.AtmosSpacingMinGas, value => SpacingMinGas = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index dee2bf1346..4e90742c85 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -17,6 +17,7 @@ namespace Content.Server.Atmos.EntitySystems public sealed partial class AtmosphereSystem { [Dependency] private readonly FirelockSystem _firelockSystem = default!; + private readonly TileAtmosphereComparer _monstermosComparer = new(); private readonly TileAtmosphere?[] _equalizeTiles = new TileAtmosphere[Atmospherics.MonstermosHardTileLimit]; @@ -685,7 +686,7 @@ private void HandleDecompressionFloorRip(MapGridComponent mapGrid, TileAtmospher var tileref = tileRef.Tile; var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileref.TypeId]; - if (!tileDef.Reinforced && tileDef.TileRipResistance < delta) + if (!tileDef.Reinforced && tileDef.TileRipResistance < delta * MonstermosRipTilesPressureOffset) { PryTile(mapGrid, tile.GridIndices); } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 1719682ed0..b0d66a9026 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1145,7 +1145,14 @@ public static readonly CVarDef /// This should be set by default to the cube of the game's lowest mass tile as defined in .yml prototypes, but can be increased for server performance reasons /// public static readonly CVarDef MonstermosRipTilesMinimumPressure = - CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 125f, CVar.SERVERONLY); + CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 500f, CVar.SERVERONLY); + + /// + /// Taken after the minimum pressure is checked, the effective pressure is multiplied by this amount. This allows server hosts to + /// finely tune how likely floor tiles are to be ripped apart by air pressure + /// + public static readonly CVarDef MonstermosRipTilesPressureOffset = + CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 10f, CVar.SERVERONLY); /// /// Whether explosive depressurization will cause the grid to gain an impulse. diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index b55eb0942f..2abaab63fb 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -15,7 +15,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelCheckerLight @@ -34,7 +34,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerLight heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelCheckerDark @@ -53,7 +53,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerDark heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelMini @@ -72,7 +72,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelPavement @@ -91,7 +91,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelDiagonal @@ -110,7 +110,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelOffset @@ -123,7 +123,7 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelMono @@ -142,7 +142,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelPavementVertical @@ -161,7 +161,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelHerringbone @@ -180,7 +180,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorSteelDiagonalMini @@ -199,7 +199,7 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorBrassFilled @@ -698,7 +698,7 @@ collection: FootstepPlating itemDrop: FloorTileItemDirty heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorElevatorShaft @@ -711,7 +711,7 @@ collection: FootstepHull itemDrop: FloorTileItemElevatorShaft heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorMetalDiamond @@ -724,7 +724,7 @@ collection: FootstepHull itemDrop: FloorTileItemMetalDiamond heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorRockVault @@ -769,7 +769,7 @@ collection: FootstepFloor itemDrop: FloorTileItemLime heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorMining @@ -1289,7 +1289,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleWhite heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorShuttleGrey @@ -1302,7 +1302,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleGrey heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorShuttleBlack @@ -1315,7 +1315,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleBlack heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorShuttleBlue @@ -1328,7 +1328,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleBlue heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorShuttleOrange @@ -1341,7 +1341,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleOrange heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorShuttlePurple @@ -1354,7 +1354,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttlePurple heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 - type: tile id: FloorShuttleRed @@ -1367,7 +1367,7 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleRed heatCapacity: 10000 - tileRipResistance: 200 + tileRipResistance: 4500 # Materials From c9286a597875e28604ae52018617fe556e8d6924 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 11 Jun 2024 22:24:22 -0400 Subject: [PATCH 20/68] Update CCVars.cs --- Content.Shared/CCVar/CCVars.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index b0d66a9026..94d0a69d5d 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1145,14 +1145,14 @@ public static readonly CVarDef /// This should be set by default to the cube of the game's lowest mass tile as defined in .yml prototypes, but can be increased for server performance reasons /// public static readonly CVarDef MonstermosRipTilesMinimumPressure = - CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 500f, CVar.SERVERONLY); + CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 50f, CVar.SERVERONLY); /// /// Taken after the minimum pressure is checked, the effective pressure is multiplied by this amount. This allows server hosts to /// finely tune how likely floor tiles are to be ripped apart by air pressure /// public static readonly CVarDef MonstermosRipTilesPressureOffset = - CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 10f, CVar.SERVERONLY); + CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 12f, CVar.SERVERONLY); /// /// Whether explosive depressurization will cause the grid to gain an impulse. From 9c0087195ae16c955d0479d10693e15be3a42aa2 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 11 Jun 2024 22:46:45 -0400 Subject: [PATCH 21/68] Update CCVars.cs --- Content.Shared/CCVar/CCVars.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 94d0a69d5d..aebbe722fa 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1145,14 +1145,14 @@ public static readonly CVarDef /// This should be set by default to the cube of the game's lowest mass tile as defined in .yml prototypes, but can be increased for server performance reasons /// public static readonly CVarDef MonstermosRipTilesMinimumPressure = - CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 50f, CVar.SERVERONLY); + CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 7500f, CVar.SERVERONLY); /// /// Taken after the minimum pressure is checked, the effective pressure is multiplied by this amount. This allows server hosts to /// finely tune how likely floor tiles are to be ripped apart by air pressure /// public static readonly CVarDef MonstermosRipTilesPressureOffset = - CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 12f, CVar.SERVERONLY); + CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 0.44f, CVar.SERVERONLY); /// /// Whether explosive depressurization will cause the grid to gain an impulse. From 45c1bf0efd8e418b5d467fb3409b98edf4f27bdd Mon Sep 17 00:00:00 2001 From: fox Date: Fri, 14 Jun 2024 02:59:25 +0300 Subject: [PATCH 22/68] Discover polymorphism --- Content.Server/Language/LanguageSystem.cs | 104 +---------- Content.Shared/Language/LanguagePrototype.cs | 10 +- Content.Shared/Language/ObfuscationMethods.cs | 168 ++++++++++++++++++ .../Language/Systems/SharedLanguageSystem.cs | 36 +++- 4 files changed, 208 insertions(+), 110 deletions(-) create mode 100644 Content.Shared/Language/ObfuscationMethods.cs diff --git a/Content.Server/Language/LanguageSystem.cs b/Content.Server/Language/LanguageSystem.cs index f1bf44c1f4..065d696aa2 100644 --- a/Content.Server/Language/LanguageSystem.cs +++ b/Content.Server/Language/LanguageSystem.cs @@ -17,10 +17,6 @@ private readonly DetermineEntityLanguagesEvent _determineLanguagesEvent = new(string.Empty, new(), new()), _universalLanguagesEvent = new(UniversalPrototype, [UniversalPrototype], [UniversalPrototype]); // Returned for universal speakers only - /// - /// A random number added to each pseudo-random number's seed. Changes every round. - /// - public int RandomRoundSeed { get; private set; } public override void Initialize() @@ -29,7 +25,6 @@ public override void Initialize() SubscribeNetworkEvent(OnClientSetLanguage); SubscribeLocalEvent(OnInitLanguageSpeaker); - SubscribeLocalEvent(_ => RandomRoundSeed = _random.Next()); InitializeNet(); } @@ -41,24 +36,10 @@ public override void Initialize() /// public string ObfuscateSpeech(EntityUid source, string message) { - var language = GetLanguage(source) ?? Universal; + var language = GetLanguage(source); return ObfuscateSpeech(message, language); } - /// - /// Obfuscate a message using the given language. - /// - public string ObfuscateSpeech(string message, LanguagePrototype language) - { - var builder = new StringBuilder(); - if (language.ObfuscateSyllables) - ObfuscateSyllables(builder, message, language); - else - ObfuscatePhrases(builder, message, language); - - return builder.ToString(); - } - public bool CanUnderstand(EntityUid listener, LanguagePrototype language, LanguageSpeakerComponent? listenerLanguageComp = null) { if (language.ID == UniversalPrototype || HasComp(listener)) @@ -156,76 +137,6 @@ private void OnInitLanguageSpeaker(EntityUid uid, LanguageSpeakerComponent compo } #endregion - #region internal api - obfuscation - private void ObfuscateSyllables(StringBuilder builder, string message, LanguagePrototype language) - { - // Go through each word. Calculate its hash sum and count the number of letters. - // Replicate it with pseudo-random syllables of pseudo-random (but similar) length. Use the hash code as the seed. - // This means that identical words will be obfuscated identically. Simple words like "hello" or "yes" in different langs can be memorized. - var wordBeginIndex = 0; - var hashCode = 0; - for (var i = 0; i < message.Length; i++) - { - var ch = char.ToLower(message[i]); - // A word ends when one of the following is found: a space, a sentence end, or EOM - if (char.IsWhiteSpace(ch) || IsSentenceEnd(ch) || i == message.Length - 1) - { - var wordLength = i - wordBeginIndex; - if (wordLength > 0) - { - var newWordLength = PseudoRandomNumber(hashCode, 1, 4); - - for (var j = 0; j < newWordLength; j++) - { - var index = PseudoRandomNumber(hashCode + j, 0, language.Replacement.Count); - builder.Append(language.Replacement[index]); - } - } - - builder.Append(ch); - hashCode = 0; - wordBeginIndex = i + 1; - } - else - hashCode = hashCode * 31 + ch; - } - } - - private void ObfuscatePhrases(StringBuilder builder, string message, LanguagePrototype language) - { - // In a similar manner, each phrase is obfuscated with a random number of conjoined obfuscation phrases. - // However, the number of phrases depends on the number of characters in the original phrase. - var sentenceBeginIndex = 0; - for (var i = 0; i < message.Length; i++) - { - var ch = char.ToLower(message[i]); - if (IsSentenceEnd(ch) || i == message.Length - 1) - { - var length = i - sentenceBeginIndex; - if (length > 0) - { - var newLength = (int) Math.Clamp(Math.Cbrt(length) - 1, 1, 4); // 27+ chars for 2 phrases, 64+ for 3, 125+ for 4. - - for (var j = 0; j < newLength; j++) - { - var phrase = _random.Pick(language.Replacement); - builder.Append(phrase); - } - } - sentenceBeginIndex = i + 1; - - if (IsSentenceEnd(ch)) - builder.Append(ch).Append(" "); - } - } - } - - private static bool IsSentenceEnd(char ch) - { - return ch is '.' or '!' or '?'; - } - #endregion - #region internal api - misc /// /// Dynamically resolves the current language of the entity and the list of all languages it speaks. @@ -257,19 +168,6 @@ private DetermineEntityLanguagesEvent GetLanguages(EntityUid speaker, LanguageSp return ev; } - /// - /// Generates a stable pseudo-random number in the range (min, max) for the given seed. - /// Each input seed corresponds to exactly one random number. - /// - private int PseudoRandomNumber(int seed, int min, int max) - { - // This is not a uniform distribution, but it shouldn't matter given there's 2^31 possible random numbers, - // the bias of this function should be so tiny it will never be noticed. - seed += RandomRoundSeed; - var random = ((seed * 1103515245) + 12345) & 0x7fffffff; // Source: http://cs.uccs.edu/~cs591/bufferOverflow/glibc-2.2.4/stdlib/random_r.c - return random % (max - min) + min; - } - /// /// Set CurrentLanguage of the client, the client must be able to Understand the language requested. /// diff --git a/Content.Shared/Language/LanguagePrototype.cs b/Content.Shared/Language/LanguagePrototype.cs index 801ab8a393..d5a013161d 100644 --- a/Content.Shared/Language/LanguagePrototype.cs +++ b/Content.Shared/Language/LanguagePrototype.cs @@ -10,15 +10,13 @@ public sealed class LanguagePrototype : IPrototype public string ID { get; private set; } = default!; /// - /// If true, obfuscated phrases of creatures speaking this language will have their syllables replaced with "replacement" syllables. - /// Otherwise entire sentences will be replaced. + /// Obfuscation method used by this language. By default, uses /// - [DataField(required: true)] - public bool ObfuscateSyllables; + [DataField("obfuscation")] + public ObfuscationMethod Obfuscation = ObfuscationMethod.Default; /// - /// Lists all syllables that are used to obfuscate a message a listener cannot understand if obfuscateSyllables is true. - /// Otherwise uses all possible phrases the creature can make when trying to say anything. + /// A list of replacement phrases used in /// [DataField(required: true)] public List Replacement = []; diff --git a/Content.Shared/Language/ObfuscationMethods.cs b/Content.Shared/Language/ObfuscationMethods.cs new file mode 100644 index 0000000000..5925279bd7 --- /dev/null +++ b/Content.Shared/Language/ObfuscationMethods.cs @@ -0,0 +1,168 @@ +using System.Text; +using Content.Shared.Language.Systems; + +namespace Content.Shared.Language; + +[ImplicitDataDefinitionForInheritors] +public abstract partial class ObfuscationMethod +{ + public static readonly ObfuscationMethod Default = new ReplacementObfuscation(); + + internal abstract void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context); + + /// + /// Obfuscates the provided message. This method should only be used for debugging purposes. + /// For all other purposes, use instead. + /// + public string Obfuscate(string message, LanguagePrototype language) + { + var builder = new StringBuilder(); + Obfuscate(builder, message, language, IoCManager.Resolve().GetEntitySystem()); + return builder.ToString(); + } +} + +/// +/// The most primitive method of obfuscation - replaces the entire message with one random replacement phrase. +/// Similar to ReplacementAccent. +/// +public sealed partial class ReplacementObfuscation : ObfuscationMethod +{ + internal override void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context) + { + var idx = context.PseudoRandomNumber(0, 0, language.Replacement.Count - 1); + builder.Append(language.Replacement[idx]); + } +} + +/// +/// Obfuscates the provided message by replacing each word with a random number of syllables in the range (min, max), +/// preserving the original punctuation to a resonable extent. +/// +/// +/// The words are obfuscated in a stable manner, such that every particular word will be obfuscated the same way throughout one round. +/// This means that particular words can be memorized within a round, but not across rounds. +/// +public sealed partial class SyllableObfuscation : ObfuscationMethod +{ + [DataField] + public int MinSyllables = 1; + + [DataField] + public int MaxSyllables = 4; + + internal override void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context) + { + const char eof = (char) 0; // Special character to mark the end of the message in the code below + + var wordBeginIndex = 0; + var hashCode = 0; + + for (var i = 0; i <= message.Length; i++) + { + var ch = i < message.Length ? char.ToLower(message[i]) : eof; + var isWordEnd = char.IsWhiteSpace(ch) || IsPunctuation(ch) || ch == eof; + + // If this is a normal char, add it to the hash sum + if (!isWordEnd) + hashCode = hashCode * 31 + ch; + + // If a word ends before this character, construct a new word and append it to the new message. + if (isWordEnd) + { + var wordLength = i - wordBeginIndex; + if (wordLength > 0) + { + var newWordLength = context.PseudoRandomNumber(hashCode, MinSyllables, MaxSyllables); + + for (var j = 0; j < newWordLength; j++) + { + var index = context.PseudoRandomNumber(hashCode + j, 0, language.Replacement.Count - 1); + builder.Append(language.Replacement[index]); + } + } + + hashCode = 0; + wordBeginIndex = i + 1; + } + + // If this message concludes a word (i.e. is a whitespace or a punctuation mark), append it to the message + if (isWordEnd && ch != eof) + builder.Append(ch); + } + } + + private static bool IsPunctuation(char ch) + { + return ch is '.' or '!' or '?' or ',' or ':'; + } +} + +/// +/// Obfuscates each sentence in the message by concatenating a number of obfuscation phrases. +/// The number of phrases in the obfuscated message is proportional to the length of the original message. +/// +public sealed partial class PhraseObfuscation : ObfuscationMethod +{ + [DataField] + public int MinPhrases = 1; + + [DataField] + public int MaxPhrases = 4; + + /// + /// A string used to separate individual phrases within one sentence. Default is a space. + /// + [DataField] + public string Separator = " "; + + /// + /// A power to which the number of characters in the original message is raised to determine the number of phrases in the result. + /// Default is 1/3, i.e. the cubic root of the original number. + /// + /// + /// Using the default proportion, you will need at least 27 characters for 2 phrases, at least 64 for 3, at least 125 for 4, etc. + /// Increasing the proportion to 1/4 will result in the numbers changing to 81, 256, 625, etc. + /// + [DataField] + public float Proportion = 1f / 3; + + internal override void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context) + { + var sentenceBeginIndex = 0; + var hashCode = 0; + + for (var i = 0; i < message.Length; i++) + { + var ch = char.ToLower(message[i]); + if (!IsPunctuation(ch) && i != message.Length - 1) + { + hashCode = hashCode * 31 + ch; + continue; + } + + var length = i - sentenceBeginIndex; + if (length > 0) + { + var newLength = (int) Math.Clamp(Math.Pow(length, Proportion) - 1, MinPhrases, MaxPhrases); + + for (var j = 0; j < newLength; j++) + { + var phraseIdx = context.PseudoRandomNumber(hashCode + j, 0, language.Replacement.Count - 1); + var phrase = language.Replacement[phraseIdx]; + builder.Append(phrase); + builder.Append(Separator); + } + } + sentenceBeginIndex = i + 1; + + if (IsPunctuation(ch)) + builder.Append(ch).Append(' '); // TODO: this will turn '...' into '. . . ' + } + } + + private static bool IsPunctuation(char ch) + { + return ch is '.' or '!' or '?'; // Doesn't include mid-sentence punctuation like the comma + } +} diff --git a/Content.Shared/Language/Systems/SharedLanguageSystem.cs b/Content.Shared/Language/Systems/SharedLanguageSystem.cs index e2eeb8bb49..e030b7eec6 100644 --- a/Content.Shared/Language/Systems/SharedLanguageSystem.cs +++ b/Content.Shared/Language/Systems/SharedLanguageSystem.cs @@ -1,4 +1,6 @@ +using System.Text; using Content.Shared.Actions; +using Content.Shared.GameTicking; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -24,7 +26,7 @@ public abstract class SharedLanguageSystem : EntitySystem public static LanguagePrototype Universal { get; private set; } = default!; [Dependency] protected readonly IPrototypeManager _prototype = default!; - [Dependency] protected readonly IRobustRandom _random = default!; + [Dependency] protected readonly SharedGameTicker _ticker = default!; public override void Initialize() { @@ -36,4 +38,36 @@ public override void Initialize() _prototype.TryIndex(id, out var proto); return proto; } + + /// + /// Obfuscate a message using the given language. + /// + public string ObfuscateSpeech(string message, LanguagePrototype language) + { + var builder = new StringBuilder(); + var method = language.Obfuscation; + method.Obfuscate(builder, message, language, this); + + { + Log.Info($"RECEIVED {message} -> {builder.ToString()}"); + } + + return builder.ToString(); + } + + /// + /// Generates a stable pseudo-random number in the range (min, max) (inclusively) for the given seed. + /// One seed always corresponds to one number, however the resulting number also depends on the current round number. + /// This method is meant to be used in to provide stable obfuscation. + /// + internal int PseudoRandomNumber(int seed, int min, int max) + { + // Using RobustRandom or System.Random here is a bad idea because this method can get called hundreds of times per message. + // Each call would require us to allocate a new instance of random, which would lead to lots of unnecessary calculations. + // Instead, we use a simple but effective algorithm derived from the C language. + // It does not produce a truly random number, but for the purpose of obfuscating messages in an RP-based game it's more than alright. + seed = seed ^ (_ticker.RoundId * 127); + var random = seed * 1103515245 + 12345; + return min + Math.Abs(random) % (max - min + 1); + } } From 3df0c63f671bd26d11a2375e952d482cd852a221 Mon Sep 17 00:00:00 2001 From: fox Date: Fri, 14 Jun 2024 02:59:45 +0300 Subject: [PATCH 23/68] Apply polymorphism + fix some obfuscation phrases --- Resources/Prototypes/Language/languages.yml | 231 +++++++++++++------- 1 file changed, 148 insertions(+), 83 deletions(-) diff --git a/Resources/Prototypes/Language/languages.yml b/Resources/Prototypes/Language/languages.yml index 90bce1baed..7b81f9ad05 100644 --- a/Resources/Prototypes/Language/languages.yml +++ b/Resources/Prototypes/Language/languages.yml @@ -2,18 +2,22 @@ # Do not use otherwise. Try to use the respective component instead of this language. - type: language id: Universal - obfuscateSyllables: false + obfuscation: + !type:ReplacementObfuscation # Should never be used anyway replacement: - "*incomprehensible*" # The common galactic tongue. - type: language id: GalacticCommon - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Blah - - Blah - - Blah + - blah + - blah + - blah - dingle-doingle - dingle - dangle @@ -34,7 +38,10 @@ # Spoken by slimes. - type: language id: Bubblish - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - blob - plop @@ -45,7 +52,10 @@ # Spoken by moths. - type: language id: Moffic - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 2 # Replacements are really short + maxSyllables: 4 replacement: - Ã¥r - i @@ -105,10 +115,13 @@ - we - hön - # Spoken by dionas. +# Spoken by dionas. - type: language id: RootSpeak - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 5 replacement: - hs - zt @@ -119,7 +132,10 @@ # A mess of broken Japanese, spoken by Felinds and Oni - type: language id: Nekomimetic - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 # May be too long even, we'll see. replacement: - neko - nyan @@ -173,7 +189,10 @@ # Spoken by the Lizard race. - type: language id: Draconic - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 2 + maxSyllables: 4 replacement: - za - az @@ -263,7 +282,10 @@ # Spoken by the Vulpkanin race. - type: language id: Canilunzt - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 4 replacement: - rur - ya @@ -292,7 +314,7 @@ - vor - nic - gro - - lll +# - lll - enem - zandt - tzch @@ -327,7 +349,10 @@ # The common language of the Sol system. - type: language id: SolCommon - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 4 replacement: - tao - shi @@ -349,23 +374,21 @@ - type: language id: RobotTalk - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 10 # Crazy replacement: - 0 - 1 - - 01 - - 10 - - 001 - - 100 - - 011 - - 110 - - 101 - - 010 # Languages spoken by various critters. - type: language id: Cat - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 2 replacement: - murr - meow @@ -374,7 +397,10 @@ - type: language id: Dog - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 2 replacement: - woof - bark @@ -385,109 +411,148 @@ - type: language id: Fox - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 2 replacement: - - bark - - gecker - ruff - raff - garr + - yip + - yap + - myah - type: language id: Xeno - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 8 # I was crazy once replacement: - - sss - - sSs - - SSS + - s + - S - type: language id: Monkey - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 8 # They locked me in a room... replacement: - - ok - - ook - - oook - - ooook - - oooook + - o + - k - type: language id: Mouse - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 2 + maxSyllables: 3 replacement: - - Squeak - - Piep - - Chuu - - Eeee - - Pip - - Fwiep - - Heep + - squ + - eak + - pi + - ep + - chuu + - ee + - fwi + - he - type: language id: Chicken - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Coo - - Coot - - Cooot + - co + - coo + - ot - type: language id: Duck - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Quack - - Quack quack + - qu + - ack + - quack - type: language id: Cow - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Moo - - Mooo + - moo + - mooo - type: language id: Sheep - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Ba - - Baa - - Baaa + - ba + - baa + - aa - type: language id: Kangaroo - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Shreak - - Chuu + - shre + - ack + - chuu + - choo - type: language id: Pig - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Oink - - Oink oink + - oink # Please someone come up with something better - type: language id: Crab - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 1 + maxSyllables: 3 replacement: - - Click - - Click-clack - - Clack - - Tipi-tap - - Clik-tap - - Cliliick + - click + - clack + - ti + - pi + - tap + - cli + - ick - type: language id: Kobold - obfuscateSyllables: true + obfuscation: + !type:SyllableObfuscation + minSyllables: 2 + maxSyllables: 4 replacement: - - Yip - - Grrar. - - Yap - - Bip - - Screet - - Gronk - - Hiss - - Eeee - - Yip + - yip + - yap + - gar + - grr + - ar + - scre + - et + - gronk + - hiss + - ss + - ee From f0af64c25041bf3b51a67a0ebfa780de3a74b14c Mon Sep 17 00:00:00 2001 From: fox Date: Fri, 14 Jun 2024 03:06:55 +0300 Subject: [PATCH 24/68] Oops --- Content.Shared/Language/Systems/SharedLanguageSystem.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Content.Shared/Language/Systems/SharedLanguageSystem.cs b/Content.Shared/Language/Systems/SharedLanguageSystem.cs index e030b7eec6..2ec4dde1ce 100644 --- a/Content.Shared/Language/Systems/SharedLanguageSystem.cs +++ b/Content.Shared/Language/Systems/SharedLanguageSystem.cs @@ -48,10 +48,6 @@ public string ObfuscateSpeech(string message, LanguagePrototype language) var method = language.Obfuscation; method.Obfuscate(builder, message, language, this); - { - Log.Info($"RECEIVED {message} -> {builder.ToString()}"); - } - return builder.ToString(); } From 86eaa73768fbc45bdc6bf319de010410f232a6ec Mon Sep 17 00:00:00 2001 From: fox Date: Fri, 14 Jun 2024 03:59:46 +0300 Subject: [PATCH 25/68] Cleaned up imports --- Content.Client/Language/LanguageMenuWindow.xaml.cs | 12 ++++-------- Content.Client/Language/Systems/LanguageSystem.cs | 1 - Content.Server/Language/LanguageSystem.cs | 3 --- Content.Shared/Language/LanguagePrototype.cs | 1 - .../Language/Systems/SharedLanguageSystem.cs | 2 -- 5 files changed, 4 insertions(+), 15 deletions(-) diff --git a/Content.Client/Language/LanguageMenuWindow.xaml.cs b/Content.Client/Language/LanguageMenuWindow.xaml.cs index 312814aca3..0f8bb0976f 100644 --- a/Content.Client/Language/LanguageMenuWindow.xaml.cs +++ b/Content.Client/Language/LanguageMenuWindow.xaml.cs @@ -1,14 +1,8 @@ using Content.Client.Language.Systems; -using Content.Shared.Language; -using Content.Shared.Language.Systems; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.Console; -using Robust.Shared.Utility; -using Serilog; -using static Content.Shared.Language.Systems.SharedLanguageSystem; namespace Content.Client.Language; @@ -121,8 +115,10 @@ private void AddLanguageEntry(string language) private void OnLanguageChosen(string id) { var proto = _clientLanguageSystem.GetLanguagePrototype(id); - if (proto != null) - _clientLanguageSystem.RequestSetLanguage(proto); + if (proto == null) + return; + + _clientLanguageSystem.RequestSetLanguage(proto); } diff --git a/Content.Client/Language/Systems/LanguageSystem.cs b/Content.Client/Language/Systems/LanguageSystem.cs index 9714078b2c..5dc2fc1f4e 100644 --- a/Content.Client/Language/Systems/LanguageSystem.cs +++ b/Content.Client/Language/Systems/LanguageSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.Language.Events; using Content.Shared.Language.Systems; using Robust.Client; -using Robust.Shared.Console; namespace Content.Client.Language.Systems; diff --git a/Content.Server/Language/LanguageSystem.cs b/Content.Server/Language/LanguageSystem.cs index 065d696aa2..2b5bf454ce 100644 --- a/Content.Server/Language/LanguageSystem.cs +++ b/Content.Server/Language/LanguageSystem.cs @@ -1,10 +1,7 @@ using System.Linq; -using System.Text; -using Content.Server.GameTicking.Events; using Content.Shared.Language; using Content.Shared.Language.Events; using Content.Shared.Language.Systems; -using Robust.Shared.Random; using UniversalLanguageSpeakerComponent = Content.Shared.Language.Components.UniversalLanguageSpeakerComponent; namespace Content.Server.Language; diff --git a/Content.Shared/Language/LanguagePrototype.cs b/Content.Shared/Language/LanguagePrototype.cs index d5a013161d..15557739f7 100644 --- a/Content.Shared/Language/LanguagePrototype.cs +++ b/Content.Shared/Language/LanguagePrototype.cs @@ -1,4 +1,3 @@ -using System.Runtime.CompilerServices; using Robust.Shared.Prototypes; namespace Content.Shared.Language; diff --git a/Content.Shared/Language/Systems/SharedLanguageSystem.cs b/Content.Shared/Language/Systems/SharedLanguageSystem.cs index 2ec4dde1ce..b9ea6869ee 100644 --- a/Content.Shared/Language/Systems/SharedLanguageSystem.cs +++ b/Content.Shared/Language/Systems/SharedLanguageSystem.cs @@ -1,8 +1,6 @@ using System.Text; -using Content.Shared.Actions; using Content.Shared.GameTicking; using Robust.Shared.Prototypes; -using Robust.Shared.Random; namespace Content.Shared.Language.Systems; From 6770f30cf2764938071cd607ce5a1b624884066c Mon Sep 17 00:00:00 2001 From: fox Date: Fri, 14 Jun 2024 03:59:59 +0300 Subject: [PATCH 26/68] Refactored and localized commands; made them more user-friendly. --- .../Language/Commands/ListLanguagesCommand.cs | 24 +++++++-- .../Language/Commands/SayLanguageCommand.cs | 6 +-- .../Commands/SelectLanguageCommand.cs | 52 ++++++++++++++++--- Resources/Locale/en-US/language/commands.ftl | 16 ++++-- 4 files changed, 81 insertions(+), 17 deletions(-) diff --git a/Content.Server/Language/Commands/ListLanguagesCommand.cs b/Content.Server/Language/Commands/ListLanguagesCommand.cs index 6698e1b645..7cf96d74e6 100644 --- a/Content.Server/Language/Commands/ListLanguagesCommand.cs +++ b/Content.Server/Language/Commands/ListLanguagesCommand.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Shared.Administration; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -32,8 +31,27 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var languages = IoCManager.Resolve().GetEntitySystem(); var (spokenLangs, knownLangs) = languages.GetAllLanguages(playerEntity); + var currentLang = languages.GetLanguage(playerEntity).ID; - shell.WriteLine("Spoken:\n" + string.Join("\n", spokenLangs)); - shell.WriteLine("Understood:\n" + string.Join("\n", knownLangs)); + shell.WriteLine(Loc.GetString("command-language-spoken")); + for (int i = 0; i < spokenLangs.Count; i++) + { + var lang = spokenLangs[i]; + shell.WriteLine(lang == currentLang + ? Loc.GetString("command-language-current-entry", ("id", i + 1), ("language", lang), ("name", LanguageName(lang))) + : Loc.GetString("command-language-entry", ("id", i + 1), ("language", lang), ("name", LanguageName(lang)))); + } + + shell.WriteLine(Loc.GetString("command-language-understood")); + for (int i = 0; i < knownLangs.Count; i++) + { + var lang = knownLangs[i]; + shell.WriteLine(Loc.GetString("command-language-entry", ("id", i + 1), ("language", lang), ("name", LanguageName(lang)))); + } + } + + private string LanguageName(string id) + { + return Loc.GetString($"language-{id}-name"); } } diff --git a/Content.Server/Language/Commands/SayLanguageCommand.cs b/Content.Server/Language/Commands/SayLanguageCommand.cs index 2e4a27b1dc..2304781fa0 100644 --- a/Content.Server/Language/Commands/SayLanguageCommand.cs +++ b/Content.Server/Language/Commands/SayLanguageCommand.cs @@ -32,7 +32,6 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (args.Length < 2) return; - var languageId = args[0]; var message = string.Join(" ", args, startIndex: 1, count: args.Length - 1).Trim(); if (string.IsNullOrEmpty(message)) @@ -41,10 +40,9 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var languages = IoCManager.Resolve().GetEntitySystem(); var chats = IoCManager.Resolve().GetEntitySystem(); - var language = languages.GetLanguagePrototype(languageId); - if (language == null || !languages.CanSpeak(playerEntity, language.ID)) + if (!SelectLanguageCommand.TryParseLanguageArgument(languages, playerEntity, args[0], out var failReason, out var language)) { - shell.WriteError($"Language {languageId} is invalid or you cannot speak it!"); + shell.WriteError(failReason); return; } diff --git a/Content.Server/Language/Commands/SelectLanguageCommand.cs b/Content.Server/Language/Commands/SelectLanguageCommand.cs index e336384653..8a6ca3174a 100644 --- a/Content.Server/Language/Commands/SelectLanguageCommand.cs +++ b/Content.Server/Language/Commands/SelectLanguageCommand.cs @@ -1,5 +1,7 @@ +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Shared.Administration; +using Content.Shared.Language; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -32,17 +34,55 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (args.Length < 1) return; - var languageId = args[0]; - var languages = IoCManager.Resolve().GetEntitySystem(); - var language = languages.GetLanguagePrototype(languageId); - if (language == null || !languages.CanSpeak(playerEntity, language.ID)) + if (!TryParseLanguageArgument(languages, playerEntity, args[0], out var failReason, out var languageId)) { - shell.WriteError($"Language {languageId} is invalid or you cannot speak it!"); + shell.WriteError(failReason); return; } - languages.SetLanguage(playerEntity, language.ID); + languages.SetLanguage(playerEntity, languageId.ID); + } + + // TODO: find a better place for this method + /// + /// Tries to parse the input argument as either a language ID or the position of the language in the list of languages + /// the entity can speak. Returns true if sucessful. + /// + public static bool TryParseLanguageArgument( + LanguageSystem languageSystem, + EntityUid speaker, + string input, + [NotNullWhen(false)] out string? failureReason, + [NotNullWhen(true)] out LanguagePrototype? language) + { + failureReason = null; + language = null; + + if (int.TryParse(input, out var num)) + { + // The argument is a number + var (spoken, _) = languageSystem.GetAllLanguages(speaker); + if (num > 0 && num - 1 < spoken.Count) + language = languageSystem.GetLanguagePrototype(spoken[num - 1]); + + if (language != null) // the ability to speak it is implied + return true; + + failureReason = Loc.GetString("command-language-invalid-number", ("total", spoken.Count)); + return false; + } + else + { + // The argument is a language ID + language = languageSystem.GetLanguagePrototype(input); + + if (language != null && languageSystem.CanSpeak(speaker, language.ID)) + return true; + + failureReason = Loc.GetString("command-language-invalid-language", ("id", input)); + return false; + } } } diff --git a/Resources/Locale/en-US/language/commands.ftl b/Resources/Locale/en-US/language/commands.ftl index 32fa5415b8..ba2b316009 100644 --- a/Resources/Locale/en-US/language/commands.ftl +++ b/Resources/Locale/en-US/language/commands.ftl @@ -1,8 +1,16 @@ command-list-langs-desc = List languages your current entity can speak at the current moment. command-list-langs-help = Usage: {$command} -command-saylang-desc = Send a message in a specific language. -command-saylang-help = Usage: {$command} . Example: {$command} GalacticCommon "Hello World!" +command-saylang-desc = Send a message in a specific language. To choose a language, you can use either the name of the language, or its position in the list of languages. +command-saylang-help = Usage: {$command} . Example: {$command} GalacticCommon "Hello World!". Example: {$command} 1 "Hello World!" -command-language-select-desc = Select the currently spoken language of your entity. -command-language-select-help = Usage: {$command} . Example: {$command} GalacticCommon +command-language-select-desc = Select the currently spoken language of your entity. You can use either the name of the language, or its position in the list of languages. +command-language-select-help = Usage: {$command} . Example: {$command} 1. Example: {$command} GalacticCommon + +command-language-spoken = Spoken: +command-language-understood = Understood: +command-language-current-entry = {$id}. {$language} - {$name} (current) +command-language-entry = {$id}. {$language} - {$name} + +command-language-invalid-number = The language number must be between 0 and {$total}. Alternatively, use the language name. +command-language-invalid-language = The language {$id} does not exist or you cannot speak it. From e4f5917d5a373b616db0f37c0e3b356bf25149f7 Mon Sep 17 00:00:00 2001 From: fox Date: Sat, 15 Jun 2024 00:45:03 +0300 Subject: [PATCH 27/68] Added HandheldTranslatorComponent.SetLanguageOnInteract for convenience --- Content.Server/Language/TranslatorSystem.cs | 52 +++++++++++-------- .../HandheldTranslatorComponent.cs | 15 ++++-- .../Entities/Objects/Devices/translators.yml | 1 + 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/Content.Server/Language/TranslatorSystem.cs b/Content.Server/Language/TranslatorSystem.cs index 3b7704b9a7..d1e0853d21 100644 --- a/Content.Server/Language/TranslatorSystem.cs +++ b/Content.Server/Language/TranslatorSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Language.Systems; using Content.Shared.PowerCell; using Content.Shared.Language.Components.Translators; +using Robust.Shared.Utility; namespace Content.Server.Language; @@ -23,7 +24,6 @@ public override void Initialize() { base.Initialize(); - // I wanna die. But my death won't help us discover polymorphism. SubscribeLocalEvent(OnDetermineLanguages); SubscribeLocalEvent(OnDetermineLanguages); SubscribeLocalEvent(OnDetermineLanguages); @@ -31,7 +31,6 @@ public override void Initialize() SubscribeLocalEvent(OnTranslatorToggle); SubscribeLocalEvent(OnPowerCellSlotEmpty); - // TODO: why does this use InteractHandEvent?? SubscribeLocalEvent(OnTranslatorInteract); SubscribeLocalEvent(OnTranslatorDropped); } @@ -120,54 +119,65 @@ private void OnTranslatorDropped(EntityUid translator, HandheldTranslatorCompone RaiseLocalEvent(holder, new LanguagesUpdateEvent(), true); } - private void OnTranslatorToggle(EntityUid translator, HandheldTranslatorComponent component, ActivateInWorldEvent args) + private void OnTranslatorToggle(EntityUid translator, HandheldTranslatorComponent translatorComp, ActivateInWorldEvent args) { - if (!component.ToggleOnInteract) + if (!translatorComp.ToggleOnInteract) return; + // This will show a popup if false var hasPower = _powerCell.HasDrawCharge(translator); if (Transform(args.Target).ParentUid is { Valid: true } holder - && EntityManager.HasComponent(holder)) + && TryComp(holder, out var languageComp)) { // This translator is held by a language speaker and thus has an intrinsic counterpart bound to it. // Make sure it's up-to-date. var intrinsic = EnsureComp(holder); - var isEnabled = !component.Enabled; - if (intrinsic.Issuer != component) + var isEnabled = !translatorComp.Enabled; + if (intrinsic.Issuer != translatorComp) { - // The intrinsic comp wasn't owned by this handheld component, so this comp wasn't the active translator. - // Thus it needs to be turned on regardless of its previous state. - intrinsic.Issuer = component; + // The intrinsic comp wasn't owned by this handheld translator, so this wasn't the active translator. + // Thus, the intrinsic comp needs to be turned on regardless of its previous state. + intrinsic.Issuer = translatorComp; isEnabled = true; } - isEnabled &= hasPower; - UpdateBoundIntrinsicComp(component, intrinsic, isEnabled); - component.Enabled = isEnabled; + + UpdateBoundIntrinsicComp(translatorComp, intrinsic, isEnabled); + translatorComp.Enabled = isEnabled; _powerCell.SetPowerCellDrawEnabled(translator, isEnabled); - _language.EnsureValidLanguage(holder); + // Update the current language of the entity if necessary + if (isEnabled && translatorComp.SetLanguageOnInteract) + { + var firstNew = translatorComp.SpokenLanguages.FirstOrDefault(it => !languageComp.SpokenLanguages.Contains(it)); + if (firstNew != null) + _language.SetLanguage(holder, firstNew, languageComp); + } + + if (!isEnabled) + _language.EnsureValidLanguage(holder, languageComp); + + // TODO this raises at least 2 disctinct events of this type RaiseLocalEvent(holder, new LanguagesUpdateEvent(), true); } else { // This is a standalone translator (e.g. lying on the ground), toggle its state. - component.Enabled = !component.Enabled && hasPower; - _powerCell.SetPowerCellDrawEnabled(translator, !component.Enabled && hasPower); + translatorComp.Enabled = !translatorComp.Enabled && hasPower; + _powerCell.SetPowerCellDrawEnabled(translator, !translatorComp.Enabled && hasPower); } - OnAppearanceChange(translator, component); + OnAppearanceChange(translator, translatorComp); - // HasPower shows a popup when there's no power, so we do not proceed in that case if (hasPower) { var message = Loc.GetString( - component.Enabled + translatorComp.Enabled ? "translator-component-turnon" : "translator-component-shutoff", - ("translator", component.Owner)); - _popup.PopupEntity(message, component.Owner, args.User); + ("translator", translatorComp.Owner)); + _popup.PopupEntity(message, translatorComp.Owner, args.User); } } diff --git a/Content.Shared/Language/Components/Translators/HandheldTranslatorComponent.cs b/Content.Shared/Language/Components/Translators/HandheldTranslatorComponent.cs index f900603f01..7e3de0eca6 100644 --- a/Content.Shared/Language/Components/Translators/HandheldTranslatorComponent.cs +++ b/Content.Shared/Language/Components/Translators/HandheldTranslatorComponent.cs @@ -7,9 +7,18 @@ namespace Content.Shared.Language.Components.Translators; public sealed partial class HandheldTranslatorComponent : Translators.BaseTranslatorComponent { /// - /// Whether or not interacting with this translator - /// toggles it on or off. + /// Whether interacting with this translator toggles it on and off. /// - [DataField("toggleOnInteract")] + [DataField] public bool ToggleOnInteract = true; + + /// + /// If true, when this translator is turned on, the entities' current spoken language will be set + /// to the first new language added by this translator. + /// + /// + /// This should generally be used for translators that translate speech between two languages. + /// + [DataField] + public bool SetLanguageOnInteract = true; } diff --git a/Resources/Prototypes/Entities/Objects/Devices/translators.yml b/Resources/Prototypes/Entities/Objects/Devices/translators.yml index e5ad824c5d..18f2dead68 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/translators.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/translators.yml @@ -203,3 +203,4 @@ - Kobold requires: - GalacticCommon + setLanguageOnInteract: false From ad56d5368e6d1df4d160250a02e92c8aab751227 Mon Sep 17 00:00:00 2001 From: fox Date: Sat, 15 Jun 2024 07:22:29 +0300 Subject: [PATCH 28/68] Refactor everything and pray it works: - Made it so that LanguageSpeakerComponent stores the actual data about entities' languages, while LanguageKnowledgeComponent stores intrinsic knowledge - Rewrote a lot of shitcode --- Content.Server/Chat/Systems/ChatSystem.cs | 4 +- .../Chemistry/ReagentEffects/MakeSentient.cs | 23 +- .../Language/Commands/ListLanguagesCommand.cs | 13 +- .../Commands/SelectLanguageCommand.cs | 6 +- .../Language/DetermineEntityLanguagesEvent.cs | 32 ++- .../Language/LanguageSystem.Networking.cs | 33 ++- Content.Server/Language/LanguageSystem.cs | 226 ++++++++++-------- .../Language}/LanguagesUpdateEvent.cs | 2 +- .../Language/TranslatorImplanterSystem.cs | 5 +- Content.Server/Language/TranslatorSystem.cs | 60 ++--- .../Mind/Commands/MakeSentientCommand.cs | 7 +- .../Radio/EntitySystems/HeadsetSystem.cs | 2 +- .../Radio/EntitySystems/RadioSystem.cs | 2 +- .../Components/LanguageKnowledgeComponent.cs | 22 ++ .../Components/LanguageSpeakerComponent.cs | 33 +-- 15 files changed, 263 insertions(+), 207 deletions(-) rename {Content.Shared/Language/Events => Content.Server/Language}/LanguagesUpdateEvent.cs (78%) create mode 100644 Content.Shared/Language/Components/LanguageKnowledgeComponent.cs diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 7eecaa32b4..a6c2223bc6 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -502,7 +502,7 @@ private void SendEntityWhisper( if (MessageRangeCheck(session, data, range) != MessageRangeCheckResult.Full) continue; // Won't get logged to chat, and ghosts are too far away to see the pop-up, so we just won't send it to them. - var canUnderstandLanguage = _language.CanUnderstand(listener, language); + var canUnderstandLanguage = _language.CanUnderstand(listener, language.ID); // How the entity perceives the message depends on whether it can understand its language var perceivedMessage = canUnderstandLanguage ? message : languageObfuscatedMessage; @@ -717,7 +717,7 @@ private void SendInVoiceRange(ChatChannel channel, string name, string message, // If the channel does not support languages, or the entity can understand the message, send the original message, otherwise send the obfuscated version - if (channel == ChatChannel.LOOC || channel == ChatChannel.Emotes || _language.CanUnderstand(listener, language)) + if (channel == ChatChannel.LOOC || channel == ChatChannel.Emotes || _language.CanUnderstand(listener, language.ID)) { _chatManager.ChatMessageToOne(channel, message, wrappedMessage, source, entHideChat, session.Channel, author: author); } diff --git a/Content.Server/Chemistry/ReagentEffects/MakeSentient.cs b/Content.Server/Chemistry/ReagentEffects/MakeSentient.cs index da16529d51..8d5a583f6d 100644 --- a/Content.Server/Chemistry/ReagentEffects/MakeSentient.cs +++ b/Content.Server/Chemistry/ReagentEffects/MakeSentient.cs @@ -1,13 +1,17 @@ using System.Linq; using Content.Server.Ghost.Roles.Components; +using Content.Server.Language; +using Content.Server.Language.Events; using Content.Server.Speech.Components; using Content.Shared.Chemistry.Reagent; using Content.Shared.Language; using Content.Shared.Language.Systems; using Content.Shared.Mind.Components; using Robust.Shared.Prototypes; -using Content.Server.Psionics; //Nyano - Summary: pulls in the ability for the sentient creature to become psionic. -using Content.Shared.Humanoid; //Delta-V - Banning humanoids from becoming ghost roles. +using Content.Server.Psionics; +using Content.Shared.Body.Part; //Nyano - Summary: pulls in the ability for the sentient creature to become psionic. +using Content.Shared.Humanoid; +using Content.Shared.Language.Components; //Delta-V - Banning humanoids from becoming ghost roles. using Content.Shared.Language.Events; namespace Content.Server.Chemistry.ReagentEffects; @@ -28,19 +32,18 @@ public override void Effect(ReagentEffectArgs args) entityManager.RemoveComponent(uid); entityManager.RemoveComponent(uid); + // Make sure the entity knows at least fallback (Galactic Common) var speaker = entityManager.EnsureComponent(uid); + var knowledge = entityManager.EnsureComponent(uid); var fallback = SharedLanguageSystem.FallbackLanguagePrototype; - if (!speaker.UnderstoodLanguages.Contains(fallback)) - speaker.UnderstoodLanguages.Add(fallback); + if (!knowledge.UnderstoodLanguages.Contains(fallback)) + knowledge.UnderstoodLanguages.Add(fallback); - if (!speaker.SpokenLanguages.Contains(fallback)) - { - speaker.CurrentLanguage = fallback; - speaker.SpokenLanguages.Add(fallback); - } + if (!knowledge.SpokenLanguages.Contains(fallback)) + knowledge.SpokenLanguages.Add(fallback); - args.EntityManager.EventBus.RaiseLocalEvent(uid, new LanguagesUpdateEvent(), true); + IoCManager.Resolve().GetEntitySystem().UpdateEntityLanguages(uid, speaker); // Stops from adding a ghost role to things like people who already have a mind if (entityManager.TryGetComponent(uid, out var mindContainer) && mindContainer.HasMind) diff --git a/Content.Server/Language/Commands/ListLanguagesCommand.cs b/Content.Server/Language/Commands/ListLanguagesCommand.cs index 7cf96d74e6..e5787cba48 100644 --- a/Content.Server/Language/Commands/ListLanguagesCommand.cs +++ b/Content.Server/Language/Commands/ListLanguagesCommand.cs @@ -1,4 +1,5 @@ using Content.Shared.Administration; +using Content.Shared.Language; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -29,23 +30,23 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) } var languages = IoCManager.Resolve().GetEntitySystem(); - - var (spokenLangs, knownLangs) = languages.GetAllLanguages(playerEntity); var currentLang = languages.GetLanguage(playerEntity).ID; shell.WriteLine(Loc.GetString("command-language-spoken")); - for (int i = 0; i < spokenLangs.Count; i++) + var spoken = languages.GetSpokenLanguages(playerEntity); + for (int i = 0; i < spoken.Count; i++) { - var lang = spokenLangs[i]; + var lang = spoken[i]; shell.WriteLine(lang == currentLang ? Loc.GetString("command-language-current-entry", ("id", i + 1), ("language", lang), ("name", LanguageName(lang))) : Loc.GetString("command-language-entry", ("id", i + 1), ("language", lang), ("name", LanguageName(lang)))); } shell.WriteLine(Loc.GetString("command-language-understood")); - for (int i = 0; i < knownLangs.Count; i++) + var understood = languages.GetUnderstoodLanguages(playerEntity); + for (int i = 0; i < understood.Count; i++) { - var lang = knownLangs[i]; + var lang = understood[i]; shell.WriteLine(Loc.GetString("command-language-entry", ("id", i + 1), ("language", lang), ("name", LanguageName(lang)))); } } diff --git a/Content.Server/Language/Commands/SelectLanguageCommand.cs b/Content.Server/Language/Commands/SelectLanguageCommand.cs index 8a6ca3174a..d340135925 100644 --- a/Content.Server/Language/Commands/SelectLanguageCommand.cs +++ b/Content.Server/Language/Commands/SelectLanguageCommand.cs @@ -36,13 +36,13 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var languages = IoCManager.Resolve().GetEntitySystem(); - if (!TryParseLanguageArgument(languages, playerEntity, args[0], out var failReason, out var languageId)) + if (!TryParseLanguageArgument(languages, playerEntity, args[0], out var failReason, out var language)) { shell.WriteError(failReason); return; } - languages.SetLanguage(playerEntity, languageId.ID); + languages.SetLanguage(playerEntity, language.ID); } // TODO: find a better place for this method @@ -63,7 +63,7 @@ public static bool TryParseLanguageArgument( if (int.TryParse(input, out var num)) { // The argument is a number - var (spoken, _) = languageSystem.GetAllLanguages(speaker); + var spoken = languageSystem.GetSpokenLanguages(speaker); if (num > 0 && num - 1 < spoken.Count) language = languageSystem.GetLanguagePrototype(spoken[num - 1]); diff --git a/Content.Server/Language/DetermineEntityLanguagesEvent.cs b/Content.Server/Language/DetermineEntityLanguagesEvent.cs index 13ab2cac27..8d6b868d07 100644 --- a/Content.Server/Language/DetermineEntityLanguagesEvent.cs +++ b/Content.Server/Language/DetermineEntityLanguagesEvent.cs @@ -1,29 +1,25 @@ +using Content.Shared.Language; + namespace Content.Server.Language; /// -/// Raised in order to determine the language an entity speaks at the current moment, -/// as well as the list of all languages the entity may speak and understand. +/// Raised in order to determine the list of languages the entity can speak and understand at the given moment. +/// Typically raised on an entity after a language agent (e.g. a translator) has been added to or removed from them. /// -public sealed class DetermineEntityLanguagesEvent : EntityEventArgs +[ByRefEvent] +public record struct DetermineEntityLanguagesEvent { /// - /// The default language of this entity. If empty, remain unchanged. - /// This field has no effect if the entity decides to speak in a concrete language. - /// - public string CurrentLanguage; - /// - /// The list of all languages the entity may speak. Must NOT be held as a reference! + /// The list of all languages the entity may speak. + /// By default, contains the languages this entity speaks intrinsically. /// - public List SpokenLanguages; + public HashSet SpokenLanguages = new(); + /// - /// The list of all languages the entity may understand. Must NOT be held as a reference! + /// The list of all languages the entity may understand. + /// By default, contains the languages this entity understands intrinsically. /// - public List UnderstoodLanguages; + public HashSet UnderstoodLanguages = new(); - public DetermineEntityLanguagesEvent(string currentLanguage, List spokenLanguages, List understoodLanguages) - { - CurrentLanguage = currentLanguage; - SpokenLanguages = spokenLanguages; - UnderstoodLanguages = understoodLanguages; - } + public DetermineEntityLanguagesEvent() {} } diff --git a/Content.Server/Language/LanguageSystem.Networking.cs b/Content.Server/Language/LanguageSystem.Networking.cs index 7517b4185e..038db9d8fc 100644 --- a/Content.Server/Language/LanguageSystem.Networking.cs +++ b/Content.Server/Language/LanguageSystem.Networking.cs @@ -1,3 +1,4 @@ +using Content.Server.Language.Events; using Content.Server.Mind; using Content.Shared.Language; using Content.Shared.Language.Events; @@ -7,11 +8,6 @@ namespace Content.Server.Language; -/// -/// LanguageSystem Networking -/// This is used to update client state when mind change entity. -/// - public sealed partial class LanguageSystem { [Dependency] private readonly MindSystem _mind = default!; @@ -19,6 +15,11 @@ public sealed partial class LanguageSystem public void InitializeNet() { + SubscribeNetworkEvent(OnClientSetLanguage); + SubscribeNetworkEvent((_, session) => SendLanguageStateToClient(session.SenderSession)); + + SubscribeLocalEvent((uid, comp, _) => SendLanguageStateToClient(uid, comp)); + // Refresh the client's state when its mind hops to a different entity SubscribeLocalEvent((uid, _, _) => SendLanguageStateToClient(uid)); SubscribeLocalEvent((_, _, args) => @@ -26,12 +27,21 @@ public void InitializeNet() if (args.Mind.Comp.Session != null) SendLanguageStateToClient(args.Mind.Comp.Session); }); - - SubscribeLocalEvent((uid, comp, _) => SendLanguageStateToClient(uid, comp)); - SubscribeNetworkEvent((_, session) => SendLanguageStateToClient(session.SenderSession)); } + private void OnClientSetLanguage(LanguagesSetMessage message, EntitySessionEventArgs args) + { + if (args.SenderSession.AttachedEntity is not { Valid: true } uid) + return; + + var language = GetLanguagePrototype(message.CurrentLanguage); + if (language == null || !CanSpeak(uid, language.ID)) + return; + + SetLanguage(uid, language.ID); + } + private void SendLanguageStateToClient(EntityUid uid, LanguageSpeakerComponent? comp = null) { // Try to find a mind inside the entity and notify its session @@ -52,8 +62,11 @@ private void SendLanguageStateToClient(ICommonSession session, LanguageSpeakerCo private void SendLanguageStateToClient(EntityUid uid, ICommonSession session, LanguageSpeakerComponent? component = null) { - var langs = GetLanguages(uid, component); - var message = new LanguagesUpdatedMessage(langs.CurrentLanguage, langs.SpokenLanguages, langs.UnderstoodLanguages); + if (!Resolve(uid, ref component)) + return; + + // TODO this is really stupid and can be avoided if we just make everything shared... + var message = new LanguagesUpdatedMessage(component.CurrentLanguage, component.SpokenLanguages, component.UnderstoodLanguages); RaiseNetworkEvent(message, session); } } diff --git a/Content.Server/Language/LanguageSystem.cs b/Content.Server/Language/LanguageSystem.cs index 2b5bf454ce..2774f28374 100644 --- a/Content.Server/Language/LanguageSystem.cs +++ b/Content.Server/Language/LanguageSystem.cs @@ -1,5 +1,7 @@ using System.Linq; +using Content.Server.Language.Events; using Content.Shared.Language; +using Content.Shared.Language.Components; using Content.Shared.Language.Events; using Content.Shared.Language.Systems; using UniversalLanguageSpeakerComponent = Content.Shared.Language.Components.UniversalLanguageSpeakerComponent; @@ -8,177 +10,203 @@ namespace Content.Server.Language; public sealed partial class LanguageSystem : SharedLanguageSystem { - // Static and re-used event instances used to minimize memory allocations during language processing, which can happen many times per tick. - // These are used in the method GetLanguages and returned from it. They should never be mutated outside of that method or returned outside this system. - private readonly DetermineEntityLanguagesEvent - _determineLanguagesEvent = new(string.Empty, new(), new()), - _universalLanguagesEvent = new(UniversalPrototype, [UniversalPrototype], [UniversalPrototype]); // Returned for universal speakers only - - - public override void Initialize() { base.Initialize(); + InitializeNet(); - SubscribeNetworkEvent(OnClientSetLanguage); SubscribeLocalEvent(OnInitLanguageSpeaker); - - InitializeNet(); } #region public api - /// - /// Obfuscate a message using an entity's default language. - /// - public string ObfuscateSpeech(EntityUid source, string message) - { - var language = GetLanguage(source); - return ObfuscateSpeech(message, language); - } - public bool CanUnderstand(EntityUid listener, LanguagePrototype language, LanguageSpeakerComponent? listenerLanguageComp = null) + public bool CanUnderstand(EntityUid listener, string language, LanguageSpeakerComponent? component = null) { - if (language.ID == UniversalPrototype || HasComp(listener)) + if (language == UniversalPrototype || HasComp(listener)) return true; - var listenerLanguages = GetLanguages(listener, listenerLanguageComp)?.UnderstoodLanguages; + if (!Resolve(listener, ref component)) + return false; - return listenerLanguages?.Contains(language.ID, StringComparer.Ordinal) ?? false; + return component.UnderstoodLanguages.Contains(language); } - public bool CanSpeak(EntityUid speaker, string language, LanguageSpeakerComponent? speakerComp = null) + public bool CanSpeak(EntityUid speaker, string language, LanguageSpeakerComponent? component = null) { if (HasComp(speaker)) return true; - var langs = GetLanguages(speaker, speakerComp)?.UnderstoodLanguages; - return langs?.Contains(language, StringComparer.Ordinal) ?? false; + if (!Resolve(speaker, ref component)) + return false; + + return component.SpokenLanguages.Contains(language); } /// - /// Returns the current language of the given entity. - /// Assumes Universal if not specified. + /// Returns the current language of the given entity, assumes Universal if it's not a language speaker. /// - public LanguagePrototype GetLanguage(EntityUid speaker, LanguageSpeakerComponent? languageComp = null) + public LanguagePrototype GetLanguage(EntityUid speaker, LanguageSpeakerComponent? component = null) { - var id = GetLanguages(speaker, languageComp)?.CurrentLanguage; - if (id == null) - return Universal; // Fallback + if (HasComp(speaker) || !Resolve(speaker, ref component)) + return Universal; // Serves both as a fallback and uhhh something (TODO: fix this comment) - _prototype.TryIndex(id, out LanguagePrototype? proto); + if (string.IsNullOrEmpty(component.CurrentLanguage) || !_prototype.TryIndex(component.CurrentLanguage, out var proto)) + return Universal; - return proto ?? Universal; + return proto; } - public void SetLanguage(EntityUid speaker, string language, LanguageSpeakerComponent? languageComp = null) + /// + /// Returns the list of languages this entity can speak. + /// + /// Typically, checking is sufficient. + public List GetSpokenLanguages(EntityUid uid) { - if (!CanSpeak(speaker, language) || HasComp(speaker)) - return; + if (HasComp(uid)) + return [UniversalPrototype]; - if (languageComp == null && !TryComp(speaker, out languageComp)) - return; + if (TryComp(uid, out var component)) + return component.SpokenLanguages; - if (languageComp.CurrentLanguage == language) + return []; + } + + /// + /// Returns the list of languages this entity can understand. + /// + /// Typically, checking is sufficient. + public List GetUnderstoodLanguages(EntityUid uid) + { + if (HasComp(uid)) + return [UniversalPrototype]; // This one is tricky because... well, they understand all of them, not just one. + + if (TryComp(uid, out var component)) + return component.UnderstoodLanguages; + + return []; + } + + public void SetLanguage(EntityUid speaker, string language, LanguageSpeakerComponent? component = null) + { + if (!CanSpeak(speaker, language) || (HasComp(speaker) && language != UniversalPrototype)) return; - languageComp.CurrentLanguage = language; + if (!Resolve(speaker, ref component) || component.CurrentLanguage == language) + return; + component.CurrentLanguage = language; RaiseLocalEvent(speaker, new LanguagesUpdateEvent(), true); } /// - /// Adds a new language to the lists of understood and/or spoken languages of the given component. + /// Adds a new language to the respective lists of intrinsically known languages of the given entity. /// - public void AddLanguage(LanguageSpeakerComponent comp, string language, bool addSpoken = true, bool addUnderstood = true) + public void AddLanguage( + EntityUid uid, + string language, + bool addSpoken = true, + bool addUnderstood = true, + LanguageKnowledgeComponent? knowledge = null, + LanguageSpeakerComponent? speaker = null) { - if (addSpoken && !comp.SpokenLanguages.Contains(language)) - comp.SpokenLanguages.Add(language); + if (knowledge == null) + knowledge = EnsureComp(uid); + + if (addSpoken && !knowledge.SpokenLanguages.Contains(language)) + knowledge.SpokenLanguages.Add(language); - if (addUnderstood && !comp.UnderstoodLanguages.Contains(language)) - comp.UnderstoodLanguages.Add(language); + if (addUnderstood && !knowledge.UnderstoodLanguages.Contains(language)) + knowledge.UnderstoodLanguages.Add(language); - RaiseLocalEvent(comp.Owner, new LanguagesUpdateEvent(), true); + UpdateEntityLanguages(uid, speaker); } - public (List spoken, List understood) GetAllLanguages(EntityUid speaker) + /// + /// Removes a language from the respective lists of intrinsically known languages of the given entity. + /// + public void RemoveLanguage( + EntityUid uid, + string language, + bool removeSpoken = true, + bool removeUnderstood = true, + LanguageKnowledgeComponent? knowledge = null, + LanguageSpeakerComponent? speaker = null) { - var languages = GetLanguages(speaker); - // The lists need to be copied because the internal ones are re-used for performance reasons. - return (new List(languages.SpokenLanguages), new List(languages.UnderstoodLanguages)); + if (knowledge == null) + knowledge = EnsureComp(uid); + + if (removeSpoken) + knowledge.SpokenLanguages.Remove(language); + + if (removeUnderstood) + knowledge.UnderstoodLanguages.Remove(language); + + UpdateEntityLanguages(uid, speaker); } /// /// Ensures the given entity has a valid language as its current language. /// If not, sets it to the first entry of its SpokenLanguages list, or universal if it's empty. /// - public void EnsureValidLanguage(EntityUid entity, LanguageSpeakerComponent? comp = null) + /// True if the current language was modified, false otherwise. + public bool EnsureValidLanguage(EntityUid entity, LanguageSpeakerComponent? comp = null) { if (comp == null && !TryComp(entity, out comp)) - return; + return false; - var langs = GetLanguages(entity, comp); - if (!langs.SpokenLanguages.Contains(comp!.CurrentLanguage, StringComparer.Ordinal)) + if (!comp.SpokenLanguages.Contains(comp.CurrentLanguage)) { - comp.CurrentLanguage = langs.SpokenLanguages.FirstOrDefault(UniversalPrototype); - RaiseLocalEvent(comp.Owner, new LanguagesUpdateEvent(), true); + comp.CurrentLanguage = comp.SpokenLanguages.FirstOrDefault(UniversalPrototype); + RaiseLocalEvent(entity, new LanguagesUpdateEvent()); + return true; } - } - #endregion - #region event handling - private void OnInitLanguageSpeaker(EntityUid uid, LanguageSpeakerComponent component, ComponentInit args) - { - if (string.IsNullOrEmpty(component.CurrentLanguage)) - component.CurrentLanguage = component.SpokenLanguages.FirstOrDefault(UniversalPrototype); + return false; } - #endregion - #region internal api - misc /// - /// Dynamically resolves the current language of the entity and the list of all languages it speaks. - /// - /// If the entity is not a language speaker, or is a universal language speaker, then it's assumed to speak Universal, - /// aka all languages at once and none at the same time. + /// Immediately refreshes the cached lists of spoken and understood languages for the given entity. /// - /// - /// The returned event is reused and thus must not be held as a reference anywhere but inside the caller function. - /// - private DetermineEntityLanguagesEvent GetLanguages(EntityUid speaker, LanguageSpeakerComponent? comp = null) + public void UpdateEntityLanguages(EntityUid entity, LanguageSpeakerComponent? languages = null) { - // This is a shortcut for ghosts and entities that should not speak normally (admemes) - if (HasComp(speaker) || !TryComp(speaker, out comp)) - return _universalLanguagesEvent; + if (!Resolve(entity, ref languages)) + return; - var ev = _determineLanguagesEvent; - ev.SpokenLanguages.Clear(); - ev.UnderstoodLanguages.Clear(); + var ev = new DetermineEntityLanguagesEvent(); + // We add the intrinsically known languages first so other systems can manipulate them easily + if (TryComp(entity, out var knowledge)) + { + foreach (var spoken in knowledge.SpokenLanguages) + ev.SpokenLanguages.Add(spoken); - ev.CurrentLanguage = comp.CurrentLanguage; - ev.SpokenLanguages.AddRange(comp.SpokenLanguages); - ev.UnderstoodLanguages.AddRange(comp.UnderstoodLanguages); + foreach (var understood in knowledge.UnderstoodLanguages) + ev.UnderstoodLanguages.Add(understood); + } - RaiseLocalEvent(speaker, ev, true); + RaiseLocalEvent(entity, ref ev); - if (ev.CurrentLanguage.Length == 0) - ev.CurrentLanguage = !string.IsNullOrEmpty(comp.CurrentLanguage) ? comp.CurrentLanguage : UniversalPrototype; // Fall back to account for admemes like admins possessing a bread - return ev; + languages.SpokenLanguages.Clear(); + languages.UnderstoodLanguages.Clear(); + + languages.SpokenLanguages.AddRange(ev.SpokenLanguages); + languages.UnderstoodLanguages.AddRange(ev.UnderstoodLanguages); + + if (!EnsureValidLanguage(entity)) + RaiseLocalEvent(entity, new LanguagesUpdateEvent()); } - /// - /// Set CurrentLanguage of the client, the client must be able to Understand the language requested. - /// - private void OnClientSetLanguage(LanguagesSetMessage message, EntitySessionEventArgs args) - { - if (args.SenderSession.AttachedEntity is not {Valid: true} speaker) - return; + #endregion - var language = GetLanguagePrototype(message.CurrentLanguage); + #region event handling - if (language == null || !CanSpeak(speaker, language.ID)) - return; + private void OnInitLanguageSpeaker(EntityUid uid, LanguageSpeakerComponent component, ComponentInit args) + { + if (string.IsNullOrEmpty(component.CurrentLanguage)) + component.CurrentLanguage = component.SpokenLanguages.FirstOrDefault(UniversalPrototype); - SetLanguage(speaker, language.ID); + UpdateEntityLanguages(uid, component); } + #endregion } diff --git a/Content.Shared/Language/Events/LanguagesUpdateEvent.cs b/Content.Server/Language/LanguagesUpdateEvent.cs similarity index 78% rename from Content.Shared/Language/Events/LanguagesUpdateEvent.cs rename to Content.Server/Language/LanguagesUpdateEvent.cs index 90ce2f4446..88ea09916b 100644 --- a/Content.Shared/Language/Events/LanguagesUpdateEvent.cs +++ b/Content.Server/Language/LanguagesUpdateEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Language.Events; +namespace Content.Server.Language.Events; /// /// Raised on an entity when its list of languages changes. diff --git a/Content.Server/Language/TranslatorImplanterSystem.cs b/Content.Server/Language/TranslatorImplanterSystem.cs index 1e0c13375e..0d67bbb127 100644 --- a/Content.Server/Language/TranslatorImplanterSystem.cs +++ b/Content.Server/Language/TranslatorImplanterSystem.cs @@ -1,5 +1,6 @@ using System.Linq; using Content.Server.Administration.Logs; +using Content.Server.Language.Events; using Content.Server.Popups; using Content.Shared.Database; using Content.Shared.Interaction; @@ -12,6 +13,7 @@ namespace Content.Server.Language; +// TODO: pending rewrite public sealed class TranslatorImplanterSystem : SharedTranslatorImplanterSystem { [Dependency] private readonly PopupSystem _popup = default!; @@ -35,13 +37,14 @@ private void OnImplant(EntityUid implanter, TranslatorImplanterComponent compone if (!TryComp(target, out var speaker)) return; + // TODO: yes I know this should use whitelist comp, yes this will be changed after rewrite if (component.MobsOnly && !HasComp(target)) { _popup.PopupEntity("translator-implanter-refuse", component.Owner); return; } - var understood = _language.GetAllLanguages(target).understood; + var understood = speaker.UnderstoodLanguages; if (component.RequiredLanguages.Count > 0 && !component.RequiredLanguages.Any(lang => understood.Contains(lang))) { _popup.PopupEntity(Loc.GetString("translator-implanter-refuse", diff --git a/Content.Server/Language/TranslatorSystem.cs b/Content.Server/Language/TranslatorSystem.cs index d1e0853d21..b2166b44f1 100644 --- a/Content.Server/Language/TranslatorSystem.cs +++ b/Content.Server/Language/TranslatorSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Server.Language.Events; using Content.Server.Popups; using Content.Server.PowerCell; using Content.Shared.Interaction; @@ -35,8 +36,7 @@ public override void Initialize() SubscribeLocalEvent(OnTranslatorDropped); } - private void OnDetermineLanguages(EntityUid uid, IntrinsicTranslatorComponent component, - DetermineEntityLanguagesEvent ev) + private void OnDetermineLanguages(EntityUid uid, IntrinsicTranslatorComponent component, DetermineEntityLanguagesEvent ev) { if (!component.Enabled) return; @@ -44,6 +44,11 @@ private void OnDetermineLanguages(EntityUid uid, IntrinsicTranslatorComponent co if (!_powerCell.HasActivatableCharge(uid)) return; + // The idea here is as follows: + // Required languages are languages that are required to operate the translator. + // The translator has a limited number of languages it can translate to and translate from. + // If the wielder understands the language of the translator, they will be able to understand translations provided by it + // If the wielder also speaks that language, they will be able to use it to translate their own speech by "speaking" in that language var addUnderstood = true; var addSpoken = true; if (component.RequiredLanguages.Count > 0) @@ -53,10 +58,10 @@ private void OnDetermineLanguages(EntityUid uid, IntrinsicTranslatorComponent co // Add langs when the wielder has all of the required languages foreach (var language in component.RequiredLanguages) { - if (!ev.SpokenLanguages.Contains(language, StringComparer.Ordinal)) + if (!ev.SpokenLanguages.Contains(language)) addSpoken = false; - if (!ev.UnderstoodLanguages.Contains(language, StringComparer.Ordinal)) + if (!ev.UnderstoodLanguages.Contains(language)) addUnderstood = false; } } @@ -67,30 +72,25 @@ private void OnDetermineLanguages(EntityUid uid, IntrinsicTranslatorComponent co addSpoken = false; foreach (var language in component.RequiredLanguages) { - if (ev.SpokenLanguages.Contains(language, StringComparer.Ordinal)) + if (ev.SpokenLanguages.Contains(language)) addSpoken = true; - if (ev.UnderstoodLanguages.Contains(language, StringComparer.Ordinal)) + if (ev.UnderstoodLanguages.Contains(language)) addUnderstood = true; } } } if (addSpoken) - { foreach (var language in component.SpokenLanguages) - AddIfNotExists(ev.SpokenLanguages, language); - - if (component.DefaultLanguageOverride != null && ev.CurrentLanguage.Length == 0) - ev.CurrentLanguage = component.DefaultLanguageOverride; - } + ev.SpokenLanguages.Add(language); if (addUnderstood) foreach (var language in component.UnderstoodLanguages) - AddIfNotExists(ev.UnderstoodLanguages, language); + ev.UnderstoodLanguages.Add(language); } - private void OnTranslatorInteract( EntityUid translator, HandheldTranslatorComponent component, InteractHandEvent args) + private void OnTranslatorInteract(EntityUid translator, HandheldTranslatorComponent component, InteractHandEvent args) { var holder = args.User; if (!EntityManager.HasComponent(holder)) @@ -99,7 +99,7 @@ private void OnTranslatorInteract( EntityUid translator, HandheldTranslatorCompo var intrinsic = EnsureComp(holder); UpdateBoundIntrinsicComp(component, intrinsic, component.Enabled); - RaiseLocalEvent(holder, new LanguagesUpdateEvent(), true); + _language.UpdateEntityLanguages(holder); } private void OnTranslatorDropped(EntityUid translator, HandheldTranslatorComponent component, DroppedEvent args) @@ -114,9 +114,7 @@ private void OnTranslatorDropped(EntityUid translator, HandheldTranslatorCompone RemCompDeferred(holder, intrinsic); } - _language.EnsureValidLanguage(holder); - - RaiseLocalEvent(holder, new LanguagesUpdateEvent(), true); + _language.UpdateEntityLanguages(holder); } private void OnTranslatorToggle(EntityUid translator, HandheldTranslatorComponent translatorComp, ActivateInWorldEvent args) @@ -151,15 +149,11 @@ private void OnTranslatorToggle(EntityUid translator, HandheldTranslatorComponen if (isEnabled && translatorComp.SetLanguageOnInteract) { var firstNew = translatorComp.SpokenLanguages.FirstOrDefault(it => !languageComp.SpokenLanguages.Contains(it)); - if (firstNew != null) + if (firstNew is {}) _language.SetLanguage(holder, firstNew, languageComp); } - if (!isEnabled) - _language.EnsureValidLanguage(holder, languageComp); - - // TODO this raises at least 2 disctinct events of this type - RaiseLocalEvent(holder, new LanguagesUpdateEvent(), true); + _language.UpdateEntityLanguages(holder, languageComp); } else { @@ -188,7 +182,7 @@ private void OnPowerCellSlotEmpty(EntityUid translator, HandheldTranslatorCompon OnAppearanceChange(translator, component); if (Transform(translator).ParentUid is { Valid: true } holder - && EntityManager.HasComponent(holder)) + && TryComp(holder, out var languageComp)) { if (!EntityManager.TryGetComponent(holder, out var intrinsic)) return; @@ -196,11 +190,10 @@ private void OnPowerCellSlotEmpty(EntityUid translator, HandheldTranslatorCompon if (intrinsic.Issuer == component) { intrinsic.Enabled = false; - EntityManager.RemoveComponent(holder, intrinsic); + RemComp(holder, intrinsic); } - _language.EnsureValidLanguage(holder); - RaiseLocalEvent(holder, new LanguagesUpdateEvent(), true); + _language.UpdateEntityLanguages(holder, languageComp); } } @@ -211,8 +204,8 @@ private void UpdateBoundIntrinsicComp(HandheldTranslatorComponent comp, HoldsTra { if (isEnabled) { - intrinsic.SpokenLanguages = new List(comp.SpokenLanguages); - intrinsic.UnderstoodLanguages = new List(comp.UnderstoodLanguages); + intrinsic.SpokenLanguages = [..comp.SpokenLanguages]; + intrinsic.UnderstoodLanguages = [..comp.UnderstoodLanguages]; intrinsic.DefaultLanguageOverride = comp.DefaultLanguageOverride; } else @@ -225,11 +218,4 @@ private void UpdateBoundIntrinsicComp(HandheldTranslatorComponent comp, HoldsTra intrinsic.Enabled = isEnabled; intrinsic.Issuer = comp; } - - private static void AddIfNotExists(List list, string item) - { - if (list.Contains(item)) - return; - list.Add(item); - } } diff --git a/Content.Server/Mind/Commands/MakeSentientCommand.cs b/Content.Server/Mind/Commands/MakeSentientCommand.cs index cacd499ab8..b58d782d9c 100644 --- a/Content.Server/Mind/Commands/MakeSentientCommand.cs +++ b/Content.Server/Mind/Commands/MakeSentientCommand.cs @@ -61,10 +61,11 @@ public static void MakeSentient(EntityUid uid, IEntityManager entityManager, boo var language = IoCManager.Resolve().GetEntitySystem(); var speaker = entityManager.EnsureComponent(uid); - // If the speaker knows any language (like monkey or robot), they keep those - // Otherwise, we give them the fallback + + // If the entity already speaks some language (like monkey or robot), we do nothing else + // Otherwise, we give them the fallback language if (speaker.SpokenLanguages.Count == 0) - language.AddLanguage(speaker, SharedLanguageSystem.FallbackLanguagePrototype); + language.AddLanguage(uid, SharedLanguageSystem.FallbackLanguagePrototype); } entityManager.EnsureComponent(uid); diff --git a/Content.Server/Radio/EntitySystems/HeadsetSystem.cs b/Content.Server/Radio/EntitySystems/HeadsetSystem.cs index 53517da6cb..2500138a23 100644 --- a/Content.Server/Radio/EntitySystems/HeadsetSystem.cs +++ b/Content.Server/Radio/EntitySystems/HeadsetSystem.cs @@ -106,7 +106,7 @@ private void OnHeadsetReceive(EntityUid uid, HeadsetComponent component, ref Rad var parent = Transform(uid).ParentUid; if (TryComp(parent, out ActorComponent? actor)) { - var canUnderstand = _language.CanUnderstand(parent, args.Language); + var canUnderstand = _language.CanUnderstand(parent, args.Language.ID); var msg = new MsgChatMessage { Message = canUnderstand ? args.OriginalChatMsg : args.LanguageObfuscatedChatMsg diff --git a/Content.Server/Radio/EntitySystems/RadioSystem.cs b/Content.Server/Radio/EntitySystems/RadioSystem.cs index 60aa7c2f4f..0e4da856ce 100644 --- a/Content.Server/Radio/EntitySystems/RadioSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioSystem.cs @@ -60,7 +60,7 @@ private void OnIntrinsicReceive(EntityUid uid, IntrinsicRadioReceiverComponent c // Einstein-Engines - languages mechanic var listener = component.Owner; var msg = args.OriginalChatMsg; - if (listener != null && !_language.CanUnderstand(listener, args.Language)) + if (listener != null && !_language.CanUnderstand(listener, args.Language.ID)) msg = args.LanguageObfuscatedChatMsg; _netMan.ServerSendMessage(new MsgChatMessage { Message = msg}, actor.PlayerSession.Channel); diff --git a/Content.Shared/Language/Components/LanguageKnowledgeComponent.cs b/Content.Shared/Language/Components/LanguageKnowledgeComponent.cs new file mode 100644 index 0000000000..0632f5d9cb --- /dev/null +++ b/Content.Shared/Language/Components/LanguageKnowledgeComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Language.Components; + +/// +/// Stores data about entities' intrinsic language knowledge. +/// +[RegisterComponent] +public sealed partial class LanguageKnowledgeComponent : Component +{ + /// + /// List of languages this entity can speak without any external tools. + /// + [DataField("speaks", customTypeSerializer: typeof(PrototypeIdListSerializer), required: true)] + public List SpokenLanguages = new(); + + /// + /// List of languages this entity can understand without any external tools. + /// + [DataField("understands", customTypeSerializer: typeof(PrototypeIdListSerializer), required: true)] + public List UnderstoodLanguages = new(); +} diff --git a/Content.Shared/Language/Components/LanguageSpeakerComponent.cs b/Content.Shared/Language/Components/LanguageSpeakerComponent.cs index 95232ffe6f..e8ebccb3dd 100644 --- a/Content.Shared/Language/Components/LanguageSpeakerComponent.cs +++ b/Content.Shared/Language/Components/LanguageSpeakerComponent.cs @@ -1,29 +1,32 @@ -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - namespace Content.Shared.Language; -[RegisterComponent, AutoGenerateComponentState] +// TODO: either move all language speaker-related components to server side, or make everything else shared. +// The current approach leads to confusion, as the server never informs the client of updates in these components. + +/// +/// Stores the current state of the languages the entity can speak and understand. +/// +/// +/// All fields of this component are populated during a DetermineEntityLanguagesEvent. +/// They are not to be modified externally. +/// +[RegisterComponent] public sealed partial class LanguageSpeakerComponent : Component { /// - /// The current language the entity may use to speak. + /// The current language the entity uses when speaking. /// Other listeners will hear the entity speak in this language. /// - [ViewVariables(VVAccess.ReadWrite)] - [AutoNetworkedField] - public string CurrentLanguage = default!; + [DataField] + public string CurrentLanguage = ""; // The language system will override it on init /// - /// List of languages this entity can speak. + /// List of languages this entity can speak at the current moment. /// - [ViewVariables] - [DataField("speaks", customTypeSerializer: typeof(PrototypeIdListSerializer), required: true)] - public List SpokenLanguages = new(); + public List SpokenLanguages = []; /// - /// List of languages this entity can understand. + /// List of languages this entity can understand at the current moment. /// - [ViewVariables] - [DataField("understands", customTypeSerializer: typeof(PrototypeIdListSerializer), required: true)] - public List UnderstoodLanguages = new(); + public List UnderstoodLanguages = []; } From 0e63714cd39cd93de0ac233ee1a4d963f13df53b Mon Sep 17 00:00:00 2001 From: fox Date: Sat, 15 Jun 2024 08:26:18 +0300 Subject: [PATCH 29/68] Update yaml prototypes accordingly --- .../DeltaV/Entities/Mobs/NPCs/animals.yml | 4 +- .../DeltaV/Entities/Mobs/NPCs/familiars.yml | 2 +- .../DeltaV/Entities/Mobs/NPCs/nukiemouse.yml | 2 +- .../DeltaV/Entities/Mobs/Species/harpy.yml | 2 +- .../Entities/Mobs/Species/vulpkanin.yml | 2 +- .../Mobs/Cyborgs/base_borg_chassis.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 38 +++++++++---------- .../Entities/Mobs/NPCs/argocyte.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/pets.yml | 20 +++++----- .../Entities/Mobs/NPCs/regalrat.yml | 4 +- .../Prototypes/Entities/Mobs/NPCs/shadows.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/slimes.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/space.yml | 6 +-- .../Prototypes/Entities/Mobs/NPCs/xeno.yml | 4 +- .../Prototypes/Entities/Mobs/Species/base.yml | 2 +- .../Entities/Mobs/Species/diona.yml | 2 +- .../Entities/Mobs/Species/dwarf.yml | 2 +- .../Entities/Mobs/Species/human.yml | 2 +- .../Prototypes/Entities/Mobs/Species/moth.yml | 2 +- .../Entities/Mobs/Species/reptilian.yml | 2 +- .../Entities/Mobs/Species/slime.yml | 2 +- Resources/Prototypes/Entities/Mobs/base.yml | 1 + .../Structures/Machines/vending_machines.yml | 2 +- .../Nyanotrasen/Entities/Mobs/Species/Oni.yml | 2 +- .../Entities/Mobs/Species/felinid.yml | 2 +- 26 files changed, 58 insertions(+), 57 deletions(-) diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/animals.yml index e932974a0f..dd59d74d3f 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/animals.yml @@ -66,7 +66,7 @@ - type: Tag tags: - VimPilot - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Fox understands: @@ -179,7 +179,7 @@ tags: - DoorBumpOpener - VimPilot - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Dog understands: diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml index fa51b99325..2dad0fe2e6 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml @@ -95,7 +95,7 @@ factions: - PsionicInterloper - NanoTrasen - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon understands: diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/nukiemouse.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/nukiemouse.yml index c2ae33ec0b..8968f0e77a 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/nukiemouse.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/nukiemouse.yml @@ -96,7 +96,7 @@ spawned: - id: FoodMeat amount: 1 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Mouse understands: diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml index 18437e074d..1925067d57 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml @@ -127,7 +127,7 @@ templateId: digitigrade - type: HarpyVisuals - type: UltraVision - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - SolCommon diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml index 52853d696a..9e4f80bfb5 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml @@ -97,7 +97,7 @@ Female: FemaleVulpkanin Unsexed: MaleVulpkanin - type: DogVision - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - Canilunzt diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 0645e451af..196abcfab7 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -213,7 +213,7 @@ visMask: - PsionicInvisibility - Normal - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - RobotTalk diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 369544fdc1..3b02c14d9e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -48,7 +48,7 @@ flavorKind: station-event-random-sentience-flavor-organic - type: Bloodstream bloodMaxVolume: 50 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Mouse understands: @@ -232,7 +232,7 @@ - type: EggLayer eggSpawn: - id: FoodEgg - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Chicken understands: @@ -510,7 +510,7 @@ prob: 0.5 - type: Extractable grindableSolutionName: food - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Moffic understands: @@ -610,7 +610,7 @@ - type: EggLayer eggSpawn: - id: FoodEgg - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Duck understands: @@ -851,7 +851,7 @@ interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Voice/Arachnid/arachnid_chitter.ogg - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Crab understands: @@ -1091,7 +1091,7 @@ - type: Inventory speciesId: kangaroo templateId: kangaroo - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Kangaroo understands: @@ -1284,7 +1284,7 @@ - type: Speech speechSounds: Monkey speechVerb: Monkey - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Monkey understands: @@ -1323,7 +1323,7 @@ - type: Speech speechSounds: Monkey speechVerb: Monkey - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Monkey understands: @@ -1368,7 +1368,7 @@ - type: NameIdentifier group: Kobold - type: LizardAccent - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Kobold understands: @@ -1601,7 +1601,7 @@ spawned: - id: FoodMeatRat amount: 1 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Mouse understands: @@ -1930,7 +1930,7 @@ path: /Audio/Animals/parrot_raught.ogg - type: Bloodstream bloodMaxVolume: 50 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon understands: @@ -2181,7 +2181,7 @@ - type: MeleeChemicalInjector transferAmount: 0.75 solution: melee - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Xeno understands: @@ -2516,7 +2516,7 @@ - type: Tag tags: - VimPilot - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Fox understands: @@ -2567,7 +2567,7 @@ spawned: - id: FoodMeat amount: 2 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Dog understands: @@ -2723,7 +2723,7 @@ spawned: - id: FoodMeat amount: 3 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Cat understands: @@ -2794,7 +2794,7 @@ - type: NpcFactionMember factions: - Syndicate - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Xeno understands: @@ -3095,7 +3095,7 @@ spawned: - id: FoodMeat amount: 1 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Mouse understands: @@ -3205,7 +3205,7 @@ interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/pig_oink.ogg - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Pig understands: @@ -3295,7 +3295,7 @@ reformTime: 10 popupText: diona-reform-attempt reformPrototype: MobDionaReformed - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - RootSpeak understands: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml index 3bcf8e7a16..f8d0497b97 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml @@ -15,7 +15,7 @@ - type: Sprite sprite: Mobs/Aliens/Argocyte/argocyte_common.rsi - type: SolutionContainerManager - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Xeno understands: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 8ca1b2d2f0..a029f03845 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -36,7 +36,7 @@ - VimPilot - type: StealTarget stealGroup: AnimalIan - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Dog understands: @@ -127,7 +127,7 @@ tags: - CannotSuicide - VimPilot - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Cat understands: @@ -151,7 +151,7 @@ tags: - CannotSuicide - VimPilot - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Cat understands: @@ -306,7 +306,7 @@ spawned: - id: FoodMeat amount: 2 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Dog understands: @@ -409,7 +409,7 @@ spawned: - id: FoodMeat amount: 3 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Dog understands: @@ -572,7 +572,7 @@ - VimPilot - type: StealTarget stealGroup: AnimalRenault - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Fox understands: @@ -625,7 +625,7 @@ - CannotSuicide - Hamster - VimPilot - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Mouse understands: @@ -803,7 +803,7 @@ attributes: proper: true gender: female - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Bubblish understands: @@ -843,7 +843,7 @@ attributes: proper: true gender: male - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Monkey understands: @@ -877,7 +877,7 @@ # - type: AlwaysRevolutionaryConvertible - type: StealTarget stealGroup: AnimalTropico - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Crab understands: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index 50fe3b6765..75f50f242e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -119,7 +119,7 @@ attributes: gender: male - type: PotentialPsionic # Nyano - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - Mouse @@ -296,7 +296,7 @@ - type: Food - type: Item size: Tiny # Delta V - Make them eatable and pickable. - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Mouse understands: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml b/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml index 9559ae3a0c..08cb776c53 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml @@ -50,7 +50,7 @@ - map: ["enum.DamageStateVisualLayers.Base"] state: cat - type: Physics - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Cat understands: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index e3166c15f6..f9cf0db5f6 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -107,7 +107,7 @@ - type: TypingIndicator proto: robot - type: ZombieImmune - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - RobotTalk diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml index 901bf149cb..9c992545a8 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml @@ -111,7 +111,7 @@ successChance: 0.5 interactSuccessString: petting-success-slimes interactFailureString: petting-failure-generic - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Bubblish understands: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index 9ea2d784db..5ccd516a0f 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -165,7 +165,7 @@ - type: FootstepModifier footstepSoundCollection: collection: FootstepBounce - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Kangaroo understands: @@ -251,7 +251,7 @@ - type: MeleeChemicalInjector solution: melee transferAmount: 4 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Xeno understands: @@ -357,7 +357,7 @@ - type: MeleeChemicalInjector solution: melee transferAmount: 6 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Xeno understands: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml index 26553a2f1f..397989643e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml @@ -125,7 +125,7 @@ chance: -2 - type: Psionic #Nyano - Summary: makes psionic by default. removable: false - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - Xeno understands: @@ -239,7 +239,7 @@ - type: Tag tags: - CannotSuicide - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - Xeno diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 67212d416f..da9858105b 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -219,7 +219,7 @@ price: 1500 # Kidnapping a living person and selling them for cred is a good move. deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less. - type: CanEscapeInventory # Carrying system from nyanotrasen. - - type: LanguageSpeaker # This is here so all with no LanguageSpeaker at least spawn with the default languages. + - type: LanguageKnowledge # This is here so even if species doesn't have a defined language, they at least speak GC speaks: - GalacticCommon understands: diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml index 5cb3de6f16..de9928f0d6 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/diona.yml @@ -102,7 +102,7 @@ actionPrototype: DionaGibAction allowedStates: - Dead - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - RootSpeak diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index 7afc5cddd7..a5920bac50 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -52,7 +52,7 @@ accent: dwarf - type: Speech speechSounds: Bass - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - SolCommon diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 7c3f857c00..e00e06279e 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -17,7 +17,7 @@ - id: FoodMeatHuman amount: 5 - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - SolCommon diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 39aa0ab8de..192efcd256 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -23,7 +23,7 @@ accent: zombieMoth - type: Speech speechVerb: Moth - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - Moffic diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index bdea4499ed..35f9e9fa39 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -59,7 +59,7 @@ types: Heat : 1.5 #per second, scales with temperature & other constants - type: Wagging - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - Draconic diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml index a601010ef9..6c3dc95295 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -74,7 +74,7 @@ types: Asphyxiation: -1.0 maxSaturation: 15 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - Bubblish diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index ac9aabbead..faa77022aa 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -43,6 +43,7 @@ - type: MovementSpeedModifier - type: Polymorphable - type: StatusIcon + - type: LanguageSpeaker # Einstein Engines. This component is required to support speech, although it does not define known languages. # Used for mobs that have health and can take damage. - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 6efa5a6371..97182915c2 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -101,7 +101,7 @@ price: 100 - type: Appearance - type: WiresVisuals - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - RobotTalk diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml index 8a0e750abd..0f652c90fa 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml @@ -35,7 +35,7 @@ - MobLayer - type: Stamina critThreshold: 115 - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - Nekomimetic diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml index 2184926b95..6b78ba0488 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml @@ -64,7 +64,7 @@ Unsexed: MaleFelinid - type: Felinid - type: NoShoesSilentFootsteps - - type: LanguageSpeaker + - type: LanguageKnowledge speaks: - GalacticCommon - SolCommon From 44b625f283363a59344f43096a0ee68dc4ab2716 Mon Sep 17 00:00:00 2001 From: fox Date: Sat, 15 Jun 2024 17:36:50 +0300 Subject: [PATCH 30/68] Move LanguagePrototype.Replacement to ObfuscationMethod and remove ObfuscationMethod's dependency on LanguagePrototype --- Content.Shared/Language/LanguagePrototype.cs | 6 - Content.Shared/Language/ObfuscationMethods.cs | 38 +- .../Language/Systems/SharedLanguageSystem.cs | 2 +- Resources/Prototypes/Language/languages.yml | 764 +++++++++--------- 4 files changed, 405 insertions(+), 405 deletions(-) diff --git a/Content.Shared/Language/LanguagePrototype.cs b/Content.Shared/Language/LanguagePrototype.cs index 15557739f7..9342c07e91 100644 --- a/Content.Shared/Language/LanguagePrototype.cs +++ b/Content.Shared/Language/LanguagePrototype.cs @@ -14,12 +14,6 @@ public sealed class LanguagePrototype : IPrototype [DataField("obfuscation")] public ObfuscationMethod Obfuscation = ObfuscationMethod.Default; - /// - /// A list of replacement phrases used in - /// - [DataField(required: true)] - public List Replacement = []; - #region utility /// /// The in-world name of this language, localized. diff --git a/Content.Shared/Language/ObfuscationMethods.cs b/Content.Shared/Language/ObfuscationMethods.cs index 5925279bd7..7bd2a17542 100644 --- a/Content.Shared/Language/ObfuscationMethods.cs +++ b/Content.Shared/Language/ObfuscationMethods.cs @@ -8,30 +8,36 @@ public abstract partial class ObfuscationMethod { public static readonly ObfuscationMethod Default = new ReplacementObfuscation(); - internal abstract void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context); + internal abstract void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context); /// /// Obfuscates the provided message. This method should only be used for debugging purposes. /// For all other purposes, use instead. /// - public string Obfuscate(string message, LanguagePrototype language) + public string Obfuscate(string message) { var builder = new StringBuilder(); - Obfuscate(builder, message, language, IoCManager.Resolve().GetEntitySystem()); + Obfuscate(builder, message, IoCManager.Resolve().GetEntitySystem()); return builder.ToString(); } } /// /// The most primitive method of obfuscation - replaces the entire message with one random replacement phrase. -/// Similar to ReplacementAccent. +/// Similar to ReplacementAccent. Base for all replacement-based obfuscation methods. /// -public sealed partial class ReplacementObfuscation : ObfuscationMethod +public partial class ReplacementObfuscation : ObfuscationMethod { - internal override void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context) + /// + /// A list of replacement phrases used in the obfuscation process. + /// + [DataField(required: true)] + public List Replacement = []; + + internal override void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context) { - var idx = context.PseudoRandomNumber(0, 0, language.Replacement.Count - 1); - builder.Append(language.Replacement[idx]); + var idx = context.PseudoRandomNumber(0, 0, Replacement.Count - 1); + builder.Append(Replacement[idx]); } } @@ -43,7 +49,7 @@ internal override void Obfuscate(StringBuilder builder, string message, Language /// The words are obfuscated in a stable manner, such that every particular word will be obfuscated the same way throughout one round. /// This means that particular words can be memorized within a round, but not across rounds. /// -public sealed partial class SyllableObfuscation : ObfuscationMethod +public sealed partial class SyllableObfuscation : ReplacementObfuscation { [DataField] public int MinSyllables = 1; @@ -51,7 +57,7 @@ public sealed partial class SyllableObfuscation : ObfuscationMethod [DataField] public int MaxSyllables = 4; - internal override void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context) + internal override void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context) { const char eof = (char) 0; // Special character to mark the end of the message in the code below @@ -77,8 +83,8 @@ internal override void Obfuscate(StringBuilder builder, string message, Language for (var j = 0; j < newWordLength; j++) { - var index = context.PseudoRandomNumber(hashCode + j, 0, language.Replacement.Count - 1); - builder.Append(language.Replacement[index]); + var index = context.PseudoRandomNumber(hashCode + j, 0, Replacement.Count - 1); + builder.Append(Replacement[index]); } } @@ -102,7 +108,7 @@ private static bool IsPunctuation(char ch) /// Obfuscates each sentence in the message by concatenating a number of obfuscation phrases. /// The number of phrases in the obfuscated message is proportional to the length of the original message. /// -public sealed partial class PhraseObfuscation : ObfuscationMethod +public sealed partial class PhraseObfuscation : ReplacementObfuscation { [DataField] public int MinPhrases = 1; @@ -127,7 +133,7 @@ public sealed partial class PhraseObfuscation : ObfuscationMethod [DataField] public float Proportion = 1f / 3; - internal override void Obfuscate(StringBuilder builder, string message, LanguagePrototype language, SharedLanguageSystem context) + internal override void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context) { var sentenceBeginIndex = 0; var hashCode = 0; @@ -148,8 +154,8 @@ internal override void Obfuscate(StringBuilder builder, string message, Language for (var j = 0; j < newLength; j++) { - var phraseIdx = context.PseudoRandomNumber(hashCode + j, 0, language.Replacement.Count - 1); - var phrase = language.Replacement[phraseIdx]; + var phraseIdx = context.PseudoRandomNumber(hashCode + j, 0, Replacement.Count - 1); + var phrase = Replacement[phraseIdx]; builder.Append(phrase); builder.Append(Separator); } diff --git a/Content.Shared/Language/Systems/SharedLanguageSystem.cs b/Content.Shared/Language/Systems/SharedLanguageSystem.cs index b9ea6869ee..0a03086ebe 100644 --- a/Content.Shared/Language/Systems/SharedLanguageSystem.cs +++ b/Content.Shared/Language/Systems/SharedLanguageSystem.cs @@ -44,7 +44,7 @@ public string ObfuscateSpeech(string message, LanguagePrototype language) { var builder = new StringBuilder(); var method = language.Obfuscation; - method.Obfuscate(builder, message, language, this); + method.Obfuscate(builder, message, this); return builder.ToString(); } diff --git a/Resources/Prototypes/Language/languages.yml b/Resources/Prototypes/Language/languages.yml index 7b81f9ad05..fabcaad08e 100644 --- a/Resources/Prototypes/Language/languages.yml +++ b/Resources/Prototypes/Language/languages.yml @@ -4,8 +4,8 @@ id: Universal obfuscation: !type:ReplacementObfuscation # Should never be used anyway - replacement: - - "*incomprehensible*" + replacement: + - "*incomprehensible*" # The common galactic tongue. - type: language @@ -14,26 +14,26 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - blah - - blah - - blah - - dingle-doingle - - dingle - - dangle - - jibber-jabber - - jubber - - bleh - - zippity - - zoop - - wibble - - wobble - - wiggle - - yada - - meh - - neh - - nah - - wah + replacement: + - blah + - blah + - blah + - dingle-doingle + - dingle + - dangle + - jibber-jabber + - jubber + - bleh + - zippity + - zoop + - wibble + - wobble + - wiggle + - yada + - meh + - neh + - nah + - wah # Spoken by slimes. - type: language @@ -42,12 +42,12 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - blob - - plop - - pop - - bop - - boop + replacement: + - blob + - plop + - pop + - bop + - boop # Spoken by moths. - type: language @@ -56,64 +56,64 @@ !type:SyllableObfuscation minSyllables: 2 # Replacements are really short maxSyllables: 4 - replacement: - - Ã¥r - - i - - gÃ¥r - - sek - - mo - - ff - - ok - - gj - - ø - - gÃ¥ - - la - - le - - lit - - ygg - - van - - dÃ¥r - - næ - - møt - - idd - - hvo - - ja - - pÃ¥ - - han - - sÃ¥ - - Ã¥n - - det - - att - - nÃ¥ - - gö - - bra - - int - - tyc - - om - - när - - tvÃ¥ - - mÃ¥ - - dag - - sjä - - vii - - vuo - - eil - - tun - - käyt - - teh - - vä - - hei - - huo - - suo - - ää - - ten - - ja - - heu - - stu - - uhr - - kön - - we - - hön + replacement: + - Ã¥r + - i + - gÃ¥r + - sek + - mo + - ff + - ok + - gj + - ø + - gÃ¥ + - la + - le + - lit + - ygg + - van + - dÃ¥r + - næ + - møt + - idd + - hvo + - ja + - pÃ¥ + - han + - sÃ¥ + - Ã¥n + - det + - att + - nÃ¥ + - gö + - bra + - int + - tyc + - om + - när + - tvÃ¥ + - mÃ¥ + - dag + - sjä + - vii + - vuo + - eil + - tun + - käyt + - teh + - vä + - hei + - huo + - suo + - ää + - ten + - ja + - heu + - stu + - uhr + - kön + - we + - hön # Spoken by dionas. - type: language @@ -122,12 +122,12 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 5 - replacement: - - hs - - zt - - kr - - st - - sh + replacement: + - hs + - zt + - kr + - st + - sh # A mess of broken Japanese, spoken by Felinds and Oni - type: language @@ -136,55 +136,55 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 # May be too long even, we'll see. - replacement: - - neko - - nyan - - mimi - - moe - - mofu - - fuwa - - kyaa - - kawaii - - poka - - munya - - puni - - munyu - - ufufu - - icha - - doki - - kyun - - kusu - - nya - - nyaa - - desu - - kis - - ama - - chuu - - baka - - hewo - - boop - - gato - - kit - - sune - - yori - - sou - - baka - - chan - - san - - kun - - mahou - - yatta - - suki - - usagi - - domo - - ori - - uwa - - zaazaa - - shiku - - puru - - ira - - heto - - etto + replacement: + - neko + - nyan + - mimi + - moe + - mofu + - fuwa + - kyaa + - kawaii + - poka + - munya + - puni + - munyu + - ufufu + - icha + - doki + - kyun + - kusu + - nya + - nyaa + - desu + - kis + - ama + - chuu + - baka + - hewo + - boop + - gato + - kit + - sune + - yori + - sou + - baka + - chan + - san + - kun + - mahou + - yatta + - suki + - usagi + - domo + - ori + - uwa + - zaazaa + - shiku + - puru + - ira + - heto + - etto # Spoken by the Lizard race. - type: language @@ -193,91 +193,91 @@ !type:SyllableObfuscation minSyllables: 2 maxSyllables: 4 - replacement: - - za - - az - - ze - - ez - - zi - - iz - - zo - - oz - - zu - - uz - - zs - - sz - - ha - - ah - - he - - eh - - hi - - ih - - ho - - oh - - hu - - uh - - hs - - sh - - la - - al - - le - - el - - li - - il - - lo - - ol - - lu - - ul - - ls - - sl - - ka - - ak - - ke - - ek - - ki - - ik - - ko - - ok - - ku - - uk - - ks - - sk - - sa - - as - - se - - es - - si - - is - - so - - os - - su - - us - - ss - - ss - - ra - - ar - - re - - er - - ri - - ir - - ro - - or - - ru - - ur - - rs - - sr - - a - - a - - e - - e - - i - - i - - o - - o - - u - - u - - s - - s + replacement: + - za + - az + - ze + - ez + - zi + - iz + - zo + - oz + - zu + - uz + - zs + - sz + - ha + - ah + - he + - eh + - hi + - ih + - ho + - oh + - hu + - uh + - hs + - sh + - la + - al + - le + - el + - li + - il + - lo + - ol + - lu + - ul + - ls + - sl + - ka + - ak + - ke + - ek + - ki + - ik + - ko + - ok + - ku + - uk + - ks + - sk + - sa + - as + - se + - es + - si + - is + - so + - os + - su + - us + - ss + - ss + - ra + - ar + - re + - er + - ri + - ir + - ro + - or + - ru + - ur + - rs + - sr + - a + - a + - e + - e + - i + - i + - o + - o + - u + - u + - s + - s # Spoken by the Vulpkanin race. - type: language @@ -286,65 +286,65 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 4 - replacement: - - rur - - ya - - cen - - rawr - - bar - - kuk - - tek - - qat - - uk - - wu - - vuh - - tah - - tch - - schz - - auch - - ist - - ein - - entch - - zwichs - - tut - - mir - - wo - - bis - - es - - vor - - nic - - gro -# - lll - - enem - - zandt - - tzch - - noch - - hel - - ischt - - far - - wa - - baram - - iereng - - tech - - lach - - sam - - mak - - lich - - gen - - or - - ag - - eck - - gec - - stag - - onn - - bin - - ket - - jarl - - vulf - - einech - - cresthz - - azunein - - ghzth + replacement: + - rur + - ya + - cen + - rawr + - bar + - kuk + - tek + - qat + - uk + - wu + - vuh + - tah + - tch + - schz + - auch + - ist + - ein + - entch + - zwichs + - tut + - mir + - wo + - bis + - es + - vor + - nic + - gro + # - lll + - enem + - zandt + - tzch + - noch + - hel + - ischt + - far + - wa + - baram + - iereng + - tech + - lach + - sam + - mak + - lich + - gen + - or + - ag + - eck + - gec + - stag + - onn + - bin + - ket + - jarl + - vulf + - einech + - cresthz + - azunein + - ghzth # The common language of the Sol system. - type: language @@ -353,24 +353,24 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 4 - replacement: - - tao - - shi - - tzu - - yi - - com - - be - - is - - i - - op - - vi - - ed - - lec - - mo - - cle - - te - - dis - - e + replacement: + - tao + - shi + - tzu + - yi + - com + - be + - is + - i + - op + - vi + - ed + - lec + - mo + - cle + - te + - dis + - e - type: language id: RobotTalk @@ -378,9 +378,9 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 10 # Crazy - replacement: - - 0 - - 1 + replacement: + - 0 + - 1 # Languages spoken by various critters. - type: language @@ -389,11 +389,11 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 2 - replacement: - - murr - - meow - - purr - - mrow + replacement: + - murr + - meow + - purr + - mrow - type: language id: Dog @@ -401,13 +401,13 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 2 - replacement: - - woof - - bark - - ruff - - bork - - raff - - garr + replacement: + - woof + - bark + - ruff + - bork + - raff + - garr - type: language id: Fox @@ -415,13 +415,13 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 2 - replacement: - - ruff - - raff - - garr - - yip - - yap - - myah + replacement: + - ruff + - raff + - garr + - yip + - yap + - myah - type: language id: Xeno @@ -429,9 +429,9 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 8 # I was crazy once - replacement: - - s - - S + replacement: + - s + - S - type: language id: Monkey @@ -439,9 +439,9 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 8 # They locked me in a room... - replacement: - - o - - k + replacement: + - o + - k - type: language id: Mouse @@ -449,15 +449,15 @@ !type:SyllableObfuscation minSyllables: 2 maxSyllables: 3 - replacement: - - squ - - eak - - pi - - ep - - chuu - - ee - - fwi - - he + replacement: + - squ + - eak + - pi + - ep + - chuu + - ee + - fwi + - he - type: language id: Chicken @@ -465,10 +465,10 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - co - - coo - - ot + replacement: + - co + - coo + - ot - type: language id: Duck @@ -476,10 +476,10 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - qu - - ack - - quack + replacement: + - qu + - ack + - quack - type: language id: Cow @@ -487,9 +487,9 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - moo - - mooo + replacement: + - moo + - mooo - type: language id: Sheep @@ -497,10 +497,10 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - ba - - baa - - aa + replacement: + - ba + - baa + - aa - type: language id: Kangaroo @@ -508,11 +508,11 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - shre - - ack - - chuu - - choo + replacement: + - shre + - ack + - chuu + - choo - type: language id: Pig @@ -520,8 +520,8 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - oink # Please someone come up with something better + replacement: + - oink # Please someone come up with something better - type: language id: Crab @@ -529,14 +529,14 @@ !type:SyllableObfuscation minSyllables: 1 maxSyllables: 3 - replacement: - - click - - clack - - ti - - pi - - tap - - cli - - ick + replacement: + - click + - clack + - ti + - pi + - tap + - cli + - ick - type: language id: Kobold @@ -544,15 +544,15 @@ !type:SyllableObfuscation minSyllables: 2 maxSyllables: 4 - replacement: - - yip - - yap - - gar - - grr - - ar - - scre - - et - - gronk - - hiss - - ss - - ee + replacement: + - yip + - yap + - gar + - grr + - ar + - scre + - et + - gronk + - hiss + - ss + - ee From adf37451ae68123dec8c135116928a497ce29ac1 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 16 Jun 2024 17:30:09 -0400 Subject: [PATCH 31/68] Apply suggestions from code review Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Signed-off-by: VMSolidus --- .../AtmosphereSystem.HighPressureDelta.cs | 17 ++++------------- .../AtmosphereSystem.Monstermos.cs | 2 -- Content.Shared/CCVar/CCVars.cs | 11 +++++------ Content.Shared/Maps/ContentTileDefinition.cs | 7 +++++-- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index c00a5df747..0daae7da2c 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -90,7 +90,6 @@ private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent componen private void HighPressureMovements(Entity gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) { - //!MAGIC EXIT CONDITION THAT MAKES ALMOST 200 LINES RUN 1/100TH AS OFTEN. if (tile.PressureDifference < SpaceWindMinimumCalculatedMass * SpaceWindMinimumCalculatedMass) return; // TODO ATMOS finish this @@ -122,7 +121,7 @@ private void HighPressureMovements(Entity gridAtmospher var gridWorldRotation = xforms.GetComponent(gridAtmosphere).WorldRotation; // If we're using monstermos, smooth out the yeet direction to follow the flow - //WTF:This is bad, don't run this. It just makes the throws worse by somehow rounding them to orthogonal + //TODO This is bad, don't run this. It just makes the throws worse by somehow rounding them to orthogonal if (!MonstermosEqualization) { // We step through tiles according to the pressure direction on the current tile. @@ -184,8 +183,8 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, tile.PressureDirection = differenceDirection; } - //INFO:The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function - //INFO:And it isn't working, you've probably still got the pressureResistanceProbDelta line included. + //INFO The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function + //INFO And if it isn't working, you've probably still got the pressureResistanceProbDelta line included. /// /// EXPLANATION: /// pressureDifference = Force of Air Flow on a given tile @@ -201,14 +200,6 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, /// For a human sized entity with a standard weight of 80kg and a spacing between a hard vacuum and a room pressurized at 101kpa, /// The human shall only be moved if he is either very close to the hole, or is standing in a region of high airflow /// - /// - /// - /// - /// - /// - /// - /// - /// public void ExperiencePressureDifference( Entity ent, @@ -240,7 +231,7 @@ public void ExperiencePressureDifference( // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); - // TODO: Consider replacing throw target with proper trigonometry angles. + //TODO Consider replacing throw target with proper trigonometry angles. if (throwTarget != EntityCoordinates.Invalid) { var pos = throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition + dirVec; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index 4e90742c85..1ba9a48aa0 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -687,9 +687,7 @@ private void HandleDecompressionFloorRip(MapGridComponent mapGrid, TileAtmospher var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileref.TypeId]; if (!tileDef.Reinforced && tileDef.TileRipResistance < delta * MonstermosRipTilesPressureOffset) - { PryTile(mapGrid, tile.GridIndices); - } } private sealed class TileAtmosphereComparer : IComparer diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index aebbe722fa..55bd15eef0 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1110,9 +1110,8 @@ public static readonly CVarDef CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 10f, CVar.SERVERONLY); /// - /// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold. - /// If an object's inverse mass is lower than this, it is capped at this. Basically, an upper limit to how heavy an object can be - /// before it stops resisting space wind more. + /// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold. + /// If an object's inverse mass is lower than this, it is capped at this. Basically, an upper limit to how heavy an object can be before it stops resisting space wind more. /// public static readonly CVarDef SpaceWindMaximumCalculatedInverseMass = CVarDef.Create("atmos.space_wind_maximum_calculated_inverse_mass", 0.04f, CVar.SERVERONLY); @@ -1142,14 +1141,14 @@ public static readonly CVarDef /// /// Taken as the cube of a tile's mass, this acts as a minimum threshold of mass for which air pressure calculates whether or not to rip a tile from the floor - /// This should be set by default to the cube of the game's lowest mass tile as defined in .yml prototypes, but can be increased for server performance reasons + /// This should be set by default to the cube of the game's lowest mass tile as defined in their prototypes, but can be increased for server performance reasons /// public static readonly CVarDef MonstermosRipTilesMinimumPressure = CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 7500f, CVar.SERVERONLY); /// - /// Taken after the minimum pressure is checked, the effective pressure is multiplied by this amount. This allows server hosts to - /// finely tune how likely floor tiles are to be ripped apart by air pressure + /// Taken after the minimum pressure is checked, the effective pressure is multiplied by this amount. + /// This allows server hosts to finely tune how likely floor tiles are to be ripped apart by air pressure /// public static readonly CVarDef MonstermosRipTilesPressureOffset = CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 0.44f, CVar.SERVERONLY); diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index 339e9f6f39..be171559d0 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -122,7 +122,10 @@ public void AssignTileId(ushort id) TileId = id; } - [DataField] public bool Reinforced = false; - [DataField] public float TileRipResistance = 125f; + [DataField] + public bool Reinforced = false; + + [DataField] + public float TileRipResistance = 125f; } } From 2f05074008dec5ab770bdbb72eb648487ad9903a Mon Sep 17 00:00:00 2001 From: fox Date: Tue, 18 Jun 2024 18:14:27 +0300 Subject: [PATCH 32/68] Do not log missing LanguageSpeakerComponents --- Content.Server/Language/LanguageSystem.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Server/Language/LanguageSystem.cs b/Content.Server/Language/LanguageSystem.cs index 2774f28374..e68489e9e2 100644 --- a/Content.Server/Language/LanguageSystem.cs +++ b/Content.Server/Language/LanguageSystem.cs @@ -26,7 +26,7 @@ public bool CanUnderstand(EntityUid listener, string language, LanguageSpeakerCo if (language == UniversalPrototype || HasComp(listener)) return true; - if (!Resolve(listener, ref component)) + if (!Resolve(listener, ref component, logMissing: false)) return false; return component.UnderstoodLanguages.Contains(language); @@ -37,7 +37,7 @@ public bool CanSpeak(EntityUid speaker, string language, LanguageSpeakerComponen if (HasComp(speaker)) return true; - if (!Resolve(speaker, ref component)) + if (!Resolve(speaker, ref component, logMissing: false)) return false; return component.SpokenLanguages.Contains(language); @@ -48,7 +48,7 @@ public bool CanSpeak(EntityUid speaker, string language, LanguageSpeakerComponen /// public LanguagePrototype GetLanguage(EntityUid speaker, LanguageSpeakerComponent? component = null) { - if (HasComp(speaker) || !Resolve(speaker, ref component)) + if (HasComp(speaker) || !Resolve(speaker, ref component, logMissing: false)) return Universal; // Serves both as a fallback and uhhh something (TODO: fix this comment) if (string.IsNullOrEmpty(component.CurrentLanguage) || !_prototype.TryIndex(component.CurrentLanguage, out var proto)) @@ -152,7 +152,7 @@ public void RemoveLanguage( /// True if the current language was modified, false otherwise. public bool EnsureValidLanguage(EntityUid entity, LanguageSpeakerComponent? comp = null) { - if (comp == null && !TryComp(entity, out comp)) + if (!Resolve(entity, ref comp)) return false; if (!comp.SpokenLanguages.Contains(comp.CurrentLanguage)) From 5a2dc1394761de821a4856f629ca0f9b817bca13 Mon Sep 17 00:00:00 2001 From: fox Date: Tue, 18 Jun 2024 18:18:58 +0300 Subject: [PATCH 33/68] Rewrite translator implants to use the existing implant infrastructure --- .../Systems/TranslatorImplanterSystem.cs | 8 - .../Language/TranslatorImplantSystem.cs | 66 +++++++ .../Language/TranslatorImplanterSystem.cs | 75 -------- Content.Server/Language/TranslatorSystem.cs | 52 ++---- .../Components/TranslatorImplantComponent.cs | 21 +++ .../TranslatorImplanterComponent.cs | 35 ---- .../Translators/BaseTranslatorComponent.cs | 9 - .../SharedTranslatorImplanterSystem.cs | 36 ---- .../Objects/Devices/translator_implants.yml | 168 +++++++++--------- .../Objects/Misc/translator_implanters.yml | 77 ++++++++ 10 files changed, 264 insertions(+), 283 deletions(-) delete mode 100644 Content.Client/Language/Systems/TranslatorImplanterSystem.cs create mode 100644 Content.Server/Language/TranslatorImplantSystem.cs delete mode 100644 Content.Server/Language/TranslatorImplanterSystem.cs create mode 100644 Content.Shared/Language/Components/TranslatorImplantComponent.cs delete mode 100644 Content.Shared/Language/Components/TranslatorImplanterComponent.cs delete mode 100644 Content.Shared/Language/Systems/SharedTranslatorImplanterSystem.cs create mode 100644 Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml diff --git a/Content.Client/Language/Systems/TranslatorImplanterSystem.cs b/Content.Client/Language/Systems/TranslatorImplanterSystem.cs deleted file mode 100644 index da19b3decf..0000000000 --- a/Content.Client/Language/Systems/TranslatorImplanterSystem.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Content.Shared.Language.Systems; - -namespace Content.Client.Language.Systems; - -public sealed class TranslatorImplanterSystem : SharedTranslatorImplanterSystem -{ - -} diff --git a/Content.Server/Language/TranslatorImplantSystem.cs b/Content.Server/Language/TranslatorImplantSystem.cs new file mode 100644 index 0000000000..4d58144481 --- /dev/null +++ b/Content.Server/Language/TranslatorImplantSystem.cs @@ -0,0 +1,66 @@ +using Content.Shared.Implants.Components; +using Content.Shared.Language; +using Content.Shared.Language.Components; +using Robust.Shared.Containers; + +namespace Content.Server.Language; + +public sealed class TranslatorImplantSystem : EntitySystem +{ + [Dependency] private readonly LanguageSystem _language = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnImplant); + SubscribeLocalEvent(OnDeImplant); + SubscribeLocalEvent(OnDetermineLanguages); + } + + private void OnImplant(EntityUid uid, TranslatorImplantComponent component, EntGotInsertedIntoContainerMessage args) + { + if (args.Container.ID != ImplanterComponent.ImplantSlotId) + return; + + var implantee = Transform(uid).ParentUid; + if (implantee is not { Valid: true } || !TryComp(implantee, out var knowledge)) + return; + + component.Enabled = true; + // To operate an implant, you need to know its required language intrinsically, because like... it connects to your brain or something. + // So external translators or other implants can't help you operate it. + component.SpokenRequirementSatisfied = TranslatorSystem.CheckLanguagesMatch( + component.RequiredLanguages, knowledge.SpokenLanguages, component.RequiresAllLanguages); + + component.UnderstoodRequirementSatisfied = TranslatorSystem.CheckLanguagesMatch( + component.RequiredLanguages, knowledge.UnderstoodLanguages, component.RequiresAllLanguages); + + _language.UpdateEntityLanguages(implantee); + } + + private void OnDeImplant(EntityUid uid, TranslatorImplantComponent component, EntGotRemovedFromContainerMessage args) + { + // Even though the description of this event says it gets raised BEFORE reparenting, that's actually false... + component.Enabled = component.SpokenRequirementSatisfied = component.UnderstoodRequirementSatisfied = false; + + if (TryComp(uid, out var subdermal) && subdermal.ImplantedEntity is { Valid: true} implantee) + _language.UpdateEntityLanguages(implantee); + } + + private void OnDetermineLanguages(EntityUid uid, ImplantedComponent component, ref DetermineEntityLanguagesEvent args) + { + // TODO: might wanna find a better solution, i just can't come up with something viable + foreach (var implant in component.ImplantContainer.ContainedEntities) + { + if (!TryComp(implant, out var translator) || !translator.Enabled) + continue; + + if (translator.SpokenRequirementSatisfied) + foreach (var language in translator.SpokenLanguages) + args.SpokenLanguages.Add(language); + + if (translator.UnderstoodRequirementSatisfied) + foreach (var language in translator.UnderstoodLanguages) + args.UnderstoodLanguages.Add(language); + } + } +} diff --git a/Content.Server/Language/TranslatorImplanterSystem.cs b/Content.Server/Language/TranslatorImplanterSystem.cs deleted file mode 100644 index 0d67bbb127..0000000000 --- a/Content.Server/Language/TranslatorImplanterSystem.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Linq; -using Content.Server.Administration.Logs; -using Content.Server.Language.Events; -using Content.Server.Popups; -using Content.Shared.Database; -using Content.Shared.Interaction; -using Content.Shared.Language; -using Content.Shared.Language.Components; -using Content.Shared.Language.Events; -using Content.Shared.Language.Systems; -using Content.Shared.Mobs.Components; -using Content.Shared.Language.Components.Translators; - -namespace Content.Server.Language; - -// TODO: pending rewrite -public sealed class TranslatorImplanterSystem : SharedTranslatorImplanterSystem -{ - [Dependency] private readonly PopupSystem _popup = default!; - [Dependency] private readonly IAdminLogManager _adminLogger = default!; - [Dependency] private readonly LanguageSystem _language = default!; - - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnImplant); - } - - - private void OnImplant(EntityUid implanter, TranslatorImplanterComponent component, AfterInteractEvent args) - { - if (component.Used || !args.CanReach || args.Target is not { Valid: true } target) - return; - - if (!TryComp(target, out var speaker)) - return; - - // TODO: yes I know this should use whitelist comp, yes this will be changed after rewrite - if (component.MobsOnly && !HasComp(target)) - { - _popup.PopupEntity("translator-implanter-refuse", component.Owner); - return; - } - - var understood = speaker.UnderstoodLanguages; - if (component.RequiredLanguages.Count > 0 && !component.RequiredLanguages.Any(lang => understood.Contains(lang))) - { - _popup.PopupEntity(Loc.GetString("translator-implanter-refuse", - ("implanter", implanter), ("target", target)), implanter); - return; - } - - var intrinsic = EnsureComp(target); - intrinsic.Enabled = true; - - foreach (var lang in component.SpokenLanguages.Where(lang => !intrinsic.SpokenLanguages.Contains(lang))) - intrinsic.SpokenLanguages.Add(lang); - - foreach (var lang in component.UnderstoodLanguages.Where(lang => !intrinsic.UnderstoodLanguages.Contains(lang))) - intrinsic.UnderstoodLanguages.Add(lang); - - component.Used = true; - _popup.PopupEntity(Loc.GetString("translator-implanter-success", - ("implanter", implanter), ("target", target)), implanter); - - _adminLogger.Add(LogType.Action, LogImpact.Medium, - $"{ToPrettyString(args.User):player} used {ToPrettyString(implanter):implanter} to give {ToPrettyString(target):target} the following languages:" - + $"\nSpoken: {string.Join(", ", component.SpokenLanguages)}; Understood: {string.Join(", ", component.UnderstoodLanguages)}"); - - OnAppearanceChange(implanter, component); - RaiseLocalEvent(target, new LanguagesUpdateEvent(), true); - } -} diff --git a/Content.Server/Language/TranslatorSystem.cs b/Content.Server/Language/TranslatorSystem.cs index b2166b44f1..5e1fc0ce22 100644 --- a/Content.Server/Language/TranslatorSystem.cs +++ b/Content.Server/Language/TranslatorSystem.cs @@ -13,6 +13,8 @@ namespace Content.Server.Language; +// NOTE FOR SELF: MAKE SURE LANGUAGE SWITCHING AFTER EQUIPPING A HANDHELD WORKS + // This does not support holding multiple translators at once. // That shouldn't be an issue for now, but it needs to be fixed later. public sealed class TranslatorSystem : SharedTranslatorSystem @@ -38,7 +40,7 @@ public override void Initialize() private void OnDetermineLanguages(EntityUid uid, IntrinsicTranslatorComponent component, DetermineEntityLanguagesEvent ev) { - if (!component.Enabled) + if (!component.Enabled || !TryComp(uid, out var speaker)) return; if (!_powerCell.HasActivatableCharge(uid)) @@ -49,37 +51,8 @@ private void OnDetermineLanguages(EntityUid uid, IntrinsicTranslatorComponent co // The translator has a limited number of languages it can translate to and translate from. // If the wielder understands the language of the translator, they will be able to understand translations provided by it // If the wielder also speaks that language, they will be able to use it to translate their own speech by "speaking" in that language - var addUnderstood = true; - var addSpoken = true; - if (component.RequiredLanguages.Count > 0) - { - if (component.RequiresAllLanguages) - { - // Add langs when the wielder has all of the required languages - foreach (var language in component.RequiredLanguages) - { - if (!ev.SpokenLanguages.Contains(language)) - addSpoken = false; - - if (!ev.UnderstoodLanguages.Contains(language)) - addUnderstood = false; - } - } - else - { - // Add langs when the wielder has at least one of the required languages - addUnderstood = false; - addSpoken = false; - foreach (var language in component.RequiredLanguages) - { - if (ev.SpokenLanguages.Contains(language)) - addSpoken = true; - - if (ev.UnderstoodLanguages.Contains(language)) - addUnderstood = true; - } - } - } + var addSpoken = CheckLanguagesMatch(component.RequiredLanguages, speaker.SpokenLanguages, component.RequiresAllLanguages); + var addUnderstood = CheckLanguagesMatch(component.RequiredLanguages, speaker.UnderstoodLanguages, component.RequiresAllLanguages); if (addSpoken) foreach (var language in component.SpokenLanguages) @@ -206,16 +179,27 @@ private void UpdateBoundIntrinsicComp(HandheldTranslatorComponent comp, HoldsTra { intrinsic.SpokenLanguages = [..comp.SpokenLanguages]; intrinsic.UnderstoodLanguages = [..comp.UnderstoodLanguages]; - intrinsic.DefaultLanguageOverride = comp.DefaultLanguageOverride; } else { intrinsic.SpokenLanguages.Clear(); intrinsic.UnderstoodLanguages.Clear(); - intrinsic.DefaultLanguageOverride = null; } intrinsic.Enabled = isEnabled; intrinsic.Issuer = comp; } + + /// + /// Checks whether any OR all required languages are provided. Used for utility purposes. + /// + public static bool CheckLanguagesMatch(ICollection required, ICollection provided, bool requireAll) + { + if (required.Count == 0) + return true; + + return requireAll + ? required.All(provided.Contains) + : required.Any(provided.Contains); + } } diff --git a/Content.Shared/Language/Components/TranslatorImplantComponent.cs b/Content.Shared/Language/Components/TranslatorImplantComponent.cs new file mode 100644 index 0000000000..cb8c666c82 --- /dev/null +++ b/Content.Shared/Language/Components/TranslatorImplantComponent.cs @@ -0,0 +1,21 @@ +using Content.Shared.Language.Components.Translators; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Language.Components; + +/// +/// An implant that allows the implantee to speak and understand other languages. +/// +[RegisterComponent] +public sealed partial class TranslatorImplantComponent : BaseTranslatorComponent +{ + /// + /// Whether the implantee knows the languages necessary to speak using this implant. + /// + public bool SpokenRequirementSatisfied = false; + + /// + /// Whether the implantee knows the languages necessary to understand translations of this implant. + /// + public bool UnderstoodRequirementSatisfied = false; +} diff --git a/Content.Shared/Language/Components/TranslatorImplanterComponent.cs b/Content.Shared/Language/Components/TranslatorImplanterComponent.cs deleted file mode 100644 index 401e8a8b8a..0000000000 --- a/Content.Shared/Language/Components/TranslatorImplanterComponent.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Shared.Language.Components; - -/// -/// An item that, when used on a mob, adds an intrinsic translator to it. -/// -[RegisterComponent] -public sealed partial class TranslatorImplanterComponent : Component -{ - [DataField("spoken", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List SpokenLanguages = new(); - - [DataField("understood", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List UnderstoodLanguages = new(); - - /// - /// The list of languages the mob must understand in order for this translator to have effect. - /// Knowing one language is enough. - /// - [DataField("requires", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List RequiredLanguages = new(); - - /// - /// If true, only allows to use this implanter on mobs. - /// - [DataField] - public bool MobsOnly = true; - - /// - /// Whether this implant has been used already. - /// - [DataField] - public bool Used = false; -} diff --git a/Content.Shared/Language/Components/Translators/BaseTranslatorComponent.cs b/Content.Shared/Language/Components/Translators/BaseTranslatorComponent.cs index a66c9be082..072480031d 100644 --- a/Content.Shared/Language/Components/Translators/BaseTranslatorComponent.cs +++ b/Content.Shared/Language/Components/Translators/BaseTranslatorComponent.cs @@ -4,15 +4,6 @@ namespace Content.Shared.Language.Components.Translators; public abstract partial class BaseTranslatorComponent : Component { - // TODO may need to be removed completely, it's a part of legacy code that never ended up being used. - /// - /// The language this translator changes the speaker's language to when they don't specify one. - /// If null, does not modify the default language. - /// - [DataField("defaultLanguage")] - [ViewVariables(VVAccess.ReadWrite)] - public string? DefaultLanguageOverride = null; - /// /// The list of additional languages this translator allows the wielder to speak. /// diff --git a/Content.Shared/Language/Systems/SharedTranslatorImplanterSystem.cs b/Content.Shared/Language/Systems/SharedTranslatorImplanterSystem.cs deleted file mode 100644 index a13225378c..0000000000 --- a/Content.Shared/Language/Systems/SharedTranslatorImplanterSystem.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Content.Shared.Examine; -using Content.Shared.Implants.Components; -using Content.Shared.Language.Components; -using Robust.Shared.Serialization; - -namespace Content.Shared.Language.Systems; - -public abstract class SharedTranslatorImplanterSystem : EntitySystem -{ - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnExamined); - } - - private void OnExamined(EntityUid uid, TranslatorImplanterComponent component, ExaminedEvent args) - { - if (!args.IsInDetailsRange) - return; - - var text = !component.Used - ? Loc.GetString("translator-implanter-ready") - : Loc.GetString("translator-implanter-used"); - - args.PushText(text); - } - - protected void OnAppearanceChange(EntityUid implanter, TranslatorImplanterComponent component) - { - var used = component.Used; - _appearance.SetData(implanter, ImplanterVisuals.Full, !used); - } -} diff --git a/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml b/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml index fc947efe9a..da42b2774b 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml @@ -1,132 +1,128 @@ - type: entity - abstract: true - id: BaseTranslatorImplanter - parent: [ BaseItem ] - name: basic translator implant - description: Translates speech. + parent: BaseSubdermalImplant + id: BasicGalacticCommonTranslatorImplant + name: basic common translator implant + description: Provides your illiterate friends the ability to understand the common galactic tongue. + noSpawn: true components: - - type: Sprite - sprite: Objects/Specific/Medical/implanter.rsi - state: implanter0 - layers: - - state: implanter1 - map: [ "implantFull" ] - visible: true - - state: implanter0 - map: [ "implantBroken" ] - - type: Appearance - - type: GenericVisualizer - visuals: - enum.ImplanterVisuals.Full: - implantFull: - True: {visible: true} - False: {visible: false} - implantBroken: - True: {visible: false} - False: {visible: true} - -- type: entity - id: BasicGalaticCommonTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: basic Galactic Common translator implant - description: An implant giving the ability to understand Galactic Common. - components: - - type: TranslatorImplanter + - type: TranslatorImplant understood: - GalacticCommon - type: entity - id: AdvancedGalaticCommonTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: advanced Galactic Common translator implant - description: An implant giving the ability to understand and speak Galactic Common. + parent: BaseSubdermalImplant + id: GalacticCommonTranslatorImplant + name: advanced common translator implant + description: A more advanced version of the translator implant, teaches your illiterate friends the ability to both speak and understand the galactic tongue! + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - GalacticCommon + - type: TranslatorImplant understood: - GalacticCommon + spoken: + - GalacticCommon - type: entity - id: BubblishTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: Bubblish translator implant - description: An implant giving the ability to understand and speak Bubblish. + parent: BaseSubdermalImplant + id: BubblishTranslatorImplant + name: bubblish translator implant + description: An implant that helps you speak and understand the language of slimes! Special vocal chords not included. + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - Bubblish + - type: TranslatorImplant understood: - Bubblish + spoken: + - Bubblish + requires: + - GalacticCommon - type: entity - id: NekomimeticTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: Nekomimetic translator implant - description: An implant giving the ability to understand and speak Nekomimetic. Nya~! + parent: BaseSubdermalImplant + id: NekomimeticTranslatorImplant + name: nekomimetic translator implant + description: A translator implant intially designed to help domestic cat owners understand their pets, now granting the ability to understand and speak to Felinids! + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - Nekomimetic + - type: TranslatorImplant understood: - Nekomimetic + spoken: + - Nekomimetic + requires: + - GalacticCommon - type: entity - id: DraconicTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: Draconic translator implant - description: An implant giving the ability to understand and speak Draconic. + parent: BaseSubdermalImplant + id: DraconicTranslatorImplant + name: draconic translator implant + description: A translator implant giving the ability to speak to dragons! Subsequently, also allows to communicate with the Unathi. + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - Draconic + - type: TranslatorImplant understood: - Draconic + spoken: + - Draconic + requires: + - GalacticCommon - type: entity - id: CanilunztTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: Canilunzt translator implant - description: An implant giving the ability to understand and speak Canilunzt. Yeeps! + parent: BaseSubdermalImplant + id: CanilunztTranslatorImplant + name: canilunzt translator implant + description: A translator implant that helps you communicate with your local yeepers. Yeep! + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - Canilunzt + - type: TranslatorImplant understood: - Canilunzt + spoken: + - Canilunzt + requires: + - GalacticCommon - type: entity - id: SolCommonTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: SolCommon translator implant + parent: BaseSubdermalImplant + id: SolCommonTranslatorImplant + name: sol-common translator implant description: An implant giving the ability to understand and speak SolCommon. Raaagh! + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - SolCommon + - type: TranslatorImplant understood: - SolCommon + spoken: + - SolCommon + requires: + - GalacticCommon - type: entity - id: RootSpeakTranslatorImplanter - parent: [ BaseTranslatorImplanter ] - name: RootSpeak translator implant - description: An implant giving the ability to understand and speak RootSpeak. + parent: BaseSubdermalImplant + id: RootSpeakTranslatorImplant + name: root-speak translator implant + description: An implant that lets you speak for the trees. Or to the trees. + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - RootSpeak + - type: TranslatorImplant understood: - RootSpeak + spoken: + - RootSpeak + requires: + - GalacticCommon - type: entity - id: MofficTranslatorImplanter - parent: [ BaseTranslatorImplanter ] + parent: BaseSubdermalImplant + id: MofficTranslatorImplant name: Moffic translator implant - description: An implant giving the ability to understand and speak Moffic. + description: An implant designed to help domesticate mothroaches. Subsequently, allows you to communicate with the moth people. + noSpawn: true components: - - type: TranslatorImplanter - spoken: - - Moffic + - type: TranslatorImplant understood: - Moffic + spoken: + - Moffic + requires: + - GalacticCommon diff --git a/Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml b/Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml new file mode 100644 index 0000000000..8b5b262ff8 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml @@ -0,0 +1,77 @@ +- type: entity + id: BaseTranslatorImplanter + abstract: true + parent: BaseImplantOnlyImplanter + name: basic translator implanter + +- type: entity + id: BasicGalaticCommonTranslatorImplanter + parent: BaseTranslatorImplanter + name: basic common translator implanter + components: + - type: Implanter + implant: BasicGalacticCommonTranslatorImplant + +- type: entity + id: AdvancedGalaticCommonTranslatorImplanter + parent: BaseTranslatorImplanter + name: advanced common translator implanter + components: + - type: Implanter + implant: GalacticCommonTranslatorImplant + +- type: entity + id: BubblishTranslatorImplanter + parent: BaseTranslatorImplanter + name: bubblish translator implant + components: + - type: Implanter + implant: BubblishTranslatorImplant + +- type: entity + id: NekomimeticTranslatorImplanter + parent: [ BaseTranslatorImplanter ] + name: nekomimetic translator implant + components: + - type: Implanter + implant: NekomimeticTranslatorImplant + +- type: entity + id: DraconicTranslatorImplanter + parent: [ BaseTranslatorImplanter ] + name: draconic translator implant + components: + - type: Implanter + implant: DraconicTranslatorImplant + +- type: entity + id: CanilunztTranslatorImplanter + parent: [ BaseTranslatorImplanter ] + name: canilunzt translator implant + components: + - type: Implanter + implant: CanilunztTranslatorImplant + +- type: entity + id: SolCommonTranslatorImplanter + parent: [ BaseTranslatorImplanter ] + name: sol-common translator implant + components: + - type: Implanter + implant: SolCommonTranslatorImplant + +- type: entity + id: RootSpeakTranslatorImplanter + parent: [ BaseTranslatorImplanter ] + name: root-speak translator implant + components: + - type: Implanter + implant: RootSpeakTranslatorImplant + +- type: entity + id: MofficTranslatorImplanter + parent: [ BaseTranslatorImplanter ] + name: moffic translator implant + components: + - type: Implanter + implant: MofficTranslatorImplant From b3545d00677506c65aea1f2f874b16980f33d49f Mon Sep 17 00:00:00 2001 From: fox Date: Tue, 18 Jun 2024 19:00:45 +0300 Subject: [PATCH 34/68] Update the language menu when choosing a new language --- Content.Client/Language/LanguageMenuWindow.xaml.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Client/Language/LanguageMenuWindow.xaml.cs b/Content.Client/Language/LanguageMenuWindow.xaml.cs index 0f8bb0976f..11d1c290d1 100644 --- a/Content.Client/Language/LanguageMenuWindow.xaml.cs +++ b/Content.Client/Language/LanguageMenuWindow.xaml.cs @@ -119,6 +119,7 @@ private void OnLanguageChosen(string id) return; _clientLanguageSystem.RequestSetLanguage(proto); + UpdateState(id, _clientLanguageSystem.SpokenLanguages); } From 734e76453d3dfc1f3472a4ed7561a368f04d0184 Mon Sep 17 00:00:00 2001 From: fox Date: Tue, 18 Jun 2024 19:19:56 +0300 Subject: [PATCH 35/68] Fix handheld translators adjusting your current language --- Content.Server/Language/TranslatorSystem.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Content.Server/Language/TranslatorSystem.cs b/Content.Server/Language/TranslatorSystem.cs index 5e1fc0ce22..0e7897f142 100644 --- a/Content.Server/Language/TranslatorSystem.cs +++ b/Content.Server/Language/TranslatorSystem.cs @@ -118,15 +118,14 @@ private void OnTranslatorToggle(EntityUid translator, HandheldTranslatorComponen translatorComp.Enabled = isEnabled; _powerCell.SetPowerCellDrawEnabled(translator, isEnabled); - // Update the current language of the entity if necessary - if (isEnabled && translatorComp.SetLanguageOnInteract) - { - var firstNew = translatorComp.SpokenLanguages.FirstOrDefault(it => !languageComp.SpokenLanguages.Contains(it)); - if (firstNew is {}) - _language.SetLanguage(holder, firstNew, languageComp); - } + // The first new spoken language added by this translator, or null + var firstNewLanguage = translatorComp.SpokenLanguages.FirstOrDefault(it => !languageComp.SpokenLanguages.Contains(it)); _language.UpdateEntityLanguages(holder, languageComp); + + // Update the current language of the entity if necessary + if (isEnabled && translatorComp.SetLanguageOnInteract && firstNewLanguage is {}) + _language.SetLanguage(holder, firstNewLanguage, languageComp); } else { From 31d82fb26e411665f1e53d8249a0d3771f77c7e5 Mon Sep 17 00:00:00 2001 From: fox Date: Tue, 18 Jun 2024 21:06:54 +0300 Subject: [PATCH 36/68] I fixes --- .../Language/LanguageSystem.Networking.cs | 14 ++++++++++---- Content.Server/Language/TranslatorSystem.cs | 2 -- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Content.Server/Language/LanguageSystem.Networking.cs b/Content.Server/Language/LanguageSystem.Networking.cs index 038db9d8fc..572e2961fd 100644 --- a/Content.Server/Language/LanguageSystem.Networking.cs +++ b/Content.Server/Language/LanguageSystem.Networking.cs @@ -1,6 +1,7 @@ using Content.Server.Language.Events; using Content.Server.Mind; using Content.Shared.Language; +using Content.Shared.Language.Components; using Content.Shared.Language.Events; using Content.Shared.Mind; using Content.Shared.Mind.Components; @@ -60,13 +61,18 @@ private void SendLanguageStateToClient(ICommonSession session, LanguageSpeakerCo SendLanguageStateToClient(entity, session, comp); } + // TODO this is really stupid and can be avoided if we just make everything shared... private void SendLanguageStateToClient(EntityUid uid, ICommonSession session, LanguageSpeakerComponent? component = null) { - if (!Resolve(uid, ref component)) - return; + var isUniversal = HasComp(uid); + if (!isUniversal) + Resolve(uid, ref component, logMissing: false); + + // I really don't want to call 3 getter methods here, so we'll just have this slightly hardcoded solution + var message = isUniversal || component == null + ? new LanguagesUpdatedMessage(UniversalPrototype, [UniversalPrototype], [UniversalPrototype]) + : new LanguagesUpdatedMessage(component.CurrentLanguage, component.SpokenLanguages, component.UnderstoodLanguages); - // TODO this is really stupid and can be avoided if we just make everything shared... - var message = new LanguagesUpdatedMessage(component.CurrentLanguage, component.SpokenLanguages, component.UnderstoodLanguages); RaiseNetworkEvent(message, session); } } diff --git a/Content.Server/Language/TranslatorSystem.cs b/Content.Server/Language/TranslatorSystem.cs index 0e7897f142..5022e54096 100644 --- a/Content.Server/Language/TranslatorSystem.cs +++ b/Content.Server/Language/TranslatorSystem.cs @@ -13,8 +13,6 @@ namespace Content.Server.Language; -// NOTE FOR SELF: MAKE SURE LANGUAGE SWITCHING AFTER EQUIPPING A HANDHELD WORKS - // This does not support holding multiple translators at once. // That shouldn't be an issue for now, but it needs to be fixed later. public sealed class TranslatorSystem : SharedTranslatorSystem From 40d411bbbc4263731629e123e58eb75bdd3cbbbd Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 23 Jun 2024 01:00:32 -0400 Subject: [PATCH 37/68] Cherrypick "Shoot Over Bodies" And Related PRs (#479) # Description This is a manual cherry-pick of the following PRs: https://github.com/space-wizards/space-station-14/pull/27905 https://github.com/space-wizards/space-station-14/pull/28072 https://github.com/space-wizards/space-station-14/pull/28571 I REQUIRE these for my work in PR #11 , and cannot complete said PR without these cherry-picks. This set of PRs from Wizden adds a feature where entities can selectively opt-out of being shot at unless a player intentionally targets them, which I can use as a simple and elegant solution to one of the largest glaring issues for Segmented Entities. I could simply give Lamia segments the new RequireProjectileTargetComponent, which adds them to the system. Future segmented entities such as the hypothetical "Heretic Worm" may or may not use this feature, depending on their intended implementation. --------- Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- .../Weapons/Ranged/Systems/GunSystem.cs | 8 +++ .../Weapons/Ranged/Systems/GunSystem.cs | 7 +++ .../RequireProjectileTargetComponent.cs | 14 +++++ .../Systems/RequireProjectileTargetSystem.cs | 51 +++++++++++++++++++ .../Systems/MobStateSystem.Subscribers.cs | 3 ++ .../Weapons/Ranged/Components/GunComponent.cs | 6 +++ .../Components/TargetedProjectileComponent.cs | 12 +++++ .../Ranged/Events/RequestShootEvent.cs | 1 + .../Weapons/Ranged/Systems/SharedGunSystem.cs | 2 + Resources/Prototypes/Entities/Mobs/base.yml | 4 +- .../Fun/Instruments/base_instruments.yml | 3 +- .../Dispensers/base_structuredispensers.yml | 2 +- .../Computers/base_structurecomputers.yml | 1 + .../Machines/Medical/chemistry_machines.yml | 2 +- .../Machines/Medical/disease_diagnoser.yml | 4 +- .../Machines/Medical/vaccinator.yml | 1 + .../Structures/Machines/artifact_analyzer.yml | 3 +- .../Machines/base_structuremachines.yml | 7 +++ .../Structures/Machines/fax_machine.yml | 1 + .../Entities/Structures/Machines/lathe.yml | 1 + .../Structures/Machines/microwave.yml | 4 +- .../Structures/Machines/reagent_grinder.yml | 2 +- .../Machines/wireless_surveillance_camera.yml | 4 +- .../Piping/Atmospherics/portable.yml | 6 +-- .../Structures/Piping/Atmospherics/unary.yml | 2 +- .../Structures/Piping/Disposal/units.yml | 1 + .../Power/Generation/Singularity/emitter.yml | 2 +- .../Power/Generation/portable_generator.yml | 4 +- .../Structures/Power/Generation/solar.yml | 3 ++ .../Entities/Structures/Power/chargers.yml | 3 ++ .../Storage/Crates/base_structurecrates.yml | 1 + .../Structures/Storage/filing_cabinets.yml | 1 + .../Entities/Structures/Walls/fence_wood.yml | 19 ++++++- .../Entities/Structures/hydro_tray.yml | 4 +- 34 files changed, 167 insertions(+), 22 deletions(-) create mode 100644 Content.Shared/Damage/Components/RequireProjectileTargetComponent.cs create mode 100644 Content.Shared/Damage/Systems/RequireProjectileTargetSystem.cs create mode 100644 Content.Shared/Weapons/Ranged/Components/TargetedProjectileComponent.cs diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index 9e50cab3e1..57d200d96b 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -1,4 +1,5 @@ using System.Numerics; +using Content.Client.Gameplay; using Content.Client.Items; using Content.Client.Weapons.Ranged.Components; using Content.Shared.Camera; @@ -12,6 +13,7 @@ using Robust.Client.Graphics; using Robust.Client.Input; using Robust.Client.Player; +using Robust.Client.State; using Robust.Shared.Animations; using Robust.Shared.Input; using Robust.Shared.Map; @@ -27,6 +29,7 @@ public sealed partial class GunSystem : SharedGunSystem [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IInputManager _inputManager = default!; [Dependency] private readonly IPlayerManager _player = default!; + [Dependency] private readonly IStateManager _state = default!; [Dependency] private readonly AnimationPlayerSystem _animPlayer = default!; [Dependency] private readonly InputSystem _inputSystem = default!; [Dependency] private readonly SharedCameraRecoilSystem _recoil = default!; @@ -171,10 +174,15 @@ public override void Update(float frameTime) // Define target coordinates relative to gun entity, so that network latency on moving grids doesn't fuck up the target location. var coordinates = EntityCoordinates.FromMap(entity, mousePos, TransformSystem, EntityManager); + NetEntity? target = null; + if (_state.CurrentState is GameplayStateBase screen) + target = GetNetEntity(screen.GetClickedEntity(mousePos)); + Log.Debug($"Sending shoot request tick {Timing.CurTick} / {Timing.CurTime}"); EntityManager.RaisePredictiveEvent(new RequestShootEvent { + Target = target, Coordinates = GetNetCoordinates(coordinates), Gun = GetNetEntity(gunUid), }); diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index b8f8f12211..c0adf730f1 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -280,6 +280,13 @@ public override void Shoot(EntityUid gunUid, GunComponent gun, List<(EntityUid? private void ShootOrThrow(EntityUid uid, Vector2 mapDirection, Vector2 gunVelocity, GunComponent gun, EntityUid gunUid, EntityUid? user) { + if (gun.Target is { } target && !TerminatingOrDeleted(target)) + { + var targeted = EnsureComp(uid); + targeted.Target = target; + Dirty(uid, targeted); + } + // Do a throw if (!HasComp(uid)) { diff --git a/Content.Shared/Damage/Components/RequireProjectileTargetComponent.cs b/Content.Shared/Damage/Components/RequireProjectileTargetComponent.cs new file mode 100644 index 0000000000..5bd8292daa --- /dev/null +++ b/Content.Shared/Damage/Components/RequireProjectileTargetComponent.cs @@ -0,0 +1,14 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Damage.Components; + +/// +/// Prevent the object from getting hit by projetiles unless you target the object. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(RequireProjectileTargetSystem))] +public sealed partial class RequireProjectileTargetComponent : Component +{ + [DataField, AutoNetworkedField] + public bool Active = true; +} diff --git a/Content.Shared/Damage/Systems/RequireProjectileTargetSystem.cs b/Content.Shared/Damage/Systems/RequireProjectileTargetSystem.cs new file mode 100644 index 0000000000..79b374a60f --- /dev/null +++ b/Content.Shared/Damage/Systems/RequireProjectileTargetSystem.cs @@ -0,0 +1,51 @@ +using Content.Shared.Projectiles; +using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Standing; +using Robust.Shared.Physics.Events; + +namespace Content.Shared.Damage.Components; + +public sealed class RequireProjectileTargetSystem : EntitySystem +{ + public override void Initialize() + { + SubscribeLocalEvent(PreventCollide); + SubscribeLocalEvent(StandingBulletHit); + SubscribeLocalEvent(LayingBulletPass); + } + + private void PreventCollide(Entity ent, ref PreventCollideEvent args) + { + if (args.Cancelled) + return; + + if (!ent.Comp.Active) + return; + + var other = args.OtherEntity; + if (HasComp(other) && + CompOrNull(other)?.Target != ent) + { + args.Cancelled = true; + } + } + + private void SetActive(Entity ent, bool value) + { + if (ent.Comp.Active == value) + return; + + ent.Comp.Active = value; + Dirty(ent); + } + + private void StandingBulletHit(Entity ent, ref StoodEvent args) + { + SetActive(ent, false); + } + + private void LayingBulletPass(Entity ent, ref DownedEvent args) + { + SetActive(ent, true); + } +} diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs index 0c2fcc0579..08b351e61e 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs @@ -10,12 +10,15 @@ using Content.Shared.Mobs.Components; using Content.Shared.Movement.Events; using Content.Shared.Pointing; +using Content.Shared.Projectiles; using Content.Shared.Pulling.Events; using Content.Shared.Speech; using Content.Shared.Standing; using Content.Shared.Strip.Components; using Content.Shared.Throwing; +using Content.Shared.Weapons.Ranged.Components; using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Events; namespace Content.Shared.Mobs.Systems; diff --git a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs index a18aac80ab..ada99801f0 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs @@ -140,6 +140,12 @@ public sealed partial class GunComponent : Component [ViewVariables] public EntityCoordinates? ShootCoordinates = null; + /// + /// Who the gun is being requested to shoot at directly. + /// + [ViewVariables] + public EntityUid? Target = null; + /// /// The base value for how many shots to fire per burst. /// diff --git a/Content.Shared/Weapons/Ranged/Components/TargetedProjectileComponent.cs b/Content.Shared/Weapons/Ranged/Components/TargetedProjectileComponent.cs new file mode 100644 index 0000000000..b804176497 --- /dev/null +++ b/Content.Shared/Weapons/Ranged/Components/TargetedProjectileComponent.cs @@ -0,0 +1,12 @@ +using Content.Shared.Weapons.Ranged.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Weapons.Ranged.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedGunSystem))] +public sealed partial class TargetedProjectileComponent : Component +{ + [DataField, AutoNetworkedField] + public EntityUid Target; +} diff --git a/Content.Shared/Weapons/Ranged/Events/RequestShootEvent.cs b/Content.Shared/Weapons/Ranged/Events/RequestShootEvent.cs index 21e90b2108..f5c4dd72b4 100644 --- a/Content.Shared/Weapons/Ranged/Events/RequestShootEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/RequestShootEvent.cs @@ -11,4 +11,5 @@ public sealed class RequestShootEvent : EntityEventArgs { public NetEntity Gun; public NetCoordinates Coordinates; + public NetEntity? Target; } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index d3aee5a48e..cadb0a4b21 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -139,6 +139,7 @@ private void OnShootRequest(RequestShootEvent msg, EntitySessionEventArgs args) gun.ShootCoordinates = GetCoordinates(msg.Coordinates); Log.Debug($"Set shoot coordinates to {gun.ShootCoordinates}"); + gun.Target = GetEntity(msg.Target); AttemptShoot(user.Value, ent, gun); } @@ -200,6 +201,7 @@ private void StopShooting(EntityUid uid, GunComponent gun) Log.Debug($"Stopped shooting {ToPrettyString(uid)}"); gun.ShotCounter = 0; gun.ShootCoordinates = null; + gun.Target = null; Dirty(uid, gun); } diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index ac9aabbead..d5be77eef1 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -1,4 +1,4 @@ -# The progenitor. This should only container the most basic components possible. +# The progenitor. This should only container the most basic components possible. # Only put things on here if every mob *must* have it. This includes ghosts. - type: entity save: false @@ -43,6 +43,8 @@ - type: MovementSpeedModifier - type: Polymorphable - type: StatusIcon + - type: RequireProjectileTarget + active: False # Used for mobs that have health and can take damage. - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml index 07d918b576..09b41d6e5d 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: BaseItem id: BaseHandheldInstrument @@ -71,6 +71,7 @@ - BulletImpassable - type: StaticPrice price: 300 + - type: RequireProjectileTarget - type: entity parent: BasePlaceableInstrument diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml b/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml index d87c5e700a..fa814e8ed3 100644 --- a/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml +++ b/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml @@ -1,7 +1,7 @@ - type: entity abstract: true id: ReagentDispenserBase - parent: ConstructibleMachine + parent: SmallConstructibleMachine placement: mode: SnapgridCenter components: diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml index a5e26463b9..204e06c860 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml @@ -60,3 +60,4 @@ ents: [] - type: LightningTarget priority: 1 + - type: RequireProjectileTarget diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml index e2c210e7e6..7b1e89bcc1 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml @@ -1,6 +1,6 @@ - type: entity id: BaseTabletopChemicalMachine - parent: [ BaseMachinePowered, ConstructibleMachine ] + parent: [ BaseMachinePowered, SmallConstructibleMachine ] abstract: true components: - type: Transform diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml index e46c62053a..ad98f47e36 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml @@ -1,6 +1,6 @@ - type: entity id: DiseaseDiagnoser - parent: [ BaseMachinePowered, ConstructibleMachine ] + parent: [ BaseMachinePowered, SmallConstructibleMachine ] name: Disease Diagnoser Delta Extreme description: A machine that analyzes disease samples. placement: @@ -43,5 +43,3 @@ contentMargin: 12.0, 0.0, 12.0, 0.0 # This is a narrow piece of paper maxWritableArea: 128.0, 0.0 - - diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml index 041bca7c90..53542cdfa9 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml @@ -24,3 +24,4 @@ containers: machine_board: !type:Container machine_parts: !type:Container + - type: RequireProjectileTarget diff --git a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml index 1b183661f5..e6b4f77fa8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml @@ -1,6 +1,6 @@ - type: entity id: MachineArtifactAnalyzer - parent: [ BaseMachinePowered, ConstructibleMachine ] + parent: [ BaseMachinePowered, SmallConstructibleMachine ] name: artifact analyzer description: A platform capable of performing analysis on various types of artifacts. components: @@ -35,6 +35,7 @@ - Impassable - MidImpassable - LowImpassable + - BulletImpassable hard: False - type: Transform anchored: true diff --git a/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml b/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml index 621d9a1a7e..fb5ed4440a 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml @@ -70,3 +70,10 @@ - machine_board - type: LightningTarget priority: 1 + +- type: entity + abstract: true + parent: ConstructibleMachine + id: SmallConstructibleMachine + components: + - type: RequireProjectileTarget diff --git a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml index cd4a22b790..e8439f8213 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml @@ -65,6 +65,7 @@ deviceNetId: Wireless receiveFrequencyId: Fax transmitFrequencyId: Fax + - type: RequireProjectileTarget # Special - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 7300c0b9ec..2a10abf3b3 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -518,6 +518,7 @@ - Sheet - RawMaterial - Ingot + - type: RequireProjectileTarget - type: entity id: ExosuitFabricator diff --git a/Resources/Prototypes/Entities/Structures/Machines/microwave.yml b/Resources/Prototypes/Entities/Structures/Machines/microwave.yml index 37b5e50d31..55dfe296a6 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/microwave.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/microwave.yml @@ -1,6 +1,6 @@ -- type: entity +- type: entity id: KitchenMicrowave - parent: [ BaseMachinePowered, ConstructibleMachine ] + parent: [ BaseMachinePowered, SmallConstructibleMachine ] name: microwave description: It's magic. components: diff --git a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml index d19e237997..12fec44e4f 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml @@ -1,6 +1,6 @@ - type: entity id: KitchenReagentGrinder - parent: [ BaseMachinePowered, ConstructibleMachine ] + parent: [ BaseMachinePowered, SmallConstructibleMachine ] name: reagent grinder description: From BlenderTech. Will It Blend? Let's find out! suffix: grinder/juicer diff --git a/Resources/Prototypes/Entities/Structures/Machines/wireless_surveillance_camera.yml b/Resources/Prototypes/Entities/Structures/Machines/wireless_surveillance_camera.yml index d69eb96f62..0a14517771 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/wireless_surveillance_camera.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/wireless_surveillance_camera.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: [ BaseStructureDynamic, ConstructibleMachine ] + parent: [ BaseStructureDynamic, SmallConstructibleMachine ] id: SurveillanceWirelessCameraBase name: wireless camera description: A camera. It's watching you. Kinda. @@ -23,6 +23,8 @@ density: 80 mask: - MachineMask + layer: + - BulletImpassable - type: SurveillanceCameraMicrophone blacklist: components: diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml index 0e2a5f6fe5..7f994b237a 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml @@ -1,6 +1,6 @@ - type: entity id: PortableScrubber - parent: [BaseMachinePowered, ConstructibleMachine] + parent: [BaseMachinePowered, SmallConstructibleMachine] name: portable scrubber description: It scrubs, portably! components: @@ -120,7 +120,7 @@ layer: - MachineLayer - type: ApcPowerReceiver - powerDisabled: true #starts off + powerDisabled: true #starts off - type: Sprite sprite: Structures/Piping/Atmospherics/Portable/portable_sheater.rsi noRot: true @@ -195,4 +195,4 @@ suffix: Anchored, Enabled components: - type: ApcPowerReceiver - powerDisabled: false \ No newline at end of file + powerDisabled: false diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index 06f2fb2d18..6858f0433d 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -390,7 +390,7 @@ board: HellfireHeaterMachineCircuitBoard - type: entity - parent: [ BaseMachinePowered, ConstructibleMachine ] + parent: [ BaseMachinePowered, SmallConstructibleMachine ] id: BaseGasCondenser name: condenser description: Condenses gases into liquids. Now we just need some plumbing. diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml index 1193182d09..a9ea826137 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml @@ -91,6 +91,7 @@ - key: enum.DisposalUnitUiKey.Key type: DisposalUnitBoundUserInterface - type: RatKingRummageable + - type: RequireProjectileTarget - type: entity id: MailingUnit diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml index 52698f62cc..6cfbc04ee1 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml @@ -1,7 +1,7 @@ - type: entity id: Emitter name: emitter - parent: ConstructibleMachine + parent: SmallConstructibleMachine description: A heavy duty industrial laser. Shoots non-stop when turned on. placement: mode: SnapgridCenter diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml index b606c01f1d..26f0a1de6d 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml @@ -1,4 +1,4 @@ -# +# # You can use this Desmos sheet to calculate fuel burn rate values: # https://www.desmos.com/calculator/qcektq5dqs # @@ -6,7 +6,7 @@ - type: entity abstract: true id: PortableGeneratorBase - parent: [ BaseMachine, ConstructibleMachine ] + parent: [ BaseMachine, SmallConstructibleMachine] components: # Basic properties - type: Transform diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml index 5a28c4962c..c512266e97 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml @@ -49,6 +49,7 @@ onBump: false requirePower: true highVoltageNode: output + - type: RequireProjectileTarget - type: entity id: SolarPanel @@ -157,6 +158,7 @@ graph: SolarPanel node: solarassembly defaultTarget: solarpanel + - type: RequireProjectileTarget - type: entity id: SolarTracker @@ -201,3 +203,4 @@ - type: Construction graph: SolarPanel node: solartracker + - type: RequireProjectileTarget diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index 388cc3c987..9f322dc592 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -58,12 +58,15 @@ density: 500 mask: - TabletopMachineMask + layer: + - BulletImpassable - type: PowerChargerVisuals - type: ContainerContainer containers: charger_slot: !type:ContainerSlot machine_board: !type:Container machine_parts: !type:Container + - type: RequireProjectileTarget - type: entity parent: BaseItemRecharger diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml index 403e20b43c..6299abef89 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml @@ -74,6 +74,7 @@ node: crategenericsteel containers: - entity_storage + - type: RequireProjectileTarget - type: entity parent: CrateGeneric diff --git a/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml b/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml index d341c017a7..d6becda9cc 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml @@ -156,6 +156,7 @@ node: chestDrawer - type: StaticPrice price: 15 + - type: RequireProjectileTarget - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml b/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml index f2b03aaeb8..7277af64ca 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml @@ -69,7 +69,7 @@ acts: [ "Destruction" ] - type: Climbable delay: 2.5 - + - type: RequireProjectileTarget #High - type: entity @@ -93,8 +93,10 @@ mask: - FullTileMask layer: + - Opaque - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: straight @@ -120,8 +122,10 @@ mask: - FullTileMask layer: + - Opaque - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: end @@ -156,8 +160,10 @@ mask: - TableMask layer: + - Opaque - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: corner @@ -192,8 +198,10 @@ mask: - TableMask layer: + - Opaque - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: tjunction @@ -218,8 +226,10 @@ mask: - FullTileMask layer: + - Opaque - MidImpassable - LowImpassable + - BulletImpassable - type: InteractionOutline - type: Door openSpriteState: door_opened @@ -268,6 +278,7 @@ layer: - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: straight_small @@ -295,6 +306,7 @@ layer: - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: end_small @@ -331,6 +343,7 @@ layer: - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: corner_small @@ -367,6 +380,7 @@ layer: - MidImpassable - LowImpassable + - BulletImpassable - type: Construction graph: FenceWood node: tjunction_small @@ -393,6 +407,7 @@ layer: - MidImpassable - LowImpassable + - BulletImpassable - type: InteractionOutline - type: Door openSpriteState: door_opened_small @@ -415,4 +430,4 @@ path: /Audio/Effects/door_close.ogg - type: Construction graph: FenceWood - node: gate_small \ No newline at end of file + node: gate_small diff --git a/Resources/Prototypes/Entities/Structures/hydro_tray.yml b/Resources/Prototypes/Entities/Structures/hydro_tray.yml index 43b8bd197a..6dac2e656e 100644 --- a/Resources/Prototypes/Entities/Structures/hydro_tray.yml +++ b/Resources/Prototypes/Entities/Structures/hydro_tray.yml @@ -1,6 +1,6 @@ - type: entity name: hydroponics tray - parent: [ hydroponicsSoil, ConstructibleMachine] + parent: [ hydroponicsSoil, SmallConstructibleMachine] id: hydroponicsTray description: An interstellar-grade space farmplot allowing for rapid growth and selective breeding of crops. Just... keep in mind the space weeds. components: @@ -14,6 +14,8 @@ hard: true mask: - MachineMask + layer: + - BulletImpassable - type: Anchorable - type: Pullable - type: Sprite From fcea083a54b136c30e33cba6531318daab9d735f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 00:02:34 -0700 Subject: [PATCH 38/68] Update Credits (#483) This is an automated Pull Request. This PR updates the GitHub contributors in the credits section. Co-authored-by: SimpleStation Changelogs --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 03d5059e95..b5381a4ce2 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, FoxxoTrystan, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, stellar-novas, StrawberryMoses, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, FoxxoTrystan, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, stellar-novas, StrawberryMoses, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From df7a78bd7974fea56a90812728dee5cb3d23546e Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 24 Jun 2024 17:48:57 -0400 Subject: [PATCH 39/68] Fix fireball bug --- Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs index e488aac787..3dabf2fd9b 100644 --- a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs @@ -76,7 +76,7 @@ private void OnPowerUsed(PyrokinesisPowerActionEvent args) } } - var direction = args.Target.Position; + var direction = args.Target.ToMapPos(EntityManager, _xform) - spawnCoords.ToMapPos(EntityManager, _xform); _gunSystem.ShootProjectile(ent, direction, new System.Numerics.Vector2(0, 0), args.Performer, args.Performer, 20f); From 2c49d79364b76d72280e4e4681c31d830188bb74 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 24 Jun 2024 18:51:47 -0400 Subject: [PATCH 40/68] Update LogPowerUsed --- Content.Server/Abilities/Mime/MimePowersSystem.cs | 4 +--- .../Psionics/Abilities/DispelPowerSystem.cs | 7 ++++--- .../Psionics/Abilities/MetapsionicPowerSystem.cs | 9 +++------ .../Psionics/Abilities/MindSwapPowerSystem.cs | 2 +- .../Abilities/NoosphericZapPowerSystem.cs | 4 +--- .../Abilities/PsionicRegenerationPowerSystem.cs | 8 ++------ .../Psionics/Abilities/PyrokinesisPowerSystem.cs | 4 +--- .../Abilities/RegenerativeStasisPowerSystem.cs | 8 ++++---- .../Psionics/Abilities/TelegnosisPowerSystem.cs | 4 +--- .../PsionicInvisibilityPowerSystem.cs | 15 ++++++++++----- .../Psionics/SharedPsionicAbilitiesSystem.cs | 11 +++++++++-- .../nyanotrasen/psionics/psychic-feedback.ftl | 1 + 12 files changed, 38 insertions(+), 39 deletions(-) diff --git a/Content.Server/Abilities/Mime/MimePowersSystem.cs b/Content.Server/Abilities/Mime/MimePowersSystem.cs index 9c108c4bcf..0a40350889 100644 --- a/Content.Server/Abilities/Mime/MimePowersSystem.cs +++ b/Content.Server/Abilities/Mime/MimePowersSystem.cs @@ -105,9 +105,7 @@ private void OnInvisibleWall(EntityUid uid, MimePowersComponent component, Invis } } if (TryComp(uid, out var psionic)) - _psionics.LogPowerUsed(uid, "invisible wall", - (int) Math.Round(4 * psionic.Amplification - psionic.Dampening), - (int) Math.Round(6 * psionic.Amplification - psionic.Dampening)); + _psionics.LogPowerUsed(uid, "invisible wall", psionic, 4, 6); _popupSystem.PopupEntity(Loc.GetString("mime-invisible-wall-popup", ("mime", uid)), uid); // Make sure we set the invisible wall to despawn properly diff --git a/Content.Server/Psionics/Abilities/DispelPowerSystem.cs b/Content.Server/Psionics/Abilities/DispelPowerSystem.cs index 67176c3a3d..3489b15bcf 100644 --- a/Content.Server/Psionics/Abilities/DispelPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/DispelPowerSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Actions; using Content.Shared.StatusEffect; using Content.Shared.Psionics.Abilities; +using Content.Shared.Psionics.Glimmer; using Content.Shared.Damage; using Content.Shared.Revenant.Components; using Content.Server.Guardian; @@ -23,6 +24,7 @@ public sealed class DispelPowerSystem : EntitySystem [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; + [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; public override void Initialize() @@ -81,9 +83,8 @@ private void OnPowerUsed(DispelPowerActionEvent args) if (ev.Handled) { args.Handled = true; - _psionics.LogPowerUsed(args.Performer, "dispel", - (int) MathF.Round(-4 * psionic.Dampening + psionic.Amplification), - (int) MathF.Round(-2 * psionic.Dampening + psionic.Amplification)); + _psionics.LogPowerUsed(args.Performer, "dispel", psionic, 1, 1, true); + _glimmerSystem.Glimmer -= _random.Next((int) Math.Round(2 * psionic.Dampening), (int) Math.Round(4 - psionic.Amplification)); } } diff --git a/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs b/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs index dac38290f2..d74f5efa43 100644 --- a/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs @@ -6,7 +6,6 @@ using Robust.Server.Audio; using Robust.Shared.Audio; using Robust.Shared.Timing; -using Content.Server.DoAfter; using Content.Shared.Psionics.Events; namespace Content.Server.Psionics.Abilities @@ -18,7 +17,7 @@ public sealed class MetapsionicPowerSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popups = default!; [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] private readonly AudioSystem _audioSystem = default!; @@ -95,9 +94,7 @@ private void OnWidePowerUsed(EntityUid uid, MetapsionicPowerComponent component, } } _popups.PopupEntity(Loc.GetString("metapsionic-pulse-failure"), uid, uid, PopupType.Large); - _psionics.LogPowerUsed(uid, "metapsionic pulse", - (int) MathF.Round(2 * psionic.Amplification - psionic.Dampening), - (int) MathF.Round(4 * psionic.Amplification - psionic.Dampening)); + _psionics.LogPowerUsed(uid, "metapsionic pulse", psionic, 2, 4); UpdateActions(uid, component); args.Handled = true; } @@ -128,7 +125,7 @@ private void OnFocusedPowerUsed(FocusedMetapsionicPowerActionEvent args) _popups.PopupEntity(Loc.GetString("focused-metapsionic-pulse-begin", ("entity", args.Target)), args.Performer, PopupType.Medium); _audioSystem.PlayPvs(component.SoundUse, args.Performer, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); - _psionics.LogPowerUsed(args.Performer, "focused metapsionic pulse", + _psionics.LogPowerUsed(args.Performer, "focused metapsionic pulse", psionic, (int) MathF.Round(3 * psionic.Amplification - psionic.Dampening), (int) MathF.Round(6 * psionic.Amplification - psionic.Dampening)); args.Handled = true; diff --git a/Content.Server/Psionics/Abilities/MindSwapPowerSystem.cs b/Content.Server/Psionics/Abilities/MindSwapPowerSystem.cs index b0e27027ad..25f0434c79 100644 --- a/Content.Server/Psionics/Abilities/MindSwapPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/MindSwapPowerSystem.cs @@ -78,7 +78,7 @@ private void OnPowerUsed(MindSwapPowerActionEvent args) Swap(args.Performer, args.Target); - _psionics.LogPowerUsed(args.Performer, "mind swap", (int) MathF.Round(psionic.Amplification / psionic.Dampening * 8), (int) MathF.Round(psionic.Amplification / psionic.Dampening * 12)); + _psionics.LogPowerUsed(args.Performer, "mind swap", psionic, 8, 12); args.Handled = true; } diff --git a/Content.Server/Psionics/Abilities/NoosphericZapPowerSystem.cs b/Content.Server/Psionics/Abilities/NoosphericZapPowerSystem.cs index c935bc0123..8ab128cc1d 100644 --- a/Content.Server/Psionics/Abilities/NoosphericZapPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/NoosphericZapPowerSystem.cs @@ -69,9 +69,7 @@ private void OnPowerUsed(NoosphericZapPowerActionEvent args) _statusEffectsSystem.TryAddStatusEffect(args.Target, "Stutter", TimeSpan.FromSeconds(2 * psionic.Amplification), false, "StutteringAccent"); - _psionics.LogPowerUsed(args.Performer, "noopsheric zap", - (int) MathF.Round(6 * psionic.Amplification - psionic.Dampening), - (int) MathF.Round(8 * psionic.Amplification - psionic.Dampening)); + _psionics.LogPowerUsed(args.Performer, "noopsheric zap", psionic, 6, 8); args.Handled = true; } } diff --git a/Content.Server/Psionics/Abilities/PsionicRegenerationPowerSystem.cs b/Content.Server/Psionics/Abilities/PsionicRegenerationPowerSystem.cs index 715774ae1c..15fc092ebc 100644 --- a/Content.Server/Psionics/Abilities/PsionicRegenerationPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/PsionicRegenerationPowerSystem.cs @@ -73,9 +73,7 @@ private void OnPowerUsed(EntityUid uid, PsionicRegenerationPowerComponent compon _popupSystem.PopupEntity(Loc.GetString("psionic-regeneration-begin", ("entity", uid)), uid, PopupType.Medium); _audioSystem.PlayPvs(component.SoundUse, uid, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); - _psionics.LogPowerUsed(uid, "psionic regeneration", - (int) Math.Round(6 * psionic.Amplification - psionic.Dampening), - (int) Math.Round(8 * psionic.Amplification - psionic.Dampening)); + _psionics.LogPowerUsed(uid, "psionic regeneration", psionic, 6, 8); args.Handled = true; } @@ -116,9 +114,7 @@ private void OnMobStateChangedEvent(EntityUid uid, PsionicRegenerationPowerCompo _popupSystem.PopupEntity(Loc.GetString("psionic-regeneration-self-revive", ("entity", uid)), uid, PopupType.MediumCaution); _audioSystem.PlayPvs(component.SoundUse, uid, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); - _psionics.LogPowerUsed(uid, "psionic regeneration", - (int) Math.Round(10 * psionic.Amplification - 2 * psionic.Dampening), - (int) Math.Round(20 * psionic.Amplification - 2 * psionic.Dampening)); + _psionics.LogPowerUsed(uid, "psionic regeneration", psionic, 10, 20); _actions.StartUseDelay(component.PsionicRegenerationActionEntity); } diff --git a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs index 3dabf2fd9b..05c1e6ff46 100644 --- a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs @@ -80,9 +80,7 @@ private void OnPowerUsed(PyrokinesisPowerActionEvent args) _gunSystem.ShootProjectile(ent, direction, new System.Numerics.Vector2(0, 0), args.Performer, args.Performer, 20f); - _psionics.LogPowerUsed(args.Performer, "pyrokinesis", - (int) MathF.Round(6f * psionic.Amplification - psionic.Dampening), - (int) MathF.Round(8f * psionic.Amplification - psionic.Dampening)); + _psionics.LogPowerUsed(args.Performer, "pyrokinesis", psionic, 6, 8); args.Handled = true; } } diff --git a/Content.Server/Psionics/Abilities/RegenerativeStasisPowerSystem.cs b/Content.Server/Psionics/Abilities/RegenerativeStasisPowerSystem.cs index be435d1acc..cc67badbe7 100644 --- a/Content.Server/Psionics/Abilities/RegenerativeStasisPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/RegenerativeStasisPowerSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Body.Components; using Content.Shared.Actions; using Content.Shared.Chemistry.Components; +using Content.Shared.Popups; using Content.Shared.Psionics.Abilities; using Content.Shared.Actions.Events; using Content.Shared.FixedPoint; @@ -13,6 +14,7 @@ public sealed class MassSleepPowerSystem : EntitySystem [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; public override void Initialize() { @@ -61,10 +63,8 @@ private void OnPowerUsed(EntityUid uid, RegenerativeStasisPowerComponent compone solution.AddReagent("Epinephrine", FixedPoint2.New(MathF.Min(2.5f * psionic.Dampening + psionic.Amplification, 15f))); solution.AddReagent("Nocturine", 10f + (1 * psionic.Amplification + psionic.Dampening)); _bloodstreamSystem.TryAddToChemicals(args.Target, solution, stream); - - _psionics.LogPowerUsed(uid, "regenerative stasis", - (int) Math.Round(4 * psionic.Amplification - psionic.Dampening), - (int) Math.Round(6 * psionic.Amplification - psionic.Dampening)); + _popupSystem.PopupEntity(Loc.GetString("regenerative-stasis-begin", ("entity", uid)), uid, PopupType.Medium); + _psionics.LogPowerUsed(uid, "regenerative stasis", psionic, 4, 6); args.Handled = true; } } diff --git a/Content.Server/Psionics/Abilities/TelegnosisPowerSystem.cs b/Content.Server/Psionics/Abilities/TelegnosisPowerSystem.cs index f03b001fc7..c5f8471a65 100644 --- a/Content.Server/Psionics/Abilities/TelegnosisPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/TelegnosisPowerSystem.cs @@ -70,9 +70,7 @@ private void OnPowerUsed(EntityUid uid, TelegnosisPowerComponent component, Tele if (EnsureComp(projection, out var projectionComponent)) projectionComponent.OriginalEntity = uid; - _psionics.LogPowerUsed(uid, "telegnosis", - (int) Math.Round(8f * psionic.Amplification - psionic.Dampening), - (int) Math.Round(12f * psionic.Amplification - psionic.Dampening)); + _psionics.LogPowerUsed(uid, "telegnosis", psionic, 8, 12); args.Handled = true; } diff --git a/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerSystem.cs b/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerSystem.cs index 29ee615dd4..540dc03341 100644 --- a/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerSystem.cs +++ b/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Stealth.Components; using Content.Shared.Psionics.Events; using Content.Shared.Actions.Events; +using Robust.Shared.Network; using Robust.Shared.Audio.Systems; using Content.Shared.Interaction.Events; using Content.Shared.Weapons.Ranged.Events; @@ -23,6 +24,7 @@ public sealed class PsionicInvisibilityPowerSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly INetManager _net = default!; public override void Initialize() { @@ -86,9 +88,7 @@ private void OnPowerUsed(EntityUid uid, PsionicInvisibilityPowerComponent compon invis.DoAfter = doAfterId; } - _psionics.LogPowerUsed(uid, "psionic invisibility", - (int) MathF.Round(8 * psionic.Amplification - 2 * psionic.Dampening), - (int) MathF.Round(12 * psionic.Amplification - 2 * psionic.Dampening)); + _psionics.LogPowerUsed(uid, "psionic invisibility", psionic, 8, 12); args.Handled = true; } } @@ -104,7 +104,9 @@ private void OnStart(EntityUid uid, PsionicInvisibilityUsedComponent component, EnsureComp(uid); var stealth = EnsureComp(uid); _stealth.SetVisibility(uid, 0.66f, stealth); - _audio.PlayPvs("/Audio/Effects/toss.ogg", uid); + + if (_net.IsServer) + _audio.PlayPvs("/Audio/Effects/toss.ogg", uid); } @@ -116,7 +118,10 @@ private void OnEnd(EntityUid uid, PsionicInvisibilityUsedComponent component, Co _doAfterSystem.Cancel(component.DoAfter); RemComp(uid); RemComp(uid); - _audio.PlayPvs("/Audio/Effects/toss.ogg", uid); + + if (_net.IsServer) + _audio.PlayPvs("/Audio/Effects/toss.ogg", uid); + _actions.RemoveAction(uid, component.PsionicInvisibilityUsedActionEntity); DirtyEntity(uid); } diff --git a/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs b/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs index 603c5188a5..cf3bafab5a 100644 --- a/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs +++ b/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs @@ -82,13 +82,20 @@ private bool IsEligibleForPsionics(EntityUid uid) && (!TryComp(uid, out var mobstate) || mobstate.CurrentState == MobState.Alive); } - public void LogPowerUsed(EntityUid uid, string power, int minGlimmer = 8, int maxGlimmer = 12) + public void LogPowerUsed(EntityUid uid, string power, PsionicComponent? psionic = null, int minGlimmer = 8, int maxGlimmer = 12, bool overrideGlimmer = false) { _adminLogger.Add(Database.LogType.Psionics, Database.LogImpact.Medium, $"{ToPrettyString(uid):player} used {power}"); var ev = new PsionicPowerUsedEvent(uid, power); RaiseLocalEvent(uid, ev, false); - _glimmerSystem.Glimmer += _robustRandom.Next(minGlimmer, maxGlimmer); + if (!overrideGlimmer) + { + if (psionic == null) + _glimmerSystem.Glimmer += _robustRandom.Next(minGlimmer, maxGlimmer); + else _glimmerSystem.Glimmer += _robustRandom.Next( + (int) Math.Round(minGlimmer * psionic.Amplification - psionic.Dampening), + (int) Math.Round(maxGlimmer * psionic.Amplification - psionic.Dampening)); + } } } diff --git a/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl index 4af3ae267b..446573b7a9 100644 --- a/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl +++ b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl @@ -42,6 +42,7 @@ anomaly-shadow-feedback = At the end of time, when all suns have set forever, th focused-metapsionic-pulse-begin = The air around {CAPITALIZE($entity)} begins to shimmer faintly psionic-regeneration-self-revive = {CAPITALIZE($entity)} begins to visibly regenerate mindbreaking-feedback = The light of life vanishes from {CAPITALIZE($entity)}'s eyes, leaving behind a husk pretending at sapience +regenerative-stasis-begin = {CAPITALIZE($entity)} swoons for a moment, then begins visibly regenerating # Misc Psionic Messages telepathic-mute-message = You strain, but are unable to send your thoughts to the Noosphere From c4890df868e22a286f8ee9df5b6ccb96e31b12a4 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 24 Jun 2024 22:47:26 -0400 Subject: [PATCH 41/68] Fixing bug with starting stat modifiers --- Content.Server/Psionics/PsionicsSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Psionics/PsionicsSystem.cs b/Content.Server/Psionics/PsionicsSystem.cs index 7e97af34b8..04a7597c90 100644 --- a/Content.Server/Psionics/PsionicsSystem.cs +++ b/Content.Server/Psionics/PsionicsSystem.cs @@ -84,8 +84,8 @@ private void OnMeleeHit(EntityUid uid, AntiPsionicWeaponComponent component, Mel } private void OnStartup(EntityUid uid, PsionicComponent component, MapInitEvent args) { - component.Amplification = _random.NextFloat(0.3f, 1.1f); - component.Dampening = _random.NextFloat(0.3f, 1.1f); + component.Amplification += _random.NextFloat(0.3f, 1.1f); + component.Dampening += _random.NextFloat(0.3f, 1.1f); } private void OnInit(EntityUid uid, PsionicComponent component, ComponentInit args) { From 351c4ec8605c16f3c32023138347d85fe5cdd7fc Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 24 Jun 2024 23:17:50 -0400 Subject: [PATCH 42/68] Add System for making Humanoids get thrown harder --- Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs | 2 ++ .../Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 3 +++ Content.Shared/CCVar/CCVars.cs | 3 +++ 3 files changed, 8 insertions(+) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 7b0b357041..4d50700738 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -31,6 +31,7 @@ public sealed partial class AtmosphereSystem public float AtmosTickRate { get; private set; } public float Speedup { get; private set; } public float HeatScale { get; private set; } + public float HumanoidThrowMultiplier { get; private set; } /// /// Time between each atmos sub-update. If you are writing an atmos device, use AtmosDeviceUpdateEvent.dt @@ -65,6 +66,7 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.AtmosHeatScale, value => { HeatScale = value; InitializeGases(); }, true); Subs.CVar(_cfg, CCVars.ExcitedGroups, value => ExcitedGroups = value, true); Subs.CVar(_cfg, CCVars.ExcitedGroupsSpaceIsAllConsuming, value => ExcitedGroupsSpaceIsAllConsuming = value, true); + Subs.CVar(_cfg, CCVars.AtmosHumanoidThrowMultiplier, value => HumanoidThrowMultiplier = value, true); } } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 0daae7da2c..f8315bd6da 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -1,5 +1,6 @@ using Content.Server.Atmos.Components; using Content.Shared.Atmos; +using Content.Shared.Humanoid; using Content.Shared.Mobs.Components; using Content.Shared.Physics; using Robust.Shared.Audio; @@ -223,6 +224,8 @@ public void ExperiencePressureDifference( && !float.IsPositiveInfinity(component.MoveResist)) { var moveForce = pressureDifference * MathF.Max(physics.InvMass, SpaceWindMaximumCalculatedInverseMass); + if (HasComp(ent)) + moveForce *= HumanoidThrowMultiplier; if (moveForce > physics.Mass) { var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 55bd15eef0..935396f722 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1245,6 +1245,9 @@ public static readonly CVarDef public static readonly CVarDef AtmosHeatScale = CVarDef.Create("atmos.heat_scale", 8f, CVar.SERVERONLY); + public static readonly CVarDef AtmosHumanoidThrowMultiplier = + CVarDef.Create("atmos.humanoid_throw_multiplier", 2f, CVar.SERVERONLY); + /* * MIDI instruments */ From 9b544bf720a592697fbd307a056f81d65c00a77c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 24 Jun 2024 23:19:02 -0400 Subject: [PATCH 43/68] Update CCVars.cs --- Content.Shared/CCVar/CCVars.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 935396f722..3bf4fbb4b3 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1245,6 +1245,10 @@ public static readonly CVarDef public static readonly CVarDef AtmosHeatScale = CVarDef.Create("atmos.heat_scale", 8f, CVar.SERVERONLY); + /// + /// A multiplier on the amount of force applied to Humanoid entities, as tracked by HumanoidAppearanceComponent + /// This multiplier is added after all other checks are made, and applies to both throwing force, and how easy it is for an entity to be thrown. + /// public static readonly CVarDef AtmosHumanoidThrowMultiplier = CVarDef.Create("atmos.humanoid_throw_multiplier", 2f, CVar.SERVERONLY); From c9eadace9aed05f66fb83a5d0de1a9626dd706d2 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 25 Jun 2024 00:20:42 -0400 Subject: [PATCH 44/68] 1984 move by pressure, reroute to ThrowingSystem because its more advanced --- .../AtmosphereSystem.HighPressureDelta.cs | 24 ++----------------- .../Atmos/EntitySystems/AtmosphereSystem.cs | 2 ++ 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index f8315bd6da..6900533206 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -70,25 +70,6 @@ private void UpdateHighPressure(float frameTime) } } - private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent component, PhysicsComponent body) - { - if (!TryComp(uid, out var fixtures)) - return; - - _physics.SetBodyStatus(uid, body, BodyStatus.InAir); - - foreach (var (id, fixture) in fixtures.Fixtures) - { - _physics.RemoveCollisionMask(uid, id, fixture, (int) CollisionGroup.TableLayer, manager: fixtures); - } - - // TODO: Make them dynamic type? Ehh but they still want movement so uhh make it non-predicted like weightless? - // idk it's hard. - - component.Accumulator = 0f; - _activePressures.Add((uid, component)); - } - private void HighPressureMovements(Entity gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) { if (tile.PressureDifference < SpaceWindMinimumCalculatedMass * SpaceWindMinimumCalculatedMass) @@ -230,7 +211,6 @@ public void ExperiencePressureDifference( { var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; moveForce = MathF.Min(moveForce, maxSafeForceForObject); - AddMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); @@ -238,11 +218,11 @@ public void ExperiencePressureDifference( if (throwTarget != EntityCoordinates.Invalid) { var pos = throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition + dirVec; - _physics.ApplyLinearImpulse(uid, pos.Normalized() * moveForce, body: physics); + _throwing.TryThrow(uid, pos.Normalized() * moveForce, pressureDifference); } else { - _physics.ApplyLinearImpulse(uid, dirVec.Normalized() * moveForce, body: physics); + _throwing.TryThrow(uid, dirVec.Normalized() * moveForce, pressureDifference); } component.LastHighPressureMovementAirCycle = cycle; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs index d2f40e7716..39425157ad 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Atmos.EntitySystems; using Content.Shared.Doors.Components; using Content.Shared.Maps; +using Content.Shared.Throwing; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Audio.Systems; @@ -37,6 +38,7 @@ public sealed partial class AtmosphereSystem : SharedAtmosphereSystem [Dependency] private readonly TileSystem _tile = default!; [Dependency] private readonly MapSystem _map = default!; [Dependency] public readonly PuddleSystem Puddle = default!; + [Dependency] private readonly ThrowingSystem _throwing = default!; private const float ExposedUpdateDelay = 1f; private float _exposedTimer = 0f; From bc25b781d1d97940fd83965cb860373155db2d24 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 25 Jun 2024 01:33:48 -0400 Subject: [PATCH 45/68] This is significantly smoother --- .../EntitySystems/AtmosphereSystem.HighPressureDelta.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 6900533206..ac9b5c2b0a 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -209,20 +209,19 @@ public void ExperiencePressureDifference( moveForce *= HumanoidThrowMultiplier; if (moveForce > physics.Mass) { - var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; - moveForce = MathF.Min(moveForce, maxSafeForceForObject); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); + moveForce *= MathF.Max(physics.InvMass, SpaceWindMaximumCalculatedInverseMass); //TODO Consider replacing throw target with proper trigonometry angles. if (throwTarget != EntityCoordinates.Invalid) { var pos = throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition + dirVec; - _throwing.TryThrow(uid, pos.Normalized() * moveForce, pressureDifference); + _throwing.TryThrow(uid, pos.Normalized() * moveForce, moveForce); } else { - _throwing.TryThrow(uid, dirVec.Normalized() * moveForce, pressureDifference); + _throwing.TryThrow(uid, dirVec.Normalized() * moveForce, moveForce); } component.LastHighPressureMovementAirCycle = cycle; From 53b5b3aae53102b76ac80da5ba320927493b0c43 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 25 Jun 2024 14:04:35 -0400 Subject: [PATCH 46/68] Directional Animated Vendors (#400) # Description This PR adds in new sprites for vending machines, imported from Baystation12. These sprites are notably different from /tg/station sprites in that they include directional facings, and aren't just mono direction. This allows mappers to have more variety in how they can arrange rooms. But more importantly, it's also something that is desperately wanted by #395 so that hostile vending machines actually face people that they're trying to attack. ![ShareX_YQkAjaj4s8](https://github.com/Simple-Station/Einstein-Engines/assets/16548818/a97b51e6-df31-4cb5-ba1f-47ce76eb7461) --------- Co-authored-by: Pspritechologist Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- .../advertisements/vending/bay12Vendors.ftl | 23 + .../Locale/en-US/reagents/bay12reagents.ftl | 2 + .../Advertisements/fitness.yml | 14 + .../Advertisements/hotfood.yml | 9 + .../Advertisements/solsnack.yml | 8 + .../Advertisements/weebvend.yml | 8 + .../VendingMachines/Inventories/fitness.yml | 11 + .../VendingMachines/Inventories/hotfood.yml | 8 + .../VendingMachines/Inventories/solsnack.yml | 13 + .../VendingMachines/Inventories/weebvend.yml | 8 + .../Consumable/Drinks/drinks-cartons.yml | 44 + .../Objects/Consumable/Drinks/drinks.yml | 59 + .../Objects/Consumable/Food/ingredients.yml | 20 + .../Objects/Consumable/Food/snacks.yml | 530 +++++++ .../Structures/Machines/vending_machines.yml | 498 ++++++- .../Structures/Specific/bay12barbershop.yml | 36 + .../Structures/Specific/bay12fitness.yml | 80 ++ .../Wallmounts/Signs/base_structuresigns.yml | 3 +- .../Drinks/bay_drinks.rsi/(mdr)grapejuice.png | Bin 0 -> 544 bytes .../Drinks/bay_drinks.rsi/absinthebottle.png | Bin 0 -> 358 bytes .../Drinks/bay_drinks.rsi/alco-blue.png | Bin 0 -> 325 bytes .../Drinks/bay_drinks.rsi/alco-green.png | Bin 0 -> 351 bytes .../Drinks/bay_drinks.rsi/alco-red.png | Bin 0 -> 340 bytes .../Drinks/bay_drinks.rsi/alcoholfreebeer.png | Bin 0 -> 319 bytes .../Drinks/bay_drinks.rsi/alebottle.png | Bin 0 -> 311 bytes .../Drinks/bay_drinks.rsi/alecan.png | Bin 0 -> 307 bytes .../Drinks/bay_drinks.rsi/art_bru.png | Bin 0 -> 356 bytes .../Drinks/bay_drinks.rsi/badminka.png | Bin 0 -> 522 bytes .../Drinks/bay_drinks.rsi/baijiu.png | Bin 0 -> 518 bytes .../Drinks/bay_drinks.rsi/barflask.png | Bin 0 -> 498 bytes .../Drinks/bay_drinks.rsi/beastenergy.png | Bin 0 -> 402 bytes .../Consumable/Drinks/bay_drinks.rsi/beer.png | Bin 0 -> 320 bytes .../Drinks/bay_drinks.rsi/beercan.png | Bin 0 -> 310 bytes .../Drinks/bay_drinks.rsi/bigteacup.png | Bin 0 -> 305 bytes .../Drinks/bay_drinks.rsi/bigteacup100.png | Bin 0 -> 148 bytes .../Drinks/bay_drinks.rsi/blackstrap.png | Bin 0 -> 359 bytes .../Drinks/bay_drinks.rsi/bottleofnothing.png | Bin 0 -> 350 bytes .../Drinks/bay_drinks.rsi/broken.png | Bin 0 -> 200 bytes .../Drinks/bay_drinks.rsi/broken_bottle.png | Bin 0 -> 382 bytes .../Drinks/bay_drinks.rsi/bronze_cup.png | Bin 0 -> 622 bytes .../Drinks/bay_drinks.rsi/cachaca.png | Bin 0 -> 392 bytes .../Drinks/bay_drinks.rsi/ccola.png | Bin 0 -> 319 bytes .../Drinks/bay_drinks.rsi/champagne.png | Bin 0 -> 478 bytes .../Drinks/bay_drinks.rsi/coffee.png | Bin 0 -> 336 bytes .../Drinks/bay_drinks.rsi/cognacbottle.png | Bin 0 -> 363 bytes .../Drinks/bay_drinks.rsi/cola-blue.png | Bin 0 -> 321 bytes .../Drinks/bay_drinks.rsi/cola-brown.png | Bin 0 -> 306 bytes .../Drinks/bay_drinks.rsi/cola-green.png | Bin 0 -> 300 bytes .../Drinks/bay_drinks.rsi/cola-orange.png | Bin 0 -> 317 bytes .../Drinks/bay_drinks.rsi/cola-pink.png | Bin 0 -> 318 bytes .../Drinks/bay_drinks.rsi/cola-pork.png | Bin 0 -> 273 bytes .../Drinks/bay_drinks.rsi/cola-purple.png | Bin 0 -> 310 bytes .../Drinks/bay_drinks.rsi/cola-red.png | Bin 0 -> 321 bytes .../Drinks/bay_drinks.rsi/cola-yellow.png | Bin 0 -> 304 bytes .../Consumable/Drinks/bay_drinks.rsi/cola.png | Bin 0 -> 298 bytes .../Drinks/bay_drinks.rsi/colabottle.png | Bin 0 -> 574 bytes .../Drinks/bay_drinks.rsi/coolant.png | Bin 0 -> 412 bytes .../Drinks/bay_drinks.rsi/cream.png | Bin 0 -> 450 bytes .../Drinks/bay_drinks.rsi/detflask.png | Bin 0 -> 539 bytes .../Consumable/Drinks/bay_drinks.rsi/dnb.png | Bin 0 -> 329 bytes .../Drinks/bay_drinks.rsi/dr_gibb.png | Bin 0 -> 371 bytes .../Drinks/bay_drinks.rsi/energy_drink.png | Bin 0 -> 285 bytes .../bay_drinks.rsi/fitness-cup_black.png | Bin 0 -> 373 bytes .../bay_drinks.rsi/fitness-cup_blue.png | Bin 0 -> 404 bytes .../Drinks/bay_drinks.rsi/fitness-cup_red.png | Bin 0 -> 407 bytes .../Drinks/bay_drinks.rsi/flask.png | Bin 0 -> 779 bytes .../Drinks/bay_drinks.rsi/flavorpak.png | Bin 0 -> 231 bytes .../Drinks/bay_drinks.rsi/ginbottle.png | Bin 0 -> 399 bytes .../Drinks/bay_drinks.rsi/gingerbeer.png | Bin 0 -> 331 bytes .../Drinks/bay_drinks.rsi/golden_cup.png | Bin 0 -> 1143 bytes .../bay_drinks.rsi/goldschlagerbottle.png | Bin 0 -> 410 bytes .../Drinks/bay_drinks.rsi/grenadinebottle.png | Bin 0 -> 434 bytes .../Drinks/bay_drinks.rsi/hellshenbeer.png | Bin 0 -> 328 bytes .../Drinks/bay_drinks.rsi/herbal.png | Bin 0 -> 422 bytes .../Drinks/bay_drinks.rsi/holyflask.png | Bin 0 -> 461 bytes .../Drinks/bay_drinks.rsi/hrukhzaextract.png | Bin 0 -> 361 bytes .../Drinks/bay_drinks.rsi/ice_tea_can.png | Bin 0 -> 298 bytes .../Drinks/bay_drinks.rsi/ionbru.png | Bin 0 -> 309 bytes .../Consumable/Drinks/bay_drinks.rsi/jar.png | Bin 0 -> 314 bytes .../Drinks/bay_drinks.rsi/jar_metroid.png | Bin 0 -> 506 bytes .../Drinks/bay_drinks.rsi/jar_what.png | Bin 0 -> 424 bytes .../Drinks/bay_drinks.rsi/kahluabottle.png | Bin 0 -> 435 bytes .../Drinks/bay_drinks.rsi/lager.png | Bin 0 -> 325 bytes .../Drinks/bay_drinks.rsi/lemon-lime.png | Bin 0 -> 309 bytes .../Drinks/bay_drinks.rsi/lemonjuice.png | Bin 0 -> 564 bytes .../Drinks/bay_drinks.rsi/limejuice.png | Bin 0 -> 380 bytes .../Drinks/bay_drinks.rsi/lithiumflask.png | Bin 0 -> 596 bytes .../Drinks/bay_drinks.rsi/lunabrandy.png | Bin 0 -> 438 bytes .../Drinks/bay_drinks.rsi/maplesyrup.png | Bin 0 -> 695 bytes .../Drinks/bay_drinks.rsi/meta.json | 413 ++++++ .../Consumable/Drinks/bay_drinks.rsi/milk.png | Bin 0 -> 402 bytes .../Drinks/bay_drinks.rsi/nothing.png | Bin 0 -> 238 bytes .../Drinks/bay_drinks.rsi/ocola.png | Bin 0 -> 333 bytes .../Consumable/Drinks/bay_drinks.rsi/oil.png | Bin 0 -> 369 bytes .../Drinks/bay_drinks.rsi/orangejuice.png | Bin 0 -> 571 bytes .../Drinks/bay_drinks.rsi/patronbottle.png | Bin 0 -> 586 bytes .../Drinks/bay_drinks.rsi/pitcher.png | Bin 0 -> 497 bytes .../Drinks/bay_drinks.rsi/pitcher100.png | Bin 0 -> 150 bytes .../Drinks/bay_drinks.rsi/pitcher15.png | Bin 0 -> 135 bytes .../Drinks/bay_drinks.rsi/pitcher30.png | Bin 0 -> 144 bytes .../Drinks/bay_drinks.rsi/pitcher50.png | Bin 0 -> 149 bytes .../Drinks/bay_drinks.rsi/pitcher70.png | Bin 0 -> 149 bytes .../Drinks/bay_drinks.rsi/pitcher85.png | Bin 0 -> 150 bytes .../Drinks/bay_drinks.rsi/placeholder.png | Bin 0 -> 264 bytes .../Drinks/bay_drinks.rsi/premiumvodka.png | Bin 0 -> 532 bytes .../Drinks/bay_drinks.rsi/premiumwine.png | Bin 0 -> 469 bytes .../Drinks/bay_drinks.rsi/prosecco.png | Bin 0 -> 435 bytes .../Drinks/bay_drinks.rsi/purple_can.png | Bin 0 -> 335 bytes .../Drinks/bay_drinks.rsi/pwinebottle.png | Bin 0 -> 427 bytes .../Consumable/Drinks/bay_drinks.rsi/rag.png | Bin 0 -> 542 bytes .../Drinks/bay_drinks.rsi/rag_lit.png | Bin 0 -> 845 bytes .../Drinks/bay_drinks.rsi/rag_small.png | Bin 0 -> 390 bytes .../Drinks/bay_drinks.rsi/rag_small_lit.png | Bin 0 -> 693 bytes .../Drinks/bay_drinks.rsi/rakia.png | Bin 0 -> 411 bytes .../Drinks/bay_drinks.rsi/ramen.png | Bin 0 -> 426 bytes .../Drinks/bay_drinks.rsi/rumbottle.png | Bin 0 -> 402 bytes .../Consumable/Drinks/bay_drinks.rsi/sake.png | Bin 0 -> 452 bytes .../Drinks/bay_drinks.rsi/shaker.png | Bin 0 -> 391 bytes .../Drinks/bay_drinks.rsi/shinyflask.png | Bin 0 -> 735 bytes .../Drinks/bay_drinks.rsi/silver_cup.png | Bin 0 -> 843 bytes .../Drinks/bay_drinks.rsi/sodawater.png | Bin 0 -> 334 bytes .../Consumable/Drinks/bay_drinks.rsi/soju.png | Bin 0 -> 517 bytes .../Drinks/bay_drinks.rsi/soymilk.png | Bin 0 -> 367 bytes .../Drinks/bay_drinks.rsi/space-up.png | Bin 0 -> 309 bytes .../Drinks/bay_drinks.rsi/space-up_bottle.png | Bin 0 -> 641 bytes .../bay_drinks.rsi/space_mountain_wind.png | Bin 0 -> 294 bytes .../space_mountain_wind_bottle.png | Bin 0 -> 708 bytes .../Drinks/bay_drinks.rsi/starkist.png | Bin 0 -> 314 bytes .../Drinks/bay_drinks.rsi/syndi_cola.png | Bin 0 -> 301 bytes .../Drinks/bay_drinks.rsi/syndi_cola_x.png | Bin 0 -> 304 bytes .../Drinks/bay_drinks.rsi/tadmorwine.png | Bin 0 -> 491 bytes .../Drinks/bay_drinks.rsi/teapot.png | Bin 0 -> 663 bytes .../Drinks/bay_drinks.rsi/tequillabottle.png | Bin 0 -> 458 bytes .../Drinks/bay_drinks.rsi/thirteen_loko.png | Bin 0 -> 312 bytes .../Drinks/bay_drinks.rsi/thoom.png | Bin 0 -> 445 bytes .../Drinks/bay_drinks.rsi/tomatojuice.png | Bin 0 -> 403 bytes .../Drinks/bay_drinks.rsi/tonic.png | Bin 0 -> 342 bytes .../Drinks/bay_drinks.rsi/vacuumflask.png | Bin 0 -> 322 bytes .../Drinks/bay_drinks.rsi/vcola.png | Bin 0 -> 333 bytes .../Drinks/bay_drinks.rsi/vermouthbottle.png | Bin 0 -> 416 bytes .../Drinks/bay_drinks.rsi/vodkabottle.png | Bin 0 -> 565 bytes .../Drinks/bay_drinks.rsi/water.png | Bin 0 -> 328 bytes .../Drinks/bay_drinks.rsi/water_cup.png | Bin 0 -> 297 bytes .../Drinks/bay_drinks.rsi/water_cup_e.png | Bin 0 -> 294 bytes .../Drinks/bay_drinks.rsi/waterbottle.png | Bin 0 -> 386 bytes .../Drinks/bay_drinks.rsi/whiskeybottle.png | Bin 0 -> 438 bytes .../Drinks/bay_drinks.rsi/whiskeybottle2.png | Bin 0 -> 439 bytes .../Drinks/bay_drinks.rsi/whiskeybottle3.png | Bin 0 -> 439 bytes .../Drinks/bay_drinks.rsi/winebottle.png | Bin 0 -> 498 bytes .../Consumable/Drinks/milkmini.rsi/icon.png | Bin 0 -> 409 bytes .../Drinks/milkmini.rsi/icon_open.png | Bin 0 -> 409 bytes .../Consumable/Drinks/milkmini.rsi/meta.json | 17 + .../Drinks/milkminichoco.rsi/icon.png | Bin 0 -> 398 bytes .../Drinks/milkminichoco.rsi/icon_open.png | Bin 0 -> 398 bytes .../Drinks/milkminichoco.rsi/meta.json | 17 + .../Drinks/shakerblack.rsi/fitness-cup10.png | Bin 0 -> 138 bytes .../Drinks/shakerblack.rsi/fitness-cup100.png | Bin 0 -> 154 bytes .../Drinks/shakerblack.rsi/fitness-cup20.png | Bin 0 -> 141 bytes .../Drinks/shakerblack.rsi/fitness-cup30.png | Bin 0 -> 141 bytes .../Drinks/shakerblack.rsi/fitness-cup40.png | Bin 0 -> 141 bytes .../Drinks/shakerblack.rsi/fitness-cup50.png | Bin 0 -> 150 bytes .../Drinks/shakerblack.rsi/fitness-cup60.png | Bin 0 -> 153 bytes .../Drinks/shakerblack.rsi/fitness-cup70.png | Bin 0 -> 153 bytes .../Drinks/shakerblack.rsi/fitness-cup80.png | Bin 0 -> 154 bytes .../Drinks/shakerblack.rsi/fitness-cup90.png | Bin 0 -> 153 bytes .../Drinks/shakerblack.rsi/icon.png | Bin 0 -> 373 bytes .../Drinks/shakerblack.rsi/icon_empty.png | Bin 0 -> 373 bytes .../Drinks/shakerblack.rsi/icon_open.png | Bin 0 -> 373 bytes .../Drinks/shakerblack.rsi/meta.json | 50 + .../Drinks/shakerblue.rsi/fitness-cup10.png | Bin 0 -> 138 bytes .../Drinks/shakerblue.rsi/fitness-cup100.png | Bin 0 -> 154 bytes .../Drinks/shakerblue.rsi/fitness-cup20.png | Bin 0 -> 141 bytes .../Drinks/shakerblue.rsi/fitness-cup30.png | Bin 0 -> 141 bytes .../Drinks/shakerblue.rsi/fitness-cup40.png | Bin 0 -> 141 bytes .../Drinks/shakerblue.rsi/fitness-cup50.png | Bin 0 -> 150 bytes .../Drinks/shakerblue.rsi/fitness-cup60.png | Bin 0 -> 153 bytes .../Drinks/shakerblue.rsi/fitness-cup70.png | Bin 0 -> 153 bytes .../Drinks/shakerblue.rsi/fitness-cup80.png | Bin 0 -> 154 bytes .../Drinks/shakerblue.rsi/fitness-cup90.png | Bin 0 -> 153 bytes .../Consumable/Drinks/shakerblue.rsi/icon.png | Bin 0 -> 404 bytes .../Drinks/shakerblue.rsi/icon_empty.png | Bin 0 -> 404 bytes .../Drinks/shakerblue.rsi/icon_open.png | Bin 0 -> 404 bytes .../Drinks/shakerblue.rsi/meta.json | 50 + .../Drinks/shakerred.rsi/fitness-cup10.png | Bin 0 -> 138 bytes .../Drinks/shakerred.rsi/fitness-cup100.png | Bin 0 -> 154 bytes .../Drinks/shakerred.rsi/fitness-cup20.png | Bin 0 -> 141 bytes .../Drinks/shakerred.rsi/fitness-cup30.png | Bin 0 -> 141 bytes .../Drinks/shakerred.rsi/fitness-cup40.png | Bin 0 -> 141 bytes .../Drinks/shakerred.rsi/fitness-cup50.png | Bin 0 -> 150 bytes .../Drinks/shakerred.rsi/fitness-cup60.png | Bin 0 -> 153 bytes .../Drinks/shakerred.rsi/fitness-cup70.png | Bin 0 -> 153 bytes .../Drinks/shakerred.rsi/fitness-cup80.png | Bin 0 -> 154 bytes .../Drinks/shakerred.rsi/fitness-cup90.png | Bin 0 -> 153 bytes .../Consumable/Drinks/shakerred.rsi/icon.png | Bin 0 -> 407 bytes .../Drinks/shakerred.rsi/icon_empty.png | Bin 0 -> 407 bytes .../Drinks/shakerred.rsi/icon_open.png | Bin 0 -> 407 bytes .../Consumable/Drinks/shakerred.rsi/meta.json | 50 + .../Food/bay_food.rsi/0box-donut1.png | Bin 0 -> 161 bytes .../Food/bay_food.rsi/0box-donut_chaos.png | Bin 0 -> 431 bytes .../Food/bay_food.rsi/1box-donut1.png | Bin 0 -> 162 bytes .../Food/bay_food.rsi/1box-donut_chaos.png | Bin 0 -> 433 bytes .../Food/bay_food.rsi/2box-donut1.png | Bin 0 -> 162 bytes .../Food/bay_food.rsi/2box-donut_chaos.png | Bin 0 -> 433 bytes .../Food/bay_food.rsi/3box-donut1.png | Bin 0 -> 162 bytes .../Food/bay_food.rsi/3box-donut_chaos.png | Bin 0 -> 431 bytes .../Food/bay_food.rsi/4box-donut1.png | Bin 0 -> 162 bytes .../Food/bay_food.rsi/4box-donut_chaos.png | Bin 0 -> 433 bytes .../Food/bay_food.rsi/4no_raisins.png | Bin 0 -> 493 bytes .../Food/bay_food.rsi/5box-donut1.png | Bin 0 -> 163 bytes .../Food/bay_food.rsi/5box-donut_chaos.png | Bin 0 -> 432 bytes .../Food/bay_food.rsi/6box-donut1.png | Bin 0 -> 120 bytes .../Food/bay_food.rsi/6box-donut_chaos.png | Bin 0 -> 120 bytes .../Food/bay_food.rsi/aesirsalad.png | Bin 0 -> 677 bytes .../Food/bay_food.rsi/aghrassh-cake.png | Bin 0 -> 570 bytes .../Food/bay_food.rsi/amanita_pie.png | Bin 0 -> 521 bytes .../Food/bay_food.rsi/amanitajelly.png | Bin 0 -> 1738 bytes .../Food/bay_food.rsi/ancient_burger.png | Bin 0 -> 394 bytes .../Food/bay_food.rsi/ancient_fries.png | Bin 0 -> 813 bytes .../Food/bay_food.rsi/ancient_hburger.png | Bin 0 -> 412 bytes .../Food/bay_food.rsi/ancient_hotdog.png | Bin 0 -> 416 bytes .../Food/bay_food.rsi/ancient_pizza.png | Bin 0 -> 513 bytes .../Food/bay_food.rsi/ancient_taco.png | Bin 0 -> 1220 bytes .../Food/bay_food.rsi/applecake.png | Bin 0 -> 1016 bytes .../Food/bay_food.rsi/applecakeslice.png | Bin 0 -> 672 bytes .../Consumable/Food/bay_food.rsi/applepie.png | Bin 0 -> 580 bytes .../Consumable/Food/bay_food.rsi/bacon.png | Bin 0 -> 415 bytes .../Food/bay_food.rsi/badrecipe.png | Bin 0 -> 669 bytes .../Consumable/Food/bay_food.rsi/baguette.png | Bin 0 -> 563 bytes .../Food/bay_food.rsi/bananabread.png | Bin 0 -> 781 bytes .../Food/bay_food.rsi/bananabreadslice.png | Bin 0 -> 624 bytes .../Consumable/Food/bay_food.rsi/barbecue.png | Bin 0 -> 306 bytes .../Consumable/Food/bay_food.rsi/bearmeat.png | Bin 0 -> 618 bytes .../Consumable/Food/bay_food.rsi/beetsoup.png | Bin 0 -> 630 bytes .../Food/bay_food.rsi/berryclafoutis.png | Bin 0 -> 625 bytes .../Food/bay_food.rsi/bigbiteburger.png | Bin 0 -> 929 bytes .../Consumable/Food/bay_food.rsi/birdmeat.png | Bin 0 -> 359 bytes .../Food/bay_food.rsi/birdsteak.png | Bin 0 -> 413 bytes .../Food/bay_food.rsi/birthdaycake.png | Bin 0 -> 668 bytes .../Food/bay_food.rsi/birthdaycakeslice.png | Bin 0 -> 445 bytes .../Consumable/Food/bay_food.rsi/biscotti.png | Bin 0 -> 342 bytes .../Consumable/Food/bay_food.rsi/bisque.png | Bin 0 -> 630 bytes .../Food/bay_food.rsi/boiledrice.png | Bin 0 -> 583 bytes .../Food/bay_food.rsi/boiledslimecore.png | Bin 0 -> 303 bytes .../Food/bay_food.rsi/brainburger.png | Bin 0 -> 820 bytes .../Food/bay_food.rsi/braincake.png | Bin 0 -> 1345 bytes .../Food/bay_food.rsi/braincakeslice.png | Bin 0 -> 720 bytes .../Consumable/Food/bay_food.rsi/bread.png | Bin 0 -> 885 bytes .../Food/bay_food.rsi/breadslice.png | Bin 0 -> 667 bytes .../Consumable/Food/bay_food.rsi/bunbun.png | Bin 0 -> 685 bytes .../Food/bay_food.rsi/candiedapple.png | Bin 0 -> 426 bytes .../Consumable/Food/bay_food.rsi/candy.png | Bin 0 -> 419 bytes .../Food/bay_food.rsi/candy_corn.png | Bin 0 -> 249 bytes .../Food/bay_food.rsi/carrotcake.png | Bin 0 -> 934 bytes .../Food/bay_food.rsi/carrotcake_slice.png | Bin 0 -> 645 bytes .../Food/bay_food.rsi/carrotfries.png | Bin 0 -> 612 bytes .../Food/bay_food.rsi/cereal_box.png | Bin 0 -> 692 bytes .../Food/bay_food.rsi/chawanmushi.png | Bin 0 -> 561 bytes .../Consumable/Food/bay_food.rsi/chazuke.png | Bin 0 -> 750 bytes .../Food/bay_food.rsi/cheeseburger.png | Bin 0 -> 747 bytes .../Food/bay_food.rsi/cheesecake.png | Bin 0 -> 936 bytes .../Food/bay_food.rsi/cheesecake_slice.png | Bin 0 -> 562 bytes .../Food/bay_food.rsi/cheesewedge-blue.png | Bin 0 -> 542 bytes .../Food/bay_food.rsi/cheesewedge-fresh.png | Bin 0 -> 370 bytes .../Food/bay_food.rsi/cheesewedge.png | Bin 0 -> 473 bytes .../Food/bay_food.rsi/cheesewheel-blue.png | Bin 0 -> 648 bytes .../Food/bay_food.rsi/cheesewheel-fresh.png | Bin 0 -> 471 bytes .../Food/bay_food.rsi/cheesewheel.png | Bin 0 -> 648 bytes .../Food/bay_food.rsi/cheesie_honkers.png | Bin 0 -> 509 bytes .../Food/bay_food.rsi/cheesyfries.png | Bin 0 -> 669 bytes .../Food/bay_food.rsi/cherrypie.png | Bin 0 -> 689 bytes .../Food/bay_food.rsi/chilied-eggs.png | Bin 0 -> 673 bytes .../Consumable/Food/bay_food.rsi/chips.png | Bin 0 -> 474 bytes .../Food/bay_food.rsi/chocobanana.png | Bin 0 -> 394 bytes .../Food/bay_food.rsi/chocolatebar.png | Bin 0 -> 286 bytes .../Food/bay_food.rsi/chocolatecake.png | Bin 0 -> 784 bytes .../Food/bay_food.rsi/chocolatecake_slice.png | Bin 0 -> 616 bytes .../Food/bay_food.rsi/chocolateegg.png | Bin 0 -> 270 bytes .../Food/bay_food.rsi/clam-chowder.png | Bin 0 -> 526 bytes .../Food/bay_food.rsi/clownburger.png | Bin 0 -> 801 bytes .../Food/bay_food.rsi/clownstears.png | Bin 0 -> 511 bytes .../Food/bay_food.rsi/coldchili.png | Bin 0 -> 586 bytes .../Food/bay_food.rsi/coldsauce.png | Bin 0 -> 322 bytes .../Consumable/Food/bay_food.rsi/cookie.png | Bin 0 -> 436 bytes .../Food/bay_food.rsi/corpsecube.png | Bin 0 -> 509 bytes .../Food/bay_food.rsi/crab-cakes.png | Bin 0 -> 453 bytes .../Food/bay_food.rsi/crab-dinner.png | Bin 0 -> 712 bytes .../Food/bay_food.rsi/crab-rangoon.png | Bin 0 -> 375 bytes .../Consumable/Food/bay_food.rsi/cracker.png | Bin 0 -> 313 bytes .../Food/bay_food.rsi/crackerbag.png | Bin 0 -> 358 bytes .../Food/bay_food.rsi/crackerbag0.png | Bin 0 -> 295 bytes .../Food/bay_food.rsi/crackerbag1.png | Bin 0 -> 489 bytes .../Food/bay_food.rsi/crackerbag2.png | Bin 0 -> 521 bytes .../Food/bay_food.rsi/crackerbag3.png | Bin 0 -> 501 bytes .../Food/bay_food.rsi/crackerbag4.png | Bin 0 -> 476 bytes .../Food/bay_food.rsi/crackerbag5.png | Bin 0 -> 458 bytes .../Food/bay_food.rsi/crackerbag6.png | Bin 0 -> 428 bytes .../Food/bay_food.rsi/crayonmre.png | Bin 0 -> 811 bytes .../Food/bay_food.rsi/crayonmre1.png | Bin 0 -> 832 bytes .../Food/bay_food.rsi/creamcheesebread.png | Bin 0 -> 1110 bytes .../bay_food.rsi/creamcheesebreadslice.png | Bin 0 -> 824 bytes .../Consumable/Food/bay_food.rsi/croutons.png | Bin 0 -> 380 bytes .../Food/bay_food.rsi/cubancarp.png | Bin 0 -> 700 bytes .../Consumable/Food/bay_food.rsi/dango.png | Bin 0 -> 294 bytes .../Food/bay_food.rsi/dionaroast.png | Bin 0 -> 898 bytes .../Food/bay_food.rsi/donkpocket.png | Bin 0 -> 343 bytes .../Consumable/Food/bay_food.rsi/donut1.png | Bin 0 -> 499 bytes .../Consumable/Food/bay_food.rsi/donut2.png | Bin 0 -> 613 bytes .../Food/bay_food.rsi/donut_chaos.png | Bin 0 -> 2066 bytes .../Consumable/Food/bay_food.rsi/donutbox.png | Bin 0 -> 250 bytes .../Food/bay_food.rsi/driedfish.png | Bin 0 -> 438 bytes .../Consumable/Food/bay_food.rsi/egg-blue.png | Bin 0 -> 342 bytes .../Food/bay_food.rsi/egg-green.png | Bin 0 -> 343 bytes .../Consumable/Food/bay_food.rsi/egg-mime.png | Bin 0 -> 327 bytes .../Food/bay_food.rsi/egg-orange.png | Bin 0 -> 341 bytes .../Food/bay_food.rsi/egg-purple.png | Bin 0 -> 342 bytes .../Food/bay_food.rsi/egg-rainbow.png | Bin 0 -> 355 bytes .../Consumable/Food/bay_food.rsi/egg-red.png | Bin 0 -> 341 bytes .../Food/bay_food.rsi/egg-yellow.png | Bin 0 -> 348 bytes .../Consumable/Food/bay_food.rsi/egg.png | Bin 0 -> 340 bytes .../Consumable/Food/bay_food.rsi/eggbox.png | Bin 0 -> 372 bytes .../Consumable/Food/bay_food.rsi/eggbox0.png | Bin 0 -> 351 bytes .../Consumable/Food/bay_food.rsi/eggbox1.png | Bin 0 -> 418 bytes .../Consumable/Food/bay_food.rsi/eggbox10.png | Bin 0 -> 455 bytes .../Consumable/Food/bay_food.rsi/eggbox11.png | Bin 0 -> 445 bytes .../Consumable/Food/bay_food.rsi/eggbox12.png | Bin 0 -> 439 bytes .../Consumable/Food/bay_food.rsi/eggbox2.png | Bin 0 -> 438 bytes .../Consumable/Food/bay_food.rsi/eggbox3.png | Bin 0 -> 440 bytes .../Consumable/Food/bay_food.rsi/eggbox4.png | Bin 0 -> 441 bytes .../Consumable/Food/bay_food.rsi/eggbox5.png | Bin 0 -> 435 bytes .../Consumable/Food/bay_food.rsi/eggbox6.png | Bin 0 -> 430 bytes .../Consumable/Food/bay_food.rsi/eggbox7.png | Bin 0 -> 458 bytes .../Consumable/Food/bay_food.rsi/eggbox8.png | Bin 0 -> 464 bytes .../Consumable/Food/bay_food.rsi/eggbox9.png | Bin 0 -> 462 bytes .../Food/bay_food.rsi/eggplantparm.png | Bin 0 -> 734 bytes .../Food/bay_food.rsi/emptycondiment.png | Bin 0 -> 322 bytes .../Food/bay_food.rsi/enchiladas.png | Bin 0 -> 774 bytes .../Consumable/Food/bay_food.rsi/enzyme.png | Bin 0 -> 335 bytes .../Food/bay_food.rsi/fishandchips.png | Bin 0 -> 848 bytes .../Food/bay_food.rsi/fishburger.png | Bin 0 -> 665 bytes .../Food/bay_food.rsi/fishfillet.png | Bin 0 -> 311 bytes .../Food/bay_food.rsi/fishfingers.png | Bin 0 -> 431 bytes .../Consumable/Food/bay_food.rsi/flour.png | Bin 0 -> 457 bytes .../Food/bay_food.rsi/fortune_cookie.png | Bin 0 -> 461 bytes .../Consumable/Food/bay_food.rsi/friedegg.png | Bin 0 -> 478 bytes .../Consumable/Food/bay_food.rsi/fries.png | Bin 0 -> 593 bytes .../Food/bay_food.rsi/fruitpizza.png | Bin 0 -> 529 bytes .../Food/bay_food.rsi/fruitpizzaslice.png | Bin 0 -> 385 bytes .../Food/bay_food.rsi/gappletart.png | Bin 0 -> 730 bytes .../Food/bay_food.rsi/ghostburger.png | Bin 0 -> 3367 bytes .../Food/bay_food.rsi/gukhe-fish.png | Bin 0 -> 757 bytes .../Food/bay_food.rsi/hatchling-surprise.png | Bin 0 -> 688 bytes .../Consumable/Food/bay_food.rsi/hburger.png | Bin 0 -> 726 bytes .../Food/bay_food.rsi/herbsalad.png | Bin 0 -> 686 bytes .../Consumable/Food/bay_food.rsi/hotchili.png | Bin 0 -> 611 bytes .../Consumable/Food/bay_food.rsi/hotcorgi.png | Bin 0 -> 582 bytes .../Consumable/Food/bay_food.rsi/hotdog.png | Bin 0 -> 860 bytes .../Consumable/Food/bay_food.rsi/hotsauce.png | Bin 0 -> 326 bytes .../Food/bay_food.rsi/hugemushroomslice.png | Bin 0 -> 462 bytes .../Food/bay_food.rsi/icecream_banana.png | Bin 0 -> 339 bytes .../Food/bay_food.rsi/icecream_blue.png | Bin 0 -> 366 bytes .../Food/bay_food.rsi/icecream_cherry.png | Bin 0 -> 343 bytes .../Food/bay_food.rsi/icecream_chocolate.png | Bin 0 -> 378 bytes .../bay_food.rsi/icecream_cone_chocolate.png | Bin 0 -> 424 bytes .../bay_food.rsi/icecream_cone_waffle.png | Bin 0 -> 448 bytes .../Food/bay_food.rsi/icecream_strawberry.png | Bin 0 -> 344 bytes .../Food/bay_food.rsi/icecream_vanilla.png | Bin 0 -> 377 bytes .../Consumable/Food/bay_food.rsi/jdonut1.png | Bin 0 -> 444 bytes .../Consumable/Food/bay_food.rsi/jdonut2.png | Bin 0 -> 582 bytes .../Food/bay_food.rsi/jellyburger.png | Bin 0 -> 549 bytes .../Food/bay_food.rsi/jellysandwich.png | Bin 0 -> 973 bytes .../Food/bay_food.rsi/jellytoast.png | Bin 0 -> 669 bytes .../Consumable/Food/bay_food.rsi/jupiter.png | Bin 0 -> 338 bytes .../Consumable/Food/bay_food.rsi/kabob.png | Bin 0 -> 624 bytes .../Consumable/Food/bay_food.rsi/katsu.png | Bin 0 -> 708 bytes .../Consumable/Food/bay_food.rsi/ketchup.png | Bin 0 -> 333 bytes .../Food/bay_food.rsi/lemoncake.png | Bin 0 -> 975 bytes .../Food/bay_food.rsi/lemoncake_slice.png | Bin 0 -> 666 bytes .../Consumable/Food/bay_food.rsi/limecake.png | Bin 0 -> 1001 bytes .../Food/bay_food.rsi/limecake_slice.png | Bin 0 -> 681 bytes .../Food/bay_food.rsi/liquidfood.png | Bin 0 -> 647 bytes .../Food/bay_food.rsi/lizard_egg.png | Bin 0 -> 388 bytes .../Food/bay_food.rsi/loadedbakedpotato.png | Bin 0 -> 755 bytes .../Consumable/Food/bay_food.rsi/lunacake.png | Bin 0 -> 426 bytes .../Food/bay_food.rsi/lunacake_wrapped.png | Bin 0 -> 466 bytes .../Consumable/Food/bay_food.rsi/mars.png | Bin 0 -> 401 bytes .../Consumable/Food/bay_food.rsi/mayo.png | Bin 0 -> 327 bytes .../Consumable/Food/bay_food.rsi/meat.png | Bin 0 -> 511 bytes .../Consumable/Food/bay_food.rsi/meatball.png | Bin 0 -> 386 bytes .../Food/bay_food.rsi/meatballsoup.png | Bin 0 -> 611 bytes .../Food/bay_food.rsi/meatballspagetti.png | Bin 0 -> 721 bytes .../Food/bay_food.rsi/meatbread.png | Bin 0 -> 988 bytes .../Food/bay_food.rsi/meatbreadslice.png | Bin 0 -> 713 bytes .../Consumable/Food/bay_food.rsi/meatcube.png | Bin 0 -> 547 bytes .../Consumable/Food/bay_food.rsi/meatmre.png | Bin 0 -> 803 bytes .../Consumable/Food/bay_food.rsi/meatmre1.png | Bin 0 -> 819 bytes .../Consumable/Food/bay_food.rsi/meatpie.png | Bin 0 -> 606 bytes .../Food/bay_food.rsi/meatpizza.png | Bin 0 -> 911 bytes .../Food/bay_food.rsi/meatpizzaslice.png | Bin 0 -> 532 bytes .../Food/bay_food.rsi/meatsteak.png | Bin 0 -> 568 bytes .../Consumable/Food/bay_food.rsi/meta.json | 1231 +++++++++++++++++ .../Consumable/Food/bay_food.rsi/milosoup.png | Bin 0 -> 617 bytes .../Food/bay_food.rsi/mimeburger.png | Bin 0 -> 622 bytes .../Consumable/Food/bay_food.rsi/mint.png | Bin 0 -> 297 bytes .../Food/bay_food.rsi/mixedcondiments.png | Bin 0 -> 311 bytes .../Food/bay_food.rsi/mochicake_wrapped.png | Bin 0 -> 459 bytes .../Food/bay_food.rsi/monkeycube.png | Bin 0 -> 266 bytes .../Food/bay_food.rsi/monkeycubebox.png | Bin 0 -> 407 bytes .../Food/bay_food.rsi/monkeycubewrap.png | Bin 0 -> 225 bytes .../Food/bay_food.rsi/monkeysdelight.png | Bin 0 -> 749 bytes .../Food/bay_food.rsi/mooncake_wrapped.png | Bin 0 -> 545 bytes .../Consumable/Food/bay_food.rsi/mre.png | Bin 0 -> 796 bytes .../Consumable/Food/bay_food.rsi/mre1.png | Bin 0 -> 807 bytes .../Consumable/Food/bay_food.rsi/muffin.png | Bin 0 -> 389 bytes .../Food/bay_food.rsi/mushroompizza.png | Bin 0 -> 774 bytes .../Food/bay_food.rsi/mushroompizzaslice.png | Bin 0 -> 496 bytes .../Food/bay_food.rsi/mushroomsoup.png | Bin 0 -> 770 bytes .../Food/bay_food.rsi/mysterysoup.png | Bin 0 -> 1151 bytes .../Food/bay_food.rsi/nanopasta.png | Bin 0 -> 1649 bytes .../Food/bay_food.rsi/nettlesoup.png | Bin 0 -> 532 bytes .../Food/bay_food.rsi/oliveoilsmall.png | Bin 0 -> 331 bytes .../Consumable/Food/bay_food.rsi/omelette.png | Bin 0 -> 533 bytes .../Food/bay_food.rsi/onionrings.png | Bin 0 -> 549 bytes .../Food/bay_food.rsi/onionsoup.png | Bin 0 -> 518 bytes .../Consumable/Food/bay_food.rsi/oort.png | Bin 0 -> 263 bytes .../Food/bay_food.rsi/orangecake.png | Bin 0 -> 954 bytes .../Food/bay_food.rsi/orangecake_slice.png | Bin 0 -> 671 bytes .../Food/bay_food.rsi/oysters-rockefeller.png | Bin 0 -> 619 bytes .../Food/bay_food.rsi/packet_medium.png | Bin 0 -> 346 bytes .../Food/bay_food.rsi/packet_small.png | Bin 0 -> 302 bytes .../Food/bay_food.rsi/packet_small_black.png | Bin 0 -> 302 bytes .../Food/bay_food.rsi/packet_small_red.png | Bin 0 -> 308 bytes .../Food/bay_food.rsi/packet_small_white.png | Bin 0 -> 307 bytes .../Consumable/Food/bay_food.rsi/pancakes.png | Bin 0 -> 543 bytes .../Food/bay_food.rsi/pastatomato.png | Bin 0 -> 718 bytes .../Food/bay_food.rsi/peppermillsmall.png | Bin 0 -> 301 bytes .../Food/bay_food.rsi/phelmbiscuit.png | Bin 0 -> 670 bytes .../Consumable/Food/bay_food.rsi/pie.png | Bin 0 -> 595 bytes .../Food/bay_food.rsi/pistachios.png | Bin 0 -> 466 bytes .../Food/bay_food.rsi/pizzabox1.png | Bin 0 -> 279 bytes .../Food/bay_food.rsi/pizzabox2.png | Bin 0 -> 306 bytes .../Food/bay_food.rsi/pizzabox3.png | Bin 0 -> 308 bytes .../Food/bay_food.rsi/pizzabox4.png | Bin 0 -> 307 bytes .../Food/bay_food.rsi/pizzabox5.png | Bin 0 -> 321 bytes .../Food/bay_food.rsi/pizzabox_messy.png | Bin 0 -> 785 bytes .../Food/bay_food.rsi/pizzabox_open.png | Bin 0 -> 287 bytes .../Food/bay_food.rsi/pizzabox_tag.png | Bin 0 -> 187 bytes .../Food/bay_food.rsi/pizzamargherita.png | Bin 0 -> 762 bytes .../bay_food.rsi/pizzamargheritaslice.png | Bin 0 -> 497 bytes .../Food/bay_food.rsi/plaincake.png | Bin 0 -> 1057 bytes .../Food/bay_food.rsi/plaincake_slice.png | Bin 0 -> 684 bytes .../Food/bay_food.rsi/plump_pie.png | Bin 0 -> 496 bytes .../Consumable/Food/bay_food.rsi/pluto.png | Bin 0 -> 235 bytes .../Consumable/Food/bay_food.rsi/pokeys.png | Bin 0 -> 369 bytes .../Consumable/Food/bay_food.rsi/popcorn.png | Bin 0 -> 633 bytes .../Food/bay_food.rsi/poppypretzel.png | Bin 0 -> 1050 bytes .../Food/bay_food.rsi/pouch_medium.png | Bin 0 -> 489 bytes .../Food/bay_food.rsi/pouch_medium1.png | Bin 0 -> 557 bytes .../Food/bay_food.rsi/pouch_small.png | Bin 0 -> 451 bytes .../Food/bay_food.rsi/pouch_small1.png | Bin 0 -> 493 bytes .../Food/bay_food.rsi/proteinbar.png | Bin 0 -> 406 bytes .../Food/bay_food.rsi/pumpkinpie.png | Bin 0 -> 814 bytes .../Food/bay_food.rsi/pumpkinpieslice.png | Bin 0 -> 685 bytes .../Consumable/Food/bay_food.rsi/rawbacon.png | Bin 0 -> 427 bytes .../Food/bay_food.rsi/red-sun-special.png | Bin 0 -> 653 bytes .../Consumable/Food/bay_food.rsi/ricecake.png | Bin 0 -> 274 bytes .../Consumable/Food/bay_food.rsi/roburger.png | Bin 0 -> 858 bytes .../Food/bay_food.rsi/rofflewaffles.png | Bin 0 -> 427 bytes .../Food/bay_food.rsi/rottenmeat.png | Bin 0 -> 1915 bytes .../Consumable/Food/bay_food.rsi/rpudding.png | Bin 0 -> 593 bytes .../Consumable/Food/bay_food.rsi/salo.png | Bin 0 -> 307 bytes .../Consumable/Food/bay_food.rsi/salt.png | Bin 0 -> 519 bytes .../Food/bay_food.rsi/saltshakersmall.png | Bin 0 -> 241 bytes .../Consumable/Food/bay_food.rsi/sandwich.png | Bin 0 -> 941 bytes .../Food/bay_food.rsi/sandwich_filling.png | Bin 0 -> 321 bytes .../Food/bay_food.rsi/sandwich_top.png | Bin 0 -> 666 bytes .../Consumable/Food/bay_food.rsi/saturno.png | Bin 0 -> 332 bytes .../Consumable/Food/bay_food.rsi/sausage.png | Bin 0 -> 360 bytes .../Food/bay_food.rsi/sea-delight.png | Bin 0 -> 714 bytes .../Food/bay_food.rsi/seafood-paella.png | Bin 0 -> 528 bytes .../Consumable/Food/bay_food.rsi/semki.png | Bin 0 -> 402 bytes .../Food/bay_food.rsi/shrimp-cocktail.png | Bin 0 -> 372 bytes .../Food/bay_food.rsi/shrimp-tempura.png | Bin 0 -> 439 bytes .../Food/bay_food.rsi/skrellsnacks.png | Bin 0 -> 324 bytes .../Consumable/Food/bay_food.rsi/sosjerky.png | Bin 0 -> 475 bytes .../Consumable/Food/bay_food.rsi/soydope.png | Bin 0 -> 557 bytes .../Food/bay_food.rsi/soylent_green.png | Bin 0 -> 433 bytes .../Food/bay_food.rsi/soylent_yellow.png | Bin 0 -> 521 bytes .../Consumable/Food/bay_food.rsi/soysauce.png | Bin 0 -> 229 bytes .../Food/bay_food.rsi/space_twinkie.png | Bin 0 -> 455 bytes .../Food/bay_food.rsi/spacylibertyduff.png | Bin 0 -> 3732 bytes .../Consumable/Food/bay_food.rsi/spagetti.png | Bin 0 -> 626 bytes .../Food/bay_food.rsi/spagettiboiled.png | Bin 0 -> 694 bytes .../Food/bay_food.rsi/spellburger.png | Bin 0 -> 759 bytes .../Consumable/Food/bay_food.rsi/spesslaw.png | Bin 0 -> 677 bytes .../Food/bay_food.rsi/spiderleg.png | Bin 0 -> 483 bytes .../Food/bay_food.rsi/spiderleg_c.png | Bin 0 -> 522 bytes .../Consumable/Food/bay_food.rsi/squid.png | Bin 0 -> 431 bytes .../Food/bay_food.rsi/steamed-mussels.png | Bin 0 -> 652 bytes .../Consumable/Food/bay_food.rsi/stew.png | Bin 0 -> 643 bytes .../Food/bay_food.rsi/stewedsoymeat.png | Bin 0 -> 641 bytes .../Food/bay_food.rsi/stok-skewers.png | Bin 0 -> 632 bytes .../Food/bay_food.rsi/stuffed-clam.png | Bin 0 -> 707 bytes .../Consumable/Food/bay_food.rsi/stuffing.png | Bin 0 -> 1000 bytes .../Food/bay_food.rsi/sugarsmall.png | Bin 0 -> 228 bytes .../Food/bay_food.rsi/superbiteburger.png | Bin 0 -> 1200 bytes .../Food/bay_food.rsi/syndi_cakes.png | Bin 0 -> 436 bytes .../Consumable/Food/bay_food.rsi/taco.png | Bin 0 -> 561 bytes .../Food/bay_food.rsi/tastybread.png | Bin 0 -> 560 bytes .../Food/bay_food.rsi/threebread.png | Bin 0 -> 1164 bytes .../Consumable/Food/bay_food.rsi/tidegobs.png | Bin 0 -> 316 bytes .../Food/bay_food.rsi/toastedsandwich.png | Bin 0 -> 920 bytes .../Consumable/Food/bay_food.rsi/tofu.png | Bin 0 -> 405 bytes .../Food/bay_food.rsi/tofubread.png | Bin 0 -> 985 bytes .../Food/bay_food.rsi/tofubreadslice.png | Bin 0 -> 667 bytes .../Food/bay_food.rsi/tofuburger.png | Bin 0 -> 576 bytes .../Consumable/Food/bay_food.rsi/tofurkey.png | Bin 0 -> 1109 bytes .../Food/bay_food.rsi/tomatomeat.png | Bin 0 -> 490 bytes .../Food/bay_food.rsi/tomatosoup.png | Bin 0 -> 508 bytes .../Consumable/Food/bay_food.rsi/tray.png | Bin 0 -> 399 bytes .../Consumable/Food/bay_food.rsi/twobread.png | Bin 0 -> 1007 bytes .../Consumable/Food/bay_food.rsi/unscotti.png | Bin 0 -> 366 bytes .../Food/bay_food.rsi/unscottiloaf.png | Bin 0 -> 613 bytes .../Food/bay_food.rsi/validsalad.png | Bin 0 -> 697 bytes .../Food/bay_food.rsi/vegetablepizza.png | Bin 0 -> 905 bytes .../Food/bay_food.rsi/vegetablepizzaslice.png | Bin 0 -> 537 bytes .../Food/bay_food.rsi/vegetablesoup.png | Bin 0 -> 620 bytes .../Consumable/Food/bay_food.rsi/vegmre.png | Bin 0 -> 803 bytes .../Consumable/Food/bay_food.rsi/vegmre1.png | Bin 0 -> 818 bytes .../Consumable/Food/bay_food.rsi/venus.png | Bin 0 -> 312 bytes .../Consumable/Food/bay_food.rsi/vinegar.png | Bin 0 -> 300 bytes .../Consumable/Food/bay_food.rsi/waffles.png | Bin 0 -> 519 bytes .../Food/bay_food.rsi/watermelonslice.png | Bin 0 -> 368 bytes .../Food/bay_food.rsi/weebonuts.png | Bin 0 -> 302 bytes .../Consumable/Food/bay_food.rsi/wishsoup.png | Bin 0 -> 556 bytes .../Consumable/Food/bay_food.rsi/xburger.png | Bin 0 -> 649 bytes .../Food/bay_food.rsi/xenobreadslice.png | Bin 0 -> 861 bytes .../Consumable/Food/bay_food.rsi/xenomeat.png | Bin 0 -> 562 bytes .../Food/bay_food.rsi/xenomeatbread.png | Bin 0 -> 1364 bytes .../Food/bay_food.rsi/xenomeatpie.png | Bin 0 -> 609 bytes .../Food/bay_food_bugmeat.rsi/bacon.png | Bin 0 -> 354 bytes .../Food/bay_food_bugmeat.rsi/box-open.png | Bin 0 -> 549 bytes .../Food/bay_food_bugmeat.rsi/box.png | Bin 0 -> 483 bytes .../Food/bay_food_bugmeat.rsi/cutlet.png | Bin 0 -> 657 bytes .../Food/bay_food_bugmeat.rsi/meta.json | 29 + .../Food/bay_food_bugmeat.rsi/rawbacon.png | Bin 0 -> 352 bytes .../Food/bay_food_bugmeat.rsi/rawcutlet.png | Bin 0 -> 658 bytes .../Food/bay_food_canned.rsi/beans-open.png | Bin 0 -> 448 bytes .../Food/bay_food_canned.rsi/beans.png | Bin 0 -> 371 bytes .../Food/bay_food_canned.rsi/beef-open.png | Bin 0 -> 449 bytes .../Food/bay_food_canned.rsi/beef.png | Bin 0 -> 394 bytes .../Food/bay_food_canned.rsi/berries-open.png | Bin 0 -> 521 bytes .../Food/bay_food_canned.rsi/berries.png | Bin 0 -> 425 bytes .../Food/bay_food_canned.rsi/blank-open.png | Bin 0 -> 366 bytes .../Food/bay_food_canned.rsi/blank.png | Bin 0 -> 340 bytes .../bay_food_canned.rsi/carpeggs-open.png | Bin 0 -> 396 bytes .../Food/bay_food_canned.rsi/carpeggs.png | Bin 0 -> 334 bytes .../bay_food_canned.rsi/fisheggs-open.png | Bin 0 -> 364 bytes .../Food/bay_food_canned.rsi/fisheggs.png | Bin 0 -> 320 bytes .../Food/bay_food_canned.rsi/meta.json | 59 + .../Food/bay_food_canned.rsi/spinach-open.png | Bin 0 -> 450 bytes .../Food/bay_food_canned.rsi/spinach.png | Bin 0 -> 381 bytes .../Food/bay_food_canned.rsi/tomato-open.png | Bin 0 -> 432 bytes .../Food/bay_food_canned.rsi/tomato.png | Bin 0 -> 395 bytes .../Food/bay_food_custom.rsi/bar.png | Bin 0 -> 286 bytes .../Food/bay_food_custom.rsi/bar_filling.png | Bin 0 -> 198 bytes .../Food/bay_food_custom.rsi/breadcustom.png | Bin 0 -> 987 bytes .../breadcustom_filling.png | Bin 0 -> 302 bytes .../bay_food_custom.rsi/breadcustom_slice.png | Bin 0 -> 680 bytes .../breadcustom_slice_filling.png | Bin 0 -> 251 bytes .../Food/bay_food_custom.rsi/cakecustom.png | Bin 0 -> 977 bytes .../cakecustom_filling.png | Bin 0 -> 245 bytes .../bay_food_custom.rsi/cakecustom_slice.png | Bin 0 -> 682 bytes .../cakecustom_slice_filling.png | Bin 0 -> 214 bytes .../Food/bay_food_custom.rsi/cookie.png | Bin 0 -> 436 bytes .../bay_food_custom.rsi/cookie_filling.png | Bin 0 -> 204 bytes .../Food/bay_food_custom.rsi/customburger.png | Bin 0 -> 543 bytes .../customburger_filling.png | Bin 0 -> 260 bytes .../Food/bay_food_custom.rsi/donk.png | Bin 0 -> 328 bytes .../Food/bay_food_custom.rsi/donk_filling.png | Bin 0 -> 217 bytes .../Food/bay_food_custom.rsi/donut.png | Bin 0 -> 503 bytes .../bay_food_custom.rsi/donut_filling.png | Bin 0 -> 366 bytes .../Food/bay_food_custom.rsi/jawbreaker.png | Bin 0 -> 352 bytes .../jawbreaker_filling.png | Bin 0 -> 352 bytes .../Food/bay_food_custom.rsi/jellycustom.png | Bin 0 -> 547 bytes .../jellycustom_filling.png | Bin 0 -> 411 bytes .../Food/bay_food_custom.rsi/kabob.png | Bin 0 -> 519 bytes .../bay_food_custom.rsi/kabob_filling.png | Bin 0 -> 463 bytes .../Food/bay_food_custom.rsi/meta.json | 152 ++ .../bay_food_custom.rsi/pancakescustom.png | Bin 0 -> 546 bytes .../pancakescustom_filling.png | Bin 0 -> 206 bytes .../Food/bay_food_custom.rsi/piecustom.png | Bin 0 -> 514 bytes .../bay_food_custom.rsi/piecustom_filling.png | Bin 0 -> 380 bytes .../Food/bay_food_custom.rsi/pizza.png | Bin 0 -> 798 bytes .../bay_food_custom.rsi/pizza_filling.png | Bin 0 -> 222 bytes .../Food/bay_food_custom.rsi/pizza_slice.png | Bin 0 -> 494 bytes .../pizza_slice_filling.png | Bin 0 -> 199 bytes .../Food/bay_food_custom.rsi/serving_bowl.png | Bin 0 -> 416 bytes .../bay_food_custom.rsi/serving_bowl_1.png | Bin 0 -> 208 bytes .../bay_food_custom.rsi/serving_bowl_2.png | Bin 0 -> 220 bytes .../bay_food_custom.rsi/serving_bowl_3.png | Bin 0 -> 232 bytes .../bay_food_custom.rsi/serving_bowl_4.png | Bin 0 -> 339 bytes .../Food/bay_food_custom.rsi/shreds.png | Bin 0 -> 376 bytes .../bay_food_custom.rsi/shreds_filling.png | Bin 0 -> 376 bytes .../Food/bay_food_custom.rsi/stew.png | Bin 0 -> 614 bytes .../Food/bay_food_custom.rsi/stew_filling.png | Bin 0 -> 270 bytes .../Food/bay_food_custom.rsi/stuffing.png | Bin 0 -> 943 bytes .../bay_food_custom.rsi/stuffing_filling.png | Bin 0 -> 477 bytes .../Food/bay_food_custom.rsi/sucker.png | Bin 0 -> 348 bytes .../bay_food_custom.rsi/sucker_filling.png | Bin 0 -> 314 bytes .../Food/bay_food_custom.rsi/waffles.png | Bin 0 -> 519 bytes .../bay_food_custom.rsi/waffles_filling.png | Bin 0 -> 255 bytes .../Food/bay_food_ingredients.rsi/bun.png | Bin 0 -> 304 bytes .../Food/bay_food_ingredients.rsi/cutlet.png | Bin 0 -> 490 bytes .../Food/bay_food_ingredients.rsi/dough.png | Bin 0 -> 330 bytes .../bay_food_ingredients.rsi/doughslice.png | Bin 0 -> 670 bytes .../Food/bay_food_ingredients.rsi/egg.png | Bin 0 -> 340 bytes .../bay_food_ingredients.rsi/flat_dough.png | Bin 0 -> 405 bytes .../bay_food_ingredients.rsi/flatbread.png | Bin 0 -> 303 bytes .../bay_food_ingredients.rsi/lizard_egg.png | Bin 0 -> 388 bytes .../bay_food_ingredients.rsi/meatball.png | Bin 0 -> 386 bytes .../Food/bay_food_ingredients.rsi/meta.json | 50 + .../bay_food_ingredients.rsi/rawcutlet.png | Bin 0 -> 445 bytes .../bay_food_ingredients.rsi/rawmeatball.png | Bin 0 -> 368 bytes .../bay_food_ingredients.rsi/rawsticks.png | Bin 0 -> 1060 bytes .../Food/bay_food_ingredients.rsi/sausage.png | Bin 0 -> 310 bytes .../Food/bay_food_shellfish.rsi/.png | Bin 0 -> 267 bytes .../Food/bay_food_shellfish.rsi/clam.png | Bin 0 -> 497 bytes .../bay_food_shellfish.rsi/clam_empty.png | Bin 0 -> 513 bytes .../Food/bay_food_shellfish.rsi/clam_open.png | Bin 0 -> 622 bytes .../Food/bay_food_shellfish.rsi/crab.png | Bin 0 -> 454 bytes .../Food/bay_food_shellfish.rsi/crab_meat.png | Bin 0 -> 461 bytes .../Food/bay_food_shellfish.rsi/meta.json | 53 + .../Food/bay_food_shellfish.rsi/mussel.png | Bin 0 -> 327 bytes .../bay_food_shellfish.rsi/mussel_empty.png | Bin 0 -> 347 bytes .../bay_food_shellfish.rsi/mussel_open.png | Bin 0 -> 399 bytes .../Food/bay_food_shellfish.rsi/oyster.png | Bin 0 -> 448 bytes .../bay_food_shellfish.rsi/oyster_empty.png | Bin 0 -> 569 bytes .../bay_food_shellfish.rsi/oyster_open.png | Bin 0 -> 605 bytes .../Food/bay_food_shellfish.rsi/shrimp.png | Bin 0 -> 445 bytes .../bay_food_shellfish.rsi/shrimp_meat.png | Bin 0 -> 422 bytes .../Food/bay_trash.rsi/4no_raisins.png | Bin 0 -> 649 bytes .../Consumable/Food/bay_trash.rsi/beans.png | Bin 0 -> 440 bytes .../Consumable/Food/bay_trash.rsi/beef.png | Bin 0 -> 463 bytes .../Consumable/Food/bay_trash.rsi/berries.png | Bin 0 -> 501 bytes .../Consumable/Food/bay_trash.rsi/blank.png | Bin 0 -> 366 bytes .../Food/bay_trash.rsi/cakewrap.png | Bin 0 -> 248 bytes .../Consumable/Food/bay_trash.rsi/candy.png | Bin 0 -> 713 bytes .../Food/bay_trash.rsi/carpeggs.png | Bin 0 -> 387 bytes .../Food/bay_trash.rsi/cheesie_honkers.png | Bin 0 -> 685 bytes .../Consumable/Food/bay_trash.rsi/chips.png | Bin 0 -> 597 bytes .../Consumable/Food/bay_trash.rsi/corncob.png | Bin 0 -> 463 bytes .../Food/bay_trash.rsi/croutons.png | Bin 0 -> 514 bytes .../Food/bay_trash.rsi/driedfish.png | Bin 0 -> 490 bytes .../Food/bay_trash.rsi/fisheggs.png | Bin 0 -> 372 bytes .../Food/bay_trash.rsi/hollowcoconut.png | Bin 0 -> 311 bytes .../Food/bay_trash.rsi/hollowpineapple.png | Bin 0 -> 337 bytes .../Consumable/Food/bay_trash.rsi/jupiter.png | Bin 0 -> 311 bytes .../Food/bay_trash.rsi/liquidfood.png | Bin 0 -> 682 bytes .../Food/bay_trash.rsi/liquidfood_old.png | Bin 0 -> 696 bytes .../Consumable/Food/bay_trash.rsi/mars.png | Bin 0 -> 449 bytes .../Consumable/Food/bay_trash.rsi/meta.json | 164 +++ .../Food/bay_trash.rsi/mochicakewrap.png | Bin 0 -> 334 bytes .../Food/bay_trash.rsi/monkeywrap.png | Bin 0 -> 281 bytes .../Food/bay_trash.rsi/mooncakewrap.png | Bin 0 -> 479 bytes .../Consumable/Food/bay_trash.rsi/oort.png | Bin 0 -> 272 bytes .../Food/bay_trash.rsi/pistachios_pack.png | Bin 0 -> 602 bytes .../Food/bay_trash.rsi/plasticbag.png | Bin 0 -> 331 bytes .../Consumable/Food/bay_trash.rsi/plate.png | Bin 0 -> 394 bytes .../Consumable/Food/bay_trash.rsi/pluto.png | Bin 0 -> 234 bytes .../Consumable/Food/bay_trash.rsi/popcorn.png | Bin 0 -> 583 bytes .../Food/bay_trash.rsi/proteinbar.png | Bin 0 -> 649 bytes .../Consumable/Food/bay_trash.rsi/salo.png | Bin 0 -> 404 bytes .../Consumable/Food/bay_trash.rsi/saturno.png | Bin 0 -> 363 bytes .../Food/bay_trash.rsi/semki_pack.png | Bin 0 -> 636 bytes .../Food/bay_trash.rsi/snack_bowl.png | Bin 0 -> 592 bytes .../Food/bay_trash.rsi/sosjerky.png | Bin 0 -> 601 bytes .../Consumable/Food/bay_trash.rsi/spinach.png | Bin 0 -> 454 bytes .../Consumable/Food/bay_trash.rsi/squid.png | Bin 0 -> 439 bytes .../Consumable/Food/bay_trash.rsi/stick.png | Bin 0 -> 187 bytes .../Food/bay_trash.rsi/syndi_cakes.png | Bin 0 -> 533 bytes .../Food/bay_trash.rsi/tastybread.png | Bin 0 -> 605 bytes .../Food/bay_trash.rsi/tidegobs.png | Bin 0 -> 302 bytes .../Consumable/Food/bay_trash.rsi/tomato.png | Bin 0 -> 471 bytes .../Food/bay_trash.rsi/trashbag0.png | Bin 0 -> 378 bytes .../Food/bay_trash.rsi/trashbag1.png | Bin 0 -> 436 bytes .../Food/bay_trash.rsi/trashbag2.png | Bin 0 -> 483 bytes .../Food/bay_trash.rsi/trashbag3.png | Bin 0 -> 499 bytes .../Consumable/Food/bay_trash.rsi/tray.png | Bin 0 -> 815 bytes .../Food/bay_trash.rsi/usedplatter.png | Bin 0 -> 591 bytes .../Consumable/Food/bay_trash.rsi/venus.png | Bin 0 -> 321 bytes .../Consumable/Food/bay_trash.rsi/waffles.png | Bin 0 -> 523 bytes .../Food/bay_trash.rsi/weebonuts.png | Bin 0 -> 369 bytes .../Objects/Specific/barbershop.rsi/dye-e.png | Bin 0 -> 305 bytes .../Objects/Specific/barbershop.rsi/dye-f.png | Bin 0 -> 325 bytes .../Objects/Specific/barbershop.rsi/dye.png | Bin 0 -> 517 bytes .../Specific/barbershop.rsi/dye_color.png | Bin 0 -> 302 bytes .../Objects/Specific/barbershop.rsi/meta.json | 35 + .../Specific/barbershop.rsi/razorblade.png | Bin 0 -> 410 bytes .../Specific/barbershop.rsi/scissors.png | Bin 0 -> 335 bytes .../Specific/barbershop.rsi/tonic0.png | Bin 0 -> 294 bytes .../Specific/barbershop.rsi/tonic1.png | Bin 0 -> 327 bytes .../adh.rsi/adh-tool-broken.png | Bin 0 -> 3073 bytes .../VendingMachines/adh.rsi/adh-tool-deny.png | Bin 0 -> 3671 bytes .../VendingMachines/adh.rsi/adh-tool-off.png | Bin 0 -> 2122 bytes .../adh.rsi/adh-tool-panel.png | Bin 0 -> 768 bytes .../VendingMachines/adh.rsi/adh-tool-vend.png | Bin 0 -> 2770 bytes .../VendingMachines/adh.rsi/adh-tool.png | Bin 0 -> 2135 bytes .../VendingMachines/adh.rsi/meta.json | 91 ++ .../VendingMachines/cigs.rsi/broken.png | Bin 534 -> 2365 bytes .../cigs.rsi/deny-unshaded.png | Bin 530 -> 667 bytes .../cigs.rsi/eject-unshaded.png | Bin 526 -> 870 bytes .../VendingMachines/cigs.rsi/meta.json | 72 +- .../cigs.rsi/normal-unshaded.png | Bin 352 -> 466 bytes .../Machines/VendingMachines/cigs.rsi/off.png | Bin 415 -> 1224 bytes .../VendingMachines/cigs.rsi/panel.png | Bin 293 -> 668 bytes .../VendingMachines/coffee.rsi/broken.png | Bin 476 -> 1259 bytes .../coffee.rsi/coffee-hellfire.png | Bin 0 -> 1709 bytes .../coffee.rsi/deny-unshaded.png | Bin 253 -> 717 bytes .../coffee.rsi/eject-unshaded.png | Bin 699 -> 1629 bytes .../VendingMachines/coffee.rsi/meta.json | 166 ++- .../coffee.rsi/normal-unshaded.png | Bin 153 -> 898 bytes .../VendingMachines/coffee.rsi/off.png | Bin 390 -> 890 bytes .../VendingMachines/coffee.rsi/panel.png | Bin 304 -> 367 bytes .../VendingMachines/coffee.rsi/screen.png | Bin 457 -> 741 bytes .../VendingMachines/cola.rsi/broken.png | Bin 854 -> 2408 bytes .../cola.rsi/deny-unshaded.png | Bin 588 -> 779 bytes .../cola.rsi/eject-unshaded.png | Bin 683 -> 1014 bytes .../VendingMachines/cola.rsi/meta.json | 72 +- .../cola.rsi/normal-unshaded.png | Bin 719 -> 460 bytes .../Machines/VendingMachines/cola.rsi/off.png | Bin 617 -> 733 bytes .../VendingMachines/cola.rsi/panel.png | Bin 244 -> 623 bytes .../VendingMachines/dinnerware.rsi/broken.png | Bin 830 -> 2100 bytes .../dinnerware.rsi/deny-unshaded.png | Bin 0 -> 10244 bytes .../dinnerware.rsi/eject-unshaded.png | Bin 1273 -> 2220 bytes .../VendingMachines/dinnerware.rsi/meta.json | 93 +- .../dinnerware.rsi/normal-unshaded.png | Bin 960 -> 969 bytes .../VendingMachines/dinnerware.rsi/off.png | Bin 517 -> 1458 bytes .../VendingMachines/dinnerware.rsi/panel.png | Bin 228 -> 623 bytes .../dryingrack.rsi/drying_rack-close-off.png | Bin 0 -> 971 bytes .../dryingrack.rsi/drying_rack-close.png | Bin 0 -> 1564 bytes .../dryingrack.rsi/drying_rack-off.png | Bin 0 -> 981 bytes .../dryingrack.rsi/drying_rack-plant-off.png | Bin 0 -> 1213 bytes .../dryingrack.rsi/drying_rack-plant.png | Bin 0 -> 1190 bytes .../dryingrack.rsi/drying_rack.png | Bin 0 -> 1026 bytes .../VendingMachines/dryingrack.rsi/meta.json | 61 + .../VendingMachines/engivend.rsi/broken.png | Bin 823 -> 3163 bytes .../engivend.rsi/deny-unshaded.png | Bin 328 -> 843 bytes .../engivend.rsi/eject-unshaded.png | Bin 1252 -> 490 bytes .../VendingMachines/engivend.rsi/meta.json | 75 +- .../engivend.rsi/normal-unshaded.png | Bin 1323 -> 384 bytes .../VendingMachines/engivend.rsi/off.png | Bin 584 -> 944 bytes .../VendingMachines/engivend.rsi/panel.png | Bin 245 -> 768 bytes .../engivend_green.rsi/broken.png | Bin 0 -> 3381 bytes .../engivend_green.rsi/deny-unshaded.png | Bin 0 -> 13798 bytes .../engivend_green.rsi/eject-unshaded.png | Bin 0 -> 11647 bytes .../engivend_green.rsi/meta.json | 91 ++ .../engivend_green.rsi/normal-unshaded.png | Bin 0 -> 1308 bytes .../engivend_green.rsi/off.png | Bin 0 -> 2618 bytes .../engivend_green.rsi/panel.png | Bin 0 -> 758 bytes .../VendingMachines/fitness.rsi/broken.png | Bin 0 -> 2659 bytes .../fitness.rsi/deny-unshaded.png | Bin 0 -> 870 bytes .../fitness.rsi/eject-unshaded.png | Bin 0 -> 911 bytes .../VendingMachines/fitness.rsi/meta.json | 165 +++ .../fitness.rsi/normal-unshaded.png | Bin 0 -> 755 bytes .../VendingMachines/fitness.rsi/off.png | Bin 0 -> 1614 bytes .../VendingMachines/fitness.rsi/panel.png | Bin 0 -> 627 bytes .../VendingMachines/fitness.rsi/screen.png | Bin 0 -> 1548 bytes .../fridgecontents.rsi/chem-1-off.png | Bin 0 -> 594 bytes .../fridgecontents.rsi/chem-1.png | Bin 0 -> 600 bytes .../fridgecontents.rsi/chem-2-off.png | Bin 0 -> 687 bytes .../fridgecontents.rsi/chem-2.png | Bin 0 -> 705 bytes .../fridgecontents.rsi/chem-3-off.png | Bin 0 -> 758 bytes .../fridgecontents.rsi/chem-3.png | Bin 0 -> 787 bytes .../fridgecontents.rsi/chem-4-off.png | Bin 0 -> 794 bytes .../fridgecontents.rsi/chem-4.png | Bin 0 -> 832 bytes .../fridgecontents.rsi/drink-1-off.png | Bin 0 -> 557 bytes .../fridgecontents.rsi/drink-1.png | Bin 0 -> 567 bytes .../fridgecontents.rsi/drink-2-off.png | Bin 0 -> 643 bytes .../fridgecontents.rsi/drink-2.png | Bin 0 -> 655 bytes .../fridgecontents.rsi/drink-3-off.png | Bin 0 -> 741 bytes .../fridgecontents.rsi/drink-3.png | Bin 0 -> 760 bytes .../fridgecontents.rsi/drink-4-off.png | Bin 0 -> 831 bytes .../fridgecontents.rsi/drink-4.png | Bin 0 -> 856 bytes .../fridgecontents.rsi/empty-off.png | Bin 0 -> 428 bytes .../fridgecontents.rsi/empty.png | Bin 0 -> 437 bytes .../fridgecontents.rsi/food-1-off.png | Bin 0 -> 536 bytes .../fridgecontents.rsi/food-1.png | Bin 0 -> 545 bytes .../fridgecontents.rsi/food-2-off.png | Bin 0 -> 667 bytes .../fridgecontents.rsi/food-2.png | Bin 0 -> 686 bytes .../fridgecontents.rsi/food-3-off.png | Bin 0 -> 832 bytes .../fridgecontents.rsi/food-3.png | Bin 0 -> 856 bytes .../fridgecontents.rsi/food-4-off.png | Bin 0 -> 980 bytes .../fridgecontents.rsi/food-4.png | Bin 0 -> 1011 bytes .../fridgecontents.rsi/meta.json | 147 ++ .../fridgecontents.rsi/slime-1-off.png | Bin 0 -> 588 bytes .../fridgecontents.rsi/slime-1.png | Bin 0 -> 619 bytes .../fridgecontents.rsi/slime-2-off.png | Bin 0 -> 749 bytes .../fridgecontents.rsi/slime-2.png | Bin 0 -> 772 bytes .../fridgecontents.rsi/slime-3-off.png | Bin 0 -> 827 bytes .../fridgecontents.rsi/slime-3.png | Bin 0 -> 854 bytes .../fridgecontents.rsi/slime-4-off.png | Bin 0 -> 943 bytes .../fridgecontents.rsi/slime-4.png | Bin 0 -> 969 bytes .../fridgedark.rsi/fridge_dark-broken.png | Bin 0 -> 2125 bytes .../fridgedark.rsi/fridge_dark-deny.png | Bin 0 -> 2946 bytes .../fridgedark.rsi/fridge_dark-off.png | Bin 0 -> 1431 bytes .../fridge_dark-panel-broken.png | Bin 0 -> 662 bytes .../fridgedark.rsi/fridge_dark-panel.png | Bin 0 -> 617 bytes .../fridgedark.rsi/fridge_dark-sidepanel.png | Bin 0 -> 599 bytes .../fridgedark.rsi/fridge_dark-top-broken.png | Bin 0 -> 525 bytes .../fridgedark.rsi/fridge_dark-top.png | Bin 0 -> 362 bytes .../fridgedark.rsi/fridge_dark-vend.png | Bin 0 -> 2621 bytes .../fridgedark.rsi/fridge_dark.png | Bin 0 -> 1460 bytes .../VendingMachines/fridgedark.rsi/meta.json | 197 +++ .../fridgedark.rsi/screen_small.png | Bin 0 -> 1766 bytes .../fridgedrink.rsi/fridge_drinks-broken.png | Bin 0 -> 2138 bytes .../fridgedrink.rsi/fridge_drinks-deny.png | Bin 0 -> 3002 bytes .../fridgedrink.rsi/fridge_drinks-off.png | Bin 0 -> 1432 bytes .../fridge_drinks-panel-broken.png | Bin 0 -> 638 bytes .../fridgedrink.rsi/fridge_drinks-panel.png | Bin 0 -> 631 bytes .../fridge_drinks-sidepanel.png | Bin 0 -> 553 bytes .../fridge_drinks-top-broken.png | Bin 0 -> 541 bytes .../fridgedrink.rsi/fridge_drinks-top.png | Bin 0 -> 367 bytes .../fridgedrink.rsi/fridge_drinks-vend.png | Bin 0 -> 2691 bytes .../fridgedrink.rsi/fridge_drinks.png | Bin 0 -> 1448 bytes .../VendingMachines/fridgedrink.rsi/meta.json | 197 +++ .../fridgedrink.rsi/screen_small.png | Bin 0 -> 1766 bytes .../fridgefood.rsi/fridge_food-broken.png | Bin 0 -> 2139 bytes .../fridgefood.rsi/fridge_food-deny.png | Bin 0 -> 3003 bytes .../fridgefood.rsi/fridge_food-off.png | Bin 0 -> 1419 bytes .../fridge_food-panel-broken.png | Bin 0 -> 638 bytes .../fridgefood.rsi/fridge_food-panel.png | Bin 0 -> 631 bytes .../fridgefood.rsi/fridge_food-sidepanel.png | Bin 0 -> 553 bytes .../fridgefood.rsi/fridge_food-top-broken.png | Bin 0 -> 541 bytes .../fridgefood.rsi/fridge_food-top.png | Bin 0 -> 367 bytes .../fridgefood.rsi/fridge_food-vend.png | Bin 0 -> 2051 bytes .../fridgefood.rsi/fridge_food.png | Bin 0 -> 1434 bytes .../VendingMachines/fridgefood.rsi/meta.json | 189 +++ .../fridgefood.rsi/screen_small.png | Bin 0 -> 1766 bytes .../fridgesci.rsi/fridge_sci-broken.png | Bin 0 -> 2106 bytes .../fridgesci.rsi/fridge_sci-deny.png | Bin 0 -> 3242 bytes .../fridgesci.rsi/fridge_sci-off.png | Bin 0 -> 1540 bytes .../fridgesci.rsi/fridge_sci-panel.png | Bin 0 -> 604 bytes .../fridge_sci-sidepanel-broken.png | Bin 0 -> 590 bytes .../fridgesci.rsi/fridge_sci-sidepanel.png | Bin 0 -> 496 bytes .../fridgesci.rsi/fridge_sci-top-broken.png | Bin 0 -> 577 bytes .../fridgesci.rsi/fridge_sci-top.png | Bin 0 -> 462 bytes .../fridgesci.rsi/fridge_sci-vend.png | Bin 0 -> 2241 bytes .../fridgesci.rsi/fridge_sci.png | Bin 0 -> 1577 bytes .../VendingMachines/fridgesci.rsi/meta.json | 193 +++ .../fridgesci.rsi/screen_big.png | Bin 0 -> 1957 bytes .../VendingMachines/games.rsi/broken.png | Bin 1087 -> 2752 bytes .../games.rsi/deny-unshaded.png | Bin 0 -> 1568 bytes .../games.rsi/eject-unshaded.png | Bin 9387 -> 1939 bytes .../VendingMachines/games.rsi/meta.json | 126 +- .../games.rsi/normal-unshaded.png | Bin 13122 -> 1299 bytes .../VendingMachines/games.rsi/off.png | Bin 648 -> 2031 bytes .../VendingMachines/games.rsi/panel.png | Bin 244 -> 662 bytes .../VendingMachines/generic.rsi/broken.png | Bin 0 -> 2121 bytes .../generic.rsi/deny-unshaded.png | Bin 0 -> 1055 bytes .../generic.rsi/eject-unshaded.png | Bin 0 -> 1268 bytes .../VendingMachines/generic.rsi/meta.json | 87 ++ .../generic.rsi/normal-unshaded.png | Bin 0 -> 916 bytes .../VendingMachines/generic.rsi/off.png | Bin 0 -> 1427 bytes .../VendingMachines/generic.rsi/panel.png | Bin 0 -> 666 bytes .../VendingMachines/hotfood.rsi/broken.png | Bin 0 -> 2335 bytes .../hotfood.rsi/deny-unshaded.png | Bin 0 -> 1302 bytes .../hotfood.rsi/eject-unshaded.png | Bin 0 -> 1685 bytes .../VendingMachines/hotfood.rsi/heater.png | Bin 0 -> 1015 bytes .../VendingMachines/hotfood.rsi/meta.json | 187 +++ .../hotfood.rsi/normal-unshaded.png | Bin 0 -> 3201 bytes .../VendingMachines/hotfood.rsi/off.png | Bin 0 -> 1720 bytes .../VendingMachines/hotfood.rsi/panel.png | Bin 0 -> 598 bytes .../VendingMachines/laptop.rsi/broken.png | Bin 0 -> 2193 bytes .../laptop.rsi/deny-unshaded.png | Bin 0 -> 1453 bytes .../laptop.rsi/eject-unshaded.png | Bin 0 -> 879 bytes .../VendingMachines/laptop.rsi/meta.json | 95 ++ .../laptop.rsi/normal-unshaded.png | Bin 0 -> 729 bytes .../VendingMachines/laptop.rsi/off.png | Bin 0 -> 1491 bytes .../VendingMachines/laptop.rsi/panel.png | Bin 0 -> 611 bytes .../VendingMachines/lavatory.rsi/broken.png | Bin 0 -> 2869 bytes .../lavatory.rsi/deny-unshaded.png | Bin 0 -> 1266 bytes .../lavatory.rsi/eject-unshaded.png | Bin 0 -> 1552 bytes .../VendingMachines/lavatory.rsi/meta.json | 109 ++ .../lavatory.rsi/normal-unshaded.png | Bin 0 -> 1058 bytes .../VendingMachines/lavatory.rsi/off.png | Bin 0 -> 1588 bytes .../VendingMachines/lavatory.rsi/panel.png | Bin 0 -> 649 bytes .../VendingMachines/magivend.rsi/broken.png | Bin 872 -> 2617 bytes .../magivend.rsi/deny-unshaded.png | Bin 0 -> 1834 bytes .../magivend.rsi/eject-unshaded.png | Bin 0 -> 2333 bytes .../VendingMachines/magivend.rsi/meta.json | 94 +- .../magivend.rsi/normal-unshaded.png | Bin 802 -> 2100 bytes .../VendingMachines/magivend.rsi/off.png | Bin 571 -> 2111 bytes .../VendingMachines/magivend.rsi/panel.png | Bin 244 -> 629 bytes .../VendingMachines/medivend.rsi/broken.png | Bin 0 -> 2842 bytes .../medivend.rsi/deny-unshaded.png | Bin 0 -> 2563 bytes .../medivend.rsi/eject-unshaded.png | Bin 0 -> 1409 bytes .../VendingMachines/medivend.rsi/meta.json | 91 ++ .../medivend.rsi/normal-unshaded.png | Bin 0 -> 1042 bytes .../VendingMachines/medivend.rsi/off.png | Bin 0 -> 2278 bytes .../VendingMachines/medivend.rsi/panel.png | Bin 0 -> 758 bytes .../VendingMachines/misc.rsi/cooler.png | Bin 0 -> 679 bytes .../misc.rsi/green-outline.png | Bin 0 -> 2230 bytes .../VendingMachines/misc.rsi/heater.png | Bin 0 -> 812 bytes .../VendingMachines/misc.rsi/meta.json | 213 +++ .../VendingMachines/misc.rsi/sparks.png | Bin 0 -> 1670 bytes .../misc.rsi/water_cooler-broken.png | Bin 0 -> 1056 bytes .../misc.rsi/water_cooler-vend.png | Bin 0 -> 2702 bytes .../VendingMachines/misc.rsi/water_cooler.png | Bin 0 -> 941 bytes .../VendingMachines/nutri.rsi/broken.png | Bin 886 -> 2553 bytes .../nutri.rsi/deny-unshaded.png | Bin 698 -> 1861 bytes .../nutri.rsi/eject-unshaded.png | Bin 1401 -> 1066 bytes .../VendingMachines/nutri.rsi/meta.json | 73 +- .../nutri.rsi/normal-unshaded.png | Bin 1505 -> 830 bytes .../VendingMachines/nutri.rsi/off.png | Bin 558 -> 1754 bytes .../VendingMachines/nutri.rsi/panel.png | Bin 244 -> 758 bytes .../nutri_green.rsi/broken.png | Bin 0 -> 2634 bytes .../nutri_green.rsi/deny-unshaded.png | Bin 0 -> 2264 bytes .../nutri_green.rsi/eject-unshaded.png | Bin 0 -> 1360 bytes .../VendingMachines/nutri_green.rsi/meta.json | 87 ++ .../nutri_green.rsi/normal-unshaded.png | Bin 0 -> 989 bytes .../VendingMachines/nutri_green.rsi/off.png | Bin 0 -> 2241 bytes .../VendingMachines/nutri_green.rsi/panel.png | Bin 0 -> 762 bytes .../VendingMachines/robotics.rsi/broken.png | Bin 505 -> 2887 bytes .../robotics.rsi/deny-unshaded.png | Bin 481 -> 2539 bytes .../robotics.rsi/eject-unshaded.png | Bin 580 -> 1378 bytes .../VendingMachines/robotics.rsi/meta.json | 76 +- .../robotics.rsi/normal-unshaded.png | Bin 610 -> 1003 bytes .../VendingMachines/robotics.rsi/off.png | Bin 427 -> 2321 bytes .../VendingMachines/robotics.rsi/panel.png | Bin 217 -> 756 bytes .../VendingMachines/security.rsi/broken.png | Bin 0 -> 2811 bytes .../security.rsi/deny-unshaded.png | Bin 0 -> 2101 bytes .../security.rsi/eject-unshaded.png | Bin 0 -> 1174 bytes .../VendingMachines/security.rsi/meta.json | 91 ++ .../security.rsi/normal-unshaded.png | Bin 0 -> 11132 bytes .../VendingMachines/security.rsi/off.png | Bin 0 -> 2211 bytes .../VendingMachines/security.rsi/panel.png | Bin 0 -> 758 bytes .../VendingMachines/seeds.rsi/broken.png | Bin 850 -> 2566 bytes .../seeds.rsi/deny-unshaded.png | Bin 632 -> 2533 bytes .../seeds.rsi/eject-unshaded.png | Bin 1326 -> 1748 bytes .../VendingMachines/seeds.rsi/meta.json | 215 ++- .../seeds.rsi/normal-unshaded.png | Bin 1254 -> 1186 bytes .../VendingMachines/seeds.rsi/off.png | Bin 563 -> 2608 bytes .../VendingMachines/seeds.rsi/panel.png | Bin 244 -> 759 bytes .../seeds.rsi/seeds-shelf0.png | Bin 0 -> 922 bytes .../seeds.rsi/seeds-shelf1.png | Bin 0 -> 929 bytes .../seeds.rsi/seeds-shelf2.png | Bin 0 -> 867 bytes .../seeds.rsi/seeds-shelf3.png | Bin 0 -> 853 bytes .../seeds_green.rsi/broken.png | Bin 0 -> 2630 bytes .../seeds_green.rsi/deny-unshaded.png | Bin 0 -> 2356 bytes .../seeds_green.rsi/eject-unshaded.png | Bin 0 -> 1827 bytes .../VendingMachines/seeds_green.rsi/meta.json | 295 ++++ .../seeds_green.rsi/normal-unshaded.png | Bin 0 -> 1056 bytes .../VendingMachines/seeds_green.rsi/off.png | Bin 0 -> 2442 bytes .../VendingMachines/seeds_green.rsi/panel.png | Bin 0 -> 757 bytes .../seeds_green.rsi/seeds_generic-shelf0.png | Bin 0 -> 1079 bytes .../seeds_green.rsi/seeds_generic-shelf1.png | Bin 0 -> 1079 bytes .../seeds_green.rsi/seeds_generic-shelf2.png | Bin 0 -> 928 bytes .../seeds_green.rsi/seeds_generic-shelf3.png | Bin 0 -> 928 bytes .../VendingMachines/snack.rsi/broken.png | Bin 869 -> 2869 bytes .../snack.rsi/deny-unshaded.png | Bin 779 -> 1794 bytes .../snack.rsi/eject-unshaded.png | Bin 855 -> 17989 bytes .../VendingMachines/snack.rsi/meta.json | 91 +- .../snack.rsi/normal-unshaded.png | Bin 1052 -> 1798 bytes .../VendingMachines/snack.rsi/off.png | Bin 365 -> 2195 bytes .../VendingMachines/snack.rsi/panel.png | Bin 244 -> 713 bytes .../VendingMachines/snix.rsi/broken.png | Bin 0 -> 2285 bytes .../snix.rsi/deny-unshaded.png | Bin 0 -> 1175 bytes .../snix.rsi/eject-unshaded.png | Bin 0 -> 10431 bytes .../Machines/VendingMachines/snix.rsi/fan.png | Bin 0 -> 503 bytes .../VendingMachines/snix.rsi/meta.json | 163 +++ .../snix.rsi/normal-unshaded.png | Bin 0 -> 2013 bytes .../Machines/VendingMachines/snix.rsi/off.png | Bin 0 -> 1990 bytes .../VendingMachines/snix.rsi/panel.png | Bin 0 -> 601 bytes .../VendingMachines/soda.rsi/broken.png | Bin 436 -> 2168 bytes .../soda.rsi/deny-unshaded.png | Bin 368 -> 1280 bytes .../soda.rsi/eject-unshaded.png | Bin 480 -> 1830 bytes .../VendingMachines/soda.rsi/meta.json | 86 +- .../soda.rsi/normal-unshaded.png | Bin 417 -> 1334 bytes .../Machines/VendingMachines/soda.rsi/off.png | Bin 309 -> 1479 bytes .../VendingMachines/soda.rsi/panel.png | Bin 244 -> 676 bytes .../VendingMachines/soda2.rsi/broken.png | Bin 0 -> 1748 bytes .../soda2.rsi/deny-unshaded.png | Bin 0 -> 1749 bytes .../soda2.rsi/eject-unshaded.png | Bin 0 -> 1944 bytes .../VendingMachines/soda2.rsi/meta.json | 87 ++ .../soda2.rsi/normal-unshaded.png | Bin 0 -> 1161 bytes .../VendingMachines/soda2.rsi/off.png | Bin 0 -> 1289 bytes .../VendingMachines/soda2.rsi/panel.png | Bin 0 -> 623 bytes .../VendingMachines/sodasoviet.rsi/broken.png | Bin 0 -> 2450 bytes .../sodasoviet.rsi/deny-unshaded.png | Bin 0 -> 462 bytes .../sodasoviet.rsi/eject-unshaded.png | Bin 0 -> 665 bytes .../VendingMachines/sodasoviet.rsi/meta.json | 83 ++ .../sodasoviet.rsi/normal-unshaded.png | Bin 0 -> 375 bytes .../VendingMachines/sodasoviet.rsi/off.png | Bin 0 -> 1458 bytes .../VendingMachines/sodasoviet.rsi/panel.png | Bin 0 -> 559 bytes .../VendingMachines/solsnack.rsi/broken.png | Bin 0 -> 2890 bytes .../solsnack.rsi/deny-unshaded.png | Bin 0 -> 1842 bytes .../solsnack.rsi/eject-unshaded.png | Bin 0 -> 2470 bytes .../VendingMachines/solsnack.rsi/meta.json | 109 ++ .../solsnack.rsi/normal-unshaded.png | Bin 0 -> 1891 bytes .../VendingMachines/solsnack.rsi/off.png | Bin 0 -> 2232 bytes .../VendingMachines/solsnack.rsi/panel.png | Bin 0 -> 559 bytes .../VendingMachines/theater.rsi/broken.png | Bin 765 -> 2283 bytes .../theater.rsi/deny-unshaded.png | Bin 652 -> 1369 bytes .../theater.rsi/eject-unshaded.png | Bin 735 -> 1835 bytes .../VendingMachines/theater.rsi/meta.json | 91 +- .../theater.rsi/normal-unshaded.png | Bin 425 -> 1067 bytes .../VendingMachines/theater.rsi/off.png | Bin 618 -> 1684 bytes .../VendingMachines/theater.rsi/panel.png | Bin 322 -> 675 bytes .../VendingMachines/theater.rsi/screen.png | Bin 538 -> 749 bytes .../VendingMachines/uniform.rsi/broken.png | Bin 0 -> 2841 bytes .../uniform.rsi/deny-unshaded.png | Bin 0 -> 2577 bytes .../uniform.rsi/eject-unshaded.png | Bin 0 -> 1481 bytes .../VendingMachines/uniform.rsi/meta.json | 91 ++ .../uniform.rsi/normal-unshaded.png | Bin 0 -> 1125 bytes .../VendingMachines/uniform.rsi/off.png | Bin 0 -> 2315 bytes .../VendingMachines/uniform.rsi/panel.png | Bin 0 -> 769 bytes .../VendingMachines/wallmed.rsi/broken.png | Bin 609 -> 752 bytes .../wallmed.rsi/deny-unshaded.png | Bin 347 -> 654 bytes .../wallmed.rsi/eject-unshaded.png | Bin 0 -> 796 bytes .../VendingMachines/wallmed.rsi/meta.json | 69 +- .../wallmed.rsi/normal-unshaded.png | Bin 305 -> 407 bytes .../VendingMachines/wallmed.rsi/off.png | Bin 238 -> 684 bytes .../VendingMachines/wallmed.rsi/panel.png | Bin 226 -> 629 bytes .../VendingMachines/weeb.rsi/broken.png | Bin 0 -> 2510 bytes .../weeb.rsi/deny-unshaded.png | Bin 0 -> 1622 bytes .../weeb.rsi/eject-unshaded.png | Bin 0 -> 16074 bytes .../Machines/VendingMachines/weeb.rsi/fan.png | Bin 0 -> 831 bytes .../VendingMachines/weeb.rsi/meta.json | 135 ++ .../weeb.rsi/normal-unshaded.png | Bin 0 -> 1774 bytes .../Machines/VendingMachines/weeb.rsi/off.png | Bin 0 -> 2247 bytes .../VendingMachines/weeb.rsi/panel.png | Bin 0 -> 601 bytes .../VendingMachines/youtool.rsi/broken.png | Bin 910 -> 3056 bytes .../youtool.rsi/deny-unshaded.png | Bin 795 -> 1718 bytes .../youtool.rsi/eject-unshaded.png | Bin 1283 -> 1215 bytes .../VendingMachines/youtool.rsi/meta.json | 77 +- .../youtool.rsi/normal-unshaded.png | Bin 1536 -> 871 bytes .../VendingMachines/youtool.rsi/off.png | Bin 657 -> 2447 bytes .../VendingMachines/youtool.rsi/panel.png | Bin 245 -> 768 bytes .../Specific/barbershop.rsi/barberchair.png | Bin 0 -> 586 bytes .../barbershop.rsi/dyedispenser-broken.png | Bin 0 -> 971 bytes .../barbershop.rsi/dyedispenser-off.png | Bin 0 -> 647 bytes .../Specific/barbershop.rsi/dyedispenser.png | Bin 0 -> 650 bytes .../Specific/barbershop.rsi/meta.json | 37 + .../Specific/barbershop.rsi/pole.png | Bin 0 -> 751 bytes .../Specific/barbershop.rsi/thesnip.png | Bin 0 -> 341 bytes .../Specific/fitness.rsi/bopbag.png | Bin 0 -> 1176 bytes .../Specific/fitness.rsi/bopbag2.png | Bin 0 -> 2660 bytes .../Specific/fitness.rsi/fitnesslifter.png | Bin 0 -> 802 bytes .../Specific/fitness.rsi/fitnesslifter2.png | Bin 0 -> 1319 bytes .../Specific/fitness.rsi/fitnessweight-c.png | Bin 0 -> 624 bytes .../Specific/fitness.rsi/fitnessweight-w.png | Bin 0 -> 377 bytes .../Specific/fitness.rsi/fitnessweight.png | Bin 0 -> 705 bytes .../Structures/Specific/fitness.rsi/meta.json | 147 ++ .../Specific/fitness.rsi/punchingbag.png | Bin 0 -> 304 bytes .../Specific/fitness.rsi/punchingbag2.png | Bin 0 -> 953 bytes .../fitness.rsi/punchingbagcaptain.png | Bin 0 -> 597 bytes .../fitness.rsi/punchingbagcaptain2.png | Bin 0 -> 1763 bytes .../fitness.rsi/punchingbagsyndie.png | Bin 0 -> 611 bytes .../fitness.rsi/punchingbagsyndie2.png | Bin 0 -> 1923 bytes .../fitness.rsi/punchingbagwizard.png | Bin 0 -> 691 bytes .../fitness.rsi/punchingbagwizard2.png | Bin 0 -> 1915 bytes 1061 files changed, 8323 insertions(+), 335 deletions(-) create mode 100644 Resources/Locale/en-US/advertisements/vending/bay12Vendors.ftl create mode 100644 Resources/Locale/en-US/reagents/bay12reagents.ftl create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Advertisements/fitness.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Advertisements/hotfood.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Advertisements/solsnack.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Advertisements/weebvend.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Inventories/fitness.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Inventories/hotfood.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Inventories/solsnack.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Inventories/weebvend.yml create mode 100644 Resources/Prototypes/Entities/Structures/Specific/bay12barbershop.yml create mode 100644 Resources/Prototypes/Entities/Structures/Specific/bay12fitness.yml create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/(mdr)grapejuice.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/absinthebottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alco-blue.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alco-green.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alco-red.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alcoholfreebeer.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alebottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alecan.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/art_bru.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/badminka.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/baijiu.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/barflask.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beastenergy.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beer.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beercan.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bigteacup.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bigteacup100.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/blackstrap.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bottleofnothing.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/broken.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/broken_bottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bronze_cup.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cachaca.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ccola.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/champagne.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/coffee.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cognacbottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-blue.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-brown.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-green.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-orange.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-pink.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-pork.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-purple.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-red.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-yellow.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/colabottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/coolant.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cream.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/detflask.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/dnb.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/dr_gibb.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/energy_drink.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/fitness-cup_black.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/fitness-cup_blue.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/fitness-cup_red.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/flask.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/flavorpak.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ginbottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/gingerbeer.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/golden_cup.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/goldschlagerbottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/grenadinebottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/hellshenbeer.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/herbal.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/holyflask.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/hrukhzaextract.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ice_tea_can.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ionbru.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/jar.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/jar_metroid.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/jar_what.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/kahluabottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/lager.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/lemon-lime.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/lemonjuice.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/limejuice.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/lithiumflask.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/lunabrandy.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/maplesyrup.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/milk.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/nothing.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ocola.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/oil.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/orangejuice.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/patronbottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher100.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher15.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher30.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher50.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher70.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher85.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/placeholder.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/premiumvodka.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/premiumwine.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/prosecco.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/purple_can.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pwinebottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag_lit.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag_small.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag_small_lit.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rakia.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ramen.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rumbottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/sake.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/shaker.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/shinyflask.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/silver_cup.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/sodawater.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/soju.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/soymilk.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space-up.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space-up_bottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space_mountain_wind.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space_mountain_wind_bottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/starkist.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/syndi_cola.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/syndi_cola_x.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/tadmorwine.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/teapot.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/tequillabottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/thirteen_loko.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/thoom.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/tomatojuice.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/tonic.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vacuumflask.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vcola.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vermouthbottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vodkabottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/water.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/water_cup.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/water_cup_e.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/waterbottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/whiskeybottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/whiskeybottle2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/whiskeybottle3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/winebottle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/milkmini.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/milkmini.rsi/icon_open.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/milkmini.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/milkminichoco.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/milkminichoco.rsi/icon_open.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/milkminichoco.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup10.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup100.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup20.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup30.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup40.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup50.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup60.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup70.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup80.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup90.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/icon_open.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup10.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup100.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup20.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup30.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup40.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup50.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup60.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup70.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup80.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup90.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/icon_open.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup10.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup100.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup20.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup30.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup40.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup50.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup60.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup70.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup80.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup90.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/icon_open.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/0box-donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/0box-donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/1box-donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/1box-donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/2box-donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/2box-donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/3box-donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/3box-donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4box-donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4box-donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4no_raisins.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/5box-donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/5box-donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/6box-donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/6box-donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/aesirsalad.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/aghrassh-cake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/amanita_pie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/amanitajelly.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_burger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_fries.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_hburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_hotdog.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_pizza.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_taco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/applecake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/applecakeslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/applepie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bacon.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/badrecipe.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/baguette.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bananabread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bananabreadslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/barbecue.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bearmeat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/beetsoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/berryclafoutis.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bigbiteburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birdmeat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birdsteak.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birthdaycake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birthdaycakeslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/biscotti.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bisque.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/boiledrice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/boiledslimecore.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/brainburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/braincake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/braincakeslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/breadslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bunbun.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/candiedapple.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/candy.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/candy_corn.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotcake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotcake_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotfries.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cereal_box.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chawanmushi.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chazuke.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheeseburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesecake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesecake_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewedge-blue.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewedge-fresh.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewedge.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewheel-blue.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewheel-fresh.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewheel.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesie_honkers.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesyfries.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cherrypie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chilied-eggs.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chips.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocobanana.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolatebar.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolatecake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolatecake_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolateegg.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clam-chowder.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clownburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clownstears.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/coldchili.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/coldsauce.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cookie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/corpsecube.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crab-cakes.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crab-dinner.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crab-rangoon.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cracker.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag0.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag2.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag3.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag4.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag5.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag6.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crayonmre.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crayonmre1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/creamcheesebread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/creamcheesebreadslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/croutons.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cubancarp.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/dango.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/dionaroast.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donkpocket.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donut2.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donut_chaos.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donutbox.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/driedfish.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-blue.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-green.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-mime.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-orange.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-purple.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-rainbow.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-red.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-yellow.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox0.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox10.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox11.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox12.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox2.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox3.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox4.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox5.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox6.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox7.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox8.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox9.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggplantparm.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/emptycondiment.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/enchiladas.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/enzyme.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishandchips.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishfillet.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishfingers.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/flour.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fortune_cookie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/friedegg.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fries.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fruitpizza.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fruitpizzaslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/gappletart.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ghostburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/gukhe-fish.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hatchling-surprise.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/herbsalad.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotchili.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotcorgi.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotdog.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotsauce.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hugemushroomslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_banana.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_blue.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_cherry.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_chocolate.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_cone_chocolate.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_cone_waffle.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_strawberry.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_vanilla.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jdonut1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jdonut2.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellyburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellysandwich.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellytoast.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jupiter.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/kabob.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/katsu.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ketchup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lemoncake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lemoncake_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/limecake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/limecake_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/liquidfood.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lizard_egg.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/loadedbakedpotato.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lunacake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lunacake_wrapped.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mars.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mayo.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatball.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatballsoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatballspagetti.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatbread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatbreadslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatcube.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatmre.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatmre1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatpie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatpizza.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatpizzaslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatsteak.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/milosoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mimeburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mint.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mixedcondiments.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mochicake_wrapped.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycube.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycubebox.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycubewrap.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeysdelight.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mooncake_wrapped.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mre.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mre1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/muffin.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mushroompizza.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mushroompizzaslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mushroomsoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mysterysoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/nanopasta.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/nettlesoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/oliveoilsmall.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/omelette.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/onionrings.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/onionsoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/oort.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/orangecake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/orangecake_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/oysters-rockefeller.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_medium.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small_black.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small_red.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small_white.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pancakes.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pastatomato.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/peppermillsmall.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/phelmbiscuit.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pistachios.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox2.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox3.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox4.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox5.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox_messy.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox_open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox_tag.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzamargherita.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzamargheritaslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/plaincake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/plaincake_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/plump_pie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pluto.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pokeys.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/popcorn.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/poppypretzel.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_medium.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_medium1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_small.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_small1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/proteinbar.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pumpkinpie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pumpkinpieslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rawbacon.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/red-sun-special.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ricecake.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/roburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rofflewaffles.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rottenmeat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rpudding.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/salo.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/salt.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/saltshakersmall.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich_top.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/saturno.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sausage.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sea-delight.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/seafood-paella.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/semki.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/shrimp-cocktail.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/shrimp-tempura.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/skrellsnacks.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sosjerky.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soydope.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soylent_green.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soylent_yellow.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soysauce.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/space_twinkie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spacylibertyduff.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spagetti.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spagettiboiled.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spellburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spesslaw.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spiderleg.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spiderleg_c.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/squid.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/steamed-mussels.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stew.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stewedsoymeat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stok-skewers.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stuffed-clam.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stuffing.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sugarsmall.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/superbiteburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/syndi_cakes.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/taco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tastybread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/threebread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tidegobs.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/toastedsandwich.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tofu.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tofubread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tofubreadslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tofuburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tofurkey.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tomatomeat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tomatosoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tray.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/twobread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/unscotti.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/unscottiloaf.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/validsalad.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegetablepizza.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegetablepizzaslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegetablesoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegmre.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegmre1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/venus.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vinegar.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/waffles.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/watermelonslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/weebonuts.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/wishsoup.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenobreadslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenomeat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenomeatbread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenomeatpie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/bacon.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/box-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/box.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/cutlet.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/rawbacon.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/rawcutlet.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/beans-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/beans.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/beef-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/beef.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/berries-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/berries.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/blank-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/blank.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/carpeggs-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/carpeggs.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/fisheggs-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/fisheggs.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/spinach-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/spinach.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/tomato-open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/tomato.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/bar.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/bar_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom_slice_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_slice_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cookie.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cookie_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/customburger.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/customburger_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donk.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donk_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donut.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donut_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/jawbreaker.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/jawbreaker_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/jellycustom.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/jellycustom_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/kabob.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/kabob_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pancakescustom.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pancakescustom_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/piecustom.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/piecustom_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza_slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza_slice_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_2.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_3.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_4.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/shreds.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/shreds_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stew.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stew_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stuffing.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stuffing_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/sucker.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/sucker_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/waffles.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/waffles_filling.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/bun.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/cutlet.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/dough.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/doughslice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/egg.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/flat_dough.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/flatbread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/lizard_egg.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/meatball.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawcutlet.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawmeatball.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawsticks.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/sausage.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/clam.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/clam_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/clam_open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/crab.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/crab_meat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/mussel.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/mussel_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/mussel_open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/oyster.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/oyster_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/oyster_open.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/shrimp.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/shrimp_meat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/4no_raisins.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/beans.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/beef.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/berries.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/blank.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/cakewrap.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/candy.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/carpeggs.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/cheesie_honkers.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/chips.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/corncob.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/croutons.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/driedfish.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/fisheggs.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/hollowcoconut.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/hollowpineapple.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/jupiter.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/liquidfood.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/liquidfood_old.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/mars.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/mochicakewrap.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/monkeywrap.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/mooncakewrap.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/oort.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/pistachios_pack.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/plasticbag.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/plate.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/pluto.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/popcorn.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/proteinbar.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/salo.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/saturno.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/semki_pack.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/snack_bowl.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/sosjerky.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/spinach.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/squid.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/stick.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/syndi_cakes.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/tastybread.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/tidegobs.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/tomato.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag0.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag1.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag2.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag3.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/tray.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/usedplatter.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/venus.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/waffles.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/weebonuts.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/dye-e.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/dye-f.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/dye.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/dye_color.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/razorblade.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/scissors.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/tonic0.png create mode 100644 Resources/Textures/Objects/Specific/barbershop.rsi/tonic1.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-deny.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-vend.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/coffee-hellfire.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-close-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-close.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-plant-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-plant.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/screen.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-1-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-1.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-2-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-2.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-3-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-3.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-4-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-4.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-1-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-1.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-2-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-2.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-3-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-3.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-4-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-4.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/empty-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/empty.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-1-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-1.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-2-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-2.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-3-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-3.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-4-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-4.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-1-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-1.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-2-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-2.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-3-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-3.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-4-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-4.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-deny.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-panel-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-sidepanel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-top-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-top.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-vend.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/screen_small.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-deny.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-panel-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-sidepanel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-top-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-top.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-vend.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/screen_small.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-deny.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-panel-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-sidepanel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-top-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-top.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-vend.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/screen_small.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-deny.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-sidepanel-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-sidepanel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-top-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-top.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-vend.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/screen_big.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/games.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/heater.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/cooler.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/green-outline.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/heater.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/sparks.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/water_cooler-broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/water_cooler-vend.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/water_cooler.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/security.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/security.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/security.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/security.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/security.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/security.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/security.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf0.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf1.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf2.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf3.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf0.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf1.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf2.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf3.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/fan.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/deny-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/eject-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/fan.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/panel.png create mode 100644 Resources/Textures/Structures/Specific/barbershop.rsi/barberchair.png create mode 100644 Resources/Textures/Structures/Specific/barbershop.rsi/dyedispenser-broken.png create mode 100644 Resources/Textures/Structures/Specific/barbershop.rsi/dyedispenser-off.png create mode 100644 Resources/Textures/Structures/Specific/barbershop.rsi/dyedispenser.png create mode 100644 Resources/Textures/Structures/Specific/barbershop.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/barbershop.rsi/pole.png create mode 100644 Resources/Textures/Structures/Specific/barbershop.rsi/thesnip.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/bopbag.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/bopbag2.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/fitnesslifter.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/fitnesslifter2.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/fitnessweight-c.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/fitnessweight-w.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/fitnessweight.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbag.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbag2.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbagcaptain.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbagcaptain2.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbagsyndie.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbagsyndie2.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbagwizard.png create mode 100644 Resources/Textures/Structures/Specific/fitness.rsi/punchingbagwizard2.png diff --git a/Resources/Locale/en-US/advertisements/vending/bay12Vendors.ftl b/Resources/Locale/en-US/advertisements/vending/bay12Vendors.ftl new file mode 100644 index 0000000000..fbdcfa5a39 --- /dev/null +++ b/Resources/Locale/en-US/advertisements/vending/bay12Vendors.ftl @@ -0,0 +1,23 @@ +advertisement-solsnack-1 = We cut all the red-tape so that you can have diarrhea! +advertisement-solsnack-2 = Food safety standards are merely a suggestion if you know the right people! +advertisement-solsnack-3 = Snacks from home, corruption included! +advertisement-solsnack-4 = A taste of home! + +advertisement-weebvend-1 = Konnichiwa gaijin senpai! +advertisement-weebvend-2 = Notice me senpai! +advertisement-weebvend-3 = Kawaii-desu! + +advertisement-hotfood-1 = Get your stale, crumbling food here! Sol's national dish has never tasted better! +advertisement-hotfood-2 = If this is the food waiting for you at home, it's no wonder you're hiding here. +advertisement-hotfood-3 = Solarian food products, served with a side of diarrhea as always! +advertisement-hotfood-4 = Revenge is a dish best served warm. + +advertisement-fitness-1 = SweatMAX, get robust! +advertisement-fitness-2 = Pain is just weakness leaving the body! +advertisement-fitness-3 = Run! Your fat is catching up to you! +advertisement-fitness-4 = Never forget leg day! +advertisement-fitness-5 = Push out! +advertisement-fitness-6 = This is the only break you get today. +advertisement-fitness-7 = Don't cry, sweat! +advertisement-fitness-8 = Healthy is an outfit that looks good on everybody. +advertisement-fitness-9 = Want to hide from the Solarian authorities? Don't worry, they don't know what the inside of a gym looks like. \ No newline at end of file diff --git a/Resources/Locale/en-US/reagents/bay12reagents.ftl b/Resources/Locale/en-US/reagents/bay12reagents.ftl new file mode 100644 index 0000000000..7e0e9ccfca --- /dev/null +++ b/Resources/Locale/en-US/reagents/bay12reagents.ftl @@ -0,0 +1,2 @@ +reagent-name-milk-choco = chocolate milk +reagent-desc-milk-choco = A milk drink flavored with chocolate. \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/VendingMachines/Advertisements/fitness.yml b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/fitness.yml new file mode 100644 index 0000000000..4e3050c27b --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/fitness.yml @@ -0,0 +1,14 @@ +- type: advertisementsPack + id: FitnessVendAds + advertisements: + - advertisement-fitness-1 + - advertisement-fitness-2 + - advertisement-fitness-3 + - advertisement-fitness-4 + - advertisement-fitness-5 + - advertisement-fitness-6 + - advertisement-fitness-7 + - advertisement-fitness-8 + - advertisement-fitness-9 + thankyous: + - vending-machine-thanks diff --git a/Resources/Prototypes/Catalog/VendingMachines/Advertisements/hotfood.yml b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/hotfood.yml new file mode 100644 index 0000000000..98b017558e --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/hotfood.yml @@ -0,0 +1,9 @@ +- type: advertisementsPack + id: HotfoodAds + advertisements: + - advertisement-hotfood-1 + - advertisement-hotfood-2 + - advertisement-hotfood-3 + - advertisement-hotfood-4 + thankyous: + - vending-machine-thanks diff --git a/Resources/Prototypes/Catalog/VendingMachines/Advertisements/solsnack.yml b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/solsnack.yml new file mode 100644 index 0000000000..1e0ddddc04 --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/solsnack.yml @@ -0,0 +1,8 @@ +- type: advertisementsPack + id: SolsnackAds + advertisements: + - advertisement-solsnack-1 + - advertisement-solsnack-2 + - advertisement-solsnack-3 + thankyous: + - vending-machine-thanks diff --git a/Resources/Prototypes/Catalog/VendingMachines/Advertisements/weebvend.yml b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/weebvend.yml new file mode 100644 index 0000000000..01efe7be69 --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/weebvend.yml @@ -0,0 +1,8 @@ +- type: advertisementsPack + id: WeebVendAds + advertisements: + - advertisement-weebvend-1 + - advertisement-weebvend-2 + - advertisement-weebvend-3 + thankyous: + - vending-machine-thanks diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/fitness.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/fitness.yml new file mode 100644 index 0000000000..f0e13aa278 --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/fitness.yml @@ -0,0 +1,11 @@ +- type: vendingMachineInventory + id: FitnessVendInventory + startingInventory: + FoodSnackProteinbar: 3 + FoodCondimentPacketProtein: 3 + DrinkMilkCartonMini: 3 + DrinkMilkCartonMiniChocolate: 3 + DrinkWaterBottleFull: 3 + DrinkFitnessShakerBlack: 2 + DrinkFitnessShakerRed: 2 + DrinkFitnessShakerBlue: 2 \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/hotfood.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/hotfood.yml new file mode 100644 index 0000000000..964fa746b3 --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/hotfood.yml @@ -0,0 +1,8 @@ +- type: vendingMachineInventory + id: HotfoodInventory + startingInventory: + FoodSnackAncientBurger: 1 + FoodSnackAncientPizza: 1 + FoodSnackAncientFries: 1 + FoodSnackAncientHotdog: 1 + FoodSnackAncientTaco: 1 \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/solsnack.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/solsnack.yml new file mode 100644 index 0000000000..5bb5e9e7cf --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/solsnack.yml @@ -0,0 +1,13 @@ +- type: vendingMachineInventory + id: SolsnackInventory + startingInventory: + FoodSnackLunacakeWrapped: 3 + FoodSnackMochicakeWrapped: 3 + FoodSnackMooncakeWrapped: 3 + FoodSnackTidegobs: 3 + FoodSnackSaturnos: 3 + FoodSnackJoveGello: 3 + FoodSnackPlutoniumrods: 3 + FoodSnackMarsFrouka: 3 + FoodSnackVenusianhotcakes: 3 + FoodSnackOortrocks: 3 \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/weebvend.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/weebvend.yml new file mode 100644 index 0000000000..fffe81199a --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/weebvend.yml @@ -0,0 +1,8 @@ +- type: vendingMachineInventory + id: WeebVendInventory + startingInventory: + FoodSnackRedalertnuts: 3 + FoodSnackRicecake: 3 + FoodSnackPokeysticks: 3 + FoodSnackChocobanana: 3 + FoodSnackDango: 3 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml index 67d7954038..4bdd6245c5 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml @@ -171,3 +171,47 @@ Quantity: 100 - type: Sprite sprite: Objects/Consumable/Drinks/oatmilk.rsi + +- type: entity + parent: DrinkCartonBaseFull + id: DrinkCartonBaseSmallFull + abstract: true + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 25 + +- type: entity + parent: [DrinkCartonVisualsOpenable, DrinkCartonBaseFull] + id: DrinkMilkCartonMini + name: mini milk + description: An opaque white liquid produced by the mammary glands of mammals. + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 25 + reagents: + - ReagentId: Milk + Quantity: 25 + - type: Sprite + sprite: Objects/Consumable/Drinks/milkmini.rsi + state: icon + +- type: entity + parent: [DrinkCartonVisualsOpenable, DrinkCartonBaseFull] + id: DrinkMilkCartonMiniChocolate + name: mini choco milk + description: A milk drink flavored with chocolate. + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 25 + reagents: + - ReagentId: MilkChoco + Quantity: 25 + - type: Sprite + sprite: Objects/Consumable/Drinks/milkminichoco.rsi + state: icon diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml index 33646b50bb..0602fcf8f9 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml @@ -2121,3 +2121,62 @@ - type: Icon sprite: Objects/Consumable/Drinks/bloodglass.rsi state: icon + +- type: entity + parent: DrinkBase + id: DrinkBasePlastic + abstract: true + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 50 + - type: PhysicalComposition + materialComposition: + Plastic: 100 + +- type: entity + parent: DrinkBasePlastic + id: DrinkFitnessShakerBlack + name: fitness shaker + description: Big enough to contain enough protein to get perfectly swole. Don't mind the bits. + components: + - type: Sprite + sprite: Objects/Consumable/Drinks/shakerblack.rsi + state: icon + +- type: entity + parent: DrinkFitnessShakerBlack + id: DrinkFitnessShakerRed + components: + - type: Sprite + sprite: Objects/Consumable/Drinks/shakerred.rsi + state: icon + +- type: entity + parent: DrinkFitnessShakerBlack + id: DrinkFitnessShakerBlue + components: + - type: Sprite + sprite: Objects/Consumable/Drinks/shakerblue.rsi + state: icon + +- type: reagent + id: MilkChoco + name: reagent-name-milk-choco + group: Drinks + desc: reagent-desc-milk-choco + physicalDesc: reagent-physical-desc-opaque + flavor: chocolate + color: "#664300" + recognizable: true + plantMetabolism: + - !type:PlantAdjustNutrition + amount: 0.1 + - !type:PlantAdjustWater + amount: 0.9 + metabolisms: + Drink: + effects: + - !type:SatiateThirst + factor: 4 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml index 1df6615a9f..c6c7e5677e 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml @@ -648,3 +648,23 @@ reagents: - ReagentId: CocoaPowder Quantity: 2 + +- type: entity + parent: BaseFoodCondimentPacket + id: FoodCondimentPacketProtein + name: protein powder packet + description: Contains 10u of powdered protein. Mix with 20u of water + components: + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Protein + Quantity: 10 + - type: Icon + state: packet-greygoo + - type: Appearance + - type: SolutionContainerVisuals + maxFillLevels: 2 + fillBaseName: packet-solid- diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml index 8e52630ac8..e88a641c7c 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml @@ -626,3 +626,533 @@ - Trash - type: Sprite state: mre-wrapper + +# Snacks +- type: entity + parent: FoodSnackBase + id: FoodSnackProteinbar + name: protein bar + description: SwoleMAX brand protein bars, guaranteed to get you feeling perfectly overconfident. + components: + - type: FlavorProfile + flavors: + - chalky + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: proteinbar + - type: Item + - type: Food + trash: FoodPacketProteinbarTrash + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: Protein + Quantity: 4 + - ReagentId: CocoaPowder + Quantity: 1 + - ReagentId: Theobromine + Quantity: 1 + +# Sol Vend / Mars Mart +- type: entity + parent: BaseItem + id: FoodSnackLunacakeWrapped + name: wrapped lunacake + description: Now with 20% less lawsuit enabling rhegolith! + components: + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: lunacake_wrapped + - type: Item + heldPrefix: lunacake_wrapped + size: Tiny + - type: Tag + tags: + - FoodSnack + - type: SpawnItemsOnUse + items: + - id: FoodPacketLunacakeTrash + - id: FoodSnackLunacake + sound: + path: /Audio/Effects/unwrap.ogg + +- type: entity + parent: FoodSnackBase + id: FoodSnackLunacake + name: lunacake + description: Now with 20% less lawsuit enabling rhegolith! + components: + - type: FlavorProfile + flavors: + - vanilla + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: lunacake + - type: Item + +- type: entity + parent: BaseItem + id: FoodSnackMochicakeWrapped + name: wrapped mochicake + description: Konnichiwa! Many go lucky rice cakes in future! + components: + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: mochicake_wrapped + - type: Item + heldPrefix: mochicake_wrapped + size: Tiny + - type: Tag + tags: + - FoodSnack + - type: SpawnItemsOnUse + items: + - id: FoodPacketMochicakeTrash + - id: FoodSnackMochicake + sound: + path: /Audio/Effects/unwrap.ogg + +- type: entity + parent: FoodSnackBase + id: FoodSnackMochicake + name: mochicake + description: Konnichiwa! Many go lucky rice cakes in future! + components: + - type: FlavorProfile + flavors: + - rice + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: lunacake + - type: Item + +- type: entity + parent: BaseItem + id: FoodSnackMooncakeWrapped + name: wrapped mooncake + description: Explore the dark side! May contain trace amounts of reconstituted cocoa. + components: + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: mooncake_wrapped + - type: Item + heldPrefix: mooncake_wrapped + size: Tiny + - type: Tag + tags: + - FoodSnack + - type: SpawnItemsOnUse + items: + - id: FoodPacketMooncakeTrash + - id: FoodSnackMooncake + sound: + path: /Audio/Effects/unwrap.ogg + +- type: entity + parent: FoodSnackBase + id: FoodSnackMooncake + name: mooncake + description: Explore the dark side! May contain trace amounts of reconstituted cocoa. + components: + - type: FlavorProfile + flavors: + - chocolate + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: lunacake + - type: Item + +- type: entity + parent: FoodSnackBase + id: FoodSnackTidegobs + name: tide gobs + description: Contains over 9000% of your daily recommended intake of salt. + components: + - type: FlavorProfile + flavors: + - salty + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: tidegobs + - type: Item + - type: Food + trash: FoodPacketTidegobsTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackSaturnos + name: saturn-os + description: A day ration of salt, styrofoam and possibly sawdust. + components: + - type: FlavorProfile + flavors: + - salty + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: saturno + - type: Item + - type: Food + trash: FoodPacketSaturnosTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackJoveGello + name: jove gello + description: By Joove! It's some kind of gel. + components: + - type: FlavorProfile + flavors: + - sweet + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: jupiter + - type: Item + - type: Food + trash: FoodPacketJoveGelloTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackPlutoniumrods + name: plutonium rods + description: Baseless tasteless nutrithick rods to get you through the day. Now even less rash inducing! + components: + - type: FlavorProfile + flavors: + - chalky + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: pluto + - type: Item + - type: Food + trash: FoodPacketPlutoniumrodsTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackMarsFrouka + name: frouka + description: Celebrate founding day with a steaming self-heated bowl of sweet eggs and taters! + components: + - type: FlavorProfile + flavors: + - egg + - potatoes + - mustard + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: mars + - type: Item + - type: Food + trash: FoodPacketMarsFroukaTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackVenusianhotcakes + name: venusian hot cakes + description: Hot takes on hot cakes, a timeless classic now finally fit for human consumption! + components: + - type: FlavorProfile + flavors: + - spicy + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: venus + - type: Item + - type: Food + trash: FoodPacketVenusTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackOortrocks + name: oort cloud rocks + description: Pop rocks themed on the most important industrial sector in Sol, new formula guarantees fewer shrapnel induced oral injury. + components: + - type: FlavorProfile + flavors: + - fizzy + - sweet + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: oort + - type: Item + - type: Food + trash: FoodPacketOortrocksTrash + +# Weeb Vend +- type: entity + parent: FoodSnackBase + id: FoodSnackRedalertnuts + name: red alert nuts + description: A bag of Red Alert! brand spicy nuts. Goes well with your beer! + components: + - type: FlavorProfile + flavors: + - spicy + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: weebonuts + - type: Item + - type: Food + trash: FoodPacketRedalertnutsTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackRicecake + name: rice cake + description: Ancient earth snack food made from balled up rice. + components: + - type: FlavorProfile + flavors: + - rice + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: ricecake + - type: Item + +- type: entity + parent: FoodSnackBase + id: FoodSnackPokeysticks + name: pokey sticks + description: A bundle of chocolate coated bisquit sticks. + components: + - type: FlavorProfile + flavors: + - sweet + - chocolate + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: pokeys + - type: Item + +- type: entity + parent: FoodSnackBase + id: FoodSnackChocobanana + name: chocobanana + description: A chocolate and sprinkles coated banana. On a stick + components: + - type: FlavorProfile + flavors: + - sweet + - chocolate + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: chocobanana + - type: Item + - type: Food + trash: FoodPacketStickTrash + +- type: entity + parent: FoodSnackBase + id: FoodSnackDango + name: dango + description: Food dyed rice dumplings on a stick. + components: + - type: FlavorProfile + flavors: + - rice + - sweet + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: dango + - type: Item + - type: Food + trash: FoodPacketStickTrash + +# Old food +- type: entity + parent: FoodSnackBase + id: FoodSnackAncientBurger + name: space burger + suffix: ancient + description: At some point in time this probably looked delicious. + components: + - type: FlavorProfile + flavors: + - terrible + - type: Sprite + sprite: Objects/Consumable/Food/bay_food.rsi + state: ancient_burger + - type: Item + - type: SolutionContainerManager + solutions: + food: + maxVol: 20 + reagents: + - ReagentId: Nutriment + Quantity: 3 + - type: RandomFillSolution + solution: food + weightedRandomId: RandomFillSpaceshroom + +- type: entity + parent: FoodSnackAncientBurger + id: FoodSnackAncientPizza + name: space pizza + description: At some point in time this probably looked delicious. + components: + - type: Sprite + state: ancient_pizza + +- type: entity + parent: FoodSnackAncientBurger + id: FoodSnackAncientFries + name: space fries + description: The salt appears to have preserved these, still stale and gross. + components: + - type: Sprite + state: ancient_fries + +- type: entity + parent: FoodSnackAncientBurger + id: FoodSnackAncientHotdog + name: space dog + description: This one is probably only marginally less safe to eat than when it was first created.. + components: + - type: Sprite + state: ancient_hotdog + +- type: entity + parent: FoodSnackAncientBurger + id: FoodSnackAncientTaco + name: space taco + description: Interestingly, the shell has gone soft and the contents have gone stale. + components: + - type: Sprite + state: ancient_taco + +# trash +- type: entity + noSpawn: true + parent: FoodPacketTrash + id: FoodPacketLunacakeTrash + name: lunacake wrapper + components: + - type: Sprite + sprite: Objects/Consumable/Food/bay_trash.rsi + state: cakewrap + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketMochicakeTrash + name: mochicake wrapper + components: + - type: Sprite + state: mochicakewrap + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketMooncakeTrash + name: mooncake wrapper + components: + - type: Sprite + state: mooncakewrap + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketTidegobsTrash + name: tidegobs trash + components: + - type: Sprite + state: tidegobs + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketSaturnosTrash + name: saturn-os trash + components: + - type: Sprite + state: saturno + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketJoveGelloTrash + name: jove gello trash + components: + - type: Sprite + state: jupiter + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketPlutoniumrodsTrash + name: plutonium rods trash + components: + - type: Sprite + state: pluto + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketMarsFroukaTrash + name: mars frouka trash + components: + - type: Sprite + state: mars + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketVenusTrash + name: venus hot cakes trash + components: + - type: Sprite + state: venus + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketOortrocksTrash + name: oort rocks trash + components: + - type: Sprite + state: oort + - type: Item + +# weebo vend +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketRedalertnutsTrash + name: red alert nuts packet + components: + - type: Sprite + state: weebonuts + - type: Item + +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketStickTrash + name: stick + components: + - type: Sprite + state: stick + - type: Item + +# +- type: entity + noSpawn: true + parent: FoodPacketLunacakeTrash + id: FoodPacketProteinbarTrash + name: protein bar wrapper + components: + - type: Sprite + state: proteinbar + - type: Item diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 6efa5a6371..380f7e012d 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -14,7 +14,7 @@ path: /Audio/Ambience/Objects/vending_machine_hum.ogg - type: Sprite sprite: Structures/Machines/VendingMachines/empty.rsi - snapCardinals: true + snapCardinals: false - type: Physics bodyType: Static - type: Transform @@ -89,7 +89,10 @@ - type: PointLight enabled: false castShadows: false - radius: 1.5 + radius: 2 + energy: 1.5 + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: LitOnPowered - type: ApcPowerReceiver powerLoad: 200 @@ -212,7 +215,8 @@ ejectState: eject-unshaded denyState: deny-unshaded - type: Sprite - sprite: Structures/Machines/VendingMachines/cart.rsi + noRot: true + sprite: Structures/Machines/VendingMachines/laptop.rsi layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -222,11 +226,18 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1 + radius: 2 energy: 1.3 color: "#ffb0b0" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: AccessReader access: [["HeadOfPersonnel"]] + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -255,9 +266,11 @@ - type: AccessReader access: [["Service"]] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#4b93ad" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -278,6 +291,7 @@ pack: CigaretteMachineAds - type: Speech - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/cigs.rsi layers: - state: "off" @@ -287,6 +301,11 @@ shader: unshaded - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -314,9 +333,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.8 + radius: 2 energy: 1.6 color: "#3db83b" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -344,9 +365,11 @@ - state: panel map: [ "enum.WiresVisualLayers.MaintenancePanel" ] - type: PointLight - radius: 1.8 + radius: 2 energy: 1.6 color: "#3db83b" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -371,6 +394,7 @@ pack: HotDrinksMachineAds - type: Speech - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/coffee.rsi layers: - state: "off" @@ -384,9 +408,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.3 color: "#ad7c4b" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -409,6 +440,7 @@ pack: RobustSoftdrinksAds - type: Speech - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/cola.rsi layers: - state: "off" @@ -419,9 +451,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#3c5eb5" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachineCola @@ -429,7 +468,7 @@ suffix: Black components: - type: Sprite - sprite: Structures/Machines/VendingMachines/cola-black.rsi + sprite: Structures/Machines/VendingMachines/soda2.rsi layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -439,9 +478,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#423438" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachineCola @@ -450,7 +491,7 @@ description: It vends cola, in space. components: - type: Sprite - sprite: Structures/Machines/VendingMachines/cola-red.rsi + sprite: Structures/Machines/VendingMachines/cola.rsi layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -460,18 +501,22 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#A50824" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity - parent: VendingMachineCola + parent: VendingMachine id: VendingMachineSpaceUp name: Space-Up! Vendor description: Indulge in an explosion of flavor. components: - type: VendingMachine pack: SpaceUpInventory + offState: off + normalState: normal-unshaded - type: Sprite sprite: Structures/Machines/VendingMachines/spaceup.rsi layers: @@ -483,9 +528,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#44964A" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachineCola @@ -494,7 +541,12 @@ components: - type: VendingMachine pack: SodaInventory + offState: off + normalState: normal-unshaded + denyState: deny-unshaded + ejectState: eject-unshaded - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/soda.rsi layers: - state: "off" @@ -505,18 +557,27 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#CBC6BE" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity - parent: VendingMachineCola + parent: VendingMachine id: VendingMachineStarkist name: Star-kist Vendor description: The taste of a star in liquid form. components: - type: VendingMachine pack: StarkistInventory + offState: off + normalState: normal-unshaded - type: Sprite sprite: Structures/Machines/VendingMachines/starkist.rsi layers: @@ -528,9 +589,13 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#D3A44D" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: true - type: entity parent: VendingMachine @@ -563,9 +628,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#66538F" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -598,9 +665,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#6927C5" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -633,9 +702,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#D82929" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -649,9 +720,11 @@ brokenState: broken normalState: normal-unshaded ejectState: eject-unshaded + denyState: deny-unshaded - type: Advertise pack: DinnerwareAds - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/dinnerware.rsi layers: - state: "off" @@ -664,9 +737,16 @@ - type: AccessReader access: [["Service"]] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#4b93ad" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -679,9 +759,12 @@ offState: off brokenState: broken normalState: normal-unshaded + denyState: deny-unshaded + ejectState: eject-unshaded - type: Advertise pack: MagiVendAds - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/magivend.rsi layers: - state: "off" @@ -692,9 +775,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#9a18d6" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -724,9 +814,11 @@ - texture: Structures/Machines/VendingMachines/maintenance_panel.png map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#6148c7" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -742,6 +834,7 @@ ejectState: eject-unshaded denyState: deny-unshaded - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/engivend.rsi layers: - state: "off" @@ -754,9 +847,16 @@ - type: AccessReader access: [["Engineering"]] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#b89e2a" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -775,7 +875,8 @@ - type: Advertise pack: NanoMedAds - type: Sprite - sprite: Structures/Machines/VendingMachines/medical.rsi + sprite: Structures/Machines/VendingMachines/medivend.rsi + noRot: true layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -787,12 +888,19 @@ - type: AccessReader access: [["Medical"]] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: GuideHelp guides: - Medical Doctor + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -810,7 +918,7 @@ - type: Advertise pack: NutriMaxAds - type: Sprite - sprite: Structures/Machines/VendingMachines/nutri.rsi + sprite: Structures/Machines/VendingMachines/nutri_green.rsi layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -822,9 +930,11 @@ - type: AccessReader access: [["Hydroponics"]] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#326e3f" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -842,7 +952,8 @@ - type: Advertise pack: SecTechAds - type: Sprite - sprite: Structures/Machines/VendingMachines/sec.rsi + sprite: Structures/Machines/VendingMachines/security.rsi + noRot: true layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -854,12 +965,19 @@ - type: AccessReader access: [["Security"]] - type: PointLight - radius: 1 - energy: 1.2 + radius: 2 + energy: 1.8 color: "#78645c" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: GuideHelp guides: - Security + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -878,7 +996,7 @@ - type: Advertise pack: MegaSeedAds - type: Sprite - sprite: Structures/Machines/VendingMachines/seeds.rsi + sprite: Structures/Machines/VendingMachines/seeds_green.rsi layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -888,9 +1006,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#326e3f" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachineSeedsUnlocked @@ -920,6 +1040,7 @@ pack: GetmoreChocolateCorpAds - type: Speech - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/snack.rsi layers: - state: "off" @@ -930,9 +1051,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#c73434" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachineSnack @@ -960,9 +1088,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#737785" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachineSnack @@ -980,9 +1110,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#3c5eb5" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachineSnack @@ -1000,9 +1132,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#CE3401" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachineSnack @@ -1020,9 +1154,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#5F6A1C" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachineSnack @@ -1040,9 +1176,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#207E79" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -1064,7 +1202,8 @@ pack: BodaAds - type: Speech - type: Sprite - sprite: Structures/Machines/VendingMachines/sovietsoda.rsi + sprite: Structures/Machines/VendingMachines/sodasoviet.rsi + noRot: true layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -1074,9 +1213,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 - color: "#389690" + color: "#B80F0A" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -1097,6 +1243,7 @@ - type: Speech - type: Sprite sprite: Structures/Machines/VendingMachines/theater.rsi + noRot: true layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -1109,9 +1256,16 @@ map: ["enum.VendingMachineVisualLayers.Screen"] shader: unshaded - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#c73434" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -1130,6 +1284,7 @@ pack: VendomatAds - type: Speech - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/vendomat.rsi layers: - state: "off" @@ -1140,9 +1295,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -1161,6 +1323,7 @@ pack: VendomatAds - type: Speech - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/robotics.rsi layers: - state: "off" @@ -1173,9 +1336,16 @@ - type: AccessReader access: [["Research"]] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#B0ADA9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: GuideHelp guides: - Robotics @@ -1194,6 +1364,7 @@ ejectState: eject-unshaded denyState: deny-unshaded - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/youtool.rsi layers: - state: "off" @@ -1204,9 +1375,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#d4ab33" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -1224,6 +1402,7 @@ - type: Advertise pack: GoodCleanFunAds - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/games.rsi layers: - state: "off" @@ -1234,9 +1413,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#326e3f" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -1251,12 +1437,15 @@ offState: off brokenState: broken normalState: normal-unshaded + denyState: deny-unshaded + ejectState: eject-unshaded initialStockQuality: 0.33 - type: Advertise pack: ChangAds - type: Speech - type: Sprite - sprite: Structures/Machines/VendingMachines/changs.rsi + noRot: true + sprite: Structures/Machines/VendingMachines/snix.rsi layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -1266,9 +1455,16 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#ffe599" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachine @@ -1293,9 +1489,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: AccessReader access: [["Salvage"]] - type: GuideHelp @@ -1330,9 +1528,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#d4ab33" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true # wallmounted machines @@ -1352,11 +1552,13 @@ - type: Sprite drawdepth: WallMountedItems snapCardinals: false - - type: Rotatable - type: WallMount arc: 175 - type: Transform noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true - type: entity parent: VendingMachineWallmount @@ -1370,7 +1572,9 @@ brokenState: broken normalState: normal-unshaded denyState: deny-unshaded + ejectState: eject-unshaded - type: Sprite + noRot: true sprite: Structures/Machines/VendingMachines/wallmed.rsi layers: - state: "off" @@ -1385,6 +1589,17 @@ - type: GuideHelp guides: - Medical + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true + - type: PointLight + radius: 2 + energy: 1.6 + color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true # job clothing @@ -1516,9 +1731,11 @@ - type: AccessReader access: [["Chapel"]] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#CCCCCC" #The holy C + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -1739,10 +1956,12 @@ offState: off brokenState: broken normalState: normal-unshaded + denyState: deny-unshaded + ejectState: eject-unshaded - type: Advertise pack: JaniDrobeAds - type: Sprite - sprite: Structures/Machines/VendingMachines/janidrobe.rsi + sprite: Structures/Machines/VendingMachines/lavatory.rsi layers: - state: "off" map: ["enum.VendingMachineVisualLayers.Base"] @@ -1753,6 +1972,12 @@ map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: AccessReader access: [["Janitor"]] + - type: PointLight + radius: 2 + energy: 1.6 + color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: entity parent: VendingMachine @@ -1906,9 +2131,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#48CF48" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: AccessReader access: [["CentralCommand"]] @@ -1940,9 +2167,11 @@ - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: PointLight - radius: 1.5 + radius: 2 energy: 1.6 color: "#3c5eb5" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true - type: Advertise pack: HappyHonkAds - type: AccessReader @@ -2022,3 +2251,158 @@ - type: AccessReader access: [["SyndicateAgent"]] +- type: entity + id: VendingMachineFitness + parent: VendingMachine + name: SweatMAX + description: An exercise aid and nutrition supplement vendor that preys on your inadequacy. + components: + - type: Sprite + noRot: true + sprite: Structures/Machines/VendingMachines/fitness.rsi + layers: + - state: "off" + map: ["enum.VendingMachineVisualLayers.Base"] + - state: "off" + map: ["enum.VendingMachineVisualLayers.BaseUnshaded"] + shader: unshaded + - state: "screen" + map: ["enum.VendingMachineVisualLayers.Screen"] + shader: unshaded + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: VendingMachine + pack: FitnessVendInventory + offState: off + brokenState: broken + normalState: normal-unshaded + denyState: deny-unshaded + ejectState: eject-unshaded + screenState: screen + - type: Advertise + pack: FitnessVendAds + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true + - type: PointLight + radius: 2 + energy: 1.6 + color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + +- type: entity + id: VendingMachineHotfood + parent: VendingMachine + name: hot foods + description: An old vending machine promising 'hot foods'. You doubt any of its contents are still edible. + components: + - type: Sprite + noRot: true + sprite: Structures/Machines/VendingMachines/hotfood.rsi + layers: + - state: "off" + map: ["enum.VendingMachineVisualLayers.Base"] + - state: "off" + map: ["enum.VendingMachineVisualLayers.BaseUnshaded"] + shader: unshaded + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - state: heater + - type: VendingMachine + pack: HotfoodInventory + offState: off + brokenState: broken + normalState: normal-unshaded + denyState: deny-unshaded + ejectState: eject-unshaded + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true + - type: Advertise + pack: HotfoodAds + - type: PointLight + radius: 2 + energy: 1.6 + color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + +- type: entity + id: VendingMachineSolsnack + parent: VendingMachine + name: Mars Mart + description: A SolCentric vending machine dispensing treats from home. + components: + - type: Sprite + noRot: true + sprite: Structures/Machines/VendingMachines/solsnack.rsi + layers: + - state: "off" + map: ["enum.VendingMachineVisualLayers.Base"] + - state: "off" + map: ["enum.VendingMachineVisualLayers.BaseUnshaded"] + shader: unshaded + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: VendingMachine + pack: SolsnackInventory + offState: off + brokenState: broken + normalState: normal-unshaded + ejectState: eject-unshaded + denyState: deny-unshaded + - type: Advertise + pack: SolsnackAds + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true + - type: PointLight + radius: 2 + energy: 1.6 + color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + +- type: entity + id: VendingMachineWeeb + parent: VendingMachine + name: Nippon-tan + description: A distressingly ethnic vending machine loaded with high sucrose low calorie for lack of better words snacks. + components: + - type: Sprite + noRot: true + sprite: Structures/Machines/VendingMachines/weeb.rsi + layers: + - state: "off" + map: ["enum.VendingMachineVisualLayers.Base"] + - state: "off" + map: ["enum.VendingMachineVisualLayers.BaseUnshaded"] + shader: unshaded + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - state: fan + - type: VendingMachine + pack: WeebVendInventory + offState: off + brokenState: broken + normalState: normal-unshaded + denyState: deny-unshaded + ejectState: eject-unshaded + - type: Advertise + pack: WeebVendAds + - type: Transform + noRot: false + - type: Rotatable + rotateWhileAnchored: false + rotateWhilePulling: true + - type: PointLight + radius: 2 + energy: 1.6 + color: "#9dc5c9" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true diff --git a/Resources/Prototypes/Entities/Structures/Specific/bay12barbershop.yml b/Resources/Prototypes/Entities/Structures/Specific/bay12barbershop.yml new file mode 100644 index 0000000000..e66ae347d9 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Specific/bay12barbershop.yml @@ -0,0 +1,36 @@ +- type: entity + parent: SeatBase + id: ChairBarber + name: barbers chair + components: + - type: Transform + anchored: true + - type: Physics + bodyType: Static + - type: Anchorable + - type: Rotatable + - type: Sprite + sprite: Structures/Specific/barbershop.rsi + state: barberchair + +- type: entity + parent: BaseSign + id: BarberSignPole + name: barber pole + description: Hypnotic. + components: + - type: Sprite + sprite: Structures/Specific/barbershop.rsi + state: pole + snapCardinals: false + +- type: entity + parent: BarberSignPole + id: BarberSignThesnip + name: the snip + description: Let's hope it's not a medical practice... + components: + - type: Sprite + sprite: Structures/Specific/barbershop.rsi + state: thesnip + snapCardinals: false diff --git a/Resources/Prototypes/Entities/Structures/Specific/bay12fitness.yml b/Resources/Prototypes/Entities/Structures/Specific/bay12fitness.yml new file mode 100644 index 0000000000..1da1d85da0 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Specific/bay12fitness.yml @@ -0,0 +1,80 @@ +- type: entity + parent: SeatBase + id: FitnessWeightsBench1 + name: weights bench + components: + - type: Transform + anchored: true + - type: Physics + bodyType: Static + - type: Anchorable + - type: Rotatable + - type: Sprite + sprite: Structures/Specific/fitness.rsi + state: fitnessweight + +- type: entity + parent: FitnessWeightsBench1 + id: FitnessWeightLifter + name: weight lifter + components: + - type: Sprite + sprite: Structures/Specific/fitness.rsi + state: fitnesslifter + + +# Bags +# TODO: Need a way to change to animation state on trigger in world (click) or use damage state visualiser and instant healing to change state on attack. +#soundOnTrigger ? +#TriggerOnActivate ? +#TriggerOnCollide ? + +- type: entity + id: FitnessPunchingBagBopClown + parent: BaseStructure + name: clown bop bag + description: A fitness training bag with a clown printed on it. + components: + - type: Sprite + sprite: Structures/Specific/fitness.rsi + state: bopbag + +- type: entity + id: FitnessPunchingBag + parent: BaseStructure + name: punching bag + description: A fitness training bag. + components: + - type: Sprite + sprite: Structures/Specific/fitness.rsi + state: punchingbag + +- type: entity + id: FitnessPunchingBagCaptain + parent: FitnessPunchingBag + suffix: captain + description: A fitness training bag with a captain printed on it. + components: + - type: Sprite + sprite: Structures/Specific/fitness.rsi + state: punchingbagcaptain + +- type: entity + id: FitnessPunchingBagSyndicate + parent: FitnessPunchingBag + suffix: syndicate + description: A fitness training bag with a syndicate agent printed on it. + components: + - type: Sprite + sprite: Structures/Specific/fitness.rsi + state: punchingbagsyndie + +- type: entity + id: FitnessPunchingBagWizard + parent: FitnessPunchingBag + suffix: wizard + description: A fitness training bag with a wizard printed on it. + components: + - type: Sprite + sprite: Structures/Specific/fitness.rsi + state: punchingbagwizard diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml index e7d938a3c9..0428937122 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml @@ -32,6 +32,7 @@ - type: Sprite drawdepth: WallTops sprite: Structures/Wallmounts/signs.rsi - snapCardinals: true + snapCardinals: false + noRot: true - type: StaticPrice price: 20 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/(mdr)grapejuice.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/(mdr)grapejuice.png new file mode 100644 index 0000000000000000000000000000000000000000..33c8cf524d71b12fcc1df6a1c9aac271394f9475 GIT binary patch literal 544 zcmV+*0^j|KP)s z(+j+Vm%_UWDs@_Huk8SnX5j&hXGZS8x$j>O4-9fW{e4uWNCi-suHX!td#GuyM^RD< z$eMVE7IV-L)EN*Jh@d;3!0EmTd=xYQc~kQ3*+&+RTRY^rGPvz-+?V;zwh(j{!n+DW z2B5_?#t{|ZEmY*7dTUo00HQ95?;=V0+NAsLA6}|BQ~>L1CV1{&AZ5gWCKe}*1>$zP ziA)7xy}CnYS|TLVozS-o!IFFfwJZyU3zskeL{E1QNO%`PRoj8Q(kWcpoK$hB0Mg{~ z$b3~JO6kIjHOB8{$fUw$pu8dJ_LI?mdYzm>^R*&Wa{D|+fKL_}M iz%MC0htWU4Z|V~&1DFQOHcYz!0000=2thz@dFvbcnRL|&7WLS60;7Yg@GcQ@SoBY9tLjDceS24DbE z0MGLp-}jManKcOD>TQA3qf5B13&(NjSO~!l=!;)Ox1b5=)2+D?LSJD0@C;QE0;GqJu;UtaGX2}z z@jFiDHrO@)L*9ss2+xVzQ{P!(=Kp63=#LN|JwFvg%| z3{}Sf_7gyl(AFD(s;cw?x^8d&Inx7>DX0vfDh6Nxzt1aGsCmFVPxR5HhO#rwB1i;G#053Ut2V~_MRO1;ahf7DQdIvskkAjyi}hA-MPeeFVW( zUqcWCi<5(cP~s%TO;9O_xH_9gE1A>q7ooRY>5%*W`!mEq%t`s5QNK436Ns-9W*Ff151|1zT9`KZsfCF~)LFIN7v&Xxu(PcG?_|Q+b+VwzN~b;6 z;-P~<{I!*npXSy$@7Qj0ymjySeY!f#r#)G>u+-eQFEBbL6~?mcbZBbv&Zg3-zbD>n z{4aXr?z_U>Asw5R9^!fJZ1d7ACWtXOP)K0+@j8Bfi7HE%Rlyf#GtADfzkl_gLu%)L zo2GcNbaq?)%HliQ6%Gz#?z+%z{bWC!WrE!sO(nwzHu# zgHwiaIiCuUUu5~bGfH7fS#Bzmse*i+M5`G~+|vH_Er&hpSb%D0IxLSVabM5g@u&Zf i=d!2_p93L5jq3MfVvqg*^)Lk(Obni`elF{r5}E+QID=XM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alcoholfreebeer.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alcoholfreebeer.png new file mode 100644 index 0000000000000000000000000000000000000000..04a3a9abc1a29639793cc2234884deb5039b1250 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQIS z#WAE}PI96|g2AhXK=vN1gbZtk@V?jf9sB;gkbc}?;V|j9^o)HzjgrpRTx?eu^Jek< zpWE|9!tc&Mrj-4^_rJDcj(nMr(Z+D*dwJZS1c8UCi4}(xT*@?f&IMih+T5v=#q>$l6 z(dk9?Uy2#-@4U?Oy5Y+%SA~032E0OxXEQq}FwEd~c*?-B=jWgHhte~jO?b;N;i;C8 zOu#+Hl|r=Lv@}D~VZ(4R5Lq1O%D8_9|(Mw54&}nOwj&iQn+3-n*s! z%rmC$Gx~COin}4JiW{GTHCKv_h2)lVF-bcZ-+53%ZFPbtZ+_0;%WMJvKB7f*Kqt~LQ9QFpC>w;;` zpWp9UxR}{NRc^(f{mp7_=IjAUidSVEbiuyj*}=>Zof#Uc#+D`m^fZH~tDnm{r-UW| D51w@# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alecan.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/alecan.png new file mode 100644 index 0000000000000000000000000000000000000000..80312918b0ed1d7ec8d3a61190d1f7b20093ac61 GIT binary patch literal 307 zcmV-30nGl1P)x6(uA<&H+M!{Xg4+fg219Y?U)qMaSaC4XuVL9KQun+=fRDN^*J#{(> z>O-mj1D4Rx7}*R^O1Wjlyw*-m}jMA$wYex@z3;3LBhOD1XK2`kbjO+35&0ppoG7omeLs)Bd!@|-!q zEWvBXGOu|1>jTFg_CKwgz5AZ~VU3afRJV3oE%EAGT`Lop$kR@Df45%CHoOCT(cH-u*fFa@^5Zb~7e@^mi0-yuEExjN*g8(?08*p2nWgIZ?&aokR3` z=~Eer#J{Xu7wigP)V5^mzq8n_4zmQm1P;FRRh zrnp4-1A`!Hs-V!x!Jy4@s)k#mg5x#`#Ja%AYq~)iuKS61Sk&;|{gI&WaKD3hyzl4t z-uwODO~RP<5Ae4EVzHPW3WcEC?Sdpp6P^Q@<`fM8t~qQ0nC29DWecF13B$eAh2EJaK(j0!m1i=LGllks#AIiWF!F>iS^Mns5 zCZ#kk6e`F%4;R2&J!hGdl2a;F54;fZ2q(Sy~H`nv7m7yE5 z1+ZAEV{ds5H?E$M`hq6_quXFeq=(sxS(l#+fE1n;tam%va|1Xj+m{i^@ArczmysJ{ z2B2o7D2gZuLOd7@ei<`XqDcqQRRFUJei@E?QUyG}UXB7dsj&lm0=~EHwUe-N761SM M07*qoM6N<$f;KDM%K!iX literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/baijiu.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/baijiu.png new file mode 100644 index 0000000000000000000000000000000000000000..bb126e29ee5b4b0de531e51fb9c28b4724694cc4 GIT binary patch literal 518 zcmV+h0{Q)kP)i>WA#5snzyv2+I;sB84w{M@L#0Un8 zqd-;Fh+*jjMds*&Er03m0BZ{)h6Rh~FccRSF)$QtA7xq70;$h7?DE ztK3O2J@>LXgQy_s`YCe23X67#<ZR13=(aDFeJV1cCRjUcswmx;Ov^g!uTt?Ey*v$qu-6^9IA-BS#pVZEV1N zLp?~H01`WVob=p4vIC$Ej{nnU%)%u{TL+M95mg;PO)%;J0PyOKyD%j!eESSo}FK9YA~~j>1g=;e{|8pY_k+vQ%_@9j*ijo=PWSe0(CYx(4IjfHJNkwj4t+ z6l7~?t`(M33C9AOrdd;dKaNjwtbcZTPGjx)dcBTDqXAV_Sxf6%WB*F@Tmu9rD7DpU zm4P|D*=#!A$CUsF@>YcN)4L5<0%FQ3>~PaGp(qObNf8i5C=2|=T!Mq8T>%9zHW6%x zO3#4(t_dzer4}ItKeZjs!BR6I!bMm&5h(&a|Y^+1qb@u%CEUk^piqH0E;f&c&j07*qoM6N<$f{t<1IsgCw literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beastenergy.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beastenergy.png new file mode 100644 index 0000000000000000000000000000000000000000..8550ed2e326b10c3a53f66dc2a239c5c2344f2f1 GIT binary patch literal 402 zcmV;D0d4+?P)u?{vh;VQD$oq!(<6UxD!5_;2 z7ytwCKLNrp97()FE&vqnc^=XLS3wXf$SaNiUqLx`ts{bpyylw*887@Hw;E}>CA@G wB}99z06!sQJ{V#h0XJ-E0LzpCFaQQ%4BXj(WldU}xc~qF07*qoM6N<$g0&Ewvj6}9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beer.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beer.png new file mode 100644 index 0000000000000000000000000000000000000000..2a6edb52e5173dc80c995a62161d4ff69bd3bcdb GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP_K z#WAE}PI96|g2AhXK=vN1gbZtk@V?jf9sB;gkbc}?;V|j9^o)HzjgrpRTx?eu^Jek< zpWE|9!tc&Mrj-4^_rJDcj(nMr(Z+D*dwJZS1c8UCi4}(xT*@?f&I(lgo66mO!~B;8 z1IskIy5>XQlO{4wW8ePbIYTNZU)uutE}qvG@0wq(j<=hf$`^Wx;e_C;co(*Fj0*%_ z{41VY$H#D$u{_?upv2fghxMX@VbLp=P0k9p!dPPX8V<}pUoWw*R?U_@;0eQor&FVdQ&MBb@03PXi8UO$Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beercan.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/beercan.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7f51e7c9a3abb2a0024ba690fc9279cf7f9de0 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEPwD z#WAE}&fBXGd7BjkSRc4wQZ3+>IA9v%AamF>f${nahD(MK%|#)r>UT={3hNmbeScnC zrDj)9Z0f*l;=uezKVjbU3X5)UMv;5pZKtIkG~n6!Txk`f>Krf4sqe283-UDhTo;bL zez1Cex?+pXbCF`!7LEx)|3uC)xx7}mGt23&U5N6d6^dtA84`nTtTKMoy{N!;S@7P5 ztxR0Y16DLC^)N4=q3z-Sn%{Z>)rOZ%ww`xEwzAA>Ot87=|8cF^F-F4Q~~;#!PC{xWt~$( F696f?b;AGv literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bigteacup.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bigteacup.png new file mode 100644 index 0000000000000000000000000000000000000000..e69ef51777464dec8d351bad59dc6c2c6c8871ec GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQdZ z#WAE}&fCj|TrCCytQP{!Qw83z^d~%2wJBY<(0qf~8r_(>1ch!dwcU)7Gx!&^9jWyD z;>z#N$Q97QB(k94KcmHSzL$3jWx8`1^zM}2J-%b>wfVhA;&}I7C?m{aJeDOd;Z&FQ~tkg kn0j&Qonl6?=z+}*jOue)&K2&hFa-&Cy85}Sb4q9e0L3yZr2qf` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/blackstrap.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/blackstrap.png new file mode 100644 index 0000000000000000000000000000000000000000..b6462b62194b14f13b226c55ac810dd18254f2b5 GIT binary patch literal 359 zcmV-t0hs=YP)Ln+K+&!)Agz_IV5Dn}&d@>f z6oN~$mV&sO#UKdaI8Jo{uIs|{ywZPwl-;)AS8wP#&~>1F zYe*GR^*7fmy`%HWJMggD;@d5#^7{ZwlD`A|QyoADa0T_=sBN^Zn;ifE002ovPDHLk FV1mk0n|=TQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bottleofnothing.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bottleofnothing.png new file mode 100644 index 0000000000000000000000000000000000000000..0758381372d2be88391d8dd52127fcb1b5f98b06 GIT binary patch literal 350 zcmV-k0iphhP)zXxY0X2Uk}K# z3=G3yiopeNB^R(P3p~$bj=?XI48z_%fGW#!us4Vfhz_jp7-EH3{m1os w|M2_d9r#*p{qGet`FnsR$>;!MN&pCeH;AyMUSjX62LJ#707*qoM6N<$f=pJCeENY2VB?WxB?$`xdq;f*k8gqvn{T}=jNr}vtdPh)#ox; u*S$Y|E}h5ta?X;lCGTrom;?^wGxAMfjLR)jV_gk&1%s!npUXO@geCwuC`Nt& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/broken_bottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/broken_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..1037c72f797cccffb40f05da29e4cd0608fcd28e GIT binary patch literal 382 zcmV-^0fGLBP)y8YJ1E>Kga=^o9Uk1(rQyf_TD;(O-aPP@Kh7vQ@|2?OE zla&+5asbG3CmAM&+aLZj$nt>f{ZFH`!zMS6B5I|Tkm z_%f(K*&rHJ9*_gba=^?D-xzF+FvaNR01zmg^ofBQfTBd`qrwHIx7;Dm_hdUDJ%Eeh z*zvUNw+k`m>5Vam9mXqxOYJyP*j5=V{ c0R!#;04M-g9T!IT?f?J)07*qoM6N<$g3gncr~m)} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bronze_cup.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/bronze_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..b09bb8e7865eee384827435f2d54a1a6a47b2f4a GIT binary patch literal 622 zcmV-!0+IcRP)G+U?H1XEWvmR@Z9c{Ykl_j08ZTG*=4e zF@Nh0v{(YhVN=AnH$S6Qv(Ttk;CmjN?Jh1{zk%%1B3>@7$fTA7n4U5b1U@|1LDEe8 ziEHuro^yjBfVbnq@Aq-+C_$F@cS{2So9%SIfw2K%MpCpwk0+4Hok06bonn8TX*O-C{!0UJsj33M*P~wd zzy<>mT1$ewrVEHq1 zWdE-p4*xft%&)M!&z8qCgcYkM9^QYhv9}=Xz>N%Glsa&LpJM*ix;Pr-xBvhE07*qo IM6N<$f^SJ09{>OV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cachaca.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cachaca.png new file mode 100644 index 0000000000000000000000000000000000000000..7f85a6361b6f728ab19930d44a235fb678cb1302 GIT binary patch literal 392 zcmV;30eAk1P)iW{~9o4Q*kDNV&BPs~HTzd=UHc zcPoao40KF{J07Ytq{SoH3=G0#nKLxY0T9@FM*xM-D?>*ISk`=EVD0&hB6d5Am3|HY z0ow`e;K~RD9)J1IKrR@XY2d*(2C(l{1sIXU$O{Fs9002KIj!0LpLzcuMT~9^0DCL`wBUozX@frHU;DnBh9_-5z*JuN!REYu zZQqf9<_k>aOqNWMySGiZMPT1~&TMY4+yKGz5|1D5W7F4Zl$L4|n>|ZRjjFNkK zp2e+F&Zn$7-Xy;`py!t|lU>*#ezmFQZ>a~IB_``kTIPn=`7?2Ah-}z)Z1RD-yX9uc zKl<0rvEZrMwk69|HY|#B{jgKsAwhTJ+RBIjd+HkGlnO!?If!&HE$8-OzY@TH^^TY_ P(DMwQu6{1-oD!MHvxyuue?&|BJtW7_#0zXB-d*fGmGOw$)T{ zz*0T|2;cQeXx}4(RyzA4oD&V#E;61=fn1|2LjndG`9X`wSH^ z75|UkzfM+iB-;VK>*mARe#tQmM{BCdGKVY&ELb?@|G}+$8N`wzjaj+Gfg)GHVhQm% zB!>doA&{0AaF&7LI|Cml7sGEy9frGi9vhQm4#^Gx`P4tq@hptb%*@Q7sig>Fo+T#~ zhF&hXe(e#1e;{r-nmYglCe(Br7qpa~MHbt$a=kGFrx<-400P_Qt}y21<^r=nfBiU;=ztAZP^k0jD9f2(A1J+xPSH)m_41V5=_%Q5#~3SoZUWeB}&n28{l>J$>Ucf7sq5r zfoD=Uyd1cCRN4ggg)ph^dq9L*g-u0>RJ05!p=0|wjy01}Ra U8b-Ul&;S4c07*qoM6N<$g4OrNUH||9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/coffee.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/coffee.png new file mode 100644 index 0000000000000000000000000000000000000000..d97aeb795d71d3dd07140ca22ad0764d77fecf8f GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq{|9 z)5S5QVoq|RM1sMqhCucntAs0z&es_yFF*6I|IGQbo~cV_GdoO^o*|XkG4V0SBw2>d ze@-+e^XyL7XXxI!OwHhiMTB9Co7(^Qy)}BCeG1lG3DXYWP+*_He4?mf=(c1RKSe+T*nLys?R0;vPk&bBFXbT#Ztm&`+HVv78boZcI;yNfBw~eE6c## zp8Z#H+uWZ_Y4J6Gnq!hB+`OG8$!>UmF7ns`rUcC&1-xB5Hmqbk94vI2VUr94^R~0n zk})@KO7_jMI=+C#r=`7bp2BIFO|lH97@s_=?UH5C`s{dAZ_|w|qo(;e>;XxNS7jV@ dq26U+DE}9EKGhh%gc)I$ztaD0e0sw~9fF1w< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cognacbottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cognacbottle.png new file mode 100644 index 0000000000000000000000000000000000000000..63ec409f302ada47a456f4f35ce5780cb3139b0d GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq_xh z)5S5QVoq|RM1sMqhCucntAq^egvmW;{+H*^Gf?@HkRT(#{wIE8&%?WCXY=r!T$wW4 zaU%0OCf)F`@a0E1PRS@tnR{wO{*!Jh_T!q3Il^jO+s^eXZHbM=rMS@`njxg HN@xNAQl^ik literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-blue.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..68de91a98a0b9614847fa6a3dc3c63fad1b1e22f GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQga z#WAE}&fBSmd`$)tt@XnC4;}>Eu-;^_Hj=;FP$pNsN}%X!SJ7Z!IW2SpVc%PwDr3VoevGI?05RZ^C32F z+EaCR1qOz4y(uc3Pb=RkN+jF4v#dKXclP|}Q=A!=3oC1W-?l|=>CCh9&G;DlGRkoviNq5n<^1If$bn$P;v6C8wJpPRBwGgr*h z!l5}rF7Ju7Aj5p=hUAF`N&6?gjpK0$;9-!PU&7|oEj!<`>}~PSBMqB$7Juz|Rc3kb zwsz}JVI>XbMYigRN6HT@-y-f1AK1VoVqo!rmFJQ7lM9MvPk{bq@O1TaS?83{1OWfz Bc)ecu?q?%|Vk zZr5SEV9xvRjku}#rhhHJR$jh-fY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-orange.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-orange.png new file mode 100644 index 0000000000000000000000000000000000000000..23851c7ca34781187e495a646a893c16e14a196e GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQvf z#WAE}&fClJyv+szY#)?wJ{EBJ9>*;4g2l&yH-}9ifKlQGPY4538zak__p2K@6Rv+! zKYP!@@%YOSlCMGajGbBqm~TY=MqIEV7R<33W>nBsRXv)JlfzTivSf)$#2guiFp&nG>NNJm;3UhNd>1AM zB<*NP(VX%Bk=$Py1$_m!WvxN7lK0Nu<9~MfD&wT9jXaYK{I*NA^w~Pvv(M3(dotnT z+`dEV;sGH-cKNaVe7s%^k$enCZBJZZu!H@gf}OMR+)ECR_o*&8^vqu4sr{c1Tsmb7 zD)oHkeB*1dTy#(KnZ42cMjwYVsRc)ZR#`Me0ll=CPonfdgEa%g*^6P@_NYty0{zb5 M>FVdQ&MBb@00ED6{r~^~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-pork.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/cola-pork.png new file mode 100644 index 0000000000000000000000000000000000000000..37946fbcd2c7bc63ba0389545982a3600b6b4f58 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0tY@ z#WAE}&fANDyv&L`Y!Bj$gcF)M9S*25u--Vp#wD;p*nsiyv79^WV&A#xRWDSYp!$}3 zDgU4N!<=l>8CVn;82{)iv}_RhdquS2;kBq&!CocLl~yqxFL-{(?zzG$##d#H)@K%M zWlQE!oDyUbFS+&n$9)Wk=UxAK_x-~?NsQNyDvB>GIWNl?ozb1e^dRp%o6L6kPptQt zkNmLQd6enFwrGucvHK4^|19!w;}m0-2Ya|5NHpu&p`Vy=caJ z%Z|6w3JVspc}`L|ZPYE`bfenu<32{&Yk}$g)rW32gp_-~ecvNCCy6m{*Y(Z82SlXy zCx5vvSKY;0@iH#&;2A&0S1SeXIUm{8Uez#(OGB1vkr7jtgO}xb`MZ7$EL>lVm-S!C zJJd3p|H2(>MjgSlx6jV*e3)~fg7Nx|YytiQh8wmnU9!kAS;vOy+&XEa zjmbZ{Pwq((zL&jE-ywlr+MUJ4fyL!PJ!_Al?M}Wh(G4F|Jnxi7PFq*3>c;)&&}JR! zvc4lftP^-*KDH!s6v|k0E}e4Q^5I@)j@{J{L@c}=L|J7%$z(D0e%MpMen(uqLgC4s zQikJ?H_Y7-?-3tz;8~{u_tLr2*OW8fu2s8m?fq(7rr1!1OskygH>NMUxo+&y*WS|1Z*R+CfgHaEfrRw@|F_QFTmQC*U4(amPGV)wm7M&2hWo;j5}(S`B{K9{{2!dZbXYq-s*ug&bQAS`}Zk1z1Qv=$p6tLdbTO3LVC(iSgT`J{g^9+Q#w3 zROg^v^XZ+E4gY6ep%kO;!g$9GCtDnm{r-UW|y&-NI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/colabottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/colabottle.png new file mode 100644 index 0000000000000000000000000000000000000000..d50cccf5aa57a27d5d4dd6c11eb86df76c2dc1c7 GIT binary patch literal 574 zcmV-E0>S->P)nrRvory4s7L;&70ZB~^z@cs`pM^2w-z*y7#ImsNd4bRSJ`eV&))N(J7>2Q2d0ylfVI>hl`OJH=a&Ai-ijk89gTKAnc`x-RD&>G266ageu#{noImL7Ye{Yg?avGWcGic zCrn18B)oN;X(V*(sx25S5+Fz}N;2KoSMTfx4Fe=PL^#7=HR|B#wPB#@8hv2wS}JFJ8G* ztbEgvDdh z%MsHrk9-sUV)O~*5^O|v_f=3EME^*59DyTZ1dPDR1%3hbEoi6XxENIc0000VQ!Pj5=V{0aS6oPBEGPAlm)a6Gpl^0A{gS zq&>r_#kUC-=L9_!vhAIGkE+;Dq7u$F6G=me=VvvKFfgxgKpuzCq;WMH=MN$ZW z3-9m2_p>T{-GbJ{xq1O)hb8N5Ag;UNICn6oaI;pfNCv~>W;_sLm} z;3$9rkj3Nzk{tl@J+kF6@B!-cbsP85&H*69p+zp(A=oUYSy7B+Ft{RuIfPt`Np=7( shmdPA*$%+s5Q@O?Xp)UOU`RUv06rX*{uisEY5)KL07*qoM6N<$f_@>i1poj5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/detflask.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/detflask.png new file mode 100644 index 0000000000000000000000000000000000000000..d5cff66ac7288f2aa3299c358654d083d0cc2224 GIT binary patch literal 539 zcmV+$0_6RPP)3u{N@*^*cs=D9(N#Ke+>>#7hD>Kq8^fKf1-Y5-HyS zf)kY5^)#fr(IK##GVKgIe~*m z4gy9IN`c^1)YkeGjD;NN4l4YPfQnr<24>F$ZS2vb=bixDIV*w_)Yvy$mMW>NB`8el7_JP8Xspi*NnqSPWMe+V4JE+S?$C zqW1jyE9x4X5<4=hp;y dlr3NjJOjEywUYUuacuwq002ovPDHLkV1h$^=>-4) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/dnb.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/dnb.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4f39b165885abce1c2a689e9dbc91961adcf2e GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQmc z#WAE}PI96|g2AhXK=vN1gbeEicej4F?^t&y_MC+R-;MuE<}?NwY+0P(Ap2n1$q)BW zdh|U!@>bvB+wT9n*BMWk%GZ|0aiFID`B8p0!8oxta~`LZ_CptV7`ZprIv6p!t}%Wi zba5?iHA(C-5JI^YdP4J0l zS74r?e1bKkkU@imNmcjd^9JGdb0n-}^$chHJfI_*s1fg4#iVkZQDMX9KK>mt42|aV z|4+!~`N_u+xlZXIwT7VHof{54LT~H5CyWAj&Mu0_Pm2Y05pZrXoTEbjC0WhPb&v zi1@xQ_bDO$f;~dl^+@Gpz*y5zI4G^o-q6m~;{!OY65L@%&YP(|@Yw}5B!DQt%@?tF z%>&Ob0P*%@KyvzoMKH1t6Kv*XT!9`E;4A%u$Hw~i04*DQXYm3=Iqz}Q?*_PZTtrD| zz&()oaIUvEwGO^lRpj8J{kIWoox_i3ISu9-THPOii2wMiBl)1EA!iP6hoKJJ5ihnB c2ev;9lbv1EXT4cq1N0h$r>mdKI;Vst09*}cl>h($ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/fitness-cup_black.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/fitness-cup_black.png new file mode 100644 index 0000000000000000000000000000000000000000..f86defc451e7f64253e6596b215e5b8070433e7f GIT binary patch literal 373 zcmV-*0gC>KP)RCt{2lrgGL(=@=!<_@5QZQC<;0HM1;I=}~$6F^+o zeRf^VQ!P3_Sq8tG7Jt!2upPRrSD+v_%jw&w;rN2MF#6T(_Is`zD5V6eu z{{MAdG2FU*nN;IQbAX(@JOd9uKUO)AI7ptR4nVeyT43lE#UtAR#yUDqXRln@ zCn770A@}C-W3W6;9Y6~}vI8DHe8|AT$H(yF(VQ!P3_StgRUAT;13;FmK7Gx&R#5Q&)ng~XVj@7S$Hf8<5po?vQWU%q;C}bp%lk0Qnvi3KPD4XJC+%#Z&+ly9AOa5fB{$AV*|Ni2N6M z|Aj&R^Lvy~0ENIqUO@&1c4pc+00dm-F5JH-Io^?h9hd_C{zpiNh`{BidVAB(0U(fd z>fHWUuU=t@i;0Ob+`4?3RO3iw+K(>rpVCWUaBijMSIyz2g zuUy$DB8yoVy?Oi?EKgGh&;pR`fJYA>GH~$mG5q-S2`&cWgT(3L01yCK4zd)PPc9(Y z0fFA$PV2XB-G@z_E)Jl?GO9U%nqbrcqYfB#002I!X)2b~!9@T7002ovPDHLkV1oVV Bp+Nuu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/flask.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/flask.png new file mode 100644 index 0000000000000000000000000000000000000000..8da40323e9b76319bfc1ab3e69f9f587584bf95d GIT binary patch literal 779 zcmV+m1N8ifP)%h@oP9pco}F(FBzQi5nNV zGuRjw`Vj;o3lkG}^%J;o;od|fE^L}6Dkf-r)V5kAEsQkwMN`^RDG)og|9_o{?xxs* zm~b|C?%bO>zkBZ7M-#SLI{^PTKs*(%_`F`s`-8aScJJD905T5-LJ(2e^f&$qU|?_% zLi8)dm5r?fn3%XN57%LLVEF1VCZ9}Ve0+@Gi=qg(`@Z7os0)D1FZTB#k;%e!?K%?a z1e)~*3|$$5APC%t+D1ojRg^*~2B44L7;&NN@Nupe3I#4pt3@uIPA8hp7C3WRxxW&K zx)LCB8Z||qNycDp+m8}zhGbrH?6==jT4N(QG&Xjiw15ot<)@((eRR0U&dN zAmvg?WWFbHw5OZvv4tp?#e5zPs|7)grttt$0zUr-7)&M{ICK!}>l?^a&B>ViWK>E( ztJR`K*TV6y6-)fnk$EB!=VwW|$TxKWNbhD|;q=+_&{daQW_ekDPtQ^UB(u2{u|*XC z1}xg7XX<{5M)lH z&K7>aXtCk>Mb=>IE$BPV+iPp8#OK!PAGE=2Ht<}E+FZjSKEsE9wgu1W%Qxv=SVeC=9V zU8^3$8u>E%;Nc_e)$PWgZ4JK>k;d-c+tk&&VE}4q2VmO)egWAhLTtG^7FPfO002ov JPDHLkV1ii@Tf+bV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/flavorpak.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/flavorpak.png new file mode 100644 index 0000000000000000000000000000000000000000..cf19d84fae0cd9cab80cf23b18226190536aeb93 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C^*y8 z#WAE}&f80dTn!2$Y!6y&8aBIsW{^ElT)}XA@AU4?-LsohF9cj!FjMdkKg&<~7t8k) z{@4N32n0XW9Wn<@~ikiibu1VqC_EvbKg@? U`=av0L>a{OboFyt=akR{09b)mDgXcg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ginbottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ginbottle.png new file mode 100644 index 0000000000000000000000000000000000000000..b3eb7616b9e0936cf7d2261b854b0d965e8f384d GIT binary patch literal 399 zcmV;A0dW3_P)VQ!PP~-sf^u7OIU)j!Z?`RL>fH+`XhY>?i z1p~+dWSc>e19olL!0`P&14V!$2lQ`eVEFy<&A>Q7FKqsQ9#72!e@}d6P_i!hPi{IO z%K>o9?|ePLAi}^Ps^bX~Cd&~dI{?LU7!YANK&~SwN&|&nDh(jIf7_h~a?K#y0U*o2 z-`WRdJ2mt#x^sZ84ggv177zetgR&z7gB)4rknI4F<)IsHGJtZyx{d&b87I!s*8v~^ zvi#Enki|x1n?be%K*0|3Imq$>ivozn5cYsX0W1+x0w}JGD0K)$4&YRCVxSZZ-4@Z| zYo8cwwfNv{x;p?={`YS~5ptl51HL@H%D}^*$-wZ2!QuP+M_@}i1?3JfkO@e30JOUO tkLD-`BstnTfLx2H>HunjQ3njT0{{bMfu-^)%Pjx^002ovPDHLkV1iqGo&o>> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/gingerbeer.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/gingerbeer.png new file mode 100644 index 0000000000000000000000000000000000000000..e63b6340cb63631053863d662271572cd2b48d58 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQaY z#WAE}PI96|g2AhXK=vN1gbeEiUM{cfJMyYO_Y^wFd@#3UJM`j>((RswvaHOn8a{p6 z^k4MqM;`mSKP-j+%gf3pPUUM$<7lXf50E)n@a&7J!Tk|x%oDwtI4s3fGEa9No zpyy`J-q0|+lb370cg*z0hZjA6SuV)`=fozyJfO|?cNp_aJ~nRSPiGc-N!{4Ip2_1I z&m3k4#egrLtp3V85S@8AV2T8PN+DyRP0Sl3$x^19iW^>^5p2_*{=VsEjEuabS?(^^ zX_hJ03@JPN))~#HegDm}s8{hk;{u`gR}2sSKaupCfB*9QSci43A;k<^53FEzlQnq2 b$G~u8t?$mgTqi4l0m0zu>gTe~DWM4ffeC}k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/golden_cup.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/golden_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..bb012a2017c0f4565e86b9f952231b52701cdfdc GIT binary patch literal 1143 zcmV--1c>{IP)^@RCt{2mR)QVRTRhn^SQgzuh@`MYQb#*5f-+9AH*nVaAU*> z5#@!XQ6n)%O?>jj2OEQrCO-NmaTPyXZz;?)6g@n;XD@Y%6h9RFY&+kNQte}dpKE=*fENHKv7yB?wrAU888eqTC#PRbqM z$KH9d!1(=^Ein`e=R=8h-LVm8&zfR9Ft8fC4~#xP&RxD{E z_Vu=857?H5_g)`l{i~xG`(YHjb|vAuZBQK_i1>&Z4iwpiBs-Ad(Pe|l3a#|u_!{}r z(9dIREQ`cFNfC?3T*~SIc#YB+Wv{&a0DjAv_~z?4?xSq_z6VIW8a9lMD0H2csx~Bv z&r47=9k9y8upoRZCNF0k`=4Rh`{W9I`Ne3sCJf9peH=Ynz`LK%NIM@&uytzz=K7FS zx}qMmDCyFU6-|NfSzwM0&dB6i$V-2Cc>73RTB!81H{XcdNan@>#jAbjH2xIhT+YVB z54M4kg5=7ObjqM;bs3KNV06`gshxg&FBY9}@@35*{ zA(Mh6`+w(=mqbx%j-VJ5{h&xD`PyO)w_$2x-bYKNzhMRfh~U0dW>8gXI+es+F1*ND zZii=6gQ5!Nm4$C$jl>%Q1Xj+bSbH)RnqWgWj1Fl!wF;72Azo25T zC-A$3c%$8i%0K{-*p$SA8HcLPk}iYJdqI<_-ZA0F+#*UPAJJG8iA@T^h=&3QAkrgQ zmYd8Xl^UXE)F3I84Y?-nIwp!&iio=7`1!=dBJh8=(68elAn%3Lp8Kia>5=0-fGdbf zc@n=U#KQ_V4Y1e>^B$t@Hp-SI?ydQYbUsGViZu;TE5|8z?~d)zy1PhxN{F94ajNOv zw*;^l;?X^KqH0!gIy=#lc*_8Rb?KAn8qf)#^%yMyh_9x-2~6dx;+~Iz33kg$z)gxo zvGVSxYGY*3s|2_CzdgKCI z)^mW1Klj=Wdi(XjsT46gSrYTH?#Cf__}Jb#M?N1l1rZv6i$Ah+Bc`)g(X*=d#oMzY z`1f0M&^hEw4!BQxl-$1QzdBiu(@df%VD=2;4hp&!B)qt+(rNZ002ov JPDHLkV1nbdDY5_n literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/goldschlagerbottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/goldschlagerbottle.png new file mode 100644 index 0000000000000000000000000000000000000000..98d29311113257f652e6ad561b0ef5fae6fbf8c2 GIT binary patch literal 410 zcmV;L0cHM)P)Ns=2_hln4y(<<`836g+E?Pg2!Muuag}>*QFk8Uk(TP}Sb1Xn+QM0S_R1TD;@JWB>pF07*qoM6N<$ Ef_*lqfdBvi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/grenadinebottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/grenadinebottle.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0a06640fc14c61fb387a9c156dbb1ce928974a GIT binary patch literal 434 zcmV;j0ZsmiP)KorKmD{YpHnW?5ELl6Z02Vi0XJA)byByJ7^ zVptFig+ngGKrk#J7=l3XAJkwrk}XZhihw1{g*)zDHl}wYM@IUIzSk4?{qFT%?_B(` zQh*d71xNu>fcXWe?CeS*1P61xn`VPq2dEyO_BIRt(!t$x7tMz0G-d#guW^^mDL*L} zH3UU#03=x|N$^#`d%+>lGo5E@09t*&;0LXI7Cd=EPQ~?dF)*#d)Bqxm16P@5RGv|B zI2!l*ZvhNs{0YdICj*^R6-;FWuvHyEE?V<^EE&r~HUz}ki#0LS;m?RnPWNu)R5huVm(d>#Dq zL0ADGQ44b5rv=B|U<)8t#=+P)H~AODwgAwk#|*tc6Ts*M{K90#KIK*qBW1RLU()>E ci2e=0H~EuuJ#dnL%>V!Z07*qoM6N<$g5zhfzW@LL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/hellshenbeer.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/hellshenbeer.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f3965dfe84cc3b6b824852aa592b712d389a80 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQ0M z#WAE}PI96|g2AhXK=vN1gbZtk@V?jf9sB;gkbc}?;V|j9^o)HzjgrpRTx?eu^Jek< z=UyBvDR+Mt=M&jq`(IlzN4`wRXk$3>U2WAYp6F}(44-GRZfQ&kKgrd)P?G8V{-TEh zzun~78xB0<=5JKdo>D&l;C`)n4~veK{IYb2Y-)a3_{o~>=1!-CSr6?ip9QG$Hpm>D zVA8FVdQ&MBb@0AX5$ga7~l literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/herbal.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/herbal.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9be0c1fcedf3c7f6a68bc51bb72b530dcec427 GIT binary patch literal 422 zcmV;X0a^ZuP)qt0RSfG{t+o4E4; zwYrCFy}`5w7hv(Gjg9RRW*SX6jw2orN5&tJzrGE=0-=Dd-YTd)I*9y}(9h5SJQK)a zK6${$2}SOJsR7~#ggtBCl0)_VXe4+rBBC!MFObSQ=Kh>**xP6)m QssI2007*qoM6N<$f+)?c;s5{u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/holyflask.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/holyflask.png new file mode 100644 index 0000000000000000000000000000000000000000..0d8ed5a7849b368a06bfc238c3ef6205667f8393 GIT binary patch literal 461 zcmV;;0W$uHP)# z0;cf=w7drpEUnZ+VT)i9h$#}dA_Sk{oG)g=-Eew;Hl8RuO_t5x%IUSFKG8?^$QcDk{*zG^nSHMQ+~v=hcvASwggbUTfJ6gb}BG2!i_u3Z7d zU^r5?VQs?ur`LJ_*l<$nX!5R$o~;akgq$q7&I*{b=-EO5G6~k$L;nx=ng$B&Hn$A# z!JP8!cM!P%(r8FX1+g@|hcSHVy_u8Nkq-QF<5=2+D2`%u2c!Votpi2lsOE5AzCdXJ zNQ%A&{w5b!D2@wg98FVa31W69TwUMA56?Y?XRJNI!TrSTC;#gYqxo$(Q^*jcX7Iec zxd2GQ#)6zIeHMfaJZEjfq^q-njF(bGwqVQ!Pj5=UwJK*~z+5b;o`~|aB-JUVh-2taA z{bHaLP~?CjCLM;KPror-*?N2c9N@t4Us#Ko;q=}ca6ZEU29l$JJO=#{ZwJr;z<54eau%Kr!0`_ir;h^$IuY(HT+YzTFdwV9 z`+-Q3%pyAtY?PVFz|e^*cIfB{lFcF80jBe#7)~cHWAJ~H&hYsu3&TG1sbrZ$aW({5 zeq$Z5C^jcgKgA9J` zl^=eyRvb7R*uW&Rpy5BO#q)0|d8?Rq?0LP*V*Yc>bxS*P4&?td;Ca4}Wg>6HwDceA zE^N!yNq4zya(v(EzjNPk?O5|Z{Kht2&FQWzALI^7wAk7>3-ir&&t56lAbk2@+eK$j z7Y1v_3lgUub|3KU6PV91eb&Y`F+2;x8TLHX>Caxn;UQ= z)F|$I^ej&B`MRIy?QRyUxUsl6u(&knF4$VOx88ImL+ka@-fg)TO?ubw6l!L5vIv~E zG=AkXFCMWQx4HSk70wq+B-fmedi`7KaANNP?}S#J({&GHBAB?!Eu#NkUvZ$ZmRoMO z^t9vZam$%*H1I|@9O^u}?RQQ0OV*6%B7U!Rj&ibeM%-Y!znEV|%2DAYN0QTGmMb?k zwy%@9`+ZSP2F6EPpL+%LGJ~h9pUXO@geCx` Cn03Pd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/jar.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/jar.png new file mode 100644 index 0000000000000000000000000000000000000000..efccd5f83074faa1340ebbc1881fc132a78a047e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP+H z#WAE}PI96|g2AhXK=vN11{HQ0+xmz0c9q%A%x<$R7}7pY)V?lpDtYmSs7pI5Zr0DR z3X*ZUz^LHdX((_r@yIL1Q;Z7D9lVUvvbsCu*pwJO6&aEqd$XT-wL*;PhRy;tiKv?s z1Qb+XtbE51prqn1A1c!@$NR-QhN7mqT6_(WKAGnfZZlpvHOX09TFC3=j;_ouS%%F& zUY?%LGuex4W7MSUm;cY7v&LfzbH_)?O@}$QN_!MBXyi|hlAaVKCs4w0;?R*_%l=Dg zY4IpYuXDxy4Vb1YspB)()|;0bOzd-Xyu6VTrbp00i_ I>zopr0EL!tq5uE@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/jar_metroid.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/jar_metroid.png new file mode 100644 index 0000000000000000000000000000000000000000..11acb97b6675cd83c16230df7120db74d5974082 GIT binary patch literal 506 zcmVVQ!Pj5>g12OK?r;XgikYeNG@nm7Pv@sTUn z7|LU#uv*f&c-eoLI$|9{lmkG95@R5;!-&;GlmkEp5gP(FI$Cf&#F$NT2!Po5(gCtM zs)YbH3#bK#UN&Ti68X<0&w*3=aM%`-LWyVxFjdO@C#0rbtBYv0Bs+jnjvY+@fAkYY zT;b6#h6i$NV4s5kD3`$0Qq=)}4}S#H%(nb+F^8jH85AD>Wk@R7!eDnI7*(wWl^wwF z>Nf*}7%RiywQs;Q2sD-MVX!hZU{I=YV))C?gsPTEK$-(U0BE`5$A1j>ffibKyD%tv z3xU}v>S*EsC;(Zm@aaE;gg85AFD59*zUbqoT;8b~S_g0VQ!Pj5>fM2OK?r;XgikYeNG@nm7Pv@sTUn z7|LU#uv*f&c-eoLI#L`$&;cMri7^n_VZ`bo$^jsQhz$W79WA&X1|k7TApm0IO9#m6 zs1^d)ETASBTG?>6+J6_Q z>;OTAa4`LzVI@|1kk3JuUwQC=!QD8V;Vtp@6X$^Q$GX6@p;Z}%+|#p64ARE`!0cB) zR{+&AFvxK&psoYZ9RdPk>=i%@J0KPxV;~!loeN-=QwoMwHvI8j4zD~1=OfxU0A}&8 z-@h36_+DUD^XZcWkc2vri^>jw`HX`Tw;Egyqu2qU8qh{(0hoR3Z5_^F28EKEa1&e) z)f@n-eiQ4P{%feH03FhVTOk+3;v0AFFwAePqh56k0;Cv7Di~VXaMS_A(g6UrT8bHvxypuofQA4EU+@{e&q8~_4pe9RyRkgcC$ z2i*Gfmm>WXIpFF+X@;lggc#IPFAj_YTs)pLJpcZb5+lfWfTbwQe@RXz823N936U%Z zz%2jr=RX54E683ZvK=w>$^n?~l^*?K2$fR-i>-ckhvBFw*eH@if$R_fS-$$w9XR{w z_XlK|L$(8I|2$-1kYWY1FM-%(0*cZ=U4)<=t`%a4sd_^n2Y|qpKz3AtlAmOmLs>bH1*NBvZv^=c09vl&3i0(726hH=0oe|K zSq@{LKT2l@oIgrloKwXCFR%S&5Z7YH5Tly|U>06K^$pC{G~*)I7}6c^{QEzKp0ytt zN`m=OECz|u#Q~s3C=UxGhJ~`t$qLi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/lager.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/lager.png new file mode 100644 index 0000000000000000000000000000000000000000..3d33258a36f0dcad6655057dd2ae771e87249daa GIT binary patch literal 325 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/meta.json new file mode 100644 index 0000000000..101ea21f89 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/meta.json @@ -0,0 +1,413 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from baystation at commit https://github.com/Baystation12/Baystation12/commit/464342c5dc8c417b7e79d56c69aa30445bdf3b75", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "pitcher" + }, + { + "name": "pitcher15" + }, + { + "name": "pitcher30" + }, + { + "name": "pitcher50" + }, + { + "name": "pitcher70" + }, + { + "name": "pitcher85" + }, + { + "name": "pitcher100" + }, + { + "name": "alco-blue" + }, + { + "name": "alco-red" + }, + { + "name": "alco-green" + }, + { + "name": "shaker" + }, + { + "name": "jar" + }, + { + "name": "jar_metroid" + }, + { + "name": "jar_what" + }, + { + "name": "waterbottle" + }, + { + "name": "water_cup" + }, + { + "name": "water_cup_e" + }, + { + "name": "grenadinebottle" + }, + { + "name": "holyflask" + }, + { + "name": "barflask" + }, + { + "name": "bigteacup" + }, + { + "name": "bigteacup100" + }, + { + "name": "vacuumflask" + }, + { + "name": "teapot" + }, + { + "name": "shinyflask" + }, + { + "name": "lithiumflask" + }, + { + "name": "rag" + }, + { + "name": "rag_lit", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "rag_small" + }, + { + "name": "rag_small_lit", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "colabottle" + }, + { + "name": "space-up_bottle" + }, + { + "name": "space_mountain_wind_bottle" + }, + { + "name": "fitness-cup_black" + }, + { + "name": "fitness-cup_red" + }, + { + "name": "fitness-cup_blue" + }, + { + "name": "beer" + }, + { + "name": "alebottle" + }, + { + "name": "rumbottle" + }, + { + "name": "whiskeybottle" + }, + { + "name": "whiskeybottle2" + }, + { + "name": "vodkabottle" + }, + { + "name": "premiumvodka" + }, + { + "name": "ginbottle" + }, + { + "name": "cognacbottle" + }, + { + "name": "goldschlagerbottle" + }, + { + "name": "patronbottle" + }, + { + "name": "orangejuice" + }, + { + "name": "limejuice" + }, + { + "name": "cream" + }, + { + "name": "tomatojuice" + }, + { + "name": "sodawater" + }, + { + "name": "milk" + }, + { + "name": "soymilk" + }, + { + "name": "coffee" + }, + { + "name": "flask" + }, + { + "name": "ramen" + }, + { + "name": "golden_cup" + }, + { + "name": "bottleofnothing" + }, + { + "name": "nothing" + }, + { + "name": "vermouthbottle" + }, + { + "name": "kahluabottle" + }, + { + "name": "tequillabottle" + }, + { + "name": "winebottle" + }, + { + "name": "pwinebottle" + }, + { + "name": "premiumwine" + }, + { + "name": "(mdr)grapejuice" + }, + { + "name": "broken" + }, + { + "name": "broken_bottle" + }, + { + "name": "detflask" + }, + { + "name": "badminka" + }, + { + "name": "silver_cup" + }, + { + "name": "bronze_cup" + }, + { + "name": "herbal" + }, + { + "name": "absinthebottle" + }, + { + "name": "oil" + }, + { + "name": "coolant" + }, + { + "name": "placeholder" + }, + { + "name": "syndi_cola" + }, + { + "name": "syndi_cola_x" + }, + { + "name": "art_bru" + }, + { + "name": "beercan" + }, + { + "name": "alecan" + }, + { + "name": "space_mountain_wind" + }, + { + "name": "dr_gibb" + }, + { + "name": "starkist" + }, + { + "name": "space-up" + }, + { + "name": "lemon-lime" + }, + { + "name": "tonic" + }, + { + "name": "cola" + }, + { + "name": "purple_can" + }, + { + "name": "ice_tea_can" + }, + { + "name": "energy_drink" + }, + { + "name": "thirteen_loko" + }, + { + "name": "flavorpak" + }, + { + "name": "lunabrandy" + }, + { + "name": "hellshenbeer" + }, + { + "name": "blackstrap" + }, + { + "name": "sake" + }, + { + "name": "tadmorwine" + }, + { + "name": "champagne" + }, + { + "name": "prosecco" + }, + { + "name": "whiskeybottle3" + }, + { + "name": "beastenergy" + }, + { + "name": "hrukhzaextract" + }, + { + "name": "gingerbeer" + }, + { + "name": "cola-orange" + }, + { + "name": "cola-pink" + }, + { + "name": "cola-purple" + }, + { + "name": "cola-yellow" + }, + { + "name": "cola-red" + }, + { + "name": "cola-blue" + }, + { + "name": "cola-brown" + }, + { + "name": "cola-green" + }, + { + "name": "cola-pork" + }, + { + "name": "vcola" + }, + { + "name": "ccola" + }, + { + "name": "ocola" + }, + { + "name": "ionbru" + }, + { + "name": "baijiu" + }, + { + "name": "cachaca" + }, + { + "name": "rakia" + }, + { + "name": "dnb" + }, + { + "name": "alcoholfreebeer" + }, + { + "name": "lager" + }, + { + "name": "soju" + }, + { + "name": "lemonjuice" + }, + { + "name": "maplesyrup" + }, + { + "name": "thoom" + }, + { + "name": "water" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/milk.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/milk.png new file mode 100644 index 0000000000000000000000000000000000000000..5387925e47bdd15faf77fe8e8371888759a3630f GIT binary patch literal 402 zcmV;D0d4+?P)9m%#X8>3#n7{QQIm%K#Vv1Mm+4-lSAxLeFF} zK0tE*41z$me+ePjKr8@C=(-^s$EhRU^%BX2U^_s`ZQDjs6o{gz*>#$x5*q3ZQ0?Ar z<^Rz3KAA{ z)V&Y9en1@7t%QH9Nx%}z0XhM6-cL@PM72Suplpn6X|>|27%yYG>RyCZyH)+Z?tYD; wdh3JVhOGp5U&C4eeI)D!pidb91MqNwUwBAsC|IFiGXMYp07*qoM6N<$g25lCt^fc4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/nothing.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/nothing.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b49e8a6b50d30bdc2ada7fbdb8f68cc8a091bc GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7e7W z#WAE}PI96|g2AhXK=vN1ge#0GmJ5=8cc$MsVr`?lB;#Gfq|oa5l`k~v4yk=-*SIeH z%x99aM;QaRzWL#4kHdcyoSc{=$1Hi^c+hgL*+2TUzu(Sy#~^1W=2_`??We^P57WL9 zb^{|LqmIH&kEbl&$-IKsO%`m|gr^O!xRu=#O literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ocola.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/ocola.png new file mode 100644 index 0000000000000000000000000000000000000000..93084027eb3890d0850a354330f6009f97d069b5 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQyg z#WAE}&fBTBd`%7lt@52F|6~~S7S7e>RA2B!!sJ@?4PRL<*wD+#bzZbOL$ zyx~C)6D8`N$#gu-ci@Ow5p(_O!^~NS3T14ccWh<7Xy_&+qpB&N*YCmEhx&sutRA6o^3 zP!5)jflL8p5yuckks7eUBIjJ1LKtU&%)>B*wr$A}v>{_mf`v=~WQ@^k5d@lAMQsb9 zw8N;k*zd8Ov+M;?*Yz?0B!R{P`$L{9h>XTUECWE%-$&;4#dHqPR|V5$3~<9UKVs_V zFgF6YVk^3DI`?mT5?27EOIeNr&}AgqWaVc7imVwJj_q* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/orangejuice.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/orangejuice.png new file mode 100644 index 0000000000000000000000000000000000000000..0d35a2b2d0c5b596ef53824f46597e2915c05dd9 GIT binary patch literal 571 zcmV-B0>u4^P)^vXpqc)I5adA6hWX7M1{~|1%U(& zEm=eqVzfClG>H@uS&LgVRXPMh5eW(XfFS<>E3I&F4Fb*XPG5aR1Mjk;@LBHeef2({ z_j~ugoC3d`iaPN#g$r70N0VXBotXi**`>~mPrhc zTH!pO$XCX}Cq;@gcGV5{SHdjRWNGS~9leZa=@2w)@2eWFiUaJ0Jt|o(s4H z=;ZP1`a`9aS1L^OUhnC?w~lBycn&wi=vjQuE9X2v-}@f9 zt?of- zE<4=az8ST}`8j3?E&vR|z`=nR$fO?O!8Hmz;oJZyujB?#Xm;GA`^&Rvl=qzGy#-RA zyQXg#fLY=KI8P)5sYTGxE1IBLKogNc6h&qTt{ISDvn9Ku zyE=dXm+At*UzE?p)b@6Vv7VV(OVRI~PUo`$CClCM__h~4OBa|sfZ>tIl0;`fmqdqg zdU`o|bhJ9ca$a2ksrxk8t<|;3$#6pd@X!wI?JW;~-(wm;EuEZf2ES~%13cme$mKG| zCa9Ip5q4uCVDcR|vvR9P=5M8iKOQvvQ$`V9C!Jq}>4TY#$U1nw~nfGVHQ0$xRg zpf$Y{hUcAwx&Y`K5M3*(0#E5Qyvi~Zv=T^e4-ENyP%IWfC8WH^Gys+ZS=F5H1AhwO Y1Ajisnb887ga7~l07*qoM6N<$f~w8_I{*Lx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5c118ff0507a880a590c07758d1c1537e3abb75e GIT binary patch literal 497 zcmV*zoh>)P6qk)bKG^LLqpy6;>ukH7Hl4~_s9LL%)+5lfS6z}sn(Qe1Lh9G{` z03ad=0-+0GR02T!R02ev=ai;tV>+FRLZZFru6@ zdJRwa0YG#*9ex3_-f%vb$26V-fG7f4P=PF5E*E@q{dLQr4S@7}p2s4K#e!C=6=wlu zKp+dt<+9$dTMDBLKpdhFZ@1gO?lbYhQzZz)kRcQlvM`qo3WikWu>yeGV?C+_RaG$%z|ak`jyWp;aJGEw;x7T& n5$$zC)5Bj5U?UuW18@MJllI%Px2ln@00000NkvXXu0mjfRHM|% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher100.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher100.png new file mode 100644 index 0000000000000000000000000000000000000000..dda0416eae4532d23d9e896d626117b0fed1ddcc GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpto z;uumf=k0}!oD2>e&KHIA3e5W>b~JEg*3Fty`NSTm0Rpremb~ff*uqd%As}|(>JO;{ k%-`7A5?NzdLDFv;n0Stg|J$OeEezs%y85}Sb4q9e0JE4W7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher15.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher15.png new file mode 100644 index 0000000000000000000000000000000000000000..a2260318a196a0a048b82e31ef34f5134899d8d5 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}`>F z;uumf=k2*hP6h*x0~hC@rn)?lN=UlL5ue8}qLaJGJNP`SSaPz@CLGu$@SUa8bz8Rx>Xp+nmdKI;Vst0Q=!13;+NC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher50.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pitcher50.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6d16dae9c05b1f8617db9941293b71fcc6f199 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq9# z;uumf=k3KtP6h*xBMz;6@1DiS9JKRLj64wRufq;h0tO%S9fDHR)-qI8%#dQNDi%-r j!*u-Te1>%($pqN~#wG808e8prUV`|Zu6{1-oD!Me&KHIA3e5W>b~JEg*3Fty`NSTm0SdwxJa5VhW-@;HprF&R`lIQA ie+LxSG^_^6Hpm8WY!ql@yPVVr;(EIJxvXp-#xtR65eI4=BeeMO2Mi0|p@=d#Wzp$PzO!znNT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/placeholder.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..363a370da1584c980e693326433ddf536bb80739 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7eeh z#WAE}&f81Tyv&LMtQT%BQFCBmGicxyNnn=NIKT#EGN$AhtK7bD{W#wg-^n}UdF;P` z*m3Y^A_KF;frkIA74N_2?bT&X*lDY2+LV_pb!0Ptthh}0r2}}Sac|0CRB9Rd4 z^*S652ZF(%`h1qQ-M-0c+X09aMG+qJd6bGpyp+p$%H;&T$(aDi*T-Tpnp~__!4D7r zxCF8a$z)PjDZ2Yt+z|k>`Lq(W^rcd%_5%=c97lKmUy;*b2>=n#^Qdv7u(?Mt@cIB* zmeFW5tOFp*?~Ktg5M__S3~;x*fJyYzXK`-{+}eq?0A`69AP~L&UIph6JX`110}xFe zD0t@w!5fIty(Q=vKsX#GZ5Way0n#P4Nll;DjG#56_5u*qYPH{PNC7I9-Y*UbjK8Y@0000HvxyaB55T|ECWwFa+itWgHL(fGmIc<_9H4 zQ09Q1-ggX?0*V~4ZBZe^n^!Lwl!NOA#sOY&{S1_Xp_>b=6*d3Eq9Cqh`TwK$ualJ% z$aX;Qy7>$YUoL^!e#tQmM{BCdGKVY&tSNQ*e{kzw2C<|_hSxl=7#Oba1&f7r?;$x9 z$PR&g4+RE>XU7?Yzkg*A)%?qF{sejEkn8}EPkq7@;e2*ZZUzxC2?j$8JD?l`$)Pax za>3jq&l!Beam&%%0U*%6Xg5P;oGXghqJ#IyF^c>sSbO*e11~ohnEmQABa=^yRatz7Ne=)=u7+%uH0U&Vro&rOZ3W5y` z2eQl|*#XHmk_?xBLfD&+{$!vOkQD-;EC|X4$RN&Mi9whB3B&f|S84A65D2!_fU|!B z>jO}=Ob(!0HU!lNba4QvvRT8x@E?~P%^g6lMO1YFHNmI@2HXJv5*L4`RzSlL00000 LNkvXXu0mjfkVe3X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/prosecco.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/prosecco.png new file mode 100644 index 0000000000000000000000000000000000000000..1afd6884085a4bc9bc548acd99c9610be4a24243 GIT binary patch literal 435 zcmV;k0ZjghP)HvxyaB55T|ECWwFa+itWgHL(fGmIc<_9H4 zQ09PDIY${N1r#~p0}#I-NC#YEpd1X{T%g9l@Lx+-mf`yQ_Y7)ZzWl$%z(7_`Alm_p z&YxiD@CyaAlUrID%4@30GKVY&NCSO;aO+-%zLN(TUcG$90Ahp0o{|v?WQV}^2Y|r# zSFad6#l%p=9{m1Ij#1=C!5(13OS94fvu7QZM z(cPc4cL1;;Vp#d)2ZNukB7>|DA6V@1yH5-&FW+Y%2apv4pe(rk#uE&&(~lpMTo#a> z23&x}uM9Ugn0@cd7jliEED=8W`V~yGF)}jz`v0Fk4ggm+k01ZXDMxDukZTcD9Y9Sm d>VN@v001-$bqyn=%cuYV002ovPDHLkV1jqYs>T2S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/purple_can.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/purple_can.png new file mode 100644 index 0000000000000000000000000000000000000000..813bf6fb6b8f9e419ba5b528f9039efd4940c83d GIT binary patch literal 335 zcmV-V0kHmwP)-&1E9MczypZKz+E_i zJMjSOZgkX!*)WT3jSaH(L269;NJ!sXzF+#M4L>do&;Sk4fd2)AVOW&bhEf0v_dJiU zlO*9i79kC&hWoxR<`{%Dfb2}z)6cRj9?lS^Y4SOyP)ESSrUVEfwZhSWUS~it7k7)1rU`JZt10@z#$po}Q@fGqS8)Cp|_ h&{S!F257*~0WTMXU=Y1P)K~xj002ovPDHLkV1jlxgo*$F literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pwinebottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/pwinebottle.png new file mode 100644 index 0000000000000000000000000000000000000000..e599e674562b5fa47a5a10ba7c0ef8293d478cb0 GIT binary patch literal 427 zcmV;c0aX5pP)HvxyaB55T|ECWwFa+itWgHL(fGmIc<_9H4 zQ09Q1-ggX?0*V~)>6Ze-*I#c2&H;RE4}h3~;oj>3asV{|*$&|4RQL~z0ucN2_XlL< z1hO5l``8MGRG&sLyQVsop}eM=EOW?m0LaG&x9(-wczPeP|uSqTo$W8;Y zd}a(RjO<`GCG`PCiSW;Vh@~vdY-F23PEpMG1X$_dlB2l;$hC;74xlC&b-;i-004v` VhdMjFuPFck002ovPDHLkV1mr}sowwq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc4ef632be645b37dee0a59f3f9e87929969888 GIT binary patch literal 542 zcmV+(0^$9MP)L?2h|78>v!CtvfMz*#|qj^I*UCo0*R{96iQC z^)q={4%-$eTr ziFJ$tgrgr_uzjw;7Ve(xt25?;;jw|$62ruhv57WXfyV+=r11a+ZcTLh)TZZ2rm!My@l zbGQEhQXc_hTtg57c?mH2@ENP@uagp^IQ+Iw55^Y%dkn?^PR4=j3CK=}Tt0V|C(@=A z9PJDLRyxK2fi_@l#Lj62Cnwi3R_h2&F%HX8*xva-rK#sP?t(FZpY!Oq3Hi_3Res{p zJGS+8iCDG>W_u`atESMj z5QG`>3nNif`SDi|o}GW&-#&2O>R@QdlDZZ1YPAN_Fa}t7`X>3!bC&>j6)8XpkOHIt gDL@L40^B>mFTI|x+f2IXrT_o{07*qoM6N<$f<)BsQ2+n{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag_lit.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag_lit.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cabd143d1606cf1a1f13437147258a3f8eb137 GIT binary patch literal 845 zcmV-T1G4;yP)^0L^ZFZT%gz6AgA7fs#{ozdCUb>E#uGw#-=Y(a}-j_xl%$*;@j@?04oE zZLO^ofpLzqud;mh>qve*#Pah?0b6S%jL+qpevw z^Ph-zI1glyCI{a5-zI>;A?7D@gY!ZlZXLkEei}VpE@bx-NTyPM^(ig|PV~^D4Imz` z8r&2>Hk%{GB9v@LXZ|anj)g;-u;K^g4R620yFq6GL)FGH3?R!g{Z*kUX{2^G3#EMw z;ydL#z#)1c48E^5j$weUtzYQt^N^MfccFmpbC25fFUqMe5U)9oVSvn0hHb?v-HILA z+-qrgnk!~sZVl51m<8bSZ+h=_T!QZwL=^ckgrW;7($|VF4Ck45-|nl1@no zq2Oe4tgnEuxclyc@Cl`SJU*S#h5kLh6n{WQlLP73% z(Ys&-7#dc=*ZaP^S7iM@tv>%0BG k2YLw$umB6N01L2yFIB2r=voW$dH?_b07*qoM6N<$f=zp>@Bjb+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag_small_lit.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/rag_small_lit.png new file mode 100644 index 0000000000000000000000000000000000000000..52fb5cd35f0e87beb90f3aa07fc0a86901f6db61 GIT binary patch literal 693 zcmV;m0!safP)xi>pxixq6?K%_l6rB1e47cdhvUq}Zy#OL3XZek0U z@26i5nk(#Wc;%hdzx@nz;Jnd)9ZLWSAOR$R1dsp{Kmr^)z=_TWa=Dz*YPIU#acBTs zhsg*0Bs3r36`!blAasC(@&SI`lgZ?~W6uBct$QtmdK?{qp(+;hAO zF;swm@_`HMbJd1v=L76e-KpLyVfg@8CX=Cy6H9A&j8)QTrGx`;Ir#t>Lq8t?NCURH z-?KniKH&N^x7Wjil@x?Lh`b8O2LdHLALxF>)YXQ`D);|P7oQItpwWLFO8^NV0VIF~ b7VTo`01Xq<{~-FtnbV8|;($ZDwlPdwG@GH} z%xSXCpvVDsZe9$O0*V~)QvVJE&oiEZa{x5}*$xm)7W}Urtl02r<97xIPuc&Ew?8H; zAr8$DfcgIGweJetl3WjfLJj1G!q5u=WZ#4MKX|@T6bclDz}$#c2_QOoMc4u$^?)2R z$aVn8@@6Pz&hqDMkivGtLJH(f%Sn zE6_9zq9{gl&-1XlS%F8gq{RgIdOpSB{y{W;4}$3L+#Hc_Z#n?itpS(27?BrocX5K* zrH$VVQ|SN(C$}+EDByu0=;lM21+=o?fNgdj@Ym^~APA7=cTjIM;Jnx{O*5Ta@L!{6 z=V(3MV~mWm{u?lzV_Js^P?Ty8YJ1E>Kga=^o9Uk1(rQyf_TD;(O-aPP@Kh7vQ@|2?OE zla&+5asbG3CmAM&+aLZj$nt>f{ZFH`!zMS6B5I|Tkm z_%f(K*&rHJ9*_gba=^?D-xzF+FvaNR01zmg^ofBQfTBd`qrwHIx7;Dm_hdUDJ%Eeh z*yLo*FL0A_oT?^OjDk;KRg1+p9fs`ojq+5Vq- w{~tw+ZVmu}=A*yJ?h8=G0n`Gc4j6R+02CBt0ZeG9N&o-=07*qoM6N<$g7-(B0ssI2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/sake.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/sake.png new file mode 100644 index 0000000000000000000000000000000000000000..fbdf0a5f83dc5fa058f29ecc2c56c1b79e18121c GIT binary patch literal 452 zcmV;#0XzPQP)VQ!PP~-sDOpE`gexG6ZIOh-JfH+`5+jfS8 zDo=*p3@6AogCYm)+OUD)i8avj>ExS1kpl{jrZNbB7Xz|h(cc05DJ=i{E2qzDsjD^y zvB^ybWH|t4`Moc9jibtv7?yR-JIj#rjx0xz>;UNreE*w$d(VO_hlzn4@%HDNvzv5Q z{eN2Ui6lo*lm>LZWP%-Wg=hL%a?K#y0U*o2-`WRZt7RG=WNjwP5o9|6WVu^F0GJKR zjttu5nM1Y%K$c559%p_w}X0000Rib!+If@_Ke*?sEe4YNMX?pk?0D^a2C+B_N%Yij2 z1PcIx9LEuLUCV#NFyvR)but9I0;Xw-BuPY7RibTMfocrHKt6{IFlPU1sKR(9lq#?) zfb2cbdt|@HNB~pe%^7^6D7qF!@v#cz3fQ(S%CeLr48y0rQIzl*=gI*r%X-WK@d`&Z zmIhqcl^V#h>}g%oG;$}bdIjb<3ln!74sJ6cZI4$(KYy|)v_)XKC^E`jsyWhW0Ig0~;%uXKyEy|t? lKnk!GfHKPk%n`j#X0~0002ovPDHLkV1k_AoCp8_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/shinyflask.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/shinyflask.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c9ef3f0401085ce699b469fb7ef1f7c1796c3e GIT binary patch literal 735 zcmV<50wDc~P)7yy|c4To8qAkwch z2>N#_bD!o7LDUVvE5CauhNWDNwaMHlL|p*KdwP^oX$7hAafo6VZ>DB2zwjBm+FF&j z?>`uNmmvT$rt^{B!+4pTz~0V%kc$O0d$+UabaptLIMCgt=$#L`0cg?<-x@-EEDoX3 z1+l+RedhIh*umR@wsvajf-saoaCZlym#<^++9h^PAaqa)T#?feq+U(yey1UT++q&O zSA{{8N+qn7*RUb~G~X(?*mEN?1mJDaMEG&X2yH~dA-ced3+kTiRzw48qn$-Qyx;7#XVum*FKcjyJ;2T!#A8zBF RzAOL$002ovPDHLkV1m_ONeKV| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/silver_cup.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/silver_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..fd265bfa90dba30b8f9eb170c911ae6a887f2d07 GIT binary patch literal 843 zcmV-R1GM~!P)+9?G;^N|8_R0Xx&d#K&s!EoZm#yvXZF^>B#x6+)2M6W;{$A%Wwk%7JVzKDF z%a~`8NJI_}4)i(@2x#OxJ3IF2>1i2Y89+1|mD}4}y-p^RGC4V^PKJhtq`tmh;i{{v z^?5d%m2^6-2hN|LpXKrKQAS5crKP1s=a5Nsb8{nIU0t68U#Kx9A)NzkKA+cnhlhvK*ViZW^Yb>($jGMv)QDQe<8iIk>guXZ zR2ckMCKEuAY6JjtA08fbJUct9cChJc5gLfMW1>SC#({B6w#W$giSXs+MPX1wLxZGJ zsSj=b7vQZ{R#q&s(9_eSj&MRLOa|)e>hv%RE*uW)GfKz1pV@cSh;Vd%elBfoZPL`# zq*1?3e=r!7r>7?!7YYSuC%KU;0MbW)Xl-p(2V?;Nv-kjF;ZX)^|54NN4S;aKVkF%L zfGF89Kq1xy9hAo7R;~d`8L&!GX_qw4s5wvwsJpv6bRDJ{F7V8ldiDV`K0B zYh0~-GcB0T=U1Kqh?Jj`-Q8Uo85z+Guq%d#hka$iR|Wte{rmg-3eeHfq0Q*q zw;>UBcX!Lh#f3WS?Cf-$(gFE%@|p!t0OqTBe0=QOGe4q6-`)wmI;c26rS;w+ahI^N|q_rnH50I z*2E5-(;=3Mi!_pydlmRfh#BSGoeoSJ6kK2tr*06p1 z<|_4F{$*1uzhPc{p-tEfpE+sn#&0Jd*)hMGxlgOM)u7PEDcyX+GI0*WyfTyWGG-CQ zb6i>WA#5snzyv2+I;sB84w{M@L#0Un8 zqd-;Fh+*jjMds*&Er03m0BZ{)h6Rh~FccRSF)$QtAufC8Qj3_%RB|6lH0#dP$| z&;K-c00>-*{@-x^(j|twckVDedH$T?FvH0PQY|OT0U+PE*H(cofA{GVgP@ogSlrgq zya7o4U$>OBLTP9h#RKAiYiivFWRx`0#!kgC;QBeWbvQp&JDQ<^Zi*r3_ESs~H>>`7q?Z zPX}fPhQ+jX00^8(`wy=TLE!zXSMVyCRI@0G0wF#=aC?9fK(YgF-MqoD_s9_jXB!(Z z-%w8vOoPM@A3sTZ2S6Jf|EJBEg-edM4j|Vesycw0VAKHs)=!m8vRM0M00000NkvXX Hu0mjftybC; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/soymilk.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/soymilk.png new file mode 100644 index 0000000000000000000000000000000000000000..cb682adb7a33e5bf5ed66fb05ff909e844dcdb06 GIT binary patch literal 367 zcmV-#0g(QQP)j1+V}X;57jz zt302qisUy&(D*r9*IK`o1`q^6uBY+--S_={o~9|nFl6n=0w8mx6cn~crlcr};CUXn z61CvF_6gI1LhJ6vM8|O?TS@Q0!T4Uu09wGuqG96r{XP&80GW=vI|z#Z4nW2vI)PK^ z&4`}m0VGL+b+38$Je>7k1d*JUXIe<7@g4Q&2q2wZq#*;H)0iW zoE3t%w)uY8_x_@Z?>gZ!_p3~ecNZNo@s;0Uq{X3buH=}p3$ zhJ+k3kAibwm6)PCw+edgh)S4vfYI{(`yE^%jamgE_g<@oH9nKzn*{VSgQu&X%Q~lo FCIF`5d-VVS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space-up_bottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space-up_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..f4194bd385cb6476e0c5d3c0612a47ebd3c5ccc6 GIT binary patch literal 641 zcmV-{0)G98P)zS5UU1VivE6P_ zEEdsdG(^2#*MiUjxOxu`o=&GR9*;TrVzJ;1kS>)<{F@K2@yig}88A%;*Vh8s?u(P- znQX;Z0^P2GH_#Vt069ryvp`>J+ZOD*zc<+K_ib1o-CzMufecUo@Yyo&F0M4+rwu@X zWFFwk;9j8_qy!-!3jt=J`Md|)bxtuKeP@3U{Pxg7Rek~ia2&_z^?F?RFS7N{yPzR` z)Rww?fp!U|(V7WjUO*)Z3?LSZd9$aw zuU0D_Qzobt{cJ{B0IJU^5N*Nnc$~)y#E)nJR4NsNu4HO6I&V8=2YMw_5crMq_x?5e bX8^td3MC8{<#I-z00000NkvXXu0mjfn@ksO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space_mountain_wind.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space_mountain_wind.png new file mode 100644 index 0000000000000000000000000000000000000000..37be9f854b58a4d6030c1565f981b768bc080295 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0suu z#WAE}&fCccc@Hb_xY`Fz_qb-joYKfQf%TH)=m%jE$UL(_VjyW?8`xZwfZ9niU zijn_I?f=&5_n-GFtrFvSGcW9VY5RjL#(+r=Rhj`xA2wZ=a*Dfg!6mS5gG*h*op3=7Au+SO^8s#m lo0KmEvz+q+yQ!$reE0Ow`pBCZd_X@kc)I$ztaD0e0szR8Z#)11 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space_mountain_wind_bottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/space_mountain_wind_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9c63d430bb97efa42b1d1b31d0486696cca6cc GIT binary patch literal 708 zcmV;#0z3VQP)&u73_9A@mXwiES6O8=}c>v%WXGTh`+&op|Yk zWM+1E=Kbc|_ueD}_|J9-kQiX<^OSFUHef+~tg@BrD}epphUa+UBFTkJJab`i0lD!U z8jS{;=_ZL_^%r1E|BihAA&yi3-G@TbWs(6be!Ssd&R@cY`w5<=V{*d6AYEHM`$#$t zqyesP%=@LnJUPE7oU=Jv1*Z$T0F#A~0?>=PKRMCHI^N)3P z-4~8U-ykaAgqfmoQ857TK7e2atbOOgxGfp#0B$eegi($=&|y5GCU%XVnJ&+&0hrFt zre4=x`t6ari2f)I#X>YrH?N3iWY&~^1-tGpau`KbTf+&=py|HCur`Cb2BaZx(g45Q zpUC1o>Iib5i_mZkPB}og*WK@DNrMQ4UxDq)p9#_cj_aU?s&EMHf@rhURy8hAeE{g} zbpjA_$RJT5W=M%Pdg=jMoug!b6E|>|_ngUvBw# z&)ipY7;%(G6GZBTN<_vmoxNi+OUeOkceXI%eib|C3}E9rz~ksxZh7C-0qp$Q!BN^J z7a$HmRsf;%cvVyeFmz<-pWs967f}=kN&%L}?xdb?KJ~d8c6+C&CTxqeYX5 zd}W=lWin6NGNmx)yt~Z3S`$<_Pi=C!y)D3NVVHiw8vd6YK9S9b#Euu{q-SN=CoUC? zpUL;v1zt$lfcxn|{u54O@#q z!Ys8Fucc-!^W<0>GOM_2E0feV)j7Ne?B_rKnO?8q5Xo(|u3_3Wsd=^WYyv%v+Hp=z z2ksrUbh-18Va;!gLvQ~I74a_(oABE4`UBhV#x)K73wKoSSDeGT;ab?S8Latre81gv?g2)v>plOA*p1orB^s^l<@6i yxTDWh;hbVB;QUW=ZRRe{gw+NOj64=H28@+jiEfiVpWz1jmci52&t;ucLK6TYSZ|I1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/tadmorwine.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/tadmorwine.png new file mode 100644 index 0000000000000000000000000000000000000000..ba89b6906835c2432b9433a57f4d523a4aea8cf9 GIT binary patch literal 491 zcmVJNRCt_YVHjXA>HvxyFpr1lKR+ugL-70ej055Tkmao0+zbrw z-;-?yMGoi_kYJz`P~?C$_pdXQ2?#J89ViEcC~86&A3h9>1E>MWc7U~_=Kt~!56?aq z6lP!mvX9=sPF7AJ+X21n<}M;a4p|PEsU-XV;MTnip;xaMi@kis z0Ahp0((gScITXkaf$U{XXBn0?FHunjQ3njT0|1C@emFqsmO%gj002ovPDHLkV1lau#UKCx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/teapot.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/teapot.png new file mode 100644 index 0000000000000000000000000000000000000000..a59f755776e5cdcc6197239031873e2185eec9fe GIT binary patch literal 663 zcmV;I0%-k-P)tTF1orkmGTy(s(m~ft)He(rrl(&>&auhl2Nntq zOVA`j0%K#(q@A4%Y;c%EG5{ZTq!X-c;#_RP`>-Pt4jVYH6 zFwLLP3@$9Nzn^ECb_#{U9|@n&4`*j5R2tkJKJNOuVqaFvx!MXKto|1tXj&F5$GmtB zg2BhsVrj<5M@Yi52U%7{Tma#**c+N?aBv7lN1wy_xkm8rZW;Reoo+B2One6rzPb69;9Fa3bm(%qEcEoq1P=rr5WHHg*x&Eh;5^ajJG)FL z^t_mcvqJfj*bp$@XN~!YVq)u%Q_q$eiswK^!Go7rKK2Cl$R3U zVr=n30HzVVSS;9|zaW$O47Oq zKt7*q3vVgFB^DN<4C{!8X<%Roj*k!OM0jx32*z{@Z!3UVS(&e!XmN3s;VN%N1m2Or z%`7j^NmEk_Yj*!{;6eh5vPy7S4p7aVF^m$-%)Daj>#y%-2O^PKhJU#jRh_#9nV5($ x-p1qVzc~ZWsOnnFNjrrK3*1Fq0aw5k_ze-JKCw|CRCt_YVHjXA>VQ!PP~?Ey7u)`W=;t@DFxZ7HW2CzS-ucdB zxXe1B5mwF$e)^DPRcnge{}L1HNpW%^>Y2bl~pZvkv5%F?18*`6k8x zVBddmVG#4-KCpw~(0`Aa3?wH+vK#=jd|%jW2StXp49gzfVTjsnN0uWfiUN&!?gv10 z41*)XzwbB6GGl0_fzKM2KoZl(T+UGp3^Pf~j$}DNQeB6ETO!6m6;1rviwh*1MV15p zKb^wB@Q0b<#{J(68j7r7`opJx46+iW8%J>(fLU&#&(84lL-)aK45NgodPnD%v{$R0n(o7DUg!7{SFr<-n^gha5;Xi=s5}GikpAs5*uf zNaO&D8~|$zXi#7V#YHhCmXqy(mrw6AFn)1ikm5N97kkD4N)LzV;{b7KMTQrvXFI$= z5j_hQ2Sp6c9bi~@A4io-n&o6WfSO>`0izB80B%c%cFj>)*8l(j07*qoM6N<$f?cM) ALjV8( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/thirteen_loko.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/thirteen_loko.png new file mode 100644 index 0000000000000000000000000000000000000000..bf867f76efd0dbe1b7f1eb7b0479c26c366e7351 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP|L z#WAE}&f6&)d7BLcTn6PtKkQqsIMji(ogYcnx7Dqk|0dv@m|*@ruR&eFO3n|+526H|}Y zzUq?ga;~P=+S1>#E;#$#E2qAnH{=>y-1`rLJ_7qb^&QCQmfrAxpY_)VUHchxSIIl| zGp8`B@Twk;fz0*rNS&mz=q!x!ZOea+zM>gTe~ HDWM4f!|irC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/thoom.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/thoom.png new file mode 100644 index 0000000000000000000000000000000000000000..f882275a497353d194753170ba1d1cf80af8704c GIT binary patch literal 445 zcmV;u0Yd(XP))y$WBs zwF359J0gjR1$gJt5CTgD!^iG!Y5ht<+g!96U3hnXP~~)OszU z!Q1bf7~sPn0dELw8nFPi|GNyjYUh$qP%J>jQ&59Q&x29$%to;;OaqBlEn*553yc#n n1se;DicFjT@k?d}{P)VQ!Pj5=V{0izBe%K?!L4F6&5Nw@ES>3w_m zFl@-k0JE1fFfh{00U*mm#bn`pki{^dCL+Ob>&*+2%p=JGAj?6PT>SSNAz0G@XNv!4 zWVppZ8X!3YK$b`_L$nojDl+ty-)DI7_YcEM#{UfD0J0OITe3Znd<1vIOXN_YwF5ww z|GavJ;p|l)=fMqzgAB3^z{?dyfo z5V9=CDklLN=^~C<4;!3=tduVxbC58G^L@bhx`w5V(A&;}tgBU_@0y?tX#@3TACqz? z$oQS-iEUt_ww^Z7&Q(xf4M7>wM>ud7FB_l^`A-<$K%9vVm^zYMgBOn6%gN7^0lY&H o%jtlarJn(OXaqn21mNd@8&vaRUs+CL&j0`b07*qoM6N<$f}S*pEdT%j literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vacuumflask.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vacuumflask.png new file mode 100644 index 0000000000000000000000000000000000000000..0e524de5e03da9146a47f4b4170006f7511bc319 GIT binary patch literal 322 zcmV-I0lof-P)o~#%4V>61~X6O36#NXHrixRRxiLL zL@8lMQ5HAqT5jFqCh4B<3!G2q{Of<7xHtkJ00JO@-2hF~=C13IWf|JG1x?f7c^;~& zK28T%mNg54fU2s{_dTX*0?V=xMG+K5&5EMzM%?cS{u>Yk0Zh}xIF4wV2E#BQj$?#j zh`O%N2Q2Bjz7C=5x+u#M9LGVHWjKz5JkQSuyz@M7yMYC8w8H>NlC~T8rF#t_0T2KI ze5)vmYXL{Q7hw5@T?(*m`@t~G97WN#j*}!=*Rk*W=l=-k4;dAv<A6(5Uk$xHd{1;HKCIfuazG&IN#`PaH~W@zOa{|=8W;^2 dRx|Hmu$mqGQkm`5abQp|c)I$ztaD0e0su(wfYbm0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vermouthbottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vermouthbottle.png new file mode 100644 index 0000000000000000000000000000000000000000..204e361ee60c070fda234438b1d1b5df79bf5aa5 GIT binary patch literal 416 zcmV;R0bl-!P)VTo`01Xq<{~-FtnbV8|;($ZDwlPdwG@GH} z%xSXCpvVDsZe9$O0*V~)QvVJE&oiEZa{x5}*$xm)7W}Urtl02r<97xIPuc&Ew?8H; zAr8$DfcgIGweJetl3WjfLJj1G!q5u=WZ#4MKX|@T6bclDz}$#c2_QOoMc4u$^?)2R z$aVn8@~8IU5ca`U2?@<%4Rm#YbG;n{j~b*9`T}IjvPh6+4n}@>6 zAj1Xm^^)@)|Tic5vF>Fxl( z5MOX(1jb(1yqLZY02My4f+%}VLIb(xP?QFsB_IO_0~gt5kn8|Z3+V4DMh0#(&Ibt5 z{|wxxxES6)BE4K7*#XeX=0C$poN}~v0J#=X)dAE5qYfBw2LJ$bn{&t&jLpLU0000< KMNUMnLSTYVuBYDs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vodkabottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/vodkabottle.png new file mode 100644 index 0000000000000000000000000000000000000000..0e379bf8fa03953a04555328bc82e3cc465da62b GIT binary patch literal 565 zcmV-50?Pe~P)h=DO*Q9%Hhc{qHiCIwVafz9T?(oCJM-@Td6J3vR90}DO@ zlj9SBdy|wSCyUTfW+XqG69B!zoPPk1$0OFaxVg%M5)4nRr=%g$P9Om=^QJj3w&%TE zjR@RHm&@f6&o+F;ySGoG<^W86v3u?)6hh+S0##R6xDEz6rRF36_Vzr_XUwC?B&^ld z*$~IRf*=Trrs8k^iVFfzI_m{^{>NDD+OqZlOe{(ZUq*x8Q8R2-*-JY<00!DG2S54y+z;n0BG_7nC$8Q^(j6p%_W|N3b# z{{BCbd=T7WVa%>33c)K7=YVmQ0<` zW1;m+_BO9d!|I5`Wz1X?=9)j+^-tnpZago;huUo|pWbiJinnEW^6)Ez2|u$z!!<_n Yqdq=$5tH(=fuX?Q>FVdQ&MBb@0By2-u>b%7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/water_cup.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/water_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..0c9e03fd088549c684caf1829771c7f2ca812640 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0th` z#WAE}&f6=7T!$P4STDq$5M<%*zH6;f(IVsIpZH zd)6fxPfnO6$&ony?77*A9%*WPtQroCTmcOd0!|$-Z&m02XIgONdd|P%`P_+&6P{Qb zvc7%H!+wzIL6VBaj#csNZ!fC9-o5#z`Onup&;2g)C`bx;_-x#5c`~$yp>&~*uJ7dY z_Zr^q%+aY9aFs2%`Z!s4Z5+>r+f#d=+A=xCP6*LwTf%r`<7|8VKXE(@^cFB*ntwro oK}q(ICxf$=Jgb2l*ewTy9bBDvyI;L~59mz>Pgg&ebxsLQ082k>)c^nh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/water_cup_e.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/water_cup_e.png new file mode 100644 index 0000000000000000000000000000000000000000..a72dab7a442a2e194f2eed05ba1e7efbc95424c5 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0suu z#WAE}&f6;+c@G%~um(gYu~h9&W_Y2wnVF~I2nWvr4v$0zHwQ0I$LXw>ENjaQ_IZf& zEZRB0!=yYY#j>#G{PM}-Y0m;0m_!yZupVd-a60q+UiEKr26ey3=f4Maa5#AG6HdS1 zW-8Re;UFE{w0ZTfpYJxlI(~bb;qq+~*F3(pR5eTzY!WJ#na_9Ai|>Kfl|68NR1Pg@DKtZtYi$M(dr!~2yz|37}_9b6%dUxcJs7o3<~ mAa-EJWPhd^N+5@5JYc=k>*>AG>P9-yj|`r!elF{r5}E+0TWsVQ!Pj5=V{0YlgU4i5jp^nnA61LA;+@(wWF zalnES`^j@a#r6~b9X-q;93Z>H(}L_!AlU&R%QH$HwSD8jbvn4z5G9h7`+@osfAQ= g05!p=14bPH00(GgU=XwH@&Et;07*qoM6N<$g0;St#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/whiskeybottle.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/whiskeybottle.png new file mode 100644 index 0000000000000000000000000000000000000000..67a40d0c5fb03e94672f2c9a5b9f17a66a6985c6 GIT binary patch literal 438 zcmV;n0ZIOeP)VQ!P3~dLzxw_{6!zV8pjNP*t2gCt$(;^uj z{a~O7P~?EL?avrCZ`#5zH70Rj9Psz?K?ZHnZ-p%yN*g8IJ5= zxC_KEAk71^_dm&wAS((qi~6yOKW!=?*(|aXp^{}7!>*tR2Df!9z_|fbAdv&ea)7*y zI76zH2ZI3%3&Uz4J^L6iDxR#Op94SuWVxyc53oG`!axZi%K@O^&RAN?P~ca~pux)r zjsm(m00i0!yBK~7{%5%H{u7uTT^vte2UPW!q44RN2ti=m`OgeqhP+@J1hhrTGly&k zfGVMfPri|DFspNNI=!o__hyKn@_u0gxh=^}iekZU@q|EHum00DcI6M&<0J2><{907*qoM6N<$f~jAv00000 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/whiskeybottle2.png b/Resources/Textures/Objects/Consumable/Drinks/bay_drinks.rsi/whiskeybottle2.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1f9144358f678f202bcce12d0e23b1e0556138 GIT binary patch literal 439 zcmV;o0Z9IdP)VQ!P3~dKgrdj@HWR+!To4Sf|KpgP)%tMAx zKkrgv1Z58BJaCa=^QJ8fD`FA{#sOU=ehi=}paf9lfcr;5!9M^|kY*(HA4IDQaxy&m z^phb%TMW!!arG6+iIHRnfGqb`5@I+huEp@?_hSYQpqLUc8or-826hOkjv&baFw5_} z|IQ%%{w$KrD+UHWb})-nN01c-Tc2W&cYR(NlFcGJ5n4EhF??9Nfk7ZRfZ;zdDo!3c zPL?@jIY2|6kzwJ~RSbGS_9Y-4pB)Bd(a`}Q5X8>J@SW`+gWy*NiU3&-xbg5mgGEXx z!>?(p7#M)b4HN}*bpQx}qJSGn3js@jtBa2_2+Pyi0dZ-TD15pmLJ&BA{33&)r9POZ z1d#23U%$VR?Q60f@ag9tFrBZX11=4b0jN%(xdWg@?0-ovHmvf`zx`sMXVQ!P3~dKgrdj@HWR+!To4Sf|KpgP)%tMAx zKkrgv1Z58BJaCa=^QJ8fD`FA{#sOU=ehi=}paf9lfcr;5!9M^|u&|EdKZthl4q%wG zGg*hYH?fQs0K472{j%6@d9B6yX7rgZ_#5x{iMKrJw| h8>OQT7-lY`|s|jEVKuWHuFWEaxu8S>>0I-+m3KcUc%mGBA?=UM<00$#7gq=~(n=Q4Vlg9=I)MxjJv+j~_!f^RmggYuY?Jbk0NB@Gr>+o^ zj^WGY!D2tr1+oLZ`Ilxr!z-VyHzAj)xs7IRv z%mH1oz%=d&$1!;el0&onC}t|x6lxk8z>}K8fZK~Mc=>$^)o++T2jIg-8#=)2&te<9 oxM15jrvCj{24JO{0FDEE0x*x5Yg|8X@c;k-07*qoM6N<$f>5~0?EnA( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/milkmini.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/milkmini.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..80d054ff0d2a200e3a951c28ca183235e09d482e GIT binary patch literal 409 zcmV;K0cQS*P)!ufq)9-oY+)W2b^5lSOq zSr&DH0O-qLEY3M~mHD6qa2yAUqLAC!_3PL2R0iw35z3Pg5u$Junx>J#I@KD$SPz~L zmy_*fI3-AyWxv7)w{z(7kL?4nj?yQ1_b=h%ZV4Hzgo^6&HES z!BKgb&3^=o^R^E73!)pW4OoY4TKoSyHUI-KfKBTYuqb{VT&HqP00000NkvXXu0mjf D@V%!ufq)9-oY+)W2b^5lSOq zSr&DH0O-qLEY3M~mHD6qa2yAUqLAC!_3PL2R0iw35z3Pg5u$Junx>J#I@KD$SPz~L zmy_*fI3-AyWxv7)w{z(7kL?4nj?yQ1_b=h%ZV4Hzgo^6&HES z!BKgb&3^=o^R^E73!)pW4OoY4TKoSyHUI-KfKBTYuqb{VT&HqP00000NkvXXu0mjf D@V% z$cgHTego#FTCreo7zCoHO85X1lY@$?w(rPY+Ad3Y*QQOAd*&cV`2X&Bz%5+348Q;k zzyPivkR-`k9{aw3b2fkswryLSS5>8TA2Q%DIF4g6x~_X3K%VCi1c3?;!%)pdQM6`^ zksbpHfU8FUhVKURcfZAq5*$c~&H!9pUDx1w9;9gsWm&@N<4w&wZMcMWMv!*EvMe!5 z#Be7Vt0)RFQu=`ea2y9X=j#0KWxN-x^G1-H5D~I)7n-I~!8+9$(Bq%mX8URp+igck zmSum!=j<82e^;jmU@d-@FnG9ET@U?76)KAoP6E767ow{tPXqBGLJ024oXz%v<#i_q s{0Gqu)&?9xj;-te9UFiF7{IZ$0k}qhxha7tVgLXD07*qoM6N<$f^9&d z$cgHTego#FTCreo7zCoHO85X1lY@$?w(rPY+Ad3Y*QQOAd*&cV`2X&Bz%5+348Q;k zzyPivkR-`k9{aw3b2fkswryLSS5>8TA2Q%DIF4g6x~_X3K%VCi1c3?;!%)pdQM6`^ zksbpHfU8FUhVKURcfZAq5*$c~&H!9pUDx1w9;9gsWm&@N<4w&wZMcMWMv!*EvMe!5 z#Be7Vt0)RFQu=`ea2y9X=j#0KWxN-x^G1-H5D~I)7n-I~!8+9$(Bq%mX8URp+igck zmSum!=j<82e^;jmU@d-@FnG9ET@U?76)KAoP6E767ow{tPXqBGLJ024oXz%v<#i_q s{0Gqu)&?9xj;-te9UFiF7{IZ$0k}qhxha7tVgLXD07*qoM6N<$f^9&dtAN8dmHr;AqU?wGUiW^Se$+B2b1F{SZsSa_! r-U?6QpTO{r!GodnzFC7YP{kHzJ|{yPBhO!9kvEkXlbyKbLh*2~7ag<0=sV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup60.png b/Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup60.png new file mode 100644 index 0000000000000000000000000000000000000000..4af868b8f087d10e9c9a9f87fd79809a9ee45948 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq6! z;uumf=j}y9KA>tAN8dmHr;AqU?wGUiW^N{1#9~XJ8Zc-uN^oC)vu7XkovDmFpT6Zf p^-bu2ECc6)f4A8RfR;3r9bhy($!SVrv>2r?G_C=v0AmyH}elF{r5}E*$Ml93- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup80.png b/Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup80.png new file mode 100644 index 0000000000000000000000000000000000000000..329e6aee39b505c33b4ebecea328ad6146eeb38f GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpzq z;uumf=j|m!KA>tAN8dmHr;AqU?wGUiW^SgM<+Thxpdt_mV0-hTboRya25W{?hj%r< rnN#aIAMiD>1bpAdIERseVS#J`gB2@BXA_Hb6-d3OtDnm{r-UW|eLE`0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup90.png b/Resources/Textures/Objects/Consumable/Drinks/shakerblack.rsi/fitness-cup90.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0cfe55241409d4dfcf5831b0c481752907dd1a GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq6! z;uumf=j|m!E(Qf27Dv|q|5JUda{DF=+{nGm^W>TaA5akxykNg^@wM6F_YCC>zZi=$ rwkv8ePhoh+;KA_qzFC7YP{9;tK09TO&PwT7VIcLMu6{1-oD!MKP)RCt{2lrgGL(=@=!<_@5QZQC<;0HM1;I=}~$6F^+o zeRf^KP)RCt{2lrgGL(=@=!<_@5QZQC<;0HM1;I=}~$6F^+o zeRf^KP)RCt{2lrgGL(=@=!<_@5QZQC<;0HM1;I=}~$6F^+o zeRf^tAN8dmHr;AqU?wGUiW^Se$+B2b1F{SZsSa_! r-U?6QpTO{r!GodnzFC7YP{kHzJ|{yPBhO!9kvEkXlbyKbLh*2~7ag<0=sV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup60.png b/Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup60.png new file mode 100644 index 0000000000000000000000000000000000000000..4af868b8f087d10e9c9a9f87fd79809a9ee45948 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq6! z;uumf=j}y9KA>tAN8dmHr;AqU?wGUiW^N{1#9~XJ8Zc-uN^oC)vu7XkovDmFpT6Zf p^-bu2ECc6)f4A8RfR;3r9bhy($!SVrv>2r?G_C=v0AmyH}elF{r5}E*$Ml93- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup80.png b/Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup80.png new file mode 100644 index 0000000000000000000000000000000000000000..329e6aee39b505c33b4ebecea328ad6146eeb38f GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpzq z;uumf=j|m!KA>tAN8dmHr;AqU?wGUiW^SgM<+Thxpdt_mV0-hTboRya25W{?hj%r< rnN#aIAMiD>1bpAdIERseVS#J`gB2@BXA_Hb6-d3OtDnm{r-UW|eLE`0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup90.png b/Resources/Textures/Objects/Consumable/Drinks/shakerblue.rsi/fitness-cup90.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0cfe55241409d4dfcf5831b0c481752907dd1a GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq6! z;uumf=j|m!E(Qf27Dv|q|5JUda{DF=+{nGm^W>TaA5akxykNg^@wM6F_YCC>zZi=$ rwkv8ePhoh+;KA_qzFC7YP{9;tK09TO&PwT7VIcLMu6{1-oD!MVQ!P3_Sq8tG7Jt!2upPRrSD+v_%jw&w;rN2MF#6T(_Is`zD5V6eu z{{MAdG2FU*nN;IQbAX(@JOd9uKUO)AI7ptR4nVeyT43lE#UtAR#yUDqXRln@ zCn770A@}C-W3W6;9Y6~}vI8DHe8|AT$H(yF(VQ!P3_Sq8tG7Jt!2upPRrSD+v_%jw&w;rN2MF#6T(_Is`zD5V6eu z{{MAdG2FU*nN;IQbAX(@JOd9uKUO)AI7ptR4nVeyT43lE#UtAR#yUDqXRln@ zCn770A@}C-W3W6;9Y6~}vI8DHe8|AT$H(yF(VQ!P3_Sq8tG7Jt!2upPRrSD+v_%jw&w;rN2MF#6T(_Is`zD5V6eu z{{MAdG2FU*nN;IQbAX(@JOd9uKUO)AI7ptR4nVeyT43lE#UtAR#yUDqXRln@ zCn770A@}C-W3W6;9Y6~}vI8DHe8|AT$H(yF(tAN8dmHr;AqU?wGUiW^Se$+B2b1F{SZsSa_! r-U?6QpTO{r!GodnzFC7YP{kHzJ|{yPBhO!9kvEkXlbyKbLh*2~7ag<0=sV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup60.png b/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup60.png new file mode 100644 index 0000000000000000000000000000000000000000..4af868b8f087d10e9c9a9f87fd79809a9ee45948 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq6! z;uumf=j}y9KA>tAN8dmHr;AqU?wGUiW^N{1#9~XJ8Zc-uN^oC)vu7XkovDmFpT6Zf p^-bu2ECc6)f4A8RfR;3r9bhy($!SVrv>2r?G_C=v0AmyH}elF{r5}E*$Ml93- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup80.png b/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup80.png new file mode 100644 index 0000000000000000000000000000000000000000..329e6aee39b505c33b4ebecea328ad6146eeb38f GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpzq z;uumf=j|m!KA>tAN8dmHr;AqU?wGUiW^SgM<+Thxpdt_mV0-hTboRya25W{?hj%r< rnN#aIAMiD>1bpAdIERseVS#J`gB2@BXA_Hb6-d3OtDnm{r-UW|eLE`0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup90.png b/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/fitness-cup90.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0cfe55241409d4dfcf5831b0c481752907dd1a GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq6! z;uumf=j|m!E(Qf27Dv|q|5JUda{DF=+{nGm^W>TaA5akxykNg^@wM6F_YCC>zZi=$ rwkv8ePhoh+;KA_qzFC7YP{9;tK09TO&PwT7VIcLMu6{1-oD!MVQ!P3_StgRUAT;13;FmK7Gx&R#5Q&)ng~XVj@7S$Hf8<5po?vQWU%q;C}bp%lk0Qnvi3KPD4XJC+%#Z&+ly9AOa5fB{$AV*|Ni2N6M z|Aj&R^Lvy~0ENIqUO@&1c4pc+00dm-F5JH-Io^?h9hd_C{zpiNh`{BidVAB(0U(fd z>fHWUuU=t@i;0Ob+`4?3RO3iw+K(>rpVCWUaBijMSIyz2g zuUy$DB8yoVy?Oi?EKgGh&;pR`fJYA>GH~$mG5q-S2`&cWgT(3L01yCK4zd)PPc9(Y z0fFA$PV2XB-G@z_E)Jl?GO9U%nqbrcqYfB#002I!X)2b~!9@T7002ovPDHLkV1oVV Bp+Nuu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..11551c2294ab564eecf8cc4606ed1ff580e5b479 GIT binary patch literal 407 zcmV;I0cie-P)VQ!P3_StgRUAT;13;FmK7Gx&R#5Q&)ng~XVj@7S$Hf8<5po?vQWU%q;C}bp%lk0Qnvi3KPD4XJC+%#Z&+ly9AOa5fB{$AV*|Ni2N6M z|Aj&R^Lvy~0ENIqUO@&1c4pc+00dm-F5JH-Io^?h9hd_C{zpiNh`{BidVAB(0U(fd z>fHWUuU=t@i;0Ob+`4?3RO3iw+K(>rpVCWUaBijMSIyz2g zuUy$DB8yoVy?Oi?EKgGh&;pR`fJYA>GH~$mG5q-S2`&cWgT(3L01yCK4zd)PPc9(Y z0fFA$PV2XB-G@z_E)Jl?GO9U%nqbrcqYfB#002I!X)2b~!9@T7002ovPDHLkV1oVV Bp+Nuu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/icon_open.png b/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/icon_open.png new file mode 100644 index 0000000000000000000000000000000000000000..11551c2294ab564eecf8cc4606ed1ff580e5b479 GIT binary patch literal 407 zcmV;I0cie-P)VQ!P3_StgRUAT;13;FmK7Gx&R#5Q&)ng~XVj@7S$Hf8<5po?vQWU%q;C}bp%lk0Qnvi3KPD4XJC+%#Z&+ly9AOa5fB{$AV*|Ni2N6M z|Aj&R^Lvy~0ENIqUO@&1c4pc+00dm-F5JH-Io^?h9hd_C{zpiNh`{BidVAB(0U(fd z>fHWUuU=t@i;0Ob+`4?3RO3iw+K(>rpVCWUaBijMSIyz2g zuUy$DB8yoVy?Oi?EKgGh&;pR`fJYA>GH~$mG5q-S2`&cWgT(3L01yCK4zd)PPc9(Y z0fFA$PV2XB-G@z_E)Jl?GO9U%nqbrcqYfB#002I!X)2b~!9@T7002ovPDHLkV1oVV Bp+Nuu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/meta.json new file mode 100644 index 0000000000..76bf0dac4e --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/shakerred.rsi/meta.json @@ -0,0 +1,50 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from baystation at commit https://github.com/Baystation12/Baystation12/commit/464342c5dc8c417b7e79d56c69aa30445bdf3b75", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "icon_empty" + }, + { + "name": "fitness-cup10" + }, + { + "name": "fitness-cup20" + }, + { + "name": "fitness-cup30" + }, + { + "name": "fitness-cup40" + }, + { + "name": "fitness-cup50" + }, + { + "name": "fitness-cup60" + }, + { + "name": "fitness-cup70" + }, + { + "name": "fitness-cup80" + }, + { + "name": "fitness-cup90" + }, + { + "name": "fitness-cup100" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/0box-donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/0box-donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..d64ebb9feab46f7d39da1bc30a0c19f5bff21688 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>ZSN z;uumf=j}O1!3F~!){FBcZ4{clg}3fFz`Fg^iY_r$TQ!+7-Z$1EGC;*Zuz@vZ`Ln-! xvfgc4AL4MVhWo^;{S9_0a)In8Kz0Lx2D?tCJ=a~<`s(8#uBWS?%Q~loCIHcyEye%< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/0box-donut_chaos.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/0box-donut_chaos.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2e7a5a3b8ecef502900f261aa2ca134f3c7976 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^4nUm1!3HGP9xZtRq&N#aB8wRq_>O=u<5X=vX$A(y zL{AsTkcv5P@9gzrc9d{?C@eVTM)v0N4NhGd4lx@xia2`AFLLyjmag9*QpETub;()Z zB{CZ>lzig~>y-TMv)y{a_u5$^(KTlhx6L}4r+ki4;5kD_F~bo{hDS0Cg?tS=QX1|t zo?d-aPyB9epWSoWD6!}DHt!2##C%p?IPqsIqllRNPf>?Ew-`3-TN&3?Ci(Fd+I{5@ zc3ND#hZ)T%3wDP&%nIl>OsJCRUvWP#Y`^!7N|n=sKYu@%`e=*FozS=U`EPtV>R!hx zFny1_L50HX|Gyb0&oam?>nn#k4ZC>_FySEn$AVu!q;`Kk+%&mv-u?^m_4k9s(nB6@ z`um%4_P!q{)-yc1be~^BcgOi3e;Z~QwiIG_@*R0erCYU- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/1box-donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/1box-donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a6d0e8d27018586ffbd9f0cab3dbe223f8327c GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y}D z;uumf=j}O1-UA8(tQY;8*i#B#F50G7a4|YHgf)a|daAQgazb2K0Z=gz957lS*1Ow& z*O@8*wlVE_cADY*Ifgy+Cv6pD|G)!L!NKnH<^k8;*T+7Tfdo8V{an^LB{Ts5dXh2u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/1box-donut_chaos.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/1box-donut_chaos.png new file mode 100644 index 0000000000000000000000000000000000000000..a03c46d32803e89ca72558696d8bb33d69583b4f GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4nUm1!3HGP9xZtRq&N#aB8wRq_>O=u<5X=vX$A(y zWKS2zkcv5P@7Q`VJ2JFAG*{BNmA%>gh69(Wg5He?HpdPAI~OeN?X{2KvTUg6*|O8+ z6eG89dcH#FqQ{)eBFYl>zt6m+V}0hdkLl#QZgZFw&M^u+XXq$qIAY20NQR;CBqLjU z&bn*6d%p2m{EPaM5h?TkbL#xbn-aoWj~(;px^VTR`#q)(Z!UxX%gob{8gmzQJPy{M zDJWIHJshl`ufc-d0n=E7aFBeD`<3_G>-S6Fs8l*F`1AOO-bZUx?u5U+&;R1l6Xkry zBdYiLCF~}h{r|Ti(|3m1|Gf1uw;>EcaWYhRiJe6MiuLi^cf1gvBlq+t_usSUWm60N zMD=d(m%nfn;_Ux*2P)1wAA8S!#Ye#hhns)1I)4gwSm$S=1&jj*Pgg&ebxsLQ00O6| A>i_@% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/2box-donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/2box-donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7dcf01d9148b1b7dbd4da2fa5a4c3037e91252a GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y}D z;uumf=j}O1-UA8(tQY;8*i#B#F50G7a4|YHgf)cu<_5)?h6eiD7C^;7kiZ$xeeAA$ xY?@bnG~>L_stx7O8SnX@jOu2tV27w^VOA@cz;!p-LT(;Nz|+;wWt~$(69CStEV=*y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/2box-donut_chaos.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/2box-donut_chaos.png new file mode 100644 index 0000000000000000000000000000000000000000..614623b978b0ea1ad0405737cc8d9ade3d40b9f2 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4nUm1!3HGP9xZtRq&N#aB8wRq_>O=u<5X=vX$A(y zWKS2zkcv5P@7Q`VJ2JFAG*{BNmA%tXPkzJsFqS(~o{!exBQRs;N-)pXt9-jJr&Jo`_~B)MlSib7A&}v%zopr0E;xN A0ssI2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/3box-donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/3box-donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..be75157d5c305aafe70b8a58a386beb495ed7674 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y}D z;uumf=j}O1-UA8(tQY-*_@^FR+I?%+0oVK!4y;!W3z?}HvptLD;sYuMf&%7GYd>D| y@1J?;epo~KJGM11avWZJg?Y&&xIz>-SR^ogG32^?W^Sl8NW|0C&t;ucLK6U@D=@|Y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/3box-donut_chaos.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/3box-donut_chaos.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a0ab88f418f46f1d41282592348244124db3f8 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^4nUm1!3HGP9xZtRq&N#aB8wRq_>O=u<5X=vX$A(y zL{AsTkcv5P@7Q`VJ2JFAG*^1710%Pog5DBO&8CF>oe5sj()AleiWojhWEOW$ zVHTTpF7BY##gA<74)C4+ZtJ^C@>%M#Sts+9&M^u+XXq$qIAY20NQR-1uVKd%hTqj| z&WG3fZ7;X1iT{=nIp_b|!uG|R65?9x&(9ZG@VdLdhDBhyNWw?Q{DbEFIwuv+`TspS z=RyU~dxR+#><)976)+433oqdlSid4(ZU6r48@tp`i~fB5VdkSHDtAKO?&p8;>5;NL z;}O;U{1W#jp1uFOA<}n-sr+GUki+m939)G<^AYV=-OG88H8(wOwy9sZ|JR;nI&L8k z*Zlp?7#mmfM7d$dm-p;3>vo*|@wZ`?W=rN{!#&Js-Ur%phkxdzV22x>C;kFsfWgz% K&t;ucLK6UPHmyPc literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4box-donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4box-donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5bfffb97bf8781abc7ce379cf9bf24b1aeb1f8 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y}D z;uumf=j}O1-UA8(tQY-*_@^FR+I?%+0oVK!4y+-E+ct2{G&Fc0Q~*>A1P6i~_L<)M y_0ll-*KMv3XQnglnai9Jd(x|uxq=y@;t->7`9rR|HG2c9KmwkwelF{r5}E+{bTUc+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4box-donut_chaos.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4box-donut_chaos.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a0ef5ed8586f39091f557e32d931eca0636715 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4nUm1!3HGP9xZtRq&N#aB8wRq_>O=u<5X=vX$A(y zWKS2zkcv5P@7Q`VJ2JFAG*^1710%Pog5DBO&8CF>oe5sj()AleiWojhWEOW$ zVHTTpF7BY##g8m{Jk~n*zniQ~Yp=YyGHuiBj$(!*mJE+%7z+6sEZ809Fe~U~HvF}{ z_I$P7^4q&*_UTt|(K+}3+m6G5kp}Az?SJMkwxGMae-Ep`be#i_n(sB`%SB9bo-_Yf zx8=f%7W)}7jXTFE@SFiv*yHDh3YWh|KmW!azGfTQcOt(1yokE$!)00j>m06&$yahK z=)L^g@KE;VpS%1suC_#OF05n5Fa+dObh9UXO8nUI>rrO&#|005D4dUfvEFXIX18Fd uMK;3Zx8Ird!tbR0sdG3ha%c;7H@{;)k`(OlP=^x~2MnIBelF{r5}E+>r>iso literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4no_raisins.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/4no_raisins.png new file mode 100644 index 0000000000000000000000000000000000000000..eeec931923cdfffa387df2a7fb78b4f611b5ab09 GIT binary patch literal 493 zcmVDeg$|hlE~U5#f>R?EY-q(*yNOn%&?UZ0(k2%Q-ibjfdGPY%@_66Ry?4oF z27hcZKnxHA!~oL;@PtjfhoMkx9%kZK0hoA(#53%sWAG1^5_hX(AevSTpb6EPc`qcG zM$#Kdj$_}^hl~kVKy8B6HAF`3sL@$-C}Gm`dAi)XKBq$-A||&856R0RkTM^V?bM+w zJHjdD07hcLYSeg$u2PgrDGtB{CsjZT!6C{PXuQxEMDsx+X@R@iz4!l$yiJ}Xx5(?{ z6+bq*7BH)lAGw#Nc?MNIa6!OBLQ7M&}gT)usx#-17aozKnt#6r?8&rVXi21$1MvEM+g_lue^5m{@j(Auu(1zIXeSf~7;Qw4Y?rHG;)-9!taFwT7X}dB j+kaxy^+yx~{7Zl@sLE?%v5ZV`00000NkvXXu0mjfrV+~E literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/5box-donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/5box-donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..d806d7cf0640e6dec6c686436fc3a132b079cd40 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>ZML z;uumf=j}O1-UA8(tQYrl%1yY)-F<7O=u<5X=vX$A(y zBu^K|kcv5P@9gzrc4TmUC@jcxD|>VP21agE1-&JnnoSA$I}^O5rRz6{d}4T%yyUF+ z5}6GbO1^Q0b@uJeF}2qDUgtY2vEA}bi1AI|BbE%0WEcwh8Z6iy<}fRqV-%RKbKsxc z>(8O{FTaiDyFcAFO6+-k^__<+bY_G9Rp1maTEpk6q25Mzt^IqWV26f-Q)dCAfWgz%&t;ucLK6TYeyd6V literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/6box-donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/6box-donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..4c59d3a28cc502fc1f6032b5fd6f636f07677cc8 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D5&M> z;uumf=j}N~Mj($#q4~eL^ z;uumf=j}N~Mj($#q4~eL^dT@eqhzg<%DX5p(irYcdxk8y;DcWf)GG;Np-^(Ae zwc3b?4Dul4*O$lpeDd;Z;>LdtN5Bzq1RMcJV0{V5*G5#kwOs?}U4JcL1qP#?X5Q!X zt*YCg%;1M7j6$JcUY|~Ns@c@tnnG0t46p$;fIE_RP)^JOQXSlfcA|Xw5fwE+oj8H~ zXRpdz3nV?kZ$1K=??Dy+XLn1aH~X zj)5abD_B(p9!}?66SrTf-N*aPoNTTFmP+sHGl4R7BgiaJ{V*8n*&KlKF^8Mi00000 LNkvXXu0mjfKUOnB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/aghrassh-cake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/aghrassh-cake.png new file mode 100644 index 0000000000000000000000000000000000000000..4abc0f2b3ff40fc80cf42cc6d9a160cfc06cda7a GIT binary patch literal 570 zcmV-A0>%A_P)`6pHRCt{2mCsJwKoG{i9ow;RAR!@v;I>q1FNh-u^@+G~>w!ar zP!Akhshlct;1&8J73vlBf@o23BC3)CY5uX^?amrn!J$qB2(|KD);sH+?>9TMwu=Y0 z3?Ku@05X6KAOpw%Mh1AdJf|B#+t+DEc>5}kS#q(udnoP&fQ5O?`M~;C5&rTX z`nwBuEvSWfxe;M!a{~3HP>%vK6ab6Y9udx^#__k{o=8ns*zCv#>NDutB%cdr5;^-kA1urOc4fMjb|m#?p^!v^{)`A0C`0?Y)U+z zb2F;wjGOxEK%m`APN3Z}^`}Ib zZCLT40j?l;y!s$T^3UAn67F5UZf1ID&$ZHwYFX{Z(mFlS%H^1x#SG(ID#eh?EK=kILl;0^oc+ zrlN!+gH-gqsD|GTh!Q1I1psF#BDYv52qr86EYASa29CNegbgK0BnmK`p$yWe*2Ao` zP*c{P!%$pKr{5&30w!FaEP`oL4AjrBqmhCm+agv#hubDLrOfjz45^yWD|jHk$4ze) zzztOiM-x0lG}PD1XLBPnc@0p8Bcs=8SH2Zj)7>|K7_L^-ZndmasD@d8-a%l(PyKMtwAf$=(<+L@t{<;@{5F`(XYLFJ3P_x)eP(PT+}w?_TWFsiYH z2{nOcpQNw~+&;~7{&`Jcg=qZN38D#+xgNJ()EJCDnFP2IhYn1d6nP7sQ(7bn;MqM~ z7X^Se!LO611NRc(#*KPG=o50@XVT09i0!|aLD_+s1pYFdfD>2)0)$UW2m*;h00000 LNkvXXu0mjf*L>Yw literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/amanitajelly.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/amanitajelly.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3fc01947378942e4968d70dcc98de7d97ccdc8 GIT binary patch literal 1738 zcmY+Fe>~HPAICrD*Zh`pxhA7CCeE*uOSR1w*XU?8{c_IOAtAqiMf=Q;Xcr5uPB>fV zSNT!uj5H#@^COa984=^K$o&4X&AI;gKKlOgdcNL&zTeM(-ZX;aDJA&>@&EuR+2L)R zciVb5B&f_T%bLSxc1tb@e=!sQl$-vG#9c#W7y!t`+Sy=7 zc(eF4pdkMUq$mV?Q?dt_9|A?M0M57ZSfo{b94tPb&@6oes%ozrf3uf-qu~MZ_r7yz zBGljt&dU&sl*u4U<)~&u8Kv{{ou!eS4@3NLVdPMB28zSKA3avH84<73-ERF z4%#}6X#0<$$@zidNByzsPKU)gkhUhC^mda}Pro|O;&Az^eX;z=mN}9z>*;tzLIT~ZBe9M;Ffk=;t#E}2wtxedf%#$7nUA z!gBlQ>I|iV=|OdpFW2%dWxO7FzwNYR9uXVv8tRyP z-|1y9Ek^I4a|eFZ+TX*4;R4E(iX82*oKZpiGnS%o3)1 zs3Mc(#+KYZo^J~7!PFSLqhmNpMid;q=(CSn0Jl3BfrDG5rbZN+y5t(?R=(GkJK0Py zo{E9}#tXcNnTqDg5Dk|^B-KEhQob?IG>{PuL~6~=uvYh-8XKd zOGY7vG?d_QO4eLIzO*=wT`W)gEn~Hyb;1)8>gE=tTap&`oDtpdq(O^+dw*JH?wW4m z?IDjvOZ+4z1gazweL#LJu?jw9BF0BnwMH-N6}D;8f`*1aRYkwsFxLfLLY5%*Ah z+~E&Zf1o8UT=Yt8g+Zq8!9-r~JE`UIEvX6sWkWD8K#He(NFFC?9&NBi6djy&BduQ8)OD}^^GdnqTYXJ z>_d7upY$iQ^{>VUpK7#_o5OeX&BnMLQ1vt`EGpF!h!P{4e0@N`$eBl;PZaJkMQg>9Lr2U*}qlWFIz>aeisL% zuyTYQQg{R1UTq`Tnsw|lgH1_zRU+5V;$7po8;DcBWl6;q*{g=(tTY0$<=CrN2aIjJ z6-{2M2`|F=A*vb*GZ}sfJ!&P>?Fv&9gCfMnPCXD~`Y2M@l|w~Ie_t~qOcL*NacGK2 z#1?%Y_Hl~W%?}iKni#n=;+cceq>vzquagqN69Wq>74~`@ziTZ|2CptE>7Bcxe6QIs?ni9j{Q?hSFWh2C|@2JI7bBQem$_< zVf21RCql??gTDDtP0qwrVaA(L(<;{P%zPtkr5mA7zr2F|)bjjwG@KIc!NB0RM5#wg z!L$`FV*-<-U*`c*e_<9ac@@8FU)_{`4=0uHZckZIAuxkLYxxm)y-4BZqs*~r}M!vXt_z+_~^U1j8;3DE|f61EZIiP)v~)=uB>BM~eR!WO_>h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_burger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_burger.png new file mode 100644 index 0000000000000000000000000000000000000000..affb0cc2d9cca6836ac48ca2ee2fc9cc6b2a1e50 GIT binary patch literal 394 zcmV;50d@X~P)Koo_~g3Z=Gg`FTQ*aQR{pTT~6ZF~l+^mZ2e z4BG?+%Rp+IEo?2UL{t!BPG;{i{@;;=MVJH0{A8H(&7C`w3jSFhzyo*y5Ab>b?-iu? zzHbkBD-D3=gU)4t5}R_d1AaD0T_Dr|G;dc=`+^ZL`ve*vrXJQ!zYBy4K+MI6rj(RY z=Xb;bht(Mn6b@VU>>XwB>+gG<>qq>%G!G|U+zl) zh*tR9UmGZ?8)Hh$TiqI_Uvp@r2H>PoHfi+zc%0VU2|y;L!M!njcw+L16$v26aCl>N z+a@sSBhQZ{hFU5Bp66^uDRY1~Ay0!OV(=Rfw!^WhbM=K@MCTB;>=jGcOSy_|h+B#1 o`Xh1%c-Ev)fTHCAJb(u{0<+kPeH#@N!vFvP07*qoM6N<$f)%2n0{{R3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_fries.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_fries.png new file mode 100644 index 0000000000000000000000000000000000000000..4999db34959e6db88062a2d673736d24952ccab1 GIT binary patch literal 813 zcmV+|1JeA7P)#j6gfH{M z8qWXkGkdSS|GoB1G}F8y1Z)$?%f=|&3a=i)m=992pxTS8ARi+>5qdfyYX#iAfy;3M z1#2)|a+{I~iOJC10GmpnyB*`;S-4mZsf(d_FFdKi==S3}RF2Wq1a;m&6S74hBL_-P z!l?r=D<0-8fRQ0cUIcAVq2w@Jm3^oWR&Idx2^dAiB3kcI1*$IL8unq7Rlw;|NJ;~D z=$rLkICfbT5UB^(VdHlA*ai=);lneB2$;+NS$AFuyN6ENPbV7uYIf+L%IQdhMZ zj4o(Z;Pwuo|L^@^i$JFQjt8Lcy&AC9Ix_}gs?&NNQO3R@iyzRe9D~)C>{ovYrP9U}8c&;8#WNz`nQeRp;Vh^y5Gi$~RIVc?LAzg5`xGH3hF# zfo17%p-P#{78?aE3a+4Ni`#~8+dVKWPyjurwF;*TK6tQh<&=2~r+=glob#Vd}pTFqdjOcQ&jY6@D?T7H&gWqtG^iC_!D~?3(Q3$SELolx8p9Am*fNy-U1!YDf#2K1@%K-E r$-)idH~}YDgg}Hqgg}JAv=jIN&K@^3L7?9MKsbV461r`En77H6+#9D29jJ3A2 z@Dao&Bx1R+g;gMk+E`dvi9{i=?wRq1i5ujO%p$^^V&|88zL~i*+rl3!0z`la5CQ%l zK)Z$Vr}5bwYmEWW{A9o0U*xuYdy5#Qbn~8>iRPumBQtc%_@Cl^TFS8N9RAt&Kh1Kj5~rj`79B z%;SwQI~EdvK{wjd%4{{xW+P98`tX{SU@;(lhXG`Mrp;LtcWGkBsRi~+;Jk-~zt4|o{HuTh z-(GjIczaK;;w1da?)4{T8E*l?31$fYc#09G*H@>&Xb#+6ATddJ2`Kn+yNzf%Tfqrt z2p_iOISLDy;3~X-|M0pRtLuwG0y_BjWq{^OgwZss{wy7P6C7a>#oD=?1+gtL*Dt;;^&T=w5^X;-vbfs@W* zzRBpG`L@b!wq&D#TKcNsq5xAR+)6-t&wb!l0(m|mcDpNF6yStmdYTc;lnoaJ7#^iO zQp;R+CjlkFHzNDkKxuGmfgezu{Qb`_PKQw$KrewRQVY}qwZIaHqZ-n6dspuO0000< KMNUMnLSTZRO0w7h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_pizza.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_pizza.png new file mode 100644 index 0000000000000000000000000000000000000000..a921f7d58e7e838575d331799d09d3152ff7a8d1 GIT binary patch literal 513 zcmV+c0{;DpP)4KX9;65uvu=Qc$SIdoR5h(p1tAEyz8~UEfRZ`91ID zqZtjB1dsp{Kmz=4fN%u5nBQC@@Mi$Rcw;w;qcu&Gbted40IW%cF)48SgsBM?hsSvg z^*BR#0+Oe literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_taco.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/ancient_taco.png new file mode 100644 index 0000000000000000000000000000000000000000..a75eec5d760ed817f1fc89fd423e3a62a1510427 GIT binary patch literal 1220 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 DNT@U+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/baguette.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/baguette.png new file mode 100644 index 0000000000000000000000000000000000000000..91de73aedb0f245e08cc23f15fc2917cef04d038 GIT binary patch literal 563 zcmV-30?hr1P)$XY>|Mfs-|Wop4T^t` zP#_ct1ww&P;7 zaIv2xFtP=FW_(JNpBrLqWSAs4Vo}5Y61?ShEgnDAE235`$Wept84fX&pi(vc6F}C} z3kiZEW+O3mwM1Gy0Qk;{@TUg=$MU|HZ`5+i!<5BKifC7B9qtD9EC4W%ktu`j za_3@sZNs(J-QYb5aDyRGX9VwQ3YS_l94B43`P&L0W7H8_OYd$y^h2dvtvw0Yn@oI< zn=(`TX{N&gM)V4I26U?p(0ZK%vUHJY9^j#5Owa1!82v7K~yr$+MwtOPJ&G&11; z+QA6F;Us_w)1qW07UPZ|g9Ix9e6WPuAA$mNd;uNNZs=lP5X1lg002ovPDHLkV1g)2 B@KgW* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bananabread.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bananabread.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2ebb4c0d117d41d6cd998d902d5e9665667792 GIT binary patch literal 781 zcmV+o1M>WdP)~_fZFMN26*9OKv4c~V zP7Y#Kir^q9f=h>rC_=%(MZ^||;@YW0!L38lcIcp@6f?A_G`5(uz23EH&ijAY_i=a0 z1+u8aJxIQf`!4VQd;jTH0~ra%kl~Xy2=e)XQ~`XP zxnbVTjoL|%sg#P_0PWEbB|2iXxw%8%iu>YPzEq*{hf@b2M9Ch_l?x8S1zwT+{FT=( z2p0fuK*GzXo1|!KM4_T#O7V9qdvqxomgfLu5V(=-IZJSF8^~pA7@?& z7XXX1FaqMU`CS^c_JBym_azX~4lS%z4qQ^j@1IYP32~0eM{nuzK!*IHss${LO8Yxi zu^+y0lvaOf;&ZC?kZ8f|hu<{R9iiO0xVVnrEf>nfgL~#glgtVG*_D@XuGa_Ps$p|W z%VCkcXlSwph~7lA^}QwTgA0HJ6b2T<$KseJ%n<_O*>qISj4!~tUJ+FyAjrZKR>kZD zfB=E(+>Ulb^QMyGa0TLRM?$VAs3rgg3U&en`~FT_V5pmDX?07s2tb1=yVB`TCHb`6 z%v_Y>cV3Osi(6xKJ9}TkeEq)b4=}N$E5p4}6ZWs`B$7gmD`l`mN3$hv%0b1fEUcAj zepz?*o?F20l8tS5^)($pKy2|xnfi{aV$W^C9xJzl!4Mcg4i@C9h4q#=0Otx7|Mvg~ zs)4;cT&Udn{A2o^?*y!{maFGJv#_`Cbpf~yc2Dg}-~eo97!F*6cr9zau6TQ2*8xCS zi^&!uFp$obgRNx|uM19bul>FN4v2G6WO{iy7*Y zMG)NV>L3&X{X>T$6oi0-tJ$1fvgqKS&CPV^;Gc?`Awk8OV$yKQrRhEMedl``OfE4R zByvAE-peE8^LgL*=i;J&T#kSv;0QPZqa{$u-(uQvFO6$){#j9?yk%^QR5hjyRRHiC z$@R9eBVJYZO*6;P{;o)00s?;Vw3|-($LM|ekdIG!R4Ua?-cOx9KafaI0l*(D-IVbA zuMN69tC7z)LD`oTiXC&2U;DxOS)?BcTY+n5JRFXh0#Y^@hodbUI)|S;>ZRfrT_zJf z;gTXo?GDo>uG>m<6#)E7#KZdn0tw8VsKzC7pPQ||F6Bf*kifHgA=Oi&tH7HN4Jv() z9Z@IeCb*RfC5}diiEH?L>ez1F0#nN-HsBrOYrzzgReb6`};My)=vuuG#?u0 zP*mpmS4y;6k&w?vlxs2?Tv0i+-b%OL>sA(Hz5V~Mbvf5(d7Iw62xO0QAj z)y`l7&vs4aTtH=zmBGGSNnqZ6!=x7E=9IJHsu}>VBCz5OE2G}%y#|nTtuBjW`ZUI3=iPb z0qbYp?l$`d4Tq91b|QaLqxFBl5pV?lOM!1x*8EvM*o1xn0000< KMNUMnLSTYhFBBI5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/barbecue.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/barbecue.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1d04f9be3dbcd63da10357bed2387c67477605 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP$F z#WAE}PI96|g2AhXK=yzq45Fe_|111DH`ls{`4PiT{_+D~WVy~r>xoqxcB`3?|TLlM0uT!SpsU$A9%3z%xQ-_4W6?C5+Zy*US2$+@VrrFf~cE4dx}r= z(Fdq(cjs%?d|jT&6xrkuV%SUvlLm%SmJ)+Dx*U8#GAXz-!Gfb zoYo*D6J*5@Y1cfjQ-I}0`4z(hfBvj6pBa;^;mtfH!bg-nfVsyi;R<7lHNzFLfUDEm zHottu;Bolz=lZtY<`<58x~C(Rr9uCPfdT zH!ohi=wXVWh%g5eWhg7mfrx@=4|*3wlreWu2U27*oC>1&hiRFJBD${aaBfYWZTy25 zyEqV0@`DhPm;Ca1zr6Qz@t4B^H~G&!1r=!T)xfHJVB7z}Avutu zLS46^SOpy_D$C|C3n*Pk-CX!T#4fKV+`Fv=5n}NHsVQ~Am4F_?DlP6 zUyLrnb1Z?{977yzpZzZ=g%Xcj3CvSHQVmC}RnDgg)IbR1;V|Z-`>3m%&{IR0>6b7y zMRw;7@<%&t^#t3yKpbeZ-(WfuwjcdBTd@Oh0RI)>3(UBlJtYw`;s5{u07*qoM6N<$ Eg1+4q_5c6? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/beetsoup.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/beetsoup.png new file mode 100644 index 0000000000000000000000000000000000000000..211e45335052ac0a6a3f801af3deae38bb8ad463 GIT binary patch literal 630 zcmV-+0*U>JP)La1K0pIK-~ay%Aj7)x^8(`IuL+A1G@r4 z&@>Hhx4Ue1I2^@&K*>HUpfUgv+|eB@3sYNLYo4Z4*KzgclTtqus2WHK0Edf{Rth_F z@hEcdk~ldo<7dwpT+?^4+N+?6^!3ah-blraHX6$`y0X~e`We`n~5IkgLK+w#_Biar=JfFg2TKl{69;8FSh4>U6QMjV-B1igXTI=F) zs_!(K$!k9R!0@&N;0lK)F&+v+#cjZEit?~=`f2J013e@N`Ngbp()SeBx0glE>{J_R z(OY+nZOt^=J1#@+@u6Ck0lZc>rI)jD{aWBgK~t6d95tWMvBod_#eL#E);P4~*m0zO zY+`0&((tSsfJ=N7Y^0}R5VO?cHH^8~T!e55T@>r;+l8vFuL;1#-`F`N{}Vdz&4)8Y zik=0GmUvZB=V0Lhi>i4O3WNOJuwbgzb0fE5T~~3V*J~s7@BA6r0RJt(J}lbz=O%w# QA^-pY07*qoM6N<$f^9Y*l>h($ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/berryclafoutis.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/berryclafoutis.png new file mode 100644 index 0000000000000000000000000000000000000000..9192b3953080dd6e62a5f6320f719f70b7c75924 GIT binary patch literal 625 zcmV-%0*?KOP);v zO(QrL>2wrv6xa#B)|0{WKAm9cuVjp?xU>cxmU##FqRFVb^w=i z4U{6tlK?%kL|Vi6qcDwo^iN`fC(=ny{Qb-rJmwU{8xU|q9WM8(RG_0HjM>>4)OEf< zo)RdNLoiPV(dr7r<5lqUhMP{+qe|_=kK)$$xJ@8?lfhdpPvC0u!k`|a7vlFT6A*VM z?oLRE3Q$9j*URH%83J+5mlpxeQ`$OJ6)}10;1QKPz0)YSw-wKb~ z8n+F0NPZxJ-6FeXEZ82XsC~c{2{_5@sRKffByij%1*Cu!kOIE}k#+SI6s-n600000 LNkvXXu0mjf8de*u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bigbiteburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bigbiteburger.png new file mode 100644 index 0000000000000000000000000000000000000000..c12c04fe7af9080fb61b3c263e4dca63beb3b421 GIT binary patch literal 929 zcmV;S177@zP)T7?9lVz`fsEa+n0gyRW7qxL62Cv=nb%4xy`$@C}_nKj27fBW66a_J% zCFrR>?;c#a>YKA!JOCc!8?ElWnVcbors|{LoT30|V^QMVR8KLiT5qM)avB?F%z(Dm zz~}74V`#7cEGD%$fShHCsMow@5KjI(7tOwBWbUr|yZMrwNK~`xgJmxGlPG|?CoR~p zJe@<3ydczOU8CJ+OzJW?(Z$TiLq-u692yva6J=j;;7|+lSFMEZ^(*L2A$(r1rV2w~ zHk*C1WK4>Xh9WE7gzBe%31Dqh3dJQdtXYr%_2VYQD-?W5Y(rMu>3oUBaSFHu0dWy> z^joa#4R_TRy94)I6wsfu3#uK~U;Y#P0?0Frl4}Q73XeKEc?Sr>U@~z-GVka&@q3%$ z6OVU{eerc*l#PF9E((A|=EX;CC@yKk{Fq22CM9EaUK2hU9LVDleMn>D)3woT-Q6jv z{g>{`{O0xxP^l{v&a^*A_?)>6LW_Z3BW_#)w8x@RdTKVt?8DI3X>jtQoJG5<-@na@ zJ|o+Z+oOQP=HKS`3$Q1-Ng*NvUj_PJ7!0`vyb`z-z8mG%_b9<#o-0fQsdkn->)#6u@t8 zuWi!w0?o!#w*wH?MJhdwNd_hqK;4+mNpWJF{F6D>h=%?c(|{;+G*TnDtd?ZmBOqYz zZNJwXrotQ%okL#GXrwQpfPnnw5TXDP7ZefyshjP`x}gBI{!ke;>rN|kzHi6XYrfb+ z+%2|ljjsW`1q6t!f{Y^pL@5|m|Me6z00S@p128}wx&hwFm+&`ZGeiIY002ovPDHLk FV1giLjUWI3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birdsteak.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birdsteak.png new file mode 100644 index 0000000000000000000000000000000000000000..a23a344b25e14f12cc0cb90bb43ec30280a68ec1 GIT binary patch literal 413 zcmV;O0b>4%P)VQ!Pj5=V{0izBe*#Rr!6#j$g`D-6ABnB&h z#Ud6xV5GSNKo)~6weyk#^KV>y%b=ny#2_Wl!{EO5!GCfcLzDwRmV+z?S^DhZ7X~#$ zaj-auzIFa3gQW^D+%b{cpZxdtlp)$71Rb!fJo>+#;bR6KA#M~)K>$R99kc8L+ zKr|?HKx&>n{{{&W9eIYM3oHKPa|A&L9N&7J;o-H%K$a$hXJsl_>>1QCAPYeN#+GtP z1!9Q41FMcO+ydff_n+W3pP&OuRvl#Q3A6tXGZX?e890?S8E(CU@L=p)aCru}#UT9@ zIRM!Zm_ta>LkN&m4iIZ7DPZW8grg1^b-<_tMjbHf0BQpO`l5kJKNS_L00000NkvXX Hu0mjfV2zzl literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birthdaycake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/birthdaycake.png new file mode 100644 index 0000000000000000000000000000000000000000..0f8d99283bc414f0ecda69189c26bccf149d4018 GIT binary patch literal 668 zcmV;N0%QG&P)Oc3Qn#Shl)cZ*y7R-ohmLaDimDed)M4~Npr~+2T}S;cunr!_x*D3 z5;6_H920;Ez~2UN2J_C8(VhAg05XTx&mpt{cF~Lfw+8b-=1}SZ6q5`hZ*)ELD*#$h zkpSG-^be5vqnj_2Vtg0jDhR{tqCk`Yeq$20-Mgf0;`yDi4lCW;;W^E9SB68#Ix3Jr z04n0fvM|ehsWGoY7aYTd^tD9>=9)neBLLi70QiKNkr8)CZE5D4vMpf{p?g3G_=I^l zvIRj6lAHlhchb9DvhtrqM^h3%y!56C#d>*3)6&TBPXhGpg<$4Cpdx3+K{n{aq^1htI~ zm`fyt&>{+rlgZexZ9hG!0pbe_P{0WdT>fhWps3gDu!)&KNO0VI=<1L;X_Lph3Sc&s zVtMuS6dL>cP^eZRlgW5M#>w~XHmf~AEz%_O{@$MYMMRr}ZA2HMS1hvYuR{X3h{f2s zPR`|W?0D|?mF6P=9D;J9Ty~PBlDN)cbVIIHnFj*!paNQr7wp>`KAN(iZjdpxRetQW z0Vw1`-WuJYTH0*=h+1tAzA^5a0Gk6cRE3|e+3l&lbt`D);6^OuWZBeHP4PQKM(L_KjSI> zilJ=GLOn1L8yELT8;x)+0Mh&Mh_`;92gzY#y^+oYzF^>; z0EX*z8XgWn6y;46gTEEQVXue8b@@EMHySCMPy*2KZnc8z`z$}=*F+OV$-y|C;IeQh z2ufZmh}u^`MtcSk5=7QSG9Kq3a&VH(=&BOnaWW}Eh$f;8L?>8yGzOshi^HWR3Zgbt zI~Mcg)fnJ!HnVoww=FlpgW2JtdeuVM31Zx4PK;$6R^Eztu nFKA+X6M$RD02lxRU;zFBOUJo3JC-As00000NkvXXu0mjf)mpLH literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/biscotti.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/biscotti.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb83946b169cbaa01fab2974d3166deeaaef8af GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq{|3 z)5S5QVoq|RM1sMqhCucntAs0zi}@r<4_qiY@cC%s|LgfS?9bVMNgE#c5t;qYAm}dR z3$c55syhw_IWnCwoA5Ltq2hao;^nZGhYxX_T=8a*U3~O2>$>R^oIhAC@acYPf5KqKQ3d%!I;|JQ<^DIUZtsl! zeTbP)kZnQL4Cew%rsd2I)2e57Ht^my`^?kaG>z$Sb9R1%3IBvThNsRMDFuHHif^c} z3^^CXxZ>Xx(K+*uNHg8`+sim9|G~6I20bZhhLg5Cjx~rsC~>&H)xJYvcUgO5SVG1$ lX0R_;FuTbbtdU`0IPke}ON7dv^T2>&@O1TaS?83{1OU$XhP40y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bisque.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bisque.png new file mode 100644 index 0000000000000000000000000000000000000000..afeaca4c1588e7d9c5e525610feee6b3b9cfe650 GIT binary patch literal 630 zcmV-+0*U>JP)Lt*` zgB_e;!46R^8UzVK6bQ~igFs=4^;}!AB%4AI1qsHUJhVH9EfU#5$PJfG$iwt|Z=BVc z9mW+43FciMzdzsi{mlE#Z{`RNIeY*gzz6UFd;lN72l#&gvZ*Pf(Y@Wuoxp(soQAR9 z8;~Rkl}g1m+q8g9>jhK?U>SD}-nN-kt5u}?PM|Gx6jI*|N-u^`+SXY4)5;c5UTIlf%yH$fo$-Mfp!(=K8`>R2cdm<#UQEl1e9HwZTe;c?EjT#-7n-MrA!&uii=XU|Q zW_rz$|2lyA^0~|WQA5mHE4{4se QkpKVy07*qoM6N<$g4xX!uK)l5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/boiledrice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/boiledrice.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c843d3973698551641f1c582ba02efd69b7dca GIT binary patch literal 583 zcmV-N0=WH&P)Yln}LuAV_Fe3T>1iO06VBh>Y4!b6(!@m7|UjMKA~CzIR8@`Mo#e zn-2P8SpXJ*1z-XEZva(OCX*qL$D{lz00%>Ew_D5;i3A0M!L~u#0@&YJR0E-9Js6>Z zK!5;)DnMdO;(9Q=VhW}y00MbzAN14Ez_5NTpU;a>RKTzRSa`_OMar)hQU`j!5s)DO z2O|`+*=%I*b%-#B!y$Td+!nNz*TQ*q$z)QP%fS%$8}<12;}eq_ z#IEpfx&sTVTgtx6F7DrTxsxK1$d{GLA=qkp#T+b$^RB($pX>fj0iakcPU~y)MCoVZ zr&@-IMx%yf1Y-`NmpX~*p2H)f6rP@`%Q6Hwz9=d?dsphz+-$9RcB;elca!0m=MZ`b z?dtBKO1Vhen{nZ53IM8Zm4HwyX<^2KDFkBelg)jF-m`Yi z@+$cEwBY@x+V6LYU#+mvIlu%$AMP_PGwZzk{Al9ZDM|_l+)R#|StPCDo0OH+k*d0c zmBa4K7x5`tt*`#9VxA-v#Kh$H()52lNQm~LGaLvQDtZ8{3P zcTS67--mne`JF%C&-tBm&%L|wkCg&Q0i*!71aPtd!tXJQ7qT4(h#5DR%c0loWwETf zGB_S{n!S2do-3TMUc+G=*E<-p4~tUZMUq-R1>2B-0KL`W`M6}Jg zFU0y;t|tl5Q-44_$7%qrfO+Zz|^lqZ~7U`U_xwoaR5g{Bi<`j$XqEQgLfk1`~n_a zB4+HB+YmL@5o1$-1lrNCh#9Y_|K3$$EknU9)Im9mcViN6V%+ClBPD+4 yKF1pnR1uI3@qg!s~^?&{orT|g^+o@kSaY=6l^;eew0000Cu( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/braincake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/braincake.png new file mode 100644 index 0000000000000000000000000000000000000000..33a25e5224d1faaf13ff4c86dee486d5c614e3f5 GIT binary patch literal 1345 zcmV-H1-|-;P)r4|rMA=LzF zP%D9wMoBD|S2fBHY(gJsun~Uvh?P(ke54pGN{oMu6pE#9b}41I&{~O>RDtf6mhSek zukoI{JDYvXU`aH_q&JzpXYQPPzVCeJ-aE4b{^K@HV4A>`32eJJQJku8_4UiDe}sTP zXz_FT(5~8mYt27kS+=J7V~AXq3U^Z%;&L)Ea;gpEXY_ci zd>?lTY~X6jkr4dB$!VgolLrWBxgrN7;D{wD&=zclc+HC5W+UcrC>q9$(VFHWl01mFxb$66?+drHCF>u?WdeM$wu@ej=Jv!9w)&q);_~aal_0I63bxEd4opO84!jC(&Rd7W-=C0Q z0|XwKmBKTX%Z?V}fVaN16AV9o6;KjsZ4eR4n4~AQ$kvtZ<8g_g;vzgg^gBLydOv!0 z$Y)1uBVGviI0u1HrXfU_$Q0uqbtJ+boP}SDU&WEZK4k(=#m~d}pK2Lf-D z@n*XXo7Sv_xk>Mft*C%HJqgx!BVraO!=mrutS6ZwN6lA!K2$@Jom$Cvb-X8_-zKem zUUs{ck6m|+!_uf{<#Mq@$Po}5C;yNqK=OyDCBod+h1eNtn9mvzk&%S8t5;)GA|@%s zekCyTml_})#1`YLzr1t?^FDkF>n)GC}jNX9aQOvVp0sJSp*%>}&=*CdTMM$%vb&Fs# zTw-9I5KB@C&SZlcJB)?P5fdJmqz|aL#6d;@dE|6lBw$wX;CBu3ny*gW0qNhtGHO zdx1&pWcRo80aJ#6{Ss7GAV>+%mr+{>Br;N?hfyhya!_hxUT_*CJDT-+?>r^o+Y*qQ z=ud_>e>-@L^;7*Yo$^=loqXxuN&El&FPJ9qZ?(SwnzYvPEr~8500000NkvXXu0mjf Dl6-y; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/braincakeslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/braincakeslice.png new file mode 100644 index 0000000000000000000000000000000000000000..35018c2991590784e5ab1b997e4e5c1a4331e14f GIT binary patch literal 720 zcmV;>0x$iEP){3h_jqUNruogsa!gZ5?z~azSYxto>JDrd|5CS z{y-k(ob!A?&+o?p<=EhA1KNN#pbgl(fP5)SIE7lWVE|hG*8*7_vXmp> z)V+8yBaprOT1V6cr2TJ5;Kp5aZ?!|N?u6saaTE(uq`xjf@tr_xwBh-)r=(-T&+bnp zqU_$xt63bJx?LAm7ZAE~AMVjXECj-c3IZJ8lqi-8;Jdo8Ad#Su%YipoQIG}jCH4-Q zEj->n@nJd@ZKMH>jesI{j-G&B{2sY@2mH`6td!I2nnVG_F5H5_)QkDqkC@2#u&tAa zh10AbkW41YhmmXG%m#d#@``IWtVa)F;n6f=VmFMo?I`C~eg@C@*fTVEZaIT~-ilBt zM6_BhEEY@6QPc#`@SND*L_7|M2%sa-xoJ1NFdyCz_sAd~4voQ^nu9~FuZAb{i!59> zHUOzq3c3f~s}`c}2zsub!uzx1aP;^6LO5AB9*;l3%k=zj;j}8@Vju(5tG@zNDit&u zabppYzd6Z9K@sX5Ht_KnI^=RFr83s?-8w7u=LcXinOLw~yq3*o+3%JBkw^qCm#ezL z;_wlCK6eiqa}RsfmdoYpy$3FzhF-5{pVdX5 zmrjDl7Db5NV1!hhYNg%u#A}1Y;V_EDBHOEJKm|e93WRoq)#P=y>?)NYlga*=btAzI z0ct_$X;+`PQnX8r1~&y*3;CC|dH)Zz0d2s41NZ??xAW)F?3-u+0000RCt{2md#64Q5eSG87G?=Cmls|)C%#dp&&Ao5Tr%WLJFy* zbx5ngO+~Bv3k=-U!c9c079zMPf}#=M!4Yep2 z^T5nG_uRw#{LcHHb7nmBpOpj10ptL-HbCF05*@9tC?ubQr6Jnun>F5#d~q9n>$|UO zeroJ~;rc58Hg37nA)f>JtFj%sIZlHsi&WQ8O}oU{k=-c+B=&8dM#yb~iCzoq*+6Un zLzj=~hc2{}r+AP2K&j++*|v7wqJ#+e{CYo;fPj9i2L;G1O=*=90%8~jxp!`#T+qoo zuWcYE05;FBJV0)5A^lwbOm1J0Qd&&H1oodNzvv&ox=J^?9#UhtjI@;rDiAOQc`+hk z$Pf%NRaz-P(tUtfAv~&i^_g0m`P%GD^47E(&j86UZl=y2Ki$4GARt2Y?(HYJPpZme zG`BKu>=}kYCRkPo17Pm`1XWY5?86L3E?1KQ=DI#+m_x`6#)+PilMtK@*j#NRb9od`XwCp<2bNrY zMEZ$Ls@-0*ImA!^Sz8_zz+)m{LIe(oEUY^MaXUJlHXe)Wn`Zz*VALFDp5l#hHdi(H zYEcGkq6GC0rvo>YrOUe`5HRKel8qlPCY?7Sg!-vws;SkSb+N5RuCTeDWQqqr#?vpN zann42Sy%6v0e?-0&D<)KhE-MWm75Q0EFyU{SzH37zq#Ir5s`r`00_RVh0KSYOk8r*A%P~Hh)>T2h!>gH5 zEdzn?JbCWb)pEakQv3a{Aw!r)o=`Sz)K#ND)zE+z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/breadslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/breadslice.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b8c0d175c24b853bdf74a16c03ad6244e4f39d GIT binary patch literal 667 zcmV;M0%ZM(P)aCt5Bd2Ns1&Y5-lM`hi-}l z-KN?**D++_ul*Xs_~x{00aO5KmZT`90_2iKQ7$QT3rIYrwhDp7+X~;3P9%99$rUH ztOwPxGYDz*D45^zXX^{{TT9pk#9=^u1L(t7c;jhcbV-J%@I4Yv&9;)5_o*XKkky}1X%6X4m~U%=y8`60NSTzP53qInbr>nB6(R`Gq* z0nRQy$D-T|sPeKZKZ4cuDhGl(0clQSAQ1>{?j*ji&`bm zKm^*+>=byuFxzT@?)`;WMbea#WHHWrH+&zSztfDIvk7%>ddb5?`? zbVa^h;S1;Zt-G84VAf&F5`dxl-1AUjSSDamK_*n<*}LHzU0kf+;Jc zs%}5&=NxJ?-G(Id$A(itG48*=?~8~)#xw6Fh~`|wLj%+3YETfVtwk#~7%G*{RrV^j z+j;e*>VQzIQ)%l^#zzLQ<+sHZ1Nc`800Mvj;4eW105LA-h_e6y002ovPDHLkV1lvO BDdzwH literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bunbun.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/bunbun.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a0956c48c0faa5f263102c53862441cf64c2c7 GIT binary patch literal 685 zcmV;e0#f~nP)cIL=h2j?H}MO3lVBX!AcjRXrY!0Rn)XGrfs6lBu(<1^K=HHAoIcm z5pp&&@4jK~@7;Uen`y>BRs)~`@P7i_J$q0D{p&Edkac30@4wRO4)FZeIq~rEGxQjK zgu0^Gy+0!3$>~X4Iki`uIe!VUBcn4G13u{No~!%oyF&+)tY>uT!FUM7EDaN#(|yfPK?QG zl@b7r#>C^($*MSGrE*2it5(4^0AEf6PQ6RxXuK0Xe*lHm9Ezn1nyi#B<}=cusu0R8 z=m@Tt*YCL%e90BCIpA~VX03CfEQHegTmjgtr&3u{o&z?F_?2*Lc!PvVF6Wi1pj3fo zy{T%<`;6QOw*KY zP)V)?VC&7tWqJ76+w3Oqi9nlJ)pcS$W;9Vd(x9K=R2$vu{KPLcx zbznOM^mqim0z`ovr%Z^ZD*-Bz4JgjSDsA^qt;Z_3-^Tr5yH|S>u`JHxUGaGG08AdW zt@yagC-%?#^~=>IAOO?ieF#Ne8kg4v6=18D!&i_Xn7_kmwP6RSM?j4Mhn}p%JGJJ& z22f00d~I;B4zAi%3Glsnl204MA(Q~rR7Z1VfX*-g126z(fR2B_Pyk(F03!!{099#Z U@GAx?0RR9107*qoM6N<$g2JY)sQ>@~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/candy.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/candy.png new file mode 100644 index 0000000000000000000000000000000000000000..13ba51c2106a44baf7f68c0771e7bf9801102cc9 GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq^m9 z)5S5QVoq|RM1sMqhCucntAs0zhtD(qZWjI5oN;_Bzr@Q|3^R`A+t(?h~Fguzp^BKkivvgH z(yldRDk}WrFX7qc?6>z{?{%L=vISqf1TTD&PxvAZ@%SeKhW2}I3ammjNOp}-Ym;ANjZ-G7Z`Pm|NOI#TCt#`Q71mQNX)O9 zLC3_wA;?g&~1%DP>A8`ogJG#)|tGoF2!1Ig- z&WZ^95NaUxPoZ9z#QK2@`{JgTe~DWM4f=cuOz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/candy_corn.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/candy_corn.png new file mode 100644 index 0000000000000000000000000000000000000000..434e26b84193753ab506aa04cf9629a2d83fc740 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7f0w z#WAE}&f7@`d7BM*TzjV^ujgyt;awuQ?1jo17Uq(cXLpo?Zdq^@ELkSv`s=@tw%4QQ z{~y0dVFc<0fdnQF#Uop)-p}68yyV##o9oqz``8}*?)9)c`r7kPM&|lgznC{pj##$b zd$r$^z02g!8eVyNU?oH0iEsXwJ+7!+z-YLi&=m+J>U&?G|w>&*zN|h*VEO{Wt~$(695JWV0r)m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotcake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotcake.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7dce866009cbcb32b1ebe4ed147db5bca5a7e6 GIT binary patch literal 934 zcmV;X16lluP)@gmGC`=Yv#BJe^7T@-Z@R9=Z@_UVc(C7kGV!NBR*2Ik16p5Eu(Ib$E^ zOrao*Jusg4J?DL&|L^&qvv*6!KaM0o5+Dh%aR6pNb_zOe7M9ZVeD0rm9(7+`bQ~Eg zE`Hzd9!JiBwv@jD;5AnYLBlDib)|4~QH!jwI}BujuKEfChM=-P##WOxA&4TtY=4WO za#@jC*Nz}7?*CzrTSMZpPEfclw|UkaJkJ{F7J~XpYGRB?im z#A)u9fs=)ighg@Hbl=(lwxMCvAH9zZ&miw~i7smE0XCQGRL-fW?!};5gU`%~0bJjm z!o>AL47OFkSXT>;2(sj3kA^|eI8pc&zA=Fhcf;bOq0h??zlc!))|cJLWZ9@&WzXUp zeD}%#LmdYp2k4a36(Drl$(@7?@A%j~Hy;)b44(kDX?abXJC$oFI^c9Tuv?nUdH6=y zhv2i9Az0f2)xQ-sC+cGyO}=y;_^7kddwoHP^xBnZl5 zpGO4yfElI-186vui>l>e7|TURNJJ8g$<#54eo4>8z-uqgooQy`CY0@~S^tj_1#KWV z3=JkY-af_RrmN_km_%_=9#YfNq1G%QH8oUobya}hmxa}pWlT=(KuLKqN`C#sk+YX& zyIvPSq#G0jv$qjzMpe|_8*8p#_dlXUUHnOGod1MLfd3ZYH~Y=Fo|uAn4gdfE07*qo IM6N<$f@UeBX8-^I literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotcake_slice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotcake_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..947ff02ace7c4d9f1f0902685df62bcb3d66e4b7 GIT binary patch literal 645 zcmV;00($+4P)Yd7D+T5DhW`#jQ!-rTsW}|<=il80_ z?Wy;mx88eMe?iYdF-9>4J*_crZH+Y{(nPVz7^%qwM`);PyWMl;Ix|d-K`ibEmvhg# z_k6$K_niw@;va`0UL;`>?c-hD?l9f`o# z*V9VtnhvM1tj$lH3uD{QP_>Lw-8-NXf7?|t9R)V-p@`(7Vto`K9iHFXXuva@>r}Qs zv%9{^$5>bV&I0~Xh&{T&*zIYW+ujP_mY)$@Ss@>X{!?HXIRb%PE~oIsi~r&+pl{0%o%rkwfHaC(-c;zE8=dpN8;X3uzKXmqQa- zd!@n?b+`xt7NNscpeE2M{wUyZIB+_hd{ZU(bQ1>aoftHqp?{!2pABqM9X>P!%Jl_K zdOR9fk|au{5*~H_R|2V2ieNCeU=#uib7Z z8jbcY5DJA%vMeiBtCc_?K&4V46`o^RlkhPJ@$~x_v2VBmfz008*o;Dk)w>``8PBK f3;{#nzY_Qf-ACy{gX&7-00000NkvXXu0mjfG?*mY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotfries.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/carrotfries.png new file mode 100644 index 0000000000000000000000000000000000000000..adbc7db77761e0f0d35d709e6170dc59f9795382 GIT binary patch literal 612 zcmV-q0-ODbP)qJu+i zT_u994mvnBIEc=c;+jITx4IPCQbH04LDUw+(!~tsmC!|zXM$G5>peHz_@EE-q7|2W zmYa9Z$@#zY-}?~v911`IC;$bZ02F{@fMgUbwh(}8$Z*-!_h!KIyTD`yw)I;B&|p1m zFqRH5f{^ER;?|xU1IW#*eLwMG%*QhZDn}+O#(hGd_|X7~>tUd>ZZfam=aTud#xOm%K3B?snh*NL*NgjWAp4^a7POifiz-o8-;7ACk zrZq04V`@1ddPqF@Iv^Y&K|mAvuQ}l5S_$Ki{Lte*CTDi7+QZlakj2t&IhZUaOV9uE zKeg7je*eZmq#wv`1B35&usPp@;b*`JhkMN72qu;@LD$lh0~BOEL69JAUEA{NH^GoN zSxsl~coZ$++IRI3Xx%o1c%!fd*vfAqG7=RKp6?-89~ueMNe)Oy=qh9neMb{J(4Ka} zmQkl#CaE%^4rv2a5Giu%iaJ_zB+s{#flJ^1xw y_n%&q*M4)moeDbwutu|k|2x24g#u6j3g8lingX*J%O&9e0000VQ!Pkn8}d_C^0;?EgQ1;8e%R&cT4J?s-ER zBgGB?SckXmh404k< zV2E|1MFGh28NWb|qEaFR0h`&I;g%zpd>}E9+>S^`xZ2!DpyJ~V13o~q1CFHnGVFTs z1j;3mPtaGrq&&IdWfkbyLd$#MWFf5QqQRWu8~ zAgQ651BkKUQEmW(qoX6<;+HH3D6g9crmq=!Ft97A<5YJCh#&s=!4L!GPnKh3NV)bD zr+Sh?VD8+x49UsK40E$XvC4x=NEHy{_;ChF_e8MekZgz>kd+8QjsTT%n>K9%(;xt1 zgNkC1TzKn5hQ?hdsGkjyEe4fxFpEJU1ERs90}Ulu1@!&ed4|{18yRt#Nwfn%z5-=G z5P(?@qG4>1#mH(wAwbA-q8$Kg-GB^ig!2Eq#Ga^F#8E3GLY5Ql09-9vYJj2FFBo+I awE+OFYwk>IRnQ;+0000oKPVl9hpTiQsiD{nX4i7VwsE+pjx zNQzHD2_HbYa3MGHl1Oc`HzFzTd2KJWFU;m`+tng#o}(FqEoZion|W$_&YUxIe!uga zGn0yc4qZSO&;@jXqy+BHPUE4As~`P-pC1i9orXUX@Jvj_Derr>kXPnQ@Prk?^$qrn zrLmq%gj;}C{T*zrX#I+>0DQ;u5YDZ*T=m2qO%1*i$bBDq9*Ehv zB)9}_y+LH==ZY=gk5#v{bu$U8=?y4KktKE)woz1K`*rT5zXF0v@Rph`q}z)T@m|Ri zyumHtbT|aOsP(Q;ATq!Zh`?|?@$Jl5M77@<|-E(4;=1jE70EG%g%vxpJvLE z1(fZl#|PH#8ynU3Pe?)MpjoUyqL9E8i|!TfIaLWz6=p`pSrrnANMPR8s}_(XC{GU$ zF_FMcNFGxIPFg^Uj)6hdFii!t3SB@K&;{NBHr2e69Yr;H00000NkvXXu0mjf3nuj? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chazuke.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chazuke.png new file mode 100644 index 0000000000000000000000000000000000000000..f904d1e39a8d5353592042a61e1d4f82237adbe3 GIT binary patch literal 750 zcmVh9v{*uY}kF@Hvws)7>mjcYJvYrVbNQsU-L#JPP?0 z%oChFHY4_uh)ul4G4F8{N$82!PmjYe_N=L7A^6Z7bJ zl)MeVjY~HXc{MEe>^*e`Lstg2c+~`WIk}*F`fR3h`TDg##kVnh43DtG!|jm4EaaCU zz>+N0OvkBdYkL>O!UCQ=8fAS|0Z>(^ia}JwIBO<}Hl?DCB?Dz$Dam~E)b9wOggEH1 zl0_MZuC<%Nh_opFK3~nes9C3ZiabKP=(aQ85kLV^eUD?+s=BOZH&ne9tKC`~)$aZr gYXBO62JkoZ3s^lcfDed$JOBUy07*qoM6N<$g7@uCLI3~& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheeseburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheeseburger.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae2d7e9b88be5e64284934f7ae0426432a52bd3 GIT binary patch literal 747 zcmVJNRCt{2m0d_vVHn5%Lt|xY|OJ|05Sj>fd3c3yt_#J)pzpN3&orR$il}CtUzv66($`H zL?fSp&Fjf6z6&eR`uI6FNLm0SerRVNme$ou!t{`-G>Z^*zry~~FUiPakr#p+Ko%!4 zSy)}O594;*PjTw%GU$7|adaym1Q!5_Q+4@!cOl$)JJkUam)cK8TX4^XarThu^W$6) zX>CEka(QZT^;*g|KAHqb3g7IVnoWaIg`U>;Gv?$1puwWVrqX0FtXjEJYB{Y(3JT!1 zg(P2eB7vv&Pdusl08TUx;(UvaLByqZ6I`ipBtBL3w0KF)5?EOE$B%r3wfP?b;sZOx z=7u4ZuhXLYwIKOq5Nfm68BGb3c|vh`nD}?)Bre*taGepvvgX)t=U_$v<=Xp-)u#+1 zx&knjZ$j^z0r&)^^v!3b-%bfZ5K{3ZOtx5+1N(+7SpFc+1whtRXT(`Jfv!HRROO;% zn*kMjy73_tOU2NdDh6_-cSpGr+dC7m&XAi6;90#JP3=Z>=w9N+U<3_Myl|h^!rZ1q zB02&0^&Yfb(Xhy`cvQI%3pCj{?Dz%`M{X_v`j_j2%S63agT^}%jGfzp{$LPmF8R=r z9YoWrjTotoV7X3%N*43b9l&r*4Xgj{>>Na7?bUY`bg(=?9xBXE6pm)05LxKIa1eS1 zQ{5J3QDHWO!zdzXzjt&hRf`hB+#N7P%ep8LmRr9+7V~%PP1whAjMp44&vH5 zkYx^*)*P8&GIM{8*$TMZOPEg_Lg~kM#E%ZkJ|}VNi~^@vn$3m+Dzkin6+_3NHv}aB z!TDG44vz8`YO5vF6)U>uaYcDFFIl#(FE3XH=rhh?X&!K}_BvbL6~&Zl_285v+KGfA zvX%Be5g;56%UGS{fuEE0NH8BkWV6RG7>xOHScMi6lk(L%*r%Km7x*PN$|3Q@R+Pdcsl2$KYiO+ifQEyH zgaUm8fhi33w(yzw9iua+wrj<;16Tr}K+qZp1mw`iHyD2Uo_B*lP^bANv$qx|rnY`v z??qJMd!u9U-yT7KfB)(KjL0Z~y3u)k1O)POj}7T+1Vdf9uOA#m0OB!UK76&I^TIXY zBDk<#)u#d=( zy5*nJwOd3GU7|x@mmr9wTZDoUn1>KV`zB0NgxF?g-9@X-HH0Ykg=Lo6nfH0#cLufv zzZ`~uAz%m?0)JQFK6NEM-J~_Yw|6tz4Ht zCXk`lsu@8;2 z`D8L#wT^a4FSss&k0OnXzxy{d1PlQ~;NJ+m16jena}eGIlSJ%3V zq0uEc=WKAnAs-+R<>H8kOW-LKfuT$TUQ6N-LqQd+hcg)K)1aek0IXsD3M2$wD{?*% zxCMNnD6+L095Xn>q%e!1x6vk6KWjh5`?d~N z%&^{;4dA`G2Z{^{1QH1U3n%V+)^0}6pi|ua>*J}s@4&*=k!r+JPb35#{vLS~F|>h= z#cSx?HkgJ>M2xG$!SoMc21tnM{w4z9llKaoWdKdf)K1Dn gWdX<)1)u;v0n1Ir(39Ys?*IS*07*qoM6N<$f@3T2qyPW_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewedge-fresh.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewedge-fresh.png new file mode 100644 index 0000000000000000000000000000000000000000..9f576c676618ef3d1c651a589ba275577f40d35c GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq_xQ z)5S5QV$RzuhFMIGB5V)t8wz#`=rqk;+uGY3(GjYppYT%kjZNcR^9`SbEE^&sqdU|i zbW|p6aGCRU@70U0z5681m&}xJo7p(^|7YDd!v8Gg9xy_XQp2^y94jtoI<78Cj{kJ| zWB!y^DM8E(*-^%K+-HO+^m1&7)lTVt&JlC-?Wv;;If3&PE!Kz6+oCPb{OxHq%LmE% zjT6G`7&q#RGwTV~{9jn@VcmT1p_Ji+FH%45PtV}z`)+O{B$!~#-;kx*$RX4r`nH~@ zB9qtX{^Yt8ff&9&c8p827UefcBnZUI@71`jaeq#O?@rN%;0%7@$vfsWFVdQ&MBb@0FH~2XaE2J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewedge.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewedge.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0d1caa42448abd231bc486a3696cbc928e5de8 GIT binary patch literal 473 zcmV;~0Ve*5P)1%16*hoj1~^jfUsK;tP<%t zaxL;K%?HS)+M(~+$iYX@Y976CB@f=>1IQLxS@96Gx-zYgy5Z_F@VpZ(z^E!7;${C0 zPvsi==Vfvm^B~^NX*fk-Gde&$f{x>A4aR94df7&IB98ppLgVDuOWtMq0W6%3?;R;* zQF1%dmy|yz(A`^Se{%!}HzsBWl0JfjGlXFRJuI9ZLDVnd>h86)wK(W71PzbbB^Tp% zpnm5hTvC^~{sG(ohR{}q9i+bLz}L$sDI?tBfdI4$+gE-k(9{9C^MK)j0kqh06exT P00000NkvXXu0mjfoYl-> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewheel-blue.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewheel-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..4200576f78bc774ef162b0d55c86b2546a010015 GIT binary patch literal 648 zcmV;30(bq1P)T#21Y6nTcu7&9onHg z5+g|b0Db^J010*`7KVbvR0)LGieLaKLk9v>O`E2r&_;GzVn6P+^BgCB$#akp3_ekE z{gU_Y`QCAC*~C9q3XlS%04abLVCB(*xO902KlbZ5d8#F!J8 zj{w+sV$#LwsgC*HZk5Jo{V}VzvT3wV7BhJL^rqO`cd&ftjS@r&@NxCFh?+@r7T0Wc z1WCnntwI*h9?uCCL=2$UT*k?bT=!RJqG7;o9cy9iBM{fYh#0`<^%}0s-sn1) z(cScu>oUw}+fYPWFLU3KLyhZC`4!!pS*3Rw$rl(H$)hbxDTcAnjOqzzh+BJCsk%i`1 z4xonBYAx6$YT;aqUiPNvS5{8`Kx;}EY_3nBZQeR+1`sOI<;Z_XW%C3OF@R5BcYq7i z9SCS3`k1qLP1M})tpj-Ye9gGGcwI;cZ2|)nO`!hM_IqmqB*cST^8$3)XcN##?p$Tw z7l3vD$*WEhZHQsDacK12xfXyGUC4>Z8_BtX@SDqHPqeVv7zw{;Q{F%l$ixpMNgEEU i|Nn_71xNw@wtfQvd|0p%d`Yta0000(Rl$u*#WQ#hZ{P`f0&k$_ z@C>307u^)x*j*7ED`F`$<9joCH8V*j8BuhRA0980nf(8k*G+fej}-wTKm>>YUH~bt z3V;(_&9DwT_9X~$-uo6n6-;N3HPd_T83Otq`dp*W6M{^vAXWe=ABuVyhlA=v2p4@j zM$buMgD?Q>;WK6QrhO@}UISoOSOX`7Wde6#{^t5^TzbLUcZ5@a#2Oi=41i6(ge27= zT#^l-w(vn2PTpRCN;%Xg(N(salcxv+*yIAIz!0Q4)=|fBzHJpwo;Fzll2mRXsyZYpsgU%32QsXdVQ}uofy{rFCfRk@~7Qj#8&=DfzY`24Zm_k{)nxL|%#|NkFR1c(5?txpyE&>L_`=ePg> N002ovPDHLkV1jO6zMKF6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewheel.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/cheesewheel.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8562fd53d61b35ec184d6a4e44cece6babb7e8 GIT binary patch literal 648 zcmV;30(bq1P)&Di$QZ zL8pp=55j<$_yA07>A>2dL(5hK6NQBS1EE&VA2&`F`?&X-OV0S>b1R`T_!;u%J^SA0 z_r5+^&f$uc0;B*bKnh?4sMj8{%Kba&H1{x5x*Z>@FVLyK9>(K?KB_C*)};W*cy`W5 zadu?hKKaV?dm<-AA~#jz^;+CQ6yEg;rK9s)6$ zcV)+Y*^)4)nmTC#?1|GM1jWMEJGhUo;qUhW$!pg!Rji6gr`U)E4dw26o(Ce5rjQYl_SkS@&CL@Sm}k3=h+0|va4@F5lmsFIu=%Zt zrMsmO1e|z?G3F%NqncA~Bf#4GUF*%W1tuYk6Nr&IfqkbZY8wG0L~Zo}Lpi|&43eGe z%*O(dR^EOdO#+uQKWd(h?c4}JQa92>=p{wES(*^V<$s{Zb8EOxrqntB?D;1lxs^L4a?{KXyUhG{=62>5 z@y8MYL;w*$1Ta4U*GI{B()ogoRx>$Mlk8ONg}?yF89@x5fz+0bY1(gaB>*W}eD)bj z!Jjg~Z99of&c^DpYqR4lV&#s|Xr$1-Y$^Fu2FM-cfqe^%3?2{-7XtM+plBg;XA8*C z04TT!JX(v}g98+oyd#t$R00N|4^TKpTG+7%e)aO_zE_4X=L3BOo{Um0gUi|r;W}}W z#cQeK+nq8%?8zLvxwrn2l~4fK+V;14j|pYSGQ$I);Jx!WjNK-feu$T94TE7p*baYz zE2q39CI9YzH49|0!PPxq^Pu`BoN5yqf1ym#mlA+81QI;OteE9N4H&(e$U^VJ1z~$` zKcI7=0FXTPO>ETZJLrO~)3fVBKZDx~cyQWR5oG}DhPs>yZ9<*t=Cn^kDR2Ne4du8^ zPZ-10f~6hGG!#xnic1R6PZCV0|f=e#lQ%TND^>s z7cR2OG7q8Dhv?E(Hhlr13D|LQK?qn(Xkh|{1QTc)EZEYLV(@y;otZX5nq(9aVGazF zlXK7ge&=HeY7`=)u&HLA`;y94Mq8E79UK?B3m8NrFxvkF%3+0cVLJq0G#YRm2d5daVWSS}%_4Hg4Em}q*)haLxdpT0$Hi zR8@uRy3qkjrIJ#uR(T?kfMr=YHAF|mFMx!o%~TzYV>_sn#A}~k0b(@g8AFW8L~Gc> zXf(p(Tczj#Aw=f`xa(FyAgZ+qq(zc=FwA10_OSX)?1XT&UKWLiZ_q#A#CSg|^B<+x zi`9ZC&~J@8P9Pj-quN^uK{`!BjN&dU57l_xZPn@|AG-$j%@dnGtr9IeVO2DQ!7m! z9?~|<(|`6FmF+$-g7jRzL&?#{(STVU-PGfDIWE9346aj4lfRp!LKPx;LAYn?mqrcU=g9 z>4bz9-U<6l}$+aK2636y-o_Bi>Ydd+) zMP$(V!uIk$&-i{n&oj<;3`Z;rzyh!UEC36@0{E){ae%c0(vbmBcvOY(S3#Ht$Ye6? z^M@xW7K`wB2l3+ZwASmtbRE?_r_(9Hqz(mG3{NsTFOJ^E`sxF8^B#4PASPoAjP}#u0|J#|FogB=cX->{kl)+WHXCw|QHaL1kt102~xk_*IQ@Umlp@DK}WAh2*c6YFFf0lci z1|W&Af{a-14a6xmc5`DAnTrsTs0&eDdAX#!dP4vbJ->@#@JI4&cR8FOa_U{cWH+Dd z)+tzc9F}4DODGJ=zYR;3s_|(QY#N{z;<< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chips.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chips.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf1b8dfcfa586f0a136f787be5b4d21ff6a5a3f GIT binary patch literal 474 zcmV<00VV#4P)hS!v@}Fbo7;>3(FtiM%O!Q~V~*8xo)r2PrZ|I$^18 zRF&>{*O(u=xgLNA;C}%OL?b>E(d!m~2_oCObb~lMkV#pH?aZ1DKn|~Q1%P0TOettN zBa$N*+#`TE3T}Me0Tir940w^TWXhwE{ON*k1U7#hrmhEzB8VQk;0A!aIjmr66fxUO zh+YrSsznf@L0R)*N8AmdOuN}1&4H3V)iWIrqYD7@B#1)iI2R{Ocy9n*0MLCC#o&=; zuS!My(oNX*{<`~A#d~)^7eEtw|85zy*>0@hYJ2MJz6)SWP-z*op{!n+ZAZC24W~bo zk!i7dsQVrr2U%HdKT6s!-UTp2=n_Y}w_C>$#w_UmEq@;14P>LX=HwE9E9wDw09*iY o@0TayhdaOxph29u?)C_N0cYWY&K8|YhyVZp07*qoM6N<$g5j5(y#N3J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolatebar.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolatebar.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f308a6bf80ca339362467b8c9e81529f295ba2 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0sos z#WAE}&f9B_T!#zHcW?NZ*}#^;V0@tB-Tvvfv$u0L9P4lQYhA(i!9tdI5!Zpo*MD2{EZ@tuknKc~ zR60w1U<;Q)xZd%X3-T99OwiVM6=9rERQbQ6uIZ+4D+5wHkAKV zO6dKhlCbuZN`u@qrz79DKHl6Q@i25B#{`b`pL86Qo;=?mbDk-w<*NnD1di8*5(hdS h6#RR>{ZBfhu&S8A1~HE3azMW^c)I$ztaD0e0svZqaSs3h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolatecake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/chocolatecake.png new file mode 100644 index 0000000000000000000000000000000000000000..96f3e700afe62df120a0efc19713a949a42d11b6 GIT binary patch literal 784 zcmV+r1MmEaP)N;i-OL<@@2W2tCFyr>sJ z5Q5N?9xasq3F4_e34$nsDD-0SAVQJ!;~)@LhVc z)%RBbrjJh7MF8-U@tD|9#?#{k;nM|872s=wAi5?=+z5a+ zVhG;It%tXu3aVmZC@;?Q>udam5&>8Q^e`2~rf|P=Jo{m}6j5jQ0NF#~tZ|+X7w(`C zKy$6(&Ye3%kDh%HcL*W=@{tf)zpD=v*M)}{Ix_&{>w<}I6n;0v>K8Uk0 z%s-=T)QA9-%2PD+;w>HiQKxLWUu5y?3&@g{;cBP`zuv;^%ccitqt&7JyYf`_G-&Rz z8DQW319bEL1Dd&7CTi8Cxc-vy+0Qmytot7$7&f39MQ<}e3fFIl2UIvy5bJ}3E!l#w&CN7n1u^4ZOy~Po zujEt4th)kGt0A)WV2&rmI>E>>{@z*oopt?>C@G6Sv7Pguum|wp0{jFu&UcuxOL{;6 O0000pnGBoKfity4Q#A)SDS-%SKr9XQA@@og4=GJf>E!B5@iI?>2%^u z4d@*I1@};w43U3!ioYkR#uu*&(J;CQqtOUK5Lhh|iNIts-4DR;_rq?t%NI}*?&~BD z_l{FKE*V|`&02rmHGPxltX8Xq*Xzw4!0B{y9*;-RXf&|dY>3C>;3k*h{?Z|K4!GLu zu(IYy@wYja(oIRmKA#VXM1tLwGk^p^ZwZ7Fv2TR1xiF1?)y)_jd3WbICB}*X(t*6G z>tOX@FqpEBQc`N16Toed$JF!x8L0p&fC}*90j>Zb7uu=&I+!j10000vHuW%c zNm%wNShFNd%g*p<$PCb!!0b`hu-U-g=0)PP<`?Y#b`4Lz?fdHyq%q+QgPd5)G->m= z23_`xFN#cx4@|eO5BOnldgIB9M;I3=~Wz0J=CJvVvwfF#AMG7h>3cQU_YU`VKPNq(uka4yg<44$rjF6*2U FngH__U{3%5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clam-chowder.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clam-chowder.png new file mode 100644 index 0000000000000000000000000000000000000000..5640186a573eea080c8f5d1eccc5bedfde8541dc GIT binary patch literal 526 zcmV+p0`dKcP) z-@S6R0qQIXAOR$R1dsp{Kmz<9fbi+QS?#-l*)`?I0Aiqjat>TB7v%GK+se%XaI;Q8 zWdJOAVrG>KDHICuc}L+D&L)07x8LVeh$w6~csT>~jWE`aU}$49^n3$k_q)cLYFPT!vwNc?#~6WawPC z)`z=-G(g;SDF}Ox#y&_#zP=QxB)nf$VQ*_2>{JGD6pAP#s%nn;dO&IG1@rlV*0=@` zPw8LApqEVPoCgM$>WXX%eX9aM;ZdFJZW0KvAkdV-h*eZmtDDxhmmCeZJ9NsGzW@LL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clownburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clownburger.png new file mode 100644 index 0000000000000000000000000000000000000000..bc5f68c784162e9bb167e9f7247bf42bab04a96e GIT binary patch literal 801 zcmV++1K#|JP)>Q?Cw5 z>PCC5kP>U2`yr@}6YEn!EC5iXSmu14w4B=<|1Z(=D}T6qt?BRaYSVY5*Agf*o7dVSB@RT))!K^EQ_h%&Vn- zsUZG1gwb#ap%CzGT0*-gjFV?}LSTlx>CiB883<`IILYI#s(h9=jb;{GoiD&_F+fZ6 z0Osf3xH|-BtXP*5i+#@qB`8XD89TOUG7n69eNo{cr}F zuRslPu}06$716sUfb#SGm1&K;_P!&#QnipymMF)yyw%rKQwQ`v4J4g!UkW{1n%AxfzD>MmbT$WSB{*} z^$D%VSHjyV^5xMcBU;>ruzP~=KwFvsbz+b;1L{2jo?K>MzXLyTM3;jGQwbWU^td)V z#$ZI;b{k=1#w~6cx-Jq#I!f!ez_BWd7lB;VpJfnO!DD3p5mP7?*tAO`bms)v!?I}` z%ZHejzczq;#fBt@)ewUyVsY9znZJ}|r+wi#Y@a_AyP6jbkO*P3%%B@4JoSlu=cG~F zFSyD?_{Q}anWqh)hUoLNU0S2CmBr7PjA`=e;>pB3BY-#rNd}24bK}1PSO~IsE!}@a fS%56Se*^Fvz-d9fE3WH(00000NkvXXu0mjfTJd^i literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clownstears.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/clownstears.png new file mode 100644 index 0000000000000000000000000000000000000000..18464ccfb7ed2b096b452e0a93eded7dd8de125b GIT binary patch literal 511 zcmVKgN2`r76i&K8v-x<%VB^Z(v1QWj zb|EMfAi!1Kjx9OwODU>#0l7dd05r$qG);}UHpJ4PV2sKw0R5O4>L^Xl`=wk6lM9|7 z03k>g!UA|nU&*{!Dp4^T(pVZ(l++VK=PDF5FM9-(4?zOeh#rih{<$Y`czPk?;-Z2^ z1Qk&Q*)m&Ub2ejRAqU1RTrW$}e;>^g-4B{|>YodMy1S3z)p-qE8UeVzO~iT_s;!M>5c4ab-k&I9(-?+;9AjQb!(lz> zO<~`$08n^TH4+%IAF%2+^S)_kXl{sogZ|8;=BkO!DLz!yYm;`?-?F6jUO002ovPDHLkV1nkn B+$R74 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/coldchili.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/coldchili.png new file mode 100644 index 0000000000000000000000000000000000000000..4876b1c54d507b82c1faa3d78c9b3f9bdae0464f GIT binary patch literal 586 zcmV-Q0=4~#P)jrsh$vqrAGu+r9FXseq8tfJ7zB^^IYD2pJtxl?|tWe zpAEn-hc2KC=mNTcE}#qim_QnA{1K9wUlSmB94!0=N+lAS1(vxUUdwZpor4Vg2%iF9 zf#vOea5x+=8jZ5iU@&~X2T0x%h3FGJ!T!B~0DcWcZhgHBmL9gJx|(yo1Qi_vlH7>1 zi684b0l{BzuP#7vaivPIsJcK^fp})!^SiA#1q7xb@HqR7N^_(7Aw08Rdf-a1pztJQ zCj+}Spf(>^*n(%?QU(m;6a_g+*xWglz_0llu&v#S(h>pl#3GZJ5X+Bp0DD|2gL=az z*C3IhIl<=}tP%jNe1)4u*Tj(G;gp?$nb|o^bL}w0;!eC-!R{0Z#l2zPQrcNVPh*!GMXpL|sAK{uSjIP}?6&4^k zG8)di8!XLC2{knf2*8g|L4|O208??EFd`;HC`>`cMF@qM7lZP98=FEcsD#fxK=*f< zbKhwb+;Ea`QsP6#xxcEIC$Lxp--K!>6blHw!R9WiW%Q>TYHG#)wpV}R|NI^60)JNE Y9XJ`{BWxR7eEmcrb)o; z5pYX@D$L9*1`LQ=5(E;3DRhht5>&f%Y0_V;w_n_SyYRoPp*h+XJ_wXc~zb;Ke(GB<7#9LIA$;`2LTkzn(GxiGuk77vlPgjOPuEi8s!;+u5)pl6lR{&X4c=e7`fh+be%8 z2jBo4fCKmuKxwHEn`1jimp#7*U>X)CM|FSy_*_;OXVCq$#s-uMfW|Z&3C8tY6h*2H z!xI@A4rHzv$kSs(&tFw<)!yoTt0RaN0Osw+4~?2O-P}HqN_j;*&y&NwlHLOl2q3=S z{|49U8b1*L=K0)!&KTwl4$&M!Yl1;ImY48Zrs~bO({WfUFg7u*+J)r}l})7_d|5+d znj_=(V@Q$};O_cD`usuJTAx?X42(+$F;kAeUqmHj4&Bt7-vdC&&UTA20|A6WmVkmW z<~hf;6wSN64b}?GuAM3f1j^?=AXpI^n#O6&QvnbHEvu1KQd60H2TYJG^}qiG4!{98 e00-azvd}A3oS?}Tz2&d~0000 z-bmm_5!LH39+iTY7WgJ&Ahz=#Q6*3b{40Sa!0g{YhQ1K`00000NkvXXu0mjfSuom6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crab-cakes.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crab-cakes.png new file mode 100644 index 0000000000000000000000000000000000000000..dbce817e99523f1dfa7754cdbe697d585da38a5c GIT binary patch literal 453 zcmV;$0XqJPP)7M#uaKqKgiN z;?lv%!A)=$Ty${i=u#+xvmnx`Q!wgawWhR1MZ=l9GfhI9s?j2qd&^z!-QD|r-wlc2 zk0k&EfB+Bx0zd!^3BbNYuvQBV!uJKZSp}Ia>|(6EgJ-3Hs+uQrMTCCK?+b9Lf=ny` zcgJ~nD|MVKR!ZnuRmIpvia|kJ+ z;WO3l`6wm$oR02wKiL^Q0orxG!4~a=TkLs0G&KX?Ijz>MmzL(qaH|7gzX^RG$94|d v6@FEIov?Gd0Q@!#T0`k4io)n=s zp%Bokf38wWQ1PaCRssd_A{2TM4?zSYf-D3HG>wrgkyenkM3ji8A*?fR_w8nrtP)T} z*@2gNyEE^7znOiT-HE?!AwUQa0)zk|z}Nsqz&acm9edXXvcSY|2Vhb5EWCG?#-Sr_ zZ2I(hbe=pA^Ei!qv0;q^^HYGqY6r#Hq__l$XPtPlfjX`K6-Xd}teQ8Fm9u@`Y}haX zATlo3%DsXh0s(kIffk;OI1uX|gmPgCZ?EP(D2g4uy#(`KUd;Q!Uy#p@+kw(uSedc{ zESq8jVeEAWPS0~y0!oS{FWUE{ZSat57Zj_cnaErk1{nsRB2nLy?D-vBN`D9>Q)40t%4?Lox5&74qpeF^xl*;1Jx>!O3mWf zaSJ{2lPv|SBy#483gc84>Z6XxH|D2>SE0Dq*{4%jC14>=!ghWeYiDQBX&XW#@DU`E zHpKoGP(@8Zyu4pSNuwZ*5)8bjw~VhpZUL`fQSLtKUflK^TcKimi{$D2@EPJ9j=w4U zHAVt_ZP^KI-5OBa{Elcm;l_7O_1yWvzQ2LN`M2(*ugXrl>C+h50r^b$EO=pWAy+t# uafe2k)ENQ@O8C?E?|qI#fDqun1NZ@iu=X5e5Oq!f0000^@RCt{2l~0PoFc`(3pa-x;;sMl!;&zsTp2jnHfVqL-83eDO zd$-bI7(9SM)C0KageBal!jDJ=D2mk>f00e;d21rIo^&S{Z zQ2KKKnztKuV78VGP7>r%&sCw)UOj>@iGXfNOJ6MRlR~Q^c|D$FVv+t4M%Fu1*amE zjgyhBcA6;@{-a*O7M*s!l)UbN&ga=Ai8d)u->Lyp`7Z~!2jipn{uu>;01yD4p4W1*e1DH`b$l`LU$_)#&ft}03S27~aw zs(U9`4>Bp#n9P0s@oUj?10}OVQVEA_?Js;bn6)K&&FwnjFoxi=ExT5gT4)KVJ6dmF z+ak&^JE?e%iC@y*whznlpIzOzBxmnmf7X2+F@mP+8P%V+ZD!cdao)f5W})!8<;|rQ z(g^~o9|KMrCC|Mh+0b@jlfqHnayE&U)1UwTm*fOG?S<_F-ZK3(>q^ci?m%xdc)I$z JtaD0e0sxckem?*J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag.png new file mode 100644 index 0000000000000000000000000000000000000000..b65dcfee049cea0886c25279ef1a46f41923f6de GIT binary patch literal 358 zcmV-s0h#`ZP) zi%~QhG?>IDDwxEw;J{xv5ShHe6Mqc0yHhOh!Qi;t?)$mhZ2|amF@OOKU;qQ80Fz$Z za_TQu8@`_dFg%_qfWDf7rfDBzq6i@XgH+FkNX2u>P__>ct+siLjbK@HQY1c89`qGUhDZxDO?CZh<>MK zzyJo^0eX>)l|2w=O8@`>07*qoM6N<$ Ef-h@~A^-pY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag0.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag0.png new file mode 100644 index 0000000000000000000000000000000000000000..55ae18d7c2ef77fb2b714bde3861508d1bb150d7 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0tJ; z#WAE}&f9Bed7BM*SRcsk;xzE&7p*Q?^RBV#h029kt#G3%&awlXfmI)ND>$6`?eSxG zoYZkfz901mvS-PCFRU?R45+;RJycMu;k2fypc2Dr&G(5B{quWoFl;IE>Yd5Ku=3Mw z8+MM&4Kfi73m7F7rv}@d{^b0@Y#)Pm(q@((kEy{bF6V?g%@xnJg!KJh%JJ3Er6ufK zt7^xSZjR~AUK|URAx+vjA#7CYCjyc~ZeLCD=>yo#VQ$YEghB>pq!PbwK puPY+$Rj%%1)qTXkZgGGyKJd%|2{DVQ!P41Ndf+`c`<-P3cKH>HuWRL13?{DqNh}j=*pLF3UlH79oM+0DP7^-@c9F2y}yZe_xqx}r2jpd4dR2+04OKixq6Oh%Smzo zx+4$?QziAu%`LNKR1HY-Iav-sb_9qGPngUasX)tTlWI9x4uClVi!fRB!{BcbjXGe| f0izBW_6`654Uy;K$(%&g00000NkvXXu0mjfyLZEs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag2.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag2.png new file mode 100644 index 0000000000000000000000000000000000000000..4f97de5347a65e8a043b6b2947ce5a375a43cb31 GIT binary patch literal 521 zcmV+k0`~ohP)g9_SUD}oUv8jV^MNsI%Ni-Ut9F~;51 zZmiD!09UvABaAUY2OS)o9E{Nr0k;}c2R~Xv6+*P& zasUpX^8qKxpq($2(A5iIOD0Q7$}cvxH#PXvWuvh0u50w z91Gj0)BzuyjX^fWw|l%V6a`t5ASWr{4?sf*(`~3n7=`z$ z;nctoP*8-tQUo{EUwWV~1dQ5RMbtfr^wWU|tl`gN-WORW*Xiptj8FLCMSKR23J?Vm z1_NI3ct-%#k+FjK^(d~Ljs*AmGXmj-FzE?S27zW6pywI#TgY62EazZtbEmlxFhkJM z1c%cA5QV%eNY(%X%HeO4rEtptGel_@u+Zo3B0E78vbMr)0jd#XVMaDM;qHhZV;60| zc|!m_0VVu`Cmj1zyUabe-HQuE*J8Xf5K=l00000 LNkvXXu0mjfQ2^SR literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag3.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/crackerbag3.png new file mode 100644 index 0000000000000000000000000000000000000000..6650fe7d54a2a86464e563f5afb10456b8a2339b GIT binary patch literal 501 zcmVVQ!P41Ndf+`c`<-P3cKH>HuWRL13?{DqNh}j=*pLF3UlH79oM+0DP7^-@c9F2$(qU?<=!mY%9M~ zMv5E&@)^t#*enNuyLaw@9RZ@HIUmjDR5D@s{`?kL?%1a8|D-wsBMM-Sz-KuKi2d9# z`;Ukd!|(537&s->z>eVK<0IJ-SQ8;~NMN)4^VKP{*`>4@IQjlE+`9IXL0(akY)9bC zhRBY;jthV7XhDZZXKp z3o$%?_>MtMPXrhew;2S5xf$5FB^bVukR}Kg#i-GdlllP~0&03{V0n<`A3rfOsAxeF z?UUOV7#NsX7(Rde#NZQMPgw|Ha|Ew;PAVuG7#JYYaO>I|RLg;YSj&la04_)TVsrv0 zKu}J2`Q#4CmXqWFbVs~m_ekYVQ!P41Ndf+`c`<-P3cKH>HuWRL13?{DqNh}j=*pLF3UlH79oM+0DP7^-@c9F2oRh1_m$bm`mOv* z87XoA$Y(G|V6z+q?%ufrcEqde8)l2En=pKTehV&lY*Y7tQXPR21u#e8v;6bbDYGRt z?HOLbe8wOwsRnlhA0Hpdj=-7-kwXHT*Sd41Yd6BiRvn3nJv`09h^o40aH>b?Fw^^2ZO~F{tT@FuZ(lok37s zmVu31g5ev9X@X!;408mpc24RCXb7n3se$D{mVc~zdbnEIaryRCt_YVHjXA>VQ!P41Ndf+`c`<-P3cKH>HuWRL13?{DqNh}j=*pLF3UlH79oM+0DP7^-@c9F2;SdUW}_Qsj_@(dI^0%tZvb_BBJoctnSd0BZOFq@O% zFT?BaJPcg_zL4bzyaf@=5wKtffm@eufh`AxfSR5Nod1hag5lfqTPXU8aRkAl80rWH zhU<_JP}5Tbi-RnO&}s}HKQS|We0h(7feB&U=Z~Kle4^_q3juUTh&|f@%zBV$0Qnrn zawI^kla3gTc9DW(pNmM3!I5-+JqF4*DT#Y+P3^Sd{HFh(w15+DKp zAJFS|pDNXA<01frXR_Hy5v~9lj*1e&1+d|$k6g|=FB)+Ia0^F8F$o*ME4-}h7UHx0 zcHlKD)t|3I0kAWQ;Dw{s{@oCvHjdhA?8_}Ks! z0RYC1H({=?LWTPRP(-Ksdblq>gx+}|015#>&_L%kzx@LJAqf&B6dsh24Z< zp#_C^Nkn=RMuJXlk8;4Jr6nwW z_Gm^+7XXFS*3^X6RS^fQ`x%iD8?gdD77B&`m|wKFkXwoxL8J_z%I^;#5?Mpe@EnS3 zN+5Yel(K&LWAKM__DN%nNJhE@aqCN?IV$B)@s2NyB zIkr*kxCLHPO ztzx^%QJ()@<>dlOOIgj3qlxJF2kr4x>`W2hXHhleQP@FdlZn@gsaJ1)>2GOiRVF82 z{#5g)AAxBO-wv6TW--gTKe4%K+|KW8ch05l zj63PY@5?#&p5OWXKKFOe{hf2S;6G~uUF0oA(R2X{~NU0Qna+TA`*!rnMkZ@7mF{#YPDi^ zb{3)%0;sGsAsUUMOt+Q20|S;p8 zV%y@3s|U!I3FUw%fzn1TrZ2t5G%iE)IfiA=%hXs}a|l6H1p%C@xs6AGv$*>GKCVZ4 zaCgre_$5CEVatq@t_6;53_vExH0zjC*96kP&xOIaDF_1mf+Bwf**Xwtz*vnJa${=A z^-C@ev7Ao(J&d3OO~nO>VdcB;#zBn1i}@E`;5gu@I)i>Zz(ut4af0gzG_9JW8h}1N<0cdWEWpVcC1Tf+IMja>)%eZ^jxQxt%o1NE%vgm{%BDaFQUl%O%_`TAdA)siY9 zi7FwLV~b--J-~Z=DQeSw3akVnDV5N`AP9!WvMV9Yg;OO!Do}_&k#}BIOt96Ef2zkhP< z`#Q5~e61j4BXS(e3otr5qM9_>K-A^}6{@@$Ac*X1gTW{h z$a+8xyX!C?T;ONPq8v(dmFqMYh%!PgyD#KV^?!lryWTJWwfX~!EhfGM81hd50000< KMNUMnLSTZcDR=(> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/creamcheesebread.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/creamcheesebread.png new file mode 100644 index 0000000000000000000000000000000000000000..ba3c8be02feb22baf68bb53344402bc003ac63b0 GIT binary patch literal 1110 zcmV-c1gZOpP)N-ko#K z?R~tYd5UfvqzBUba_{N=zH`oZ&Px@(u`Li-Ah1B-vjnc~iK(^gR>||r7q8rXv-fv# zsjTmRpOm$suG;ls|Gn4WSzkqffq88`y%AQVMQ{FgMV8)sZ|H9sndNaIF*cQViST~! zp}5M;O!^Y3NZ{D|urk1b#8s$*E&D&U*-)V8yui&~ zOwVf>#vr0*>8JfErj8(r`ip zD4yDlBI=Ru35Z|t@XvJXW;8$9j{f0U0;~ZhrqP(Jm53XoOr*&13z^aJY5M3acRbBm zB?LHa=2C|)wF)z^LR)myp%gxz8W%q%w}UdHvMH#@YFOD35h{+~7ZRL_M?=$d*@(-B zEs06mi;+*RvId%e47(9AIEziqrMy5XXJEDNDjWvo^GH;{nS`;-w1SOUdF~$ukxNT>Fv@11@Bz^*M7d3JVIh!{}* z&g zsf>_dFjU9fa$xihie10D0u`fkHQ0t8s=tZe58Py=+*|^p%Dp$$FE?6*1Z#moc@}&m z4X~Af(;1?r(fffLVAcrFiF73bUXwDA1`1u{((m5Zlyfc#fm<*3fo0X%S6xzn18DmH z<-eZygFNT`32?-PF5T-q1$K0e0XDT=;i3y}kpS^HBi+G%M_Y1ILhf^8+}1pJ*b?;N zZeSnIg4aq2a2aM=c_0N!XM%`Lw;e~Vfg9w1ns!C7|J)z)Y}bZmHKj1Kz)VFpuK;~Z zu=R42egnGTtKE43)Vsr|IG7LtYH-U1=1FLb!9Qj52yp7yEEX6?Ol@az+tsxrcyhDb z_s(FqfP4GjL|hIm?*!6CdHQ`b@aLuHSaz^`?souOz8o%=TS0rFabUb~CFR}Dne3kwGf0Ql| c`0fe(2S?QVu(+0jAOHXW07*qoM6N<$g66Om&;S4c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/creamcheesebreadslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/creamcheesebreadslice.png new file mode 100644 index 0000000000000000000000000000000000000000..938b2db4457372731f47c817ebb2ef58880f2ea7 GIT binary patch literal 824 zcmV-81IPS{P)PbXFRCt{2mQhGkVHC&zcW$K7GA1UbL4t`8NN^J&=xJtq5Y$3n z!iNyjmympLD8w>BS-sd>J%|(pu|3SdhX^kSf>7hWB}4`zs!0m>Wx|Z*zRo$@t`$zF z7*XuN_In$MQWynEKt{wM$^ z=CNzy60W*0!tvFQ)Z7VKbG5G`jLdp23IQq@fRl4#NBu2mE-zFf4Ad$(8)z)`AT`m8 zj`JCibXAbnmk4N4?FF(YK>ukdmihPOnmY)XJwVeuuxY^+h(o0eBJjgu`l0ChwWrsi zz3&la@H%9~?H0Po3CrB`YQK1tH%X}M-Z96+Q7-mYGeS;}b$A+1N@(g%&{URyrjamVpG^Hb_8JJ z5#L=*gxkn? zM>W2IZvcZP#yC2_s=Y(dh)P>&jHZ7=uB4Z{uf3zC1Yed0&;S}h1N;tv*&d(KhC>I; zsh4ZXckLR50bnqK*syWkfp?ZSxe!1qo5RQF4<`&j+kA4KgRs?`6;CLhFaXy0r5IEQ zw;oUeaIdp9O20?Kms9~TpFNj?c*|BAsWpVjcNOp0^liUXCX4lH>v<0 zgb<`iK8E-XpzItUd@3pcm`vZJ(@u6?8X&$6fes@|l4n)ih7@$|vK2DrSx)`VACU(5 aTYw8{_YP)8hGjuLEt4LiB6F$*TNMAAY>|7(4$ss(>n>3aA3AfGVI0s0iRm|334?O9$--?tle~i8Liu!)mjM zz6Iq?k7ZW@ddWa!Bbps%|EuUv;}%QLhI1B(aL@p;^=xU?QJ0w6B^qhiPC~i8p zA^@qzjh4wWdo)1H+zN?xbkpGXC-7Zw!|Qd>bjXRG(3x!P zqsug~c!JoKB;J}jo<9G?LOilFKsX#Omv3Zb#0-v&A-A{FG}%|)T5>=ln^A~$-lg6! z`0&|*B<?mchZnEtUS4fVEir*f)qQU%=<_fH-J$r%rBas{D?ksu%*Y-Nc&$ i)DhHHy_ zHwGAJh>7P=QW#|FEg0A{(JgkOZu621}W?p)-pVjO)D0#c*a#! zd@k{o$Ig5EnLjg_IAoa}Yv?FG`Z=G?;jeA|H}kL0d>M9HKEE@+q@hB_A?hu|z9?J9 z1|E&;MRLrp9C3ER_W#uy%ErwmGpZo3Tw+5J+|+cdcYaV_+!=G po6##@t!5Nr;dm9R93k|8Db~yT{h2JG%|Jggc)I$ztaD0e0suUZa9#ia literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/dionaroast.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/dionaroast.png new file mode 100644 index 0000000000000000000000000000000000000000..9403a6850b1c58cebec9647a02987e54597bf8c6 GIT binary patch literal 898 zcmV-|1AY97P)K}qSica0`(C1`b-Q?jIN zM`y2h({-u@{k_O+0)8m6u`-f0;#I(0A9ZK;CIXw zky))M;Fud|k*}Y+Af3`EVN3>w-U;D8nJb4e9tasmUXyuE<7HshgGZldfSlbZvjts()w~LKWECYq2Hzr0DK=+Gjw&VPrS(u%hk2x@r z#$=jlOND=Ng|(zT&P?MXY4A-h z!E7~xx8=e!ImgZem5=0^{0XCB8-`cEuvp#M*{VKqKSs1r6h*Y&tU=IXM9%xrczU)G zi^KCU=W~!|1MpizX7m!H)^;R|!6nIXH|n3WHI285rM8wKeI+1GO-;e&a-qHd0xU&# zP!Sp`AE50{Ju|0F1Y~oPvTGA>V=c`?CE##4U^1C7HZ}$|b4>uE?Q%DxOMa7`DQgAK z^H^J3W7%lD+QFchiH6Ad+?8_Hr&4K|s{(9HRa?tpxZQ5aU@$Nc((Utos==BcRK=erK(ESm>R;0)LuL9`R YFA{rlm(15nbpQYW07*qoM6N<$f|YQbv;Y7A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donkpocket.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donkpocket.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0e3d534926b5f77e0caafaa8e3a20ff42c9f2d GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq{|J z)5S5QV$Rzu=eZdjMc6;6cPkx9Gq*1iFgFiZ|KIfZpC{ix7WMM-Pv#ao1XcO!)@<^+ zl=XIY)S}R5k-1rMzSd{AeE$0;JBqVLk5PaDgnsxpT$`Y~{p-5`{y#De4_#H6URHd_ ztgYX($u^EX`jWpU5DwPFigR*MXEwldx^Z5=WxIFl=Y{&h)@?QyYe(S1d*+wyhtqc19L#c?_Aco8RW=wpq;!I6jzRlNr z@6LH`6ZC%$--(}E&K94`=YEtaxN+`XeBVJnuItVdZ{#zoC!clt@H1-9LluXe*LZ&X m(q6_^$@O6qivt7812*Tc0ihQ~CM*Jm6oaR$pUXO@geCwC1BPq> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donut1.png new file mode 100644 index 0000000000000000000000000000000000000000..87b2e60b86b2ac7c005c270e341bf0dc5f29cf38 GIT binary patch literal 499 zcmV!Z$xq;iU~+dbE*j%Yd`px-Gz91i6s)1%UDHBj;0iS^{SWlGqkVq)_h>`-=L!G; zAOHk_05B8as3Kdx=Z>q2@aF(0cz-YL&V3msy6rX@*=t@Q+yEM0E{RC2q|mN^y7TmV zYAuH{o^W<<;&4;4PA*Mu1Q&pYXXGvk%dzmgR~2vdC=&8FwqRqjB?ke505@VPzzN^k zEs%B(Sorm0n5+!h=@&PKi=dTB8>k`5jo|7)J{yN93ho%N5uNT315;$EZE`DSDegTG zTaMcU5|n2Hm3_)F35DY5);RT|nLYt}wACVNw{OU7tU{DRh%AK3ei*nv84s^DqVQ5v z0nJvQT-+e72SY3-WymQRf}q0C`*VeJ0Zy;zMv^Sra*F6FDn6dy$pgSbL$T1&^@;HN zx`yfl{P`D*BWewk?eg(bGzpqMx{Q}_Zh(V0D8g#C1SFRt6YDgXmX~l(00%*jm34FC pUEno%CcwO5z5)EK01yBIzz@k7w|L^N&7uGR002ovPDHLkV1lCW&?*1` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donut2.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/donut2.png new file mode 100644 index 0000000000000000000000000000000000000000..6be43be15db63498fe2fb84b3a6cf15566eaf7ee GIT binary patch literal 613 zcmV-r0-F7aP)nS zjV|+pVP^h+W}au>4`wOk z_EQq_;g7^rul-ZZmWZ~1grBT@%HvfhK){pnA*vg<<1x=OZH)4)xr?@!H}FH&j)azg zgl}!wM#R{~{L~j71kX}hxsx|fB29++LBmQz=9tiTSt#4qo5N0 zFf#xNsG6N)FV|RREXOmLAX!#Qop?@HLTd!%Ja>m%ahGqPqIL^YsSiwi&*Ylp#cDb} zzX(%*phJ~T6>Z`WBRa2MT%d2bmrJ25xI1?HFak31Lef!omg}S^XH-wF2`h3WLLZxQ)1w(Jf!FUPOh`0eRKN-E zO||vfMph8q2ygeS#dZ0$HTEsCjLcZFG}1yzBeR&Xlo(wqB7?3lVL}~C!_1&aizSq$2od2} zMhmixeQ8QcGM2bWlWoo>P?4%tx8cDN&oiwx+2F+q3ijho#9)QK3(q&kEFpP) z0PsISqX2~NulhBs*f*b8?3L^&ZK6hI$Tx*8XKU#|VJ@iSG>n08`ffVg<2dU1LDfNl z7eOdvmj{0+*%9vp3^i5>M5hd%es)%~pvsjc%X#Yupo5-tx}S|WyAMSczUrj%^AewZ zT8i?}zwNpMqTX`9?|owb{KVsJEFFN?Xv72mmJV?p&~cQJgGA;+?nN zzWro9IRnquAunF}9Ga2%0&&)Uy& zUHWMwus*Pqw@u#c&bNH#pnb<d6+(N{eTY`C%c;)W;U`kM*mer`qKpyyzz=2wbcJDKoUBFkK7;)^_yn3ymv}b-o`NK!hoUe`=zd=jd5bh%WeAPKsS+v|`pZ+jfaZ*b zo3l;-$171CP6GOTw=xzN---r9I-Z=6$m2`XZJ5vyU$72Uj?#$P?=1^YakWAioj;&{l_KvBR{d8GP}*U(6`W%~xP#Hkndy@E!bDyJjg z^dX*BG`vC`7p^ilEi`MI*I7F!RxN=eS)jiQDrKuK$h+%K5#O`r0>*m9D0LUQ*?K+m zx-4xoLv{U5`*Xq5dnQM|Mv7RHEX1?hPV;3s%THhhYQVuoYGa$MUTUF5B#5@G+L$$X z6Z@SRB9TbJ<VW@oXKS}h=l-@>i(-d`p~kC-Fc+StqQ~TIpJcj0Q)S6 zxp7;X*}a#cYwOV6dx>*|V&Q^3Vg`-?3#|AQwv^q)Yd58|mnx~1>#<3oApZH*e~yb8Zb@i7j1i_nie=`Azm zrq$42sYmxHHsU6Gf$f;VgUsVE=TYChl1WoFs3CX@1ixgoK0Dr6|43lYfoQi;bIUNo zz@kbk1}e=jK9-c8uwVDRO@gluw|fOt6D0T$35l54 z%?|rJU)&~YxteJrK#JAnmG%4S2g@%E#uu0(2K@o(s4Eh80(;_Wp%reP6cMMs44QQl z7x$k3W4iygpV)fTLzj72T+|!Z;wzc4P0(6q@y;ppIx`ga#nDw{(xqwj0M9ujz}*D3 zLR)W@xW8-Q`_TjOhTCuhzci}Ke$#37;dFPql~(R)J8R116u)0xEnlkt3#egC2q!R^ zGH8!!`Hs11uU)Vjr6_cYOaRZ1r5lbk5^!?19xW}q@8z{WRQn#1wg&y&i8 z$+U@nZa_N21sfY-*udJ@mIOQ&^*-Zv%zmS}&cg#>Deb0Ew&gYax1#2OQBcX25Zwzr z!4XEL#_Y5Xh=q25QyU9-ZhyXer&49Il9noQVKUJ344235l-3jO|Dn=vahY?b82gg=EBJW!reCPo9VvlZU~Htp}Y z)x5-J)Z%$q1|k2z!;d{OVV9=Um-YmspvxfTcusWec#TKOg^jtgH*-iFp7*o!&dW0> uu1HYo6rFEHapf)`$#{pqA?o-Fun9koF=1hHJ+{P89umka@~s!sJ7T- u!MT7>K)GO>L+tUx#@|&!8kp)BBN!E@7=CTxH9iG&H-o3EpUXO@geCwxuUU%# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/driedfish.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/driedfish.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc94a02b8ef3c841ec9359323bcb4a4331a7b1d GIT binary patch literal 438 zcmV;n0ZIOeP)FcgMgpwOX(oS<7N9y%Bl@ZQedyNBYTkTc{0 zT?`p?gW$DeXtxdl2QqZ)0{&S6AOHja zG{AWLQt4yHw(WVI=L2s5gcMaAQ)$Q;I}118#IXN-wFW`WzV!Z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-blue.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..525dddaa7ab3933db30b1ad2054fbf1427815d60 GIT binary patch literal 342 zcmV-c0jd6pP)VQ!Pj5=V{0izBWx({d!}@wqK|J%gbvp{A6Zec=PBA!|O&%`jrD9@V?cQ@jV0O oVCWXbqYfB#z^DU89Y8Gr07(%<_tGbKG5`Po07*qoM6N<$f~*mbY5)KL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-green.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-green.png new file mode 100644 index 0000000000000000000000000000000000000000..20c77479df56b48a75b9b03708ba26a843c629f3 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq{|J z)5S5QVoq|RM1sMqhCucntAs0zi}@sW@x7>-`Y+xwr1v5JVg0u4{P&EXXqFjXI?LGG zAN=oj=dZ&*pK)E{*;CH)PkmL$#5Ww9WEAw3n-A5W{V?U>%ul98JxX^Oz5D!s>K{7L zt+?)7!m$hGLI3I}R%&}LblAi^?O%Sih7JKx9jrNu3B7@U2rVn^oOR0mdzr~ zN?ku<+h+4bow0JbmUqi4VbRqnx10ax{J$t$@aJ`2o8+|i7n3>s401&I7cGwlh7^ORtDnm{r-UW|CmoND literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-mime.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-mime.png new file mode 100644 index 0000000000000000000000000000000000000000..a779609dbcf0506b5e7bde239ba6b307dfdd2a6c GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQOU z#WAE}&f6=7T+IPI3>Ru%XgpF|v0#S<$Gsy5FJ3*VY++F)Hdp3~a|H|kgGG8)9DcvL zTeo>E|DQS4Y13bxlfM<8u!*xX2{bUUC_JcVteh9@dpRLC{KaoMoAb)c884YE?R&iE z-m*-m(9kQTv1u&g3I8n>-^YEnIlL{`X6X&a)W{&uNp_#Q7CB5yz4E--u{r?kk1NsY7E~F=9|i1 V-mhoX$O8j`!PC{xWt~$(69A1~fe-)y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-orange.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-orange.png new file mode 100644 index 0000000000000000000000000000000000000000..8d80b7e2ffbd822c2ea5fe36b42f408bf3d26965 GIT binary patch literal 341 zcmV-b0jmCqP)VQ!Pj5=V{0izBWx(;|bH~GJqk~#y!pI;33 zpT1*IO6X&xn*$!rP53Wn6$s}mYRNF%UM~1wHL{juN08+JSt%J*flp5uRDNF}$0*Vr zaCF(k{|v&sm=X#W4990H{I^W)Bqi!CXzKu*noW%VXLJ5%ut9ae*K4~NtP79RClOw_dyTOxXgI=bMJpObva;k{A9R({|$rLjQjK}2SC7h>LZ|qj~FNg nL$@d%b-<_tMjbHf0BQjM2UJBi_H_FL00000NkvXXu0mjf!FGfl literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-purple.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-purple.png new file mode 100644 index 0000000000000000000000000000000000000000..5553e98193f43def4d461e267af5b88a140f925e GIT binary patch literal 342 zcmV-c0jd6pP)VQ!Pj5=V{0izBWx(=Avw&A~;ye7l%-@h3i zy}QE@UlhPdHwVmaTK(VF+z!syGFD+&K7I55$V^|79YK}@6eQJ9_@7>VV_b;@D;KUa6i!a1Pa-^j@ic>yiadje zD8vy@pS)mr_2n5kMv>=$p4H`yKfe9?ucoX9EC>EF+-uf&@^*$ATTG2Fon`Fp z5B_(5;>Uy?%ul zPfzOObRI49;ofh)3ChgC1^ei#U0BVq{i4+7mA!QKs|9eO2KS>jgW? zteQJ-iL$ZfS%!387nitk$j-AK~Z5cK`nWx94|e>H3j-@GVc8TlLGy9R9Jp zPA04@pWisyQSi+Fg9S4mUe*0nWD>cn>1)67uldz~EP!k7y96%G27MC4&?Ckh zzTU{-wWNW8%w4Bw_8YnJ=YGr&er3OldEYyW0}0h-#v jXpw%XS4$bTGB9lV<2*%h&L3bfF)(<#`njxgN@xNAPv?tZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-yellow.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/egg-yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..becbac7b4c4209e64814ce287f4c169d801a9061 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq{|F z)5S5QVoq|RM1sMqhCucntAs0zi}@sW@mUlt`LlmnpUUC+_vlq~X+@5Y|YSM`aC zVLXMJnW=4CU%&d#&TcwMgiFQx!M(dDd2)10dFn47`DyV}GH(A}_f>^UtQ*2FOnG>D zdpXaYJ3$(c&fnjcAn+)3`CjHpLSn{IvpN5TUvnuv@b>m|i9^Y7F3qNT2E$LjY>VQ!Pj5=V{0izBWx(-;ky!pSDraZ&%-@h4d z-+jjr6j91ZHwUa-RQKP(-U7~7RX1hWxQ6q;e@G6=jv&hc>Z(#G{BK`gGH|oMBgZJx z9k61_wEsfFq8Q@x^2!WzXSV!LPOl*;6i9Z!$-@g79Bu0{#Cdr57@j}5N~&?BJ3vZK zkKyy@j|@UWA}HdoUO#6L5mTbQ14^rBGaBm3{6}}dwJYZtGIFQWClQ`HeV#!+41dcuLc*twQ!qIxHV7~sBGI$ObQ6Q}w0lD$c%PESgGbG(ozzq@tD*Ozu3$Fwy*?^(3J&%I3P zO>*zd`9arqEj#$TD)u*XZXojwc|Oz2-(RxG-`16AV|;wl<;shxrPERu?UPpUoa8on zk%o@AtD?#JRNeExuB~T?n0A%R(B;9exeTjTHND=opKZdjO!EV)a}PhOn!ha5X!BzW z0oREa`p-2hyr^qCeYH!n=Dz*npT7?JpRMgb7tL64;@QGd{R8oAj4=!+6OYgFpYh%f P7>o>_u6{1-oD!M}Y;7{(nFLy=*{wxik0W^RH&;S}h18@O+-zTaI#c_Q23V;^( zJP&pd;X%v*uy~&5%Bz14wSbrb6h#3^lE5CSs%m&Ys~Lc8+uR^kqVJaioKL4=@zix4 z7>4-LtnG_5%Xkq2Wm%5iG)-ulMwz!POAdg=X&`;ZWL188I4%GNqFmR7G)+f;>}PnN zd?T#CI1b#hOqjpg0k#u(9nnAAR_Y&hEzRd?F#?uSrC%KZwh%{wEkwU{KZ+vxpYR%n xLqHG&ga-EurXJ(A?h64>Y_Mv-3h+y5fH(Lz=p6CeiX;F4002ovPDHLkV1o0}jMxAG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox1.png new file mode 100644 index 0000000000000000000000000000000000000000..f21813468e33351d75fcc53b8774d57ebf7fc8f4 GIT binary patch literal 418 zcmV;T0bTxyP){0I=fW;u@mW17A!R(%4krJe(AOCf-~j4)OF{K$c}Zez6~-x5kjR{pD;1 zuj@7U2q9tpXa}gy$qRqS_+9AC=XN{jKQj3xrfGJlr})uNz*@+@ z8EYZ)Q{!C5}MBWh5!Hn M07*qoM6N<$f|TR882|tP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox10.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox10.png new file mode 100644 index 0000000000000000000000000000000000000000..587440479ae1e9c40c3dea6cb355b14f02df27e7 GIT binary patch literal 455 zcmV;&0XY7NP)B1q-&j=G{S_NBi87maqC1(Ytljc z7od~I8m4YW7ZdC1W+yam4#qMP5=<XmgcjxWM@wT7RGaR`&< zgz@@`0@!eCRiTq^?p;_~kSL#D-NDAnVl20=AE2~67d!v-(n=P<8QfCaeulOAH_Gop zz>G)vrQ1!MKPp22q9@CnqN8-E{ID%t=5002ovPDHLkV1l4j#3ld$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox11.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox11.png new file mode 100644 index 0000000000000000000000000000000000000000..87ff736c894183b5d41414a72ca69ebf2b2e7a24 GIT binary patch literal 445 zcmV;u0Yd(XP) zFYKRALV)AA+@iXI`w-XLRF4O;CZyC zs>R>H2SPA|9tj7-VP*DxpD@d^nNvv!xULJGt_x~w9kk<%aIDkyD=|*QxPPetHr!ej z$fBEj7nT-S!sl0au(7gO$maC}G?(WJ*PmY6vfqVow(P)(krrzc1*MU z4!k1-Q|O-fq}OBWaee9pq9}q^I|8$@3fAFSy4GqxGxbyeQ50cgSxMh<($#GQ3v(jz zrx!P{wlrVr-OD?uFV2+aAD{bl0Ib201;Hb%%)S!;mL$3TqJQdksri)?z(=s}etAI< z`u>HP$MvZI)3q8rbUNu#;9x~j!1sOPN8Pt=oBkU%n$0x8Fbsr)`wtBIEN;~OQh-dw hVAj48;5WqqJ^<#bDumk96b}FZ002ovPDHLkV1ivLyyE}> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox2.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c13a11bdbc7e4471a64d7eb5c9417609dec9d19 GIT binary patch literal 438 zcmV;n0ZIOeP)8@4FdBc)(Av*WG_B-%}5M)_K zS<^Hqib5Fcy1pdE2$1I9=oI{`8~S6O@kY3IU9KOlQ2-a79hu~QQAR{EtjEs=*rt3ivbian9@pw_-x-P=S)d%WK>NZ_(6(He@ gMRTvfZ$=8t0V0F;5+TBy+W-In07*qoM6N<$f`DkpF8}}l literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox3.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox3.png new file mode 100644 index 0000000000000000000000000000000000000000..53906bc57b17c33f25abde33b8168d9c77d14db2 GIT binary patch literal 440 zcmV;p0Z0CcP)B zGqIqewz1Ghkct?4FF00|%g zB!C2v0RI!fwrwK1P!I%LD*<3}(==fNB6ScP04*NJvGD5OO)Wui07;TS7>2M3Wm&e! zUlj+S>w0aFC}I9q0345HS;7xsIe#m_h37REFNy*brTNx&t)q;=fSkK-^BI^C0%@8u zuc|8Kc`nRrnzjVR0np;^@C3Z88@9R2V`ALf<;%_00$||Tk->`GKc;Z7r!jwh_W-Ad z`<#C%9on6KAD+i!<_*JuD2i5}0BV~&vG+KBh2z~1=0B%XZXJDja&MCf=js2XuJc*| z47|Mk@x5Me?%!K|wW~JY`3dL<={KVzq<-CX-}l?E;czrs1UQaEFnInz+0(dn*Bb$- is==atC%|t?0(=1o7WjedZvZU-0000N_#uJRY) zX5zra?BY;YH<^fWb1;^XkYHjNH0?$_d&E0A%8xd^s>6K~0^hvHd!KiAAi*C?00;m9 zAOHk_0QjE(mSrK{jeOtVS_%L+Hw*(dAXEpz0FdTU6mjqVJ=6jO0}#hC1VI3sP@1Mi z{i+xMP191z&fo;xs~h_AsvbAOwW_{6TrB`jJUh~9(fh{)4)#>)uWujV z^l-n?kM5q}Wjv+Q#B+?W7{c&cb+$+=80pRAErojq?>L4h9ym=4=%)5UNRe_)Y!Y~BS^I#Q<<2b8d z76qUvN^KG=;rgurczbkRXMO>T^;-eXZM(5~nx-HK&9AmAj-?KV=*+U3@4zQQ5JeI3 zk|aTrB+R@l%M~aJAa8Dsj={dXCX4%e+!)s`4p$3+6HgCSQsnL-g57PI_^X?HIN9H6 z^po31IM~~y*89G{{0?BPqbKqo1TS#3^-lc9d``v7{&hC1tjDUGycPf_UQB+xD2faJ z*2@>C?mU8x!2q78Q*vgis%Bf5`@V6D-FJbS^M`E`lVt2*2l0{QaZyZ5F8s-N<#_l^+4%=9;F#5`>x{N&tEDAPAUu|Jqayq683zA$Xn#%TOH0 z+4@zL02D=OOkyRxek%Yz9$nX&U%=w}tpKOCO>Lg0DF_1n)po_P)P5hGSQh;bd>{l- z6cH~;5+q5&%*(P|gDL^!&8@*9*ymTIn3XSXt`Pte9`CE9=RCt{2lfO&DKorNHkR@{+L)JPuDJE0g9AiZn#Vu2iR&db% z1=UGW$&^iW5v;45nWDHkh|O365o`v4DDxGx0q&3pIWC-?3+_+v2u z2EYIq00UqE{}VvdG(@|RX_^z?0>I4`MS(F0B|$_0!sd?SQ1AZvQzH-&fOfkLmSw>> z}&w6;So5_6D-fX z693liM&fb*-05VlPtwQ;_M2ax=lOwuq2_Z(FjX$YW2+U60w>F|47P0(Uo>tQM)ozV z)@nh5uImUV4;~oyVP4UADnO`sGHss=@S9=)ADxN^_S2D0EdT%j07*qoM6N<$g2FJw A#sB~S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox8.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggbox8.png new file mode 100644 index 0000000000000000000000000000000000000000..9393d8afad3daa86739b51a67580defbd2c92179 GIT binary patch literal 464 zcmV;>0WbcEP)*TFhK+%Ktk?%uoiX|I=qKMoUM z0!)AjFaaj;KLr#;L0LCywOUgn3E<|kEW-qX;v@nBesjYxGVlKRQW1%OfN7f0Znt3) zv2EMiKb(MoD2lN~Sq1M;6~LdTSS+IB{cYIVIV9s@{%KPGfxSipZIlY6>8W-DVNQzc zx{%A!Z?#k?pxt^s`5$;k2&T~k;aXkKU9G!b( zwWbqb9H0HoM`gS}RR9}qu1I9j^_>Na^8(?s%Uf7qUPxr^>K;ljmb+{M_wQ*T*Gt1P9s|a~wC|m&`cz2xjtmcH6jrcXt&$YY&KyU z>2x~b{=j-|pV)C; zV1418@Q3fm=7;&U+oi5g%E%EMSwCDT6#D#@8)qKDT(JnxtyXvxxLB5Dux*?0r1OSh z(63>&RtpO%l?uYe{Raj)s+)8^RUpc6ao(IM@S9-*UzckY{8v{b>;M1&07*qoM6N<$ Ef_N~+{{R30 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggplantparm.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/eggplantparm.png new file mode 100644 index 0000000000000000000000000000000000000000..5378d48a6ca1d59783556e6539459e316c03542d GIT binary patch literal 734 zcmV<40wMj0P)7C{{mq^sp~>AkVUc!f!M~cogtIA5|s)O%t#g$6eQ9J0n?2e$9rEgDbywz zL=zyoj%P}25oVdyYm`2IKmi>oRi3_ycsABEuc zgc1BDu(1Fv$l~u?3NrZ&)>hUKLBzIT`J8ojCKAzX%QAd#l8@}r^;xtYK1a6rY^-A= z0l4_`RtCxe0Z{(33#=xu0!8{IH*FSBHC^sq4l7v6!fpm;F>{~*1hIU15!iq|3SuaL zBYw%>6XuwF@feP1mhPHiLgbE~=>1nMYLlfy&|X19*96AJNCzrUg22K)rb1D&bW@6R z8yujS_#z&NwiIJm95+sr8)74h^ON(mGB;?CYXH+U?e+C-ph{LEDCb($L-CKzzGz=8 zztzAB333}a*foyr`e(UMwN#|3W-J!_31X-Nji)A}(-SCGdqwlqj(dfm%vBnqM6GE- zx}zoz9a~*h5T!gh-yWQ0@EQ%*4sg^y7-;NiXuqDI9;@_#tpSz-{ca2T9f54Njranj zxST5{DbLV6JEox6S|Usm-!rLJZJ5mQ0OfKSsZ>frd}-c*UJ_6)ewQ$!+1qpT!YRCa zHBBPdpoWEf0J#k;&JL-`B9?BQlr;i@0CKsUdw_I0&Aqbyem@ck6K^{m?C$L1%(wfp zs2Zj_*XPI)frfpS-cfS^iK!IjITGGM{c8Y~N(tR=*Qx2g1-m&1XK$skS2X*|aNH zbtkwx^z7Webg^gs=6B-j!(!Fml?V4DkbpndKB*1Fry$%vF2Cvq0OjL40LSgiFxs SXU~BCXYh3Ob6Mw<&;$SjWPjcO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/enchiladas.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/enchiladas.png new file mode 100644 index 0000000000000000000000000000000000000000..acab1bf72f73abeb13c7adf1ab84d7707fa5b2f8 GIT binary patch literal 774 zcmV+h1Nr=kP)5#3{9=X*z|eNecaf8 zNnKPb@4)5Wn{#;I?|kP%itvv^2hag@03ARFSe*d3UG?gw&N5g^OOX2Z9Xl?*GW-<) z67J}ngc7tP8OS0H6`vB*c;aqXDR19xK$UevuD+ssU`4Rs0(f?;RGo`9Bi2<8rPmIr z{Vn>kb?^)o!+SV|*r1))O+LzE5(x&CK&8#b!CDU43IY`bAmIk77z5SY(H2i(U;G6k zvrbGYKVaWtL3vRIk>^c#<16L4WWb3v^&{|l%5qS{cM~9piK#Cbxv))bK0mYoVp)K| zxvlDl2h*4c0u$_BYfB=@b|GMmx1uASLG7;h2tBT5;={Pg969TW<4)yHSbJ0aJCu(N z)^P|L&vLN@fW(^|4p@98xp_Xk{*LcXiFL)qDU!2UE>3or2REa}XF;sjgf^rQV&^sn zL3tp{YwW1t54IqHEX(TWTL*AsAcQeR>*D0W7Kj&LWnG`MRm_kW;UZn((YI84ReV8z!-zl&NS1AoI#UAn=LuT zU9$apa3n5-=e*ajj{Rn4-!14sG#bVJ%YNKH<>vS4nVBU}1axGt6Er5_6hZAd-jExW z=voLaRHQoAV);k z^Myx8N0G^7xJF(80YN)~7>z~_La~uKGe2Bx38w^9M3&(?^K?O7KHi|igBALn;+uaNMH0EKyYdq$XNxt1iBlltTUvN#5|@m;B9ZduUh&zyMSNux&e4qY$Fg2!NP~ zY{JjcVhiR-;S}auuxx1Q3CJCLo(D?kxpu%l1r~sHwSLB8`Dg)%$FdZ~Uoq_e&&9Lg z1SkuNA|h5Q7QnjigK&Po16eFUqz6DL?79dCZoWQVc-@E%Fk430ZTx)Xs-=BEYT>(& z-K$YMK#)W@PFENW?NUq|fNDD7?NGV}rV(jvM6Yjwv7jie7UV?}UeW3R^2dWf>1RwI hK!t+!0n{V|a0jlZX9?oQZlwSK002ovPDHLkV1lP^hYkP$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishandchips.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishandchips.png new file mode 100644 index 0000000000000000000000000000000000000000..364737b59b542b80bb332dbe905da0f5df3f4881 GIT binary patch literal 848 zcmV-W1F!svP)2%u0NGX0IQL00YCB zI}nY%LM9S4p91o61vck$pECr1sMq<-%~QZcFT_>sDP~sz96*l66-WaKzHpgl{0l;f zd+LIBnBb#v;B*28j#2_LT9UZiy{nk20-V_~0DXNZ&IREP5wLU0+Mw~t0bqDs`+Ea= z*@7!$IJE_-5KUtHtALC~C8qVbxEh9gm_U@dyK_jDSOs6D>~GNg$#nuh2d2r-(Xk%r zs-$K}*cQQcyU-qm422}x+abbXQB#0|vn?+JgM)A%C)j8Z#S-A|w}SH>Fk)B)!_~SY z5W~48EGQcV*4N7zP7$^MnM~Sc&kqLReNAO3l~iBdt*yXpfOg^<#>N>t=Xq;vz)caV zL;?Bx6zlOLh*(S*273_*2wQ*+Ut5C+1_j^h{KZRJ1jDUdCV_ftTi&u(`Pb|M<(YeP+l=M7M(2u8ORz4dg$m@gxN?LiS@e_y}FZ#rLXm z`~plHc2>+~2IhczE2TIzTKb`|(S zGKb7nrpy?_xmRq~CG@A$!1r%@-Em(k%&Z&lNN%SHC7^1MnHlxVQ!Pj5>g92ekMY{6`n7*>ZuA<_>^aoEI($ z=70I{5lnx6526kJKYGi^Fzfhvq8&n#13;E1xpOh_2=K$jKx~jBcm??xLd`xxMGgNG z>jMw?6*98AZEqISJ8VEYz>*E^?g6gIWGmeEbWLT9$E&Pe04%uQ5Nb3)0 zc(-OQA>#=`yIELQk9jp5CmDGcuzI4O6) z{ZmI6#3V%+e!oA&z^_%!@bOR_gH^X6L!9+QhU?eQGn{_6fWcHKhe1=*km1jjP@s<4 z45#+~V;~j~bbwaDO~y1!uK!bJF);jo(aONDY{w7(%xNi&EsF*Ce+{)RzLTZduO(tU8XN3IAkFaWWQ?K6VDC)xoZ zAYlIj7!{I`{I=){!?X9y3>o=43_sqzK(YMA$3I|pRR2%v)&(GdC{_)@4k@a;2j;zb z!vj_EhbUi@?Ep-NP!5J}i)hpVqYfB#0JQ)B(KYu*pQv$F00000NkvXXu0mjf#?2yI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishfillet.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishfillet.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6aafeba4ffa7d3841096dafb4c067127419361 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQLT z#WAE}&fAHGT+IPIZNV?pEUY`as~GwpM1F~=66=4U^Xk!}%@1;Za#wap%v-y3>4bXD zmhYcxRmy)AhB&Z7(7*Tvt5#k8rsjM3b}A$1li&Nk<_C&o&wJi3wCI4`i3JKA84_%l z=Rcnrb6qt1vWZCBLXAR=hT{yM1o#eLyx(-JP~~{xkzG37J7f!)c^nzK7Io}eXIv}S zb!tNG++`=vRR3ftjSZfpqV$L3S>-*=6`>6Bg=`)vk#4DxcJFU|-`n^``_NaO8@m{J zGH;i$$}rY&?_{!7Z8%c+=h}sS&KhN{1x!H1@6@wy!Jd0D=0Hy~c)I$ztaD0e0sxHh BeKi08 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishfingers.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fishfingers.png new file mode 100644 index 0000000000000000000000000000000000000000..a607ae660ac886f2ebd9952a5cec0aec3fe51123 GIT binary patch literal 431 zcmV;g0Z{&lP)K@^2gPy~xeDiL7=sf4_MK7y@aVI^4FBXQIn5@S?3{1!J$H5)|EvU%01`j~ zNC1lmaJ|1#ZfC3B8;i+D<@?L*6Nk62jb8!KoYztD4noi*Ypv9bX{JMFE#UE_Q_4Nu zBLv9W0)bGCxiQUmdZ!p(42+QSnQMF?AA~alDg-xH%icZM#potCLW)8lDggYWw85q6 z+Zb!>-8lp*5CW+~ur*s}PezDZ1#}2KY@5v`jOV5_H%T>D^I(&)1p+}cO8Q>jU81pf zj5fZj0OU1DRjxHFfI#pn)sWCVU!9|U)JOB-9>XGsK-%OR&!~e)Ldi-{G}p&e7st~T z#ORYypA3^?g6IVZnGD-mpsv}17*qk@WY~TSSqpA~J{d7`1u-fEKY7{sw0N)M1dss! ZT3`12$AFgeeg6Oe002ovPDHLkV1moKvX%e< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/flour.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/flour.png new file mode 100644 index 0000000000000000000000000000000000000000..5f97bff67fd0121d9fac868c61fd3070d2ebc69b GIT binary patch literal 457 zcmV;)0XF`LP)VQ!Pj5=V{0YlFLO~pF@38|^;y~0Qn2Y@V( z4%TH5k_%^;++V|xndHo{=fEWf7Y9ACJQDjqv5p|x0mzo`*f^0Px3C552oMe8d-&%A zu_KrbQb(*KND2X%<;dXOqm?K$semX4z7WUxG<0kh;jhTQm_Va z@bAU297H!?B-wuA900Nul*nKJl=quUbb&r*09y*9LE<0~9So+ZR}O$IM^0oQKFBhd zI66%VAn1UrH{XM4Q2c{(0xnCDX{tH^1VH&41c=Ir3$;Ns|@o!rDF#V9JRKPZLZk0G{&c<;)U=#-?5F87wZKEl1v_1$qv{BuZv z1W14cNI)dOX-V_^zqiZH#Ge2};W0Ih`I($A4=*YtFo25RHab`-W}vDnzDA2Yue?>U zwPfPSX>mwcL?FQL;**&nB(g=^RE{uJSmX%GAwL}&5vm1LT!h=G;;~lab2FFXV-!Rn z0PQ}XP42?xf54BRC~bC&+pjMAiBK&N2%4AA2-4>H z@#I7Amc$AW2pR=MEEDxTi2NG%^8gJ5FsP6K36OwqbYGJu@D(+S00000NkvXXu0mjf DI$h25 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/friedegg.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/friedegg.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9f9885bbb82cd6c03dbdb65144691b475bfc63 GIT binary patch literal 478 zcmV<40U`d0P)?_b%_g-yMPE z;EyE$1b_e#00LnA09@B)nx@gZ)siS02BX;P^`KlXOTPlZjcc_UwA*bmHw*~(>tR+R z2-~)Sg~|ew3Lx5b)O@f%qKIdvIhX{#i+9pMBm#Jz$JQ2A;O3~o1lX5%IS`)^-r1Tf zvW@cxP*pV+Bo+Y8ecy-r>=f-AjRshjMa7d8&6g%~fHkmI97N&-WLbuV-DB9Ep8)Ib zjn10QW;kk-*1TJ;Xl`$L8dml%sYa4w0q{erR;%=s4zH--=Jm_aV66Ua)BA9ZqeeZxeo#EU@yNK_?LrU) zR4X$8hrq}|F7BU)xt)Z2X^c|=#DQRU->Kj4r#8+6FbeXM8oz&m01yBI;NJm!0xTY; U)g{pm$p8QV07*qoM6N<$f_S#gHvj+t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fries.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fries.png new file mode 100644 index 0000000000000000000000000000000000000000..e20190c6ffac25357bdc205db251c3ade988d477 GIT binary patch literal 593 zcmV-X0Fj zCtDjYwX@^$ifo$jg(+OE_IDS`O#0p}w3Ga4HEGlBK8~RR#8U z_K`?+!^zpWI6aqH!;ml@Jmc46$L+gdGqZ+htOa%T_1N0j3@(uQKcEzrR#;6r1b1DQKW&hR-L3^vd8wpwS@Tn5R!@CyeB2{ zK5)EE=W$>o_-X*)sMzs3zHYt+G-_+zg7H%%7iv=2`$h#MDfJ$L3d37)Fm*9sd37v_s890R+TDb={@{q-MP> zVFr;{M{6>>r=kCdeQ&`+!Cfe>C(xF2Iv8O}9qaacXaJ!>3XQ7q_!>q4{~F*27Twug T_jkIz00000NkvXXu0mjfL_F(V literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fruitpizzaslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/fruitpizzaslice.png new file mode 100644 index 0000000000000000000000000000000000000000..147ee3cc1d484cd7c4e502e17d06af9aed75e868 GIT binary patch literal 385 zcmV-{0e=38P)VQ!Pj5=V{0izBWb-<_thK>XNpGy4CAoYh~ zSHOJ+w+)I6505@$koU`HV0gP4Q?YO;!^2Gz8RV^{;Of^+xWN$IbDEJX2i#fX^B>H3 zB@Z+VA_lgc^*CG&%px!Vio+bITp@tda-to86`=VXZaE0NcmgC=Gu%D#p5f`k2SCfO zV6~iR2V6Yy5=<-00f}coEl5$pAR)uR@Y@pXAeb1;;y2GZ@mfx_13;P$pILSV1PIR6cQkxgDeO68Wd8*T1>J7&>aDD$gZs03|}06 z!sQuA1SBUym?QKp#2M~Bdd=WAO_gEYsw-q!PL>0Z9RXsiglr+pVu~C9a|8nwz|bj* fM;$Qg09pY6Hd=*kL+XC#00000NkvXXu0mjfW8jrH literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/gappletart.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/gappletart.png new file mode 100644 index 0000000000000000000000000000000000000000..897883a4b82cc60df6a41299601dad22ae13570e GIT binary patch literal 730 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 O2hi6x)~eL7i}@dJb}F#| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/gukhe-fish.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/gukhe-fish.png new file mode 100644 index 0000000000000000000000000000000000000000..d29fd2f9a2955f6cf763cc8923b3af749eab3d43 GIT binary patch literal 757 zcmVLNn;UN}2v=RM~HN6aWQ40Z;%G00m(A13cdWNiP7C37|X=7@Yx%bJP1^ z3^?S6>aPJ@Ef1yfTaAbfeuCCqhQbpUP+xO^AM~IclEbzMxrHX=7}q2A!3*D;00@Re zDg06J?|L=xwh~e%kcpFwV^aA3aH1|7@Kvu0<_`Dl;}gSEDrtvJ~74$b>Su95W$%oYP*U?`YP z&Xv?zc^`b-k3J?U&rO7<(8I=tDjj@1{cMkp=V+dyL1Z7|!b_z5xiVp~Ktmct8bCBM z%NNK&P9&pVgk4Deg4UUfvX0{kDXq%s*kqbUMhA{v9O0+aTS%o-q;iFS8nP3=hODy$ nAlrg}9n1f}KmkwymOa2v$e8{e9f+Oc00000NkvXXu0mjf&s0>D literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hatchling-surprise.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hatchling-surprise.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2af2a11d567ee54e2c3449dc61bf5416e1e9dc GIT binary patch literal 688 zcmV;h0#E&kP)cL9uLE3{54<1r#E9BxOTI+&fKxeoeJjklX`Ux`cVX9H z8dAAbEuz*34f?*44@}o}{+0?cvsq+r8#X%D&wiVk91o zq9qvLi-sdSlo~)R7DEQ`bi)Ji@$(lJ&kgk2y(X-#^ofp{Mh#5!iu|2TvkQZejF9SCjYrW|4B}2dK30hh5*x}mN%)}Ju z{v`mJ97VEMwe;&7Cz0~leh{78x;UotZ6$ClvEuXd3%=I31t6oFnlZqyS`zhye6nuh z%IoJ&u#6i-$>$5|dY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hburger.png new file mode 100644 index 0000000000000000000000000000000000000000..e19475a9c6d0b4e230baa859deca3bcfa0b42fb8 GIT binary patch literal 726 zcmV;{0xA88P)` ztrSQ^blFvxUe!Mk>q6YLD|!TCA%G| z!~$?&54nX;F&Qi`-P|B$0g(8)W3_1PJuM2;MW)i!A?139GaZ>+q+Z~K;0DNxlUQC@ zZ90XdZRC$QwebkF&T;e~;)CD;RqxVK(fC^TS8XMit__Su0hj zKr|XH#FH>ty{ZPby>eh`l>irX7MTbEf|$m3l@jfpIwThoc3DDIAY6YtaEuVU zsls{tFL*g}a{5L;VzAi!eg19fbyK{tze&is*| zYFPbqmDz~MhKx^Sw6Tn#7DophXpPI!3OQ80`!K~|j5lK}D#jLJ1Z@QE_f>W)CM)i0 z`r=8*re~2Y!hE}}{?BEdi2rmPmvh>!2|y)H0+0YCfOQA>4Qdz)IS8?mmH+?%07*qo IM6N<$f(%_oU;qFB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/herbsalad.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/herbsalad.png new file mode 100644 index 0000000000000000000000000000000000000000..015b56c0129b10ddfbcf0df2a157dcfe42513643 GIT binary patch literal 686 zcmV;f0#W^mP)z%1z56f*og z&;Jy+K$^jK*9M59Xsl07hm`zuq9IUS09{xY)dgcIA7V)v<#)izFo&T#GMbhGFK-Jd z^&CTN=TpSfG7ffdINCW2es>Q+72nPoIjccx09c?d{P=m05`LHi3HbuRqJ=be}kG_y+X{zbVjPHL5~cH886_js&-nsB3vE zr1u4k-5903mH?PlT160wl%Zt0v82pcVqL)OH=8bA-THeW}AhFP)grtX3P}(M>MLKxC-{rl_CAlP* zMGL(z9KUC<6K@Al(=MnIABSnI;Iw0J}#e`XR%r)RWce>n0EF>$WVyvm4Fo!_=83Lj z?&WGjt|%uAW4g||0g$;^sh!!wsXMsL{(y%?QZV`yrA5UUYrp^EgH-SS18xd#JfOr8 zv)P^ofUkvbra2Y(Jl>Dc@r7wX=J%2^4wLUNlB+^P8Ykh~2(o7HK84k>daW002ovPDHLkV1kfT5m*2K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotcorgi.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotcorgi.png new file mode 100644 index 0000000000000000000000000000000000000000..ec064f5f7c6c433b4e4f946b79e3cbd79bc1a341 GIT binary patch literal 582 zcmV-M0=fN(P)fWgM)Ena=}Cv7iRwl z{|NsFXBQV4Tr@Fk#L+=;aUszJkq~}Weu?*ruPNoAM=6pRzDaZCc)joEy}Rpm3FfQ? zzyjd^0bCpgd*_*=G#3Cg-w*gEf^fV7jo$Y}@iSWkqE&DVfXa`;_M_1jf|ywak`M22 zf4r?hP#+IwEWp{(ZVxPUdG{iutf#yb2;VGc(t;`7!A+8uiQmN?~ zlkvohP`vab)MS?jgv_}BB$4dRDt9`dxLwc!@t4t5+pth9Yi&APvONYD00+c*CAmhJCv1SJqV=3D@( z!cItmdbL03Ui^^z@Y8Ju!mM5Q$xw$b*wNT+DEnD5YTsz%ATqQourL3ZgK5MCFjfIC ze67;fH0#A50z8bgSij=jHz7gLJwOq(lg}hPj@~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotdog.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/hotdog.png new file mode 100644 index 0000000000000000000000000000000000000000..06aa2c7881fde7332ddc2776f58a5c31e1739fa7 GIT binary patch literal 860 zcmV-i1Ec(jP)L5N$-8ye?~f81b@_-k%;VW$K2A0qz|^!KP0eN$ z*~=06HIMV1r`YV#*i9F5SA>b?HnSRdWo71j_?S+k;*kq22bNOqu_*wN@}?FC&;s}a zlW^YEbC9DS)EKdZP=CUJ0-b?JPv$hoC+7fw%v)EEpwwXnW`J3j4?|iF8gG;%7zhGG zOE?WJR$269o=I5)kg>yShiyd-?_3z(ryl;EQr{ZV10#OaGpJefDj!Fe7nXarc=X{= zbaMbA-E`Kk@dxc@p#EGn-sqN5dbkeWPi}k}pF*Wu1?Pj$d<`9iFc(_zM>Yl^jB6W; zd1Yh&5-coQr%ORQe6X>xk@3fTE}eJbg(6&IXHF95P7=|(-$&3VBfCyW=Dfg|dhbtj z;|j?Hy-|;#6om6pkVnbS`nr)9n@}qAbkU~-NHo87+k?95VmOXh@us2+{N(R1-ZAhi z=DakG#;!2R`VH}dOExE^i#}}z#0Dgp6%@5o%7S!o5hkNO-dryCOKYM|TuXX6tfVzh z3-Il$hqqJ`eaXzl1*koyaPz{1>y_MG5{)VPiLv#~Qvy({?1mDfzTSC7g`S5|4iOG9 z15CmM`K)c8B&&+yWv8 zZ-*w-ik?^Ed&9Q!|HQMrHT(VvFt^GCXr9bhoGpE0drgA4+TO~JdR10~7heyidFCf_ zHHdWZR!H}S9{rWHEp-$hDcgnUaKsArK!3ZvejQlDXnEV{;nI)Gr%e02l~&CTws4{W&-0 zYvvs>osC%lN_iJ_z!aS483&Q=IHpN}p?bT!hk<(nC7sV7VF0LH-fB#eBlkQ*9UM+x z_WE)N13>c<`nxRca}MH`r2Bob@(`BRm8YI(WUL$jKQp%&;Bq-ap?2mp2W6pZV*~>< z%~fBII?xV8+BfGT|A&ADBlFGXeXOuQ0~DmLK{bz8U6OsbmOIT!5(#^6H2{fHS=Uddy<&Nas)fO}i@l<-&3dlxK>#iY z!5~OxL8#&Q?mh@$2!=qG82<`@3lgIH_#}$}5nzqJ0SiCA27>i_;Q#;t07*qoM6N<$ Ef*HHIe#?4uYOK55Q0+IR|8h^Q#x-AuWw3q+-Ip45_MxE{| z#j9p(KC4N8*4HcV&A{To@J~F!OnTMxTNx(i`zQmrO11-g{51(>-2&U!JphJJTL- fCItp4DqwH97^e`kKKM5i+q~{8kA%Iben`bKBV;GoRngZV>+*0uX=zb{9}< zSn7AKS-;rZ3V@pDa~Tv)4>0<0kjsXbZ!E<{umRM(e0hTL#L>?`&4KF885_X{(9IXN zhjiS)U}Wo@>nbFo20}&vgljVDu>h;Rdma!82XJ&4()qWs59##hdNOow-6^mqKzn~` ze`&znR(cY2dy2`_MbzY#WS#bJWvNo}7}J@D-f-bJ{&bOw1z|?^@$lHepMC>WoOay0 ze^poKCZ4-9WReD6-W}Xl65II=DekV5>}DGUY$^mG009U<00I!eH#D$X)dLSCBLDyZ M07*qoM6N<$g2V`#(f|Me literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_cherry.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_cherry.png new file mode 100644 index 0000000000000000000000000000000000000000..c4bde3470fbf58509f2cd1a939a6894eb3207dee GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq{|J z)5S5QV$R#id-D!C2(%oZle?jpIWNPZD@Y~i)E>qV&5Br!6%TYZGFNCUaw*i=a6YDN z;vA*BUVk_;ms`Fpx%D&c`?ce}OBuKpFns6UFr(-0|J~o8p4!dDF#CHG!(xkL<*9}* zw)}s$R3M4LtkP@OiCoq^$K-QWr;Q9-BpN1%zw2PP+J8zYPGV6RU+n$%k2W@Hoh#;X zESR}l`EZ}%i4$|CMps+eb7aI{U!>PzeW3Wh80(>Fjj9u-Oe(Glb5z(kajMAPXCZU) zBwRK6O;zm{`0D=G(U$7$?>J*_Z>jf-eb%GbFR$1x*DU+Z{425GR@?NOZ>+LURLwnq lG%cOgV!DU}BNROlzo-*)JpF<2GGItCc)I$ztaD0e0swkHi|+sc literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_chocolate.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_chocolate.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9532fcfba4088c7d9c6099528ea09595975f91 GIT binary patch literal 378 zcmV-=0fqjFP)0&3$Pk}B^sz(CfcE|_F0;%HF=*R^eYVdowcW+JpuXO zpI#E!4HHXVA_$x6>+`%omM!2r*5_M%?Rr{(>$}I=Ank~L&jBw=BYfJ{$oTXNThGpo_`m4PoGeF^0>VhwWTL8CSPs?PePVY$^yq00Izz00bbw Y2g0Rf>2GZw?EnA(07*qoM6N<$f*dWLqyPW_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_cone_chocolate.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/icecream_cone_chocolate.png new file mode 100644 index 0000000000000000000000000000000000000000..91fef3dadd4bebe2dfc6c48b6e3965c98a081bd4 GIT binary patch literal 424 zcmV;Z0ayNsP))nG%8f6;Gzq`jSKgE0~bE6xbO*d zso>5oEK-|FO`1%S=GQyH3NAA=6=CjXCTHN@k9%frRQz#B00|%gB!C2v073v)7pGNP zl=YsiGxT+>-uJo+Zl0!{RslA}RVwC3>mLZm(!q6p-ULFZ1J{=$JWSqyX#-owzG>iP z;Wx_F7@+)K&xc1C+XiMn!+~YM)VjEz%$ueY>p)HoHpzE4OzPrZl)xk1ux*ep?E>7A zztrw(e0BnbzIpMX)5oJ5A@IHWyj1`mEG-bw#fxd3#}%ea7ipf?deab|1FJZNswmjg zI;iYpL@WgR_}m?U)l+duPp{;cP%rQrW+0oK?#u%0!Y#vew<-6 zaIgsCTH}^Pr0)cPPdYyFW*&nWI?kX*Fz>KCyn#0#W@q0h_~VcO36KB@ zkN^n~0vznD_-=2+#!bgVG_10*p#`ybR18cNFkW0!gQ!~FA4DRqgXZZx4?<`McDJ{1 zlfU?tODAz&}!H^C!tid%iFj{2-sLT$a7;)&)CHUkJMq&}PU01A*D4<(^ zz$f_x^bq!}XVL@sw_h00>I_h`dq^*@638RVRhu4cXD}N8?R2!`-Ih*a&W9L?cEQ7w qGS?p<3>YIYf%u=dp#(_4B;yMQ9g-e&C$KUA0000n^nKoADt-na=-_|Otb6|cD|j-n)q=DKmY>xUqCRKsOMZ~IxTz!K*jB56Xkv% zX&9o^?cVZ$;v(1pD((&jNOwEEzZa*d4To$58$dVD;~3U;P1b9jQ&|Sf^I+IE2*(K) z;4$|+hv7J|+ikr~wp+bML7+QB-@V!eb_Zzgr}(CsO*{T^nudX)w*pT`2w zt!TzhuZR42M7&(Wa9t#;70gBh#YzQ-*$f~32kwW5zOSeo=fwh6tA%v4fj1t1=NVGe qMVqoVxlJ zzD(XgaBW}0K~U78h(gU!q_s_J+HmZR(!r?*YDGBT5^}km^E>w@S^RMXAOHdUU%+Gi zoPMr(M}amMfNE|!yI9;jMBIIWwYK-Y4&ox%0M*>xKE<&21cEkcuClU!!A7tFYVu_G zj-2BmZr=l18I%lQENwv7bvRom<6Xhj^;m$(y%Rw`=&hw z_6b;}V?@t2WEO1Ds0YI?rPHe`TT||h4LA@*-QbmiU0&4009U<00Q^~ X(|lc&kjPI#00000NkvXXu0mjfVjH6b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jdonut1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jdonut1.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f7755a6d401f16da1f5c567d7d74d24a0463bf GIT binary patch literal 444 zcmV;t0YmPp@6Jhq*rogyGYZTD0a2&7Z69JzfYifW~Q9SyrMo*LG2=RsuxxUyJ<4U=RwZItjjb#SNas)sC1mFuj*r_cAWUjFG0(!eV_t7_zl(d% z{hibOeD1x!(+$CYjw~Px$O5u}EZ~>GTzS3s?^?y;NYFnQ5W!ixMubn8SnaxI4&jCh z=!|AI*Y?LONrYQ~!dsI!u>PS1An;IS1gldx&8A9?hM!~50bVH*TmlrHmzxixvKT^i zBzE$rhg6j>??>w~lnZVQFw4X5e-T9Tznw3c{N~_!1_$e4_cE{0c z7=WUq1kPy_gBR>~KlB2gn^1(8yJukV6hbYS10z7QWo<{c2Cyv*B0=@-2~Hz6A&qTo z8-|lYta=u}8!mz0N0;PCBve{xp7dI2%&EY=Z<4Za4vzVUoO%}0@>pa z5;W;#7uX!z=py5JlOCUzD}BI5#|_pT2+S^cDPcKvAtmM(N`)OioO(8AISqpa{=vBg zM2V_&cn>dvVTl?hl`x-q3Z{_)mn0xc&~s6o>(#$ND%dZ9_rd}u5Xi^^vVbgb4}d$z Uo;u)G1^@s607*qoM6N<$f`?4}m;e9( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellyburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellyburger.png new file mode 100644 index 0000000000000000000000000000000000000000..05b8471852ee8365da368bf0ebafb7daa30f2cc7 GIT binary patch literal 549 zcmV+=0^0qFP)%670rSkY#1Wspw7!PN zfD$hAG4qm`!4xT>qc$ny;(@h5ZG!+MEtL?28`C)lPEHlx4e&><5du3WrciWMdA$f+ zNZ@rRYdTmb#t&4?&H7M0tKvG_AdL0dP;`zvlpP+mnE(SGJ- n^ikyN`J3MZmVhPjuLNEIku2IcjyEv500000NkvXXu0mjf2J!02 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellysandwich.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellysandwich.png new file mode 100644 index 0000000000000000000000000000000000000000..d319cc8792d7688d2d8807876896911d87bcf1c4 GIT binary patch literal 973 zcmV;;12X)HP)RT@;6s|7|f?mG$VOdc^UqU3Iz#xJdu@~DKeUpNu1Zb+(%S(6XVV3zQmskl-MnMUJMg@p`n!_LhcIDwQ zkUL^J%}E846u@E0k*&4Wm}%TP7F_gtqD>60w1fa?4MC7^vzMa(gBMModz0!TWd*v< zHN#p9D?iKmD4aA-Qh=|akocA25L$JZb)X1vqET=q zFdaie2V_cc|NG2Tc_s%q>y4-!TCHr#8^N_>Ew~@}ibJbgQF;Cp-&ZFHl8h@5YtxV- z!i(K}PQht?TVFJN4Ui4Ef^Zj0@B~>yaKDT|ax}1Sv)7CRQ8NB^-N_pi8EsOuX4o4+ z%}f>ArcwcV1FW?>(7EvnDhx&x&dtQ-!8iO+Y4&`y3lQ>Y4jEO6szvw69zG7h9EkE- zn1Cf$ZEzfGk?pQvdLm@Oh~BNax1S*ZBM!_hz=B*OE(*%eKMl?SgQbVV3JNbe1Ce$xF0*mOWb43vctI&g6ME+g> ztN1e-Dw|PWm@TR`mJA7dN);doaiA^~l1q!En5w&RqTYlvr~PnszF-iY=rdKu6_&@X zUnbVx=gd_pgHH;e7%vt|t}Bkn>sA%A%B|IU&dMd;6vVQ&?OTHOMj!iIObdCmh*s?C zlYi~MAQ{M6uTOwT@l>DYYFG!^S}ng7I!g`~KmW)Y*cFz4|KBhb2#p(ZHE|HyXzZ@& vls`s(2|zJrXKU-jZ`r^1O*jqk-vRsp*Xg9s876NM00000NkvXXu0mjf7A>@V literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellytoast.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jellytoast.png new file mode 100644 index 0000000000000000000000000000000000000000..f04105f1cf8787a5be8713aa3035c11d4003e537 GIT binary patch literal 669 zcmV;O0%HA%P)}*GI$Z`N200+PUs2gAsVCK({0IeYaX5$V%{LLEHOH9T0 z3t}6<%9x~=n2Hrl_t^!p1t2$-#y4&a;d^EkAJfaqxL~YfpCB~>%*HUx&-a9|_Gs8JRPQVXIg06i!-lIA4JnnZCKlkyw0S~DPKn>99CVwMn=056AqtnbbU zQdghhOt=$)Ru@i2f+}+o#jQl^WbQo`gqQB)qx<;)?oGa8)B5Hf2upw`A4@inHy*}=`#I>TF9L*0 zKqn*L2U6$wvq_P;R@J;FfRuPRQ^r)J%wiV<(7zo)->^?)rR$qKy-L;tx4ZH7MOIv2 zGa59?OEJ2^>VFUX4U))YIfz@O`l-DM7uqy6SgNXlqbKI5PC|Nb9v02}}Z;GpyeA+Y=C4e5%I00000NkvXXu0mjf D-{dM! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jupiter.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/jupiter.png new file mode 100644 index 0000000000000000000000000000000000000000..814e469b112401657b4d35c91c7dfe52f8d3eba9 GIT binary patch literal 338 zcmV-Y0j>UtP)0GTW00yTV>(8fSS0W8gF zRX4YPmP3dEMsqJ87qts>F@zXkX3kaS{dqxg_0xkqn2KG;EEF4&U&UrgeUy_L#Lv#yso6G$D zoqO(mZ>9_XIobl+0@?!Jj{tG`UEKe^MrUNvcyj@S-(93o&fnnfa7E}MUR?m;zqWRf zFW+LgH-O{qByzc&;I(i#Y_wE>vbm$L2gb;PtWt+R=JhYg20zPZS|&i*Z1jJW(7zkg zf|e6%&aFx);fa$Y3=DmOWm!hc1hB79m1h3sJWz;zgXvsPr_+E_aq(bT!izsnAD?YX zfIiWL|Jl#f+U(>k!A=bBSh(#q5h&Xd&fK&BeW;#;GnZVjg6kQuUoOCFq9J<_wow*R*!bIafN#c-mXpXaC_TK;J;p-QyVCvk;q# z;=@YP&@1&@r7r>M0|6JzP#cIaJ1UkHS{PkAoL{GSJTACTZ;qm3?FQ_|6Wz1`Mko{l z;p&+7ZjRdGB@^AW0NHETcJ-A~BC0ozR}r8?-#XsUPib2~y?6kC(}&CU8B7fT0000< KMNUMnLSTZ7VH{!r literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/katsu.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/katsu.png new file mode 100644 index 0000000000000000000000000000000000000000..9e274aa1d847d1e4886439e05c420f3e9b85aead GIT binary patch literal 708 zcmV;#0z3VQP)ynv4>WJJ!RC3FGJF& z(I40u^c`Ib854K2>tcNJ+_B&@@cbTqP z5iz*u<#^BUaz3B)`~B3__|KsW=mNTcE}#pnEP+tqtl~a)zWf{xhv9a+kw_$9x7)cU zxy;CZE@DU1Mz}^_8U9Lufa+(6g*K}?+)V3FrR0dyaHRxHkjM$ z@j^~v^Oqmo|Cc*(`tq0|)ND~Q&nECXw+23+kLv_iw>~a1PkL=$fMTfk5KnB8ZZmLB z{t9CYki#6NBj3=t`#9=sqW^M7Kp{y%+!!7JVtIt6b6nHPytExgJ8ojgdliG@W4zrx z`!^si;K?^B0j-Ceorh913UJq+eefPQSi!0)@bF32aO-Yd>Fw`ZC_ajmWwslEqS1qn zZs6YJ3?Od$rofdF6ik%;{amf!V9loHH1P9z-sBk zML;v_qZX+GU_X0jQ z-FynntbF8JqzZr~=oN4fu^#kYB=^xX2UvW2`|cEr(g|e%ocWynFw29VMNJt%1%Vo* fZx6Hpe*^FW`~OTZnb5kT00000NkvXXu0mjfUyX%D literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lemoncake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lemoncake.png new file mode 100644 index 0000000000000000000000000000000000000000..a448abd866fb8c53b99d0eaf76e1173b0ca08d7c GIT binary patch literal 975 zcmV;=12FuFP)^Q5eVnvunGSyJqX9hb>3D8hME{K?0)?iXJS8 zf|A6L9s=pbCwqx{smBT-x`7ly7Xw2G4H1e&@{*KNu6Y|bAJSF4UvsDLoSE63y($!h z;RnMxbIy0Z|L^WWsx%Ie={cnUoroRy^o^XMJ^i%3OjdcP9k4wiPmqA#A-76eK7B&ziMy>6F+cW*lFU zaH`(x5T|t-bngwGaSO^Z+*pi_@(4_c8J?KIsu2LdGiR+^#&B~J7q+A#xV7r~nZ8r; zIgfZdS+@vlO1e@>XNK%wiNFf5!$kWj7z7yhWzm2xbALfUQ6C?5Za#T0%n|Eh`ZY_j zcL%r!0;9wu9aU&Z_dgH^!KCvtWMCbJQtED)gmC6IO+7;J&TXaIhc!M)^$A?kzo z@M%I}D!>k+#qEN{X7$cFYnBI)nwlV{KLG6NfCe&`OV^v8$oI;)OIy(3y$xgw_M=$0 zI139eo=)7J1*ztFc!0qHNnWfy4C!G8#O!Q917RN*cF&nH5WO*|Ii)Mp@ihsw*ZQ4f zXUf^;5oa3qMA75n1MsQ(KGIB-P}~wQK_8wfI{w>o6p)y=3W)Z#(|~kBLZnIQj|_Q) z(b7oQ)5c>;E+f|nS%IFe9;9hk&Na#xqL%{n(qPs(pr7_InohDU8Q5}#QYNUm0k5dD zPXSLl2IJC=;i^80}M>zg+aK0E1%2 ze8`t?;e@(Y=!W!d6eV}exLHvO+C<%p7x1Lb9Lqyc#!R%T1E{N?M)8Gw5-&h%=7E*}7%^iD zST%MYD!_LFX&X0-?g33$Hq?i_>YWOc-zwj?jwrRe7}Qby&?c+`h^T;e;8j; xZ8aZd?JX>4EB;3mE{i|0)$^Zl4dA~8_zi$QRB_-Talrrp002ovPDHLkV1kEiv*Z8( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lemoncake_slice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lemoncake_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..331a19a5d31524072670be0d10279a8f8867967a GIT binary patch literal 666 zcmV;L0%iS)P)aH>+Z zgD%=Zhe$UU$AY7ah=ZG!(nY0%C|Xg+#;OplOGFx?Nl$2F<3Ca^Ax&$~dlQ>BVwyw> zVz~#7gZJL|{eAAaJFcF8Tn4}Z7ytvXwg8%jCP_%E3YfU*)|@^cY;?i5I5W+=$kv@j zdv&QWL2kgYeh~IAA(pSN1gZ#ln{wfdy(|Fq!#Y2Qm44W}jif1%hfJq>aE#q5B1FY6 zgS)SCH!1?!0TFQ2!EI@>((`oLH ze4=;v7RXE@-UT%hVq_>p*N*p0HyzFgE3sHHSk&zEi+uESvpJI~?o|#^@ey>Kf6TLo z$2fYr3pF`MqsK>EDn$I9qPKdmBv_RC;sRsy$FbS0R8uPgEEWs0EVI!0fb@8P#@3EJ z!Y)H&pfp&td}8N-9&AI_3Lk>1syG~uzXL?0QM_Jnaf7kC0n&GVb>jQdJaNZw=1(Gd zBy85gU5n=~N~|@T&4k0@+5vvQUkV0;n#p9s@cdhjrBiR|O~s+1lQj zA6FEmWS;0!wZSz3euu1Pt*yVI0Wbgt;J*a?1o4U4-*hu^dH?_b07*qoM6N<$f~3GJ AUjP6A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/limecake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/limecake.png new file mode 100644 index 0000000000000000000000000000000000000000..e3031e0c5b4d5862ceb6a9de5b92fa944083e33c GIT binary patch literal 1001 zcmVv#1%TCUVTjocI2!piGVc=B&C$!RT5ZrPf!ppwS@U#U5U&8tmdDWb7MPa= z)@OmUe-Ifj&WdM`wUpZ!Tw}V|=lj;>BG74pLTl^5D2KA>v_}w+0HSL05sAF8KKy8W zk5jQ#aC`#d%nEW0v6fPX9J9==&z~5&go4h4n9b}kMJ2g%dg_K7fT*0jli^EEHTKk3 z3Q;ohB&d%s*YMBWlCf|HR+!tAf5FD2%J84T|V>{vA0Xj^4KNTMZKC6-u z$1B%utRP)RAY%-)`GJ^~2=JQ;)31J>d%2sOI{=+z?J$M;Nddk3v4WmDV2mL@W9JW; z0({}k+yUwz013N*&RY2R`k?Y~9-PBYn9GagA)90e9{C?d(2j11pRR7U@`(Yg)zwfF zuK|(Tga%T!HBSt;KRGRPRm;v)aj`({o@~He2>+peD1yl#9+?bl`MvQ0Iy8rUE($yywcA%{c?~Y7 zHUM=6Ul`1*MWYlYah@1GZ8G@XkC^CxSv0@9qX={~cSU>b2_d)>9+&m7Pzv~%b zPQ+Xua7#dx6@K9r4$A~uRW5Pe8_oDkgK(|wCh=J!H)(k7K%^S2bXwaP1+F)z<97a6 z-ihXs4urVBNIaSz+s7-ne8v8PL0m2^7UHDg6+nj|-%wY>-n_hn+?)!eZ2~glIZRyR z#1On<5-n)}o>w|>=s-Fb&qVy1l*#`YkwGu%qIy>^1Qr+ym|9|KHujJq#6HMCV&ZG0+;}63_vA=A!9WGQdfD^PQwtOhf6~Iv<{w^*GV_Wbm4BT#a z)g-C{P;*(9aXXm7==KgEHxK$PNU<=2(_sv3d4msa`!!=Rk-%Bfab!7u<;i)3g+Xl0 zvVTe}^cs%mSJB*E!){vAL(9*5WKT`3T0 znuL5~If<{o%xTB33PX4&FtFQ7UDI=?qVHNP7DS`b#sU0(KNAXtRF-8S2m%yEL7cgd zOBWAd^oR?YnNv{aLJ0GNaL`C9R5p&qV#w$7TCIiw$`JHg2BC>~ugoKOYaHu~d$8l^ zW%T{wy?Tu60;mSEsV|_di=wF8M^mcTxFLYwK~__1>~ClSm;ffg{|N9C7qQ)i=HlfN P00000NkvXXu0mjfVG}Fn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/liquidfood.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/liquidfood.png new file mode 100644 index 0000000000000000000000000000000000000000..7f99b4975ef91ca7c6c6fb94df4ca0369a6173e9 GIT binary patch literal 647 zcmV;20(kw2P)m8GDC5+s%4TLhJeji~qs@(V1~CRjvC%*N;$x$(N0Y-ST52%ctkXE%Gkd*{yG zjUj$n{{a60jsfOELpkf*e010KBLFb>8iw%ueEGS@RH^{V36SFqz}#cF#mZhxo=^03 z2|v5efpkE$0VsNyL(^k@B9%@{kjcTIoXeP53FvnKq6N^}*pOR4ITtlvuQc<$jWEZk z0)aM9FXcGe-C+w-5&-7a9z&W#lzN!Kn8eNL9sB7=n4)G>aBuQ2-PU3QyPE3Sz!wMYumGcSX9$`r86P zQ^UQV_PkTA9>hfQDJ5l(q(Q|P_>VOcA?XrRl*sZ@30HU`YdOH;%AP_C@fCR)Lmv@fy<~k}_ zgn&>r7y_|2A#6QpY5VAF00@F)tqb0U`F-O(o#nrd(Yi4=*0-$wL z_d-Fc9tbENaXi-|$9C79aH0YLYuc=zTeL$63Lr3VYJLZZ-{U4BB9R5H&$5y=UFC|Lj1iyCU!!^ hh@6gp9KeY&=@laCJp7hPj!r&Fx%0;Yi^^e`QQ4-PiCrEH>I#=eA;|Sx4p6d ze!Wq_pFc+&_!LeuKDC_rf98z31GRj`935+Q4xF7ZUFLiJr8}-FtxTSLKfZiqZf@xk zV74}1CcEd&8lL_2wW$iC0aJJr_qq4+?XqA4$cJ;ux8`sq`=d;j#yd@*p3srffA@z=ShaOyN)`H{)} z_a*MtDBAuzS#+T5Zo5SN|35$D{i2#4@^8_o`}N86@UCX{7r`RU2W~m5pIle7;t@ku g6Et)d^D!`7an5}?U-~sKFjyHpUHx3vIVCg!048yxQ~&?~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/loadedbakedpotato.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/loadedbakedpotato.png new file mode 100644 index 0000000000000000000000000000000000000000..1841e582c467ef048c6ffd220279c7f41bcd787f GIT binary patch literal 755 zcmVVQ!Pj5=V{0W@*I#pUJy^&>kO2h0I_77`2> zCkXx5FL+1L5ma};|NH&_Nl{Of1HK>Y{m*Gt%t(wn5PfOYav-S!j0#7BQ9+agZasVj zj#o8#F$Q8B0tW1NfP^DKWyD3n?=uXik3412t4zlk8XyO9NHW3sr>}`Im@>?!jsw(G zyny63hD(RHFzDI(FkD>Z{9nj^4qSd`t0w~}bUvv;!J3gB0W$a!FeE^h<@x^r2Q|pI z(LlK=i!&K=VyD9`2LX_NPA+bSbEl4z<^VTuf5u%~H~wd5=U~v*H)Qz!?JL|Nppei5 z(mz3La|Q_2|9KNVW&|;DtfbI}%VE?+X|02K~0Rp!A zml(c3X@*xyoHDgI^---hbPQSrw&dQKvj4Db2?HR<;Bo}jt79dTF0e(Q5P_8ubO`}; l01FX9V0g9(M;$;4007dZ2_Nisxex#V002ovPDHLkV1hchLGJ(n literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lunacake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lunacake.png new file mode 100644 index 0000000000000000000000000000000000000000..bfcf36348748b88bb776fea0ccdaba4d2dd1ace8 GIT binary patch literal 426 zcmV;b0agBqP)0)R8vLUqDuW!l$b z2gB)Fl}IH-0(tl+v_<{fQ@gGj1ZE5(QVIDh&?TmqwgF@-kc}PF>!cA0oHR$&A!SR9 za%aO;;c5(SuBbF#awpIqzSEvsH4+F!xZJ5wS`~m1z{`zCqNCrpfk*&wNSs&rhKeqG zkp&{?uU)^HcDegX&lj7LTgwDG-I9SH57Oh$BKx(%mvvhji~v3=PTUD#H{&EQm__n= zXs%PZT`+K`$1p2_HbnAIkHoc*Vwx=GL&OreLL~lSewNJjFPI19RKR7tfEVxrA6Mgx UsX6jkw*UYD07*qoM6N<$g6xI4I{*Lx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lunacake_wrapped.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/lunacake_wrapped.png new file mode 100644 index 0000000000000000000000000000000000000000..e62d46edbf811491bdbe0b99dc45207457649c51 GIT binary patch literal 466 zcmV;@0WJQCP)S@M*kvUg1t8p&#TEgQ9yNE5taaLO5n|{L%r5JxQEBrKET>3jHl}) z!jUKyFyRE&P?>tGHXTc`PNe2gge$@7KoLHJ_F?#NqU(A=pyp77B+B;YA41t;_`XvB zvjb-IoUG%9C2)I_zyO49F}B+bb%nYy{tTfx@gT7!FpNInOzbKN42n>@bD_K|2*x1X z?}qjS5RMYh$Mi}CTwb*_5QF2D(U1D=U%W%|BF{`WgtD*%2IszlA3f#QpG5X{8h`56 zB^ZP7Ni*YY%@e@WybU5IFo_iNb-fSuja3Eb+yIsU-ebJaB!P1%Qha($+HOD!Gq{xx zQBeZND3Z>pGoRY(r`X)k6j@ZqP33>XssQT(w&Mhxz|sYN0bYf-Z?m^Q&6+$jiy4n~3{YMhIVRPq=6+;93%67E;-&k|-<1c(3;AOb`HCxAPo4carP#Vi0RxQh%> zcdzgLE%7gq0EWd~A^vj+wYUOf%!)}V0XPp2AcSZb+Zaz-ag1S(b3UmJ9$L`vf&z+& z0O_Eh0+)p(0?=OT1>pTGpepn6TyhK#fZCgZ+h%L1i&tw==;!71Z+W=`Sez;nKqWQY zPTE-b+E&RfJizLZnHF4NZ2hDGgU9%McmuFCT)`jR0laj0@ytQ)BHGFY2cQ=63gA-_ Z-~(a}Nkt<`Wf1@X002ovPDHLkV1l&Tgj4_k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meat.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meat.png new file mode 100644 index 0000000000000000000000000000000000000000..e893a21ff71cea5d74ba9e4551fd596a88ef3cb0 GIT binary patch literal 511 zcmVWB5~BD6Jl>fG(81#=brWO+y@<*7~%Wu_OTs#O+`f)#OF@e*uHY>|Dc0u*o}#>jF?i z^i$Xn0E6%qyqXYtg$)CA)4cBhzY!*Y319-406%h|z3je63HOhq$e#!x7<=LT4AL71jFbV6*ISLKP!Ul|pl+IA&nHm2EW_~SnItOS zdUv*z-b+fL)hLN{LMM2wT7%wGFGyhh=7M$-h1=_*kV!#00R-XX2+!s&f&}{Z8uCUQ zM%$g#e$oP%K*zG^4)}dMT@bv#*nqqL2v1<@MU5BjDt}5)lxYvf0X(6_!WDS1?8uFo z6rZR+(H`;85hJb-Zr@ g3$OqSu)uHCH{mOZl$By&BLDyZ07*qoM6N<$g7$Z(d;kCd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatballsoup.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatballsoup.png new file mode 100644 index 0000000000000000000000000000000000000000..644ad1e2986692cd6e9029c89bdf4edcaf89a577 GIT binary patch literal 611 zcmV-p0-XJcP)1uR_l&U^VNbC^bAqjkvy({t18IIgfFy0+-nn$RIX8Vk=}P zViF+u)lN&F`gPcbn_-@z_t+kbBlGn;;tL6AhbbrmT-Q5{GxY~cY=;NR_nxjstwNer z!X$8%|7GfwibT3zB9;HC=97GRAds)M1=gi7EBj{z=ssq zzxE6)E`G$stu4$b;gJ^B8MJ`|BoS56Yyh9XMa{>@xKw>VZ&q0^nQgz_fSW2h3ZdC%t zqX3`We-c#Gkg;ZKG(M>3T=;v!aJ#K{6fh*{JpB2sk10QV^o;)-P&;^bch59-f;$RO xSYH`>O%0)H*IXAj`WD=@_?-*N?ZKXvY3TmklMnqZRM~Ng| zSYDRpq6E9>ri`!!5?B^gkYJdgLFGlM1sMhf_GMu*mIzA>T{vSdXS%67opZF3*xG_X ziaj^)Iq&!8)mLV3`f9K~y+K5@l5hoba%IXX(Ch$P zJFR!hrF9|h&}cvizW}LfsWM`BvnzEu>C2$DEvWu0zMAe1Wk7e%J?GOrdo_*t6Sgp%2i6?dc5_=-nx1#Ej`d|Ocn2z&{~@b zifm3-9OjV$VQqyCeVoQC#4A8bKIWW2my-`urG$n>P`j}^i*sP;Wi?B&I za&oCNM5i(7iA0Flj-_KC`}bxtKAp__vl{tKZwQ|qSgcm@;!Qb;mMy5)m*7#wq25@) zwR3eC$_jDy+{fHCOhQ^V^;OY?MJ&PGei`-ZT%4wtL?%@6WuTER#dY$;4)_YM08?*2 z8L4Yns*SZHL)9{(D0kPteX6`oLLl@eF&F&DNaM0h@gf1f!r^AlrStlzt zBae9(ZK%SPyzcG|9FVhZL&(F9SAtTZAUQDsoAw=p))5NRlhEk}@-w337Q08jGBYe- zUj#8pnPLYz`6NKv2{SPwUSF)F$NT}8+by3NFyK2v8s|ee?m$1c9y@Pu{M@K7{yFC_ zv0s2Mh)VkSe-jhpTNy~=fC0Zk{&xI(KcgVvzXN;&91HYKo;Tpl00000NkvXXu0mjf DG&n;& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatbread.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatbread.png new file mode 100644 index 0000000000000000000000000000000000000000..d2875dd29d73723d637dc236e68034efdcb312f8 GIT binary patch literal 988 zcmV<210(#2P)2BGDnkcQnq>M^1BB&m! zr;4H=jb8F0iZ1wI1fd2=5z$LNNYFz;CPp`i?iSh2(h4ne22nDVw5I*9<3678j9K(h z#4H%joIQKa|E+(my=ENv%Mk_$1B3y>07C-onc)nir#geyobibm=}yG(VQol>?v%C0 zuP!uw>X!G(2{GpSwWlpuccC@nw*e^3>%oe%h#of`U*A2GYuoK}xO%({k6!p>-<&j0 zzhHs^AumMA`r?_RQ2_*Ad>n>-cYHRGkN^}fDBcZMk{1q7vMK((vmK+BZo^8op8cW5 z1nFx3hA)%6nCko>!a6j_;k8f(EQA0)Am~S{d-($L90_eIkb1lw{zj})s_ZzS(#}MvnZypq4PzRV1ZKnVbg*cUUMN1`meN9sL@0}guPEk3qWm$dhr!yPt}-C9j>fBogzAOu(hGDU zYuP85AXMGnT742v&R@WSyaNKG_q*Lu0?qIBXWD?@iJ%fN zLuO9^HXmVVH?Ler=>f6a;Z7E?jcdnmSPUp90Wk#%GUl+#2g4&6qL~(vZM= z%zAuDdWFH0V0AzT=Rz6=7w6|T0M?%N@{AX*Tp>N+_xJRb1Bmk}pg>d~s3EG$#$l!7 zfiHl?v3(G#);|+B0glvmMPS!4HH5qZkyn^6nKwlAiZIK;dKZ=NkWoyhcvR_xZrt}* zF54`(LRf`AcXSw<153aMaS*Y~3(j}}PQidN1@j8~#VM-Ac}f_s)f~82*EM9u6t_8G zb)lfxm)cb_(jEG@KtrUbmdSV> zDsDhgIALU_#W=%2xbIRJZ)vzJLEOSs38I2lxSnH|07x%T-JO0000< KMNUMnLSTZwcg*kr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatbreadslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatbreadslice.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a85479170d7bd2266c5ac0519dfbaba1006d9a GIT binary patch literal 713 zcmV;)0yh1LP)_O*o!?B)#C!O2PsU8vS^Y8nXnDPcG)6t-p=pm?q%7X z^HvbZ{lYl+p7T5B`}zIu@7`JQpJf7=049J5U;>x`iwj^VvPGeB^!-O|?%@4N%RdF^ zty`|F-?&zHZS~%LC|_9%Z~i{}Wf;BaROW-27l6#>&h0*Zf=#UMD!yM*?i4=cr^or44Ai;F_-$M`+<{f=rg`7z4`qn< zb@4ueC?#D0)!epeo0bs=yQKmX*u~qCspAH?lc_kSaw?C~y}Ko~AMUY#JVyJr4ukyAbIDJWu4{7v;0M!Pzfc zQ;nW`6Jn*2AxP>YsJYk!uZV4~Z(xXwTgDELRqF%NU`jzT6|KOH`Vh`_x3f7N)-m!3 zC#(JFd(pt_;ifZO4LNV#KPIC>97pDtpA0bE*O!mce74Pa1&G)Oi6Krk1-Y9EgdkpD zKZ^D{Q#iKgrpUIH4M`rw4!9u9`?cmgbfgufqze#FeiN^ZO(BR|mtyd)_<_3EL(Y~; z-gVW9S6BS}?5XQR0VllOEexqPXQBD*c?JLqA&|--BZKVC50Hp_EQE-P778H*8Ex9MkDxZL zGHBbPP3wpjK}Lbw{sGrfNc4aPl#n(pL?guP;b{Et2|%h)28*!;fNk7q5}4@;>l`m-rsi?ni{X*5-05dAp&`KVG>@aV z=TLZKm#-*+Ahg5CfTPBIEF6JKXbnVB1f^1Z1RjqE>bH&O*hlX3BBD8}^iqacya@ms zo9hrb+AROK{1OiL^U0`>(cx_=m0O?eccWhznU2h++ix+3wzY7QgBY}`41`zc+RU4}Y ls0YzX|Nk$U4xj`4R3BF|$X>LSl+OSF002ovPDHLkV1h5%>68Ef literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatmre.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatmre.png new file mode 100644 index 0000000000000000000000000000000000000000..6814a4412bf0daf0fca0e86d4555bbe6ce5e81b1 GIT binary patch literal 803 zcmV+;1Kj+HP)z^|3 zmE94+zAxwOoZq>>&-tCR-|rm6KUNkX3y=jc1kl;pC2M_-FWl2MDn&N?Lqmg>v;oL@ z<+0-^Jz|G%dInCXQ*Q})21)inm#hb&3qU(gCRPB89Sseq5REQlEt%ZaHolrr00V&l z=I3U0qh$zyLh7oo$I?;+6;1~uvf;_pkEme`+YkBEPQ35O07o;fHwx%`>&J!E z9mseDVn2cYlWKc-&O%Vhg#8aM zDwj`NV-5iOpnSF$Wz|)R6HQtsBnX0`xiXfBsAj}i-Y^9~I@6`3RVh{FD9`_{k`g6NqM>R?J1IR{ z4!ga0#}RB7jjtw>sI9F*Boe{M>z6PhL)B1w4}AL`-m_g`7g4NsA)cFy*4B1RPEKNW zb~-%(dQh~ros;KnJgbHhbXyiJYHjSdDK8?@@bFX1mF`|ydtex8@7@{Eb#54dWb}jk h)&KD-&H`jozW{0tCvW4G?ot2%002ovPDHLkV1iTkXM6wv literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatmre1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatmre1.png new file mode 100644 index 0000000000000000000000000000000000000000..e29fe2a51cea8f8088a9c979ecef74f174256bd3 GIT binary patch literal 819 zcmV-31I+x1P)m0E&A5yj?L{Kr8YLqKg8xAE z;zOb@3&Fr3kVFa!f&xj1!WUnv2YU@cDWXSxSkw@5&hPg*zjOCHXNT~gr3O#~r~z;R^!0hOYF`jd``RYt)$RV|}t2Zk%rA?Lo5~p zuW$jF%_bz1Ni;SbW_w`7ugwN!T$U66*ft$$L?yxn@Z(WGQd_`0v$jYMh*k-5Jgn%J z!+{;PgjC0D|B&bNUhM$ln+X`$f(gJ-&sNBuM)q_*o`F5v%`6=Fu>KOSF12sZQEh3i zW`JTb>40oJ0K*9h{(A%PL&DmZFyu(PqEqE-2Ha8+z<>{Uat0WB9mX9e@N`2$nC--H zQ$bI1{p0}w6oRmQcRG}J0vTC!Fo@i@K!A&>0|apDS%5V_e_R4SQScmu9Leb)1c9Do zRR&1?F7&UmxHtTO|J^KL_271=gps#l^yj|;g6k=nqa9!?*WNmvbF8+m=q%E09$d52 z&oMWy+N*P_0wDC>XGLcf0;_T)YOxVT0Y;+%X4coSYDtxlB*`ivmE*+Juyz31?S+u< zQ(!fSqRUr8f*=^u6<0!4hwWUCnO4$q$MDe@PC}s&{FCfP$JC=X0D0j)K xTuMu&)M+UYWrSKb&gD<@{{r5~S@)!6m8dWTD)+hh~002ovPDHLkV1j&Bd>jA( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatpie.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatpie.png new file mode 100644 index 0000000000000000000000000000000000000000..872fbe61ec8ec2d298f2737ca8cd94a5181f653f GIT binary patch literal 606 zcmV-k0-^nhP)m&ahUJf1_n?tT_5LLxN_|RBFYqM>wEkeA=E?=?Iy7LROe?0MH~yrX0ztv z?;@_=7{hoVg4Zt_xH#Fu7rldx?E|DzVa#3+@cmM0kDEv?1+8ZT76K-<^um)yE|+t~ zxB?D`)2Wk7GT-0-3T_~k@Ny_hy%rMj39A(^)>d^!5qNWZ2aE9{ZDzV5TmhP<0hfB~ z`xzhF-+yA|$v&TuhJxaAz`-{O6J7)F-*j;6uEOE@hdcZodezHyXr|`cvMWH>bu1%^ zd*vdGK!}^54S_B{Zd0i!A$dBLjzP*MYUQ*Ma^;>HpFSf z3a9zlHV}<=dA$%Hb%LM!9zYJt(5*dauS%sd9Dsf^`X3O2=2^_z&?6tg+_@<`q0823 zL!l5?uGebLK~D82v=MYY4529m)4(V6!Yq*A??=;Ya@BU-cCg#Y2Lkj%`Z0D`e<-a_ s3LXmJhUuR{L(c>_?-2k25C8%A10YQT(g*|@5&!@I07*qoM6N<$f(mp5>;M1& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatpizza.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/meatpizza.png new file mode 100644 index 0000000000000000000000000000000000000000..ad60b7fc5c8914d51f3e905a8de1b7c5ae0308e8 GIT binary patch literal 911 zcmV;A191F_P)%hg=Nh7*_=}p#Z32Zu5-?E?9G`W zK^S{3-uJxcJm>lUp65A-SA>6TVSq3|7$6J~1_%S}3;^F`xot1ICo$)oMpWAf%=3PqgpMAVI>3Vo1;GOtf7k5Wt8BxQ(l^+@Tf`GBF47|_ z#)V1OcVuK}&{^LNX^haHwatfF>o8tA-6&8?5MkH{m&t~ti@A_K>jT$i0d&a>Vq&TQ z>TIK61Ay&CArq&W)2zig$6+yz4}1 zv#U{m#fYj0<{biQga%tFNWqDv1lZ*cv`()E`rc16&m<5u^Qg8y43P@a zgPBAsGcYj9#HoMn(=&j|Lo^yudb61*8u}ci`W6P zONOz_?Y{}Myiw%sSS6Ve2(8=6<_qPKOt6r&C5LF)Lyyk#lX7r1X zI@~HV;{0U;N*)@~YZ^sSg^-;M??f*1TjL=RBo$fwnUx_53eRPtQ4>@8_IT zM~Xil3ZMWApa2S>01Eg&fOY)*DmW57aCx4gRAyjn z%!HJ>bmSc0kZYRdu{g?>pkL2QL;-B`&0Kbw8+$VWq{^ZYQ(6MEkwHVB5)acBEb?nb zVl?i20r>f-u(obqp_C7I4;Er+`$*dJGjhU$QrGk~a zv3&bV;zIcF!vAADWPos!5nUEHq%&YZ-vP}?EkQ`vSmev4h+DOTm0hB|TZwc&{L?EJ z1qenAwj0pZqk?8qi#?+Q%-jx!S5>&&_l6Y?8xV|ex^Cfg8Bwh+Mnxz8NyaU(Ki!8N z4;v7SD9($Ai8&;D_9wrnxG2CULijJl`c_cWcP1(v5kQ!F-B3i~hylMf6hHxg4)_3h WWxXQs0sD#o0000}M{P)PbXFRCt{2lT9xJQ51$>4bovqwIh=1LTZIdMTNviEQFPWKOi;| z3-N2LBrF6g7A!0*ECdTy8pQ^&Xa$|pQmwCa%sDk^$jsD7Z02m{y>ri;_c>?oEyO>E z1z-VK02Y90fDs9b91|hAlDyXRl#GHu2Ox8gyIeKR!0)Sqy`m5+O9`}fRRbH5Phd+* z(lnGI0GSW;dvTt4!0ujx&F`zbNUh=Lu#&;=YNDb6Jrng&IuuM`u2q6c9JK;x#uWIVrcz+J|!(!58LiCxL8%?YA-H)er>+1r@@)LslfWHB7sKx1kk-5t$AbfU{qY11tAaKsuuoKIh zS+Jw1evhVZL2&<(i&N15XE@c!;|4>J)}p6Rcr!N>x&U;Y24zu^q#`cb)M!J0dlrCh z!03>h_2lf?8{o&0Q}=Tx@t+++4Z`Eit|u46uRFFJ{jqCp>_+CM05k~fh)Ppy=KZDc zwKmgr-T)ee7VQ!Pj5=V{0izB;IDlF7Kf~YGj058UnB@cD z2#5oaEvK_15K(|+xk;em|1;~))5Q^}i4e(h3`c+*M=T&A1Tk^}-11FN7+^FA{QvWc zVb-i!3~6a;1ZhSVF;vImaS&!U1o{+gxt|O}qDu-;U=G9Sb>|qGnwl6yL`1-rfB-%k z-LdIeHUDur1l0jR%V$n&0c)H#Z5qS;J#)a0Fby&S(~r+&W4O0{9>na*B#7CH7Bev% z1#=MCA!v?3PXlnv-@JLl;39AyY^jR?1DLio<6zKL2AxI+3bGPl`oZHDcrC~0 z0Ei=Q9RL651_OrW0WP{=!(lYcLKpyBym1rU96WXqsE(mo251 z7DX>1KwNtOY8Wg;h*3){Agw_{gIaPBwTMO?FhBqRr=BD=M88fD00000NkvXXu0mjf DrPKAT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mimeburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mimeburger.png new file mode 100644 index 0000000000000000000000000000000000000000..41d7e913d78758e5f555959f224486ddb5163a2a GIT binary patch literal 622 zcmV-!0+IcRP)*N9R3gQ~T5}q9# zgrForm(qgg?ki2> zV(CbvSpidsQ{2EdR6Rm`3t(kV;#BHq)8vBPxVA*C{=ecL%|_!}fJ`RC6h(1t!LH>msqUTiL8j6c&2jNhNm!AWo_^qx(G?jwv^$kXf?E{Es#M@vu%Jj5U zYOe1M%H7yoJL3H~{XhDlj#Y!~!_?!0{PU zITMKlT$~*8b$*9IR$b%%Y9fOE6Zd=eqY&3C+~1g40#H?OV~zmgDX}zON)VIlw2bn- z>==p`B)G;oFU0AbisEjbpeuk@2w9flXt&VVc#m!2v4<>8E-t4u zC7cfZbxZIo_YeQU5YNXfae#r%pn=hqA^D8k%GbNr-4YdGTmRZCOX`*81RVvrJv!V| zT9`bUK787J@cQSA^Ov7~`?5Nwe{WF78@5~9S}W&0ysY5DF>$RY)3Qt^&87JhoQ~-C zHYRCd9+pK(VU8V-CGbmB}k;GEF(;B_49 tb{E+gmJY@0XWQ$J@+2@Y{}U=;|1~*1VoluUMxZwtJYD@<);T3K0RVuIbi@Dv literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mixedcondiments.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mixedcondiments.png new file mode 100644 index 0000000000000000000000000000000000000000..afb10fe85ded0d589120e3bf1f0aa58e9f341ad0 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQLT z#WAE}PI96|g2AhXK=yzq4DtUT{8y;@d~9nE^CJdVQ(rc(gBN<6_FS6ve_rBAp7ZbH z*fy(|Zl55^>uk)DuRzzSFaD_{kB z3#4hvX-~k24WuNDH6%u zGbey>lz6$WKI!Nt>dZOGxA=AMJ|KI&04ODl2#hDLfL}dV$6kt@9uFG1!xD^z@WoJX zUuX&7ZXQ7xORyAa*Vp|S>>ce3xXuaC62Nne=UGZ%ABwbRkCpoa$l(WWi Bx%vPA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycube.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycube.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1c979f2ee494a0137cb7cd429bec56213a9b1e GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7eSd z#WAE}&f6;s`I-s@j(JE8J^SeSh?sK#hpP!;>X$-=kkOtzdlnbK+rjZhB8tJm8MnN?nO&Sn&P$Fz`5r~J4=)LC!N z&nhn$-+TRc<^S~#0(&G6v7Z+zW4tAB{?E7d5+J)C=ricY)kb6mO?x;E#P@Xdb6Mw< G&;$S|M`a8E literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycubebox.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycubebox.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca103d29ec4423399cc8d32bb8dbe965463f745 GIT binary patch literal 407 zcmV;I0cie-P)AIbB>ol5}}Kmnux-Ehpr zHTgC2+!R29qrqqA8pI*40CcccDg)$m&JXc~Fyt)2(coI+e-C0E;R0GO5tBSv8-8qq z^=idAvjFtDefHT0y;+Br5iv7Alaq+EIxwEioz14zbm^Njx-&iP)n32NHTT(EK*w0Z zyYFcSLOQ|*V+VT00`#qWum)>G9+0xa+pC4WPx}M=5DaI6$v=Pd`s4w0@FB?9YBw7k z@_2Wyr2(fP7|sT}DWO5cLPUb405pWO|1N+_)Z+tilHoMOJ(&l*A}?k3cPc-M2?AFh z#7(d(01qM(ECe_N!EljaDF6$RsmK2c6hHy4U4IROp@O(=D5d}a002ovPDHLkV1nKb BrsV(t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycubewrap.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/monkeycubewrap.png new file mode 100644 index 0000000000000000000000000000000000000000..27a4019c6d9b6ea8774efada1cf3226df6fb11e3 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C^*^E z#WAE}&fCiy`3?vOuq8}d$2R%7K{f08+-+6d%|~uMoAn~$@ujY3`=1_p@c)qIkw;8G zO$-bTtR05)uB_eqDcFHK%xk0KVFs@3gG)s&I=cxTZisq)x!3T!)l!u$*OZ>yRLSJC zySrKza!?$4P$L@ST z@9n%{uhL)E4qykc1K0@QdKj7^YB0Wi(Yu|JW8K!9?&Y|~kjKHn)T z(JUzH_LbftSyILLa`16AU$8*>7c}KrcD3Gy^y$ZquV48QkT@QpP9*@(T^K*Lt z@HWl&evWl|Ck_yK-T?7HH~`${)oNAGA=(bNl!+RjOeWlGeIk0CA%=K#xCBWQi!_~1 z^;&)q4uEht%-4Ru?}!wV#RWzLqn2fv%P`PKb&W=&+y@BO%;j?0!vjz%mF!F=qbKBH ziL}!r4I&YTFVw&ni|!e4EH(b>?uee8ruAC$`JCGe54+uNhddc@tI=pUB4rR2EdXGy zAq<&)6T(j${}&(wEtQSe*m#r0;AA=fA--(i*tz6l~4 z4u^a#)$0@_7(?#V`vO2XrEoGL5@cf=A!@urIr)AGKp=39#bR51e))X|1OkYHzG$}9 fzx7%EUjqC93nMWsYuZS|00000NkvXXu0mjfLSah0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mooncake_wrapped.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mooncake_wrapped.png new file mode 100644 index 0000000000000000000000000000000000000000..dc4a9ccce7094a1919bfa04d68e0bb0f97c67c96 GIT binary patch literal 545 zcmV++0^a?JP)!j(H|=Yhyh}N z7$63i7{KM+P}e7{>egwOh+C$5W-{h21R!k8o{KKpG?fW%rhm_K9aFuh3!(*}CRN5p z{?YI8+x)2Uy5k@^5Rm|3b7h>#WXN%xZ|^e30uWsYtq363J+WFCD`m6U;99|O&I6DJ zHC-dLH>L)Fc|~lr9<^u^Vc9J)7CbWnq=orw;flOkf%H>QpyZ%UX9uN7@JN8ZnBuAP zM#sf%IWYtfWfqp|PYxKR_S<4?HEMdj2*CVOK-?XfV@8d9nXp66?t{Ev_C95sI(?y! z`;r(trwClsQquhJMxL?&1bvnORL1MV7=rmA$z^|(v?9QBmbpnqR~ai1=e8*~Tg5ki zKi{L3ja6xmW0)2vVde-l$!2}l3=NG04T;Oti2TF+*At)x z0AZp!zc#qAgAk1&jiMtTB?FN0 zmV+)d?6X0f`v!-@p*00o21(2+n4}SdFRc=ittF^Zw77XE-)C$-l3? z2?DZ&kq&M5>jLnvFn6z~m5Qkb;u_#|)S&;xENk!~6kmfFd(V8o!Jy1M^@Yumt4aq@ z4b!6B$ap_Of&g3^h4bAbAQS@5+*HP~KCbgazvk=;fU1H4Q4}GlZ45+sdIzEkapfMc zx~O}}okzl!BS82oob@$Iof#(x#0r1J<6DXc$_C)M%8g8aoP~!~oqeMSJ!BB4`jq~% zdq866dU2SS)Ap0_O^#ia42M?Jbw7R$vRca(82!f$L3PhAMeDk{m;I(CWSWOnP9L4$HWw+ZjX z(-CYGwM%jqZEZ)9NF*@%@;UTKS2k4N152@$ZA-d{LaQ4YqY*tl7Z3;p5DdOzws4IA0000EbI$$UbC2LZ>k!}&;1GZd!0YuDl)Bks{ikgznJCo*f$0X#02KUO zPmfezT@he+w5v^lg+aC-wX>S9pa#LU0&8nO(bUw4uI_H6QfcIKxvF;CSrJaB6VYfC zyy60|*{n#X)6nah*&dkiC$E$GlgZQ`TSJQ;wTKJA|0x298DJ>^cZUrwhZW&Xd9Q`_ z_}&R(7SK1s+gb;JK#VLF(fE*|xJ&~}oT6Nsvu%oTbid;^Vp1zjv0T%!THyT@uU$}j2%x0W$ z9xrVL%_;vhYXYF)w6r55_j$}QHuea-;sT)HQ&W@NPRZ8qAJz`g*VkX58_>+m8w}jI zh1aiMa5*L0U@)k9dr}1;EiHb*g^M0(|H*OW$M;?1)q;=>&vi@{V19nKfmR{(Z4nWZ zgElsuQvJmUNe_%cZnZl};;xXho=G l{apSu{}=G?^??Cs)n6z?8m5JCViW)X002ovPDHLkV1i)$Zejoc literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/muffin.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/muffin.png new file mode 100644 index 0000000000000000000000000000000000000000..5652b636dc4ad9a61c28934a8b1a67cd612925c4 GIT binary patch literal 389 zcmV;00eb$4P)XrWRKXxt~ogp|kFB3rGy$h^E095(jJ*a9acLQ?|66W#dK-=Bk9RSpBhV(g02oS#| zG>v;7N4H;r31Q1j`&xKmrxyX>l*3to2F$AUSa8)1aMOzbOxYta&7~3n=oWN($TpUw j7XxSra;WG09lO*CXsoG3G@Z?^00000NkvXXu0mjf?xdgq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mushroompizza.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mushroompizza.png new file mode 100644 index 0000000000000000000000000000000000000000..a69b2cdfcf14d85eca5867cc610a921efe51a7f9 GIT binary patch literal 774 zcmV+h1Nr=kP)qB=ipoMh`*eOCUr+7L;g(lkLHtBCwYtQphP0K@2B?x|Wj~NI_8Sj`cg|@*BIk zWk?XlJrDQZ-#zDdzMpf>?{cm9$7TYU049J5U;>x`TLYk&=_zg|x#El}n+7n5u2}K# zrG^%_lb6Xtny_6_>d+gzw(Q>67gU29D#=XdFSc z6Ek1l^E#23gzEAke7+wekrvKb3Bmx7o{bgvI3|#Iql*Otx)9uYRYPO_X!A6cVCb3N z1CuN|BSdA~@L(T{)1BHtK7#m=?SjkWSJnY6JU(g=rwwF7V=qco0(zBbwy}?%sSC0z zBrfCRe%Tqy1GK|?V1l(8k3Cfk0BfHSyDd$YdrJvx~M5p8^ zxI@CP4(cNyqfRL4@iMJnIRKEjg4N>s ztZO^DIzF6o9HI;AoZfPU;>z}nT#YwB;S0EkqH7vfmj^)e~|@-vB-pZei^Z6$P$(j|YDYo)Aw>7W;c7suH;=sIBJ9q6hN?FN zDDMUt!Pq?5(A*VsJp1jQKl&F`qyHPWHU5Ssz<&+!6POT5_>ioefB*mh07*qoM6N<$ Ef+sO#GXMYp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mushroompizzaslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/mushroompizzaslice.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f8a3a456c0a7826854289e12ceb1b418411820 GIT binary patch literal 496 zcmV=?OeJ%Do}Q>{@JO#womcE=;dWKYS$aLn0pgFNW+3-HOG{2}m9ez$-_@5CPC|ZVA*IS_CW{q%tw=4QC3*iw4k#tQlmy$zX-iEFuD- zECE1>(c*%f#gi28lhtn&}MbnwG;$;DH2>M^Bdp||@lE18QMF2Yb m4W^316$AciFaQHo9qVOEmPw#b8(HuY`yIu#bJ>o*d|}uLhlFK>l6}0*fr> z{TrajHo`eHgwhk`m`k!_@KrOYWj{KtE$C=}f$P_9W68zB&FOgF+flTCAJJT#cEJB} z3duSR(T}+TS8g^@ZCTo&dUql8Dh6+c`;o2J!pk~AFD-yEAH?{mgInegkR|2fm_>_* z=6lFd<$`j~L9W^YX_^elIR>H^@VQA&kj!A2ogw-$0r;q^YrvhFDhv!-AyZPA@{NNj zIgWs50e&hG>4t1nRW{*yYYj{#r7)Qefu<7Rn)X2Y1Ajc>CPI9$f{C5cGoWV*Y%p{Au!s%hA4y@F|K zdIr3oC((Sjf#}8s5Z($d5s097kcjb_+BAn0T?SI1A;MvUB1;~*=EJfj?_wdy^ao*Q>(bxeJ=EChoo(YG%jrutvZvEbMmI z-G|Bo+bk`fJP4TL{jf1Ar}FHqn|F0iPOzW+MrHoY__+0t%ub$tYJGC= z-j^L~|1Io&!)51vzki*(x#;b_zYm`**jX$7t+MX(zOb|RpC#Wv_6Ov$x=$BxKaa2f z|N8yv+xIG8pFN$sdS^LNJmR}vfK?zrtO?)QIp z_Kk=58U6Bqml*Q*6t1rN_4oH<@5Qe^uit00eqZFjqZhhwtHrx7zWAg6{Hp%<_VV$+ zH{Y7_^Xd6`i3d+_Kf8JNcYMsfPsOIcULJk*;X^^%?w7Kw*ze2o@2#!;d$2j)%uc|p z-u~J8KOFxaZ;xMnJ+AiYpHIv0Us>PvoO^ri_nVVneYtt`Y5l*y>t8kfOg$g}TU~Ma zV@1zr(@pC$8@}Ft{^YmAg$`L>dK{@f!wQ|`{u)#t%Jlr5-IpLKZFu9^=(P4!RvAI&O{oBig*p8c;s9h?me zrfceopW95gueD06`}sLqmO0Gv*>v0bg8h^HBUwDAFm%Gw4(Egw_tx_|-(17%9P)np zvjsU~D^yN-as>K0brcCXP3ccqWM;)3S0;Py;wznsU%%E}U%ohJZ@m13O<${O9Zp@p z{gv@1e{+QVgd!w9Se`czD1YhoS4PeI3D?+{_&@}cfPz;+g7NFGvoEOu3;yiQScK*# i4MrhVhY=*B=kW&s_D35EZk>j?qR17PZ36Q$~%-H5D45J zZRfU;-ru!Jalgj#-gA+s6pV ztvN}XTS-U*mfK|EUOYacA}L<4rtk&>tnR;1AK*AR}I3^b^?T&G)Eo22anb|-DoI@IF*b74`D?{?dc7}?NJPGj*3&J&O? zT0cQuD_1Fe`Lb{Cq37;~@AHq}?&v@#Bql!gL~y64eJ0=D>FDl`gsZ3&(P*$_Rn$O) zKT+`Li$K|H={Tbpu!O0Va;K)eN9!X^NSOpOxw)~&&!h`$9TjD|Krr|7^P5`4U@&IU zUrWj>D~)D#UgXFS7`b)hpVmNT;*k}xtCp?mnS zdSGDSh31&!JlX)QtjysHWqmDpyB!v*<@YQfiA1)HjO1VT2*23rIu-f~&IzU=jE#+l z7(owWoEYYzi(8kuC6W{CfCY_Uf|L8_WU`KL^&lj z)z;Tnw}z3ydA{Ei-(ICd>+F1uo3ULAGpjN`v16zTYUob44hkyIT3cJ2a5=5Grd^{~ z8iL~ScpRe;N^tN&cV_eF^0Dj3y53pqh@9zNJsQT z51^f#vO|y9?n}>_AFMoEra~Jnq1B}YQL>u5N#KZQ0MsHCp zoGDqMXjZxnflJ$6+!W|CTaGPiCAKKCK>6{|5y64<*-xllyvg#x zbh)5|Rn~Ry>MJ|=ZeVKm=Yioe<;G> zjCUcq7vy#o#%2?%>J~Z-a(-p#E`rFI-Y2Os`*qw?T z)d+IDS4keKaN|(DJzqp-R)we1BvST_l0JCp1A!c05b*JP6-#ZUs mwKf3yX2sv;O&H{Fr0@w|$+lXEb?n9uf!LpNva7K5rv3%x<2?fa literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/nettlesoup.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/nettlesoup.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa0178989419dc4236830ee769cc091fad0ea69 GIT binary patch literal 532 zcmV+v0_**WP)e?h@%u!g2JqH(cpeJ7m1n0Y+ zz|>MqiHDl3NLYi@WE93`g0ybjy%kKDaE-w*5LV-F?1a!9=OvDJX}&7}>g+rY^RuH6 z0S(Nn{2IQ9RA!M3#9bGIu-c!FQ4c(VZ4MAtRoGcu2Pc&P?42Z(ZdJAVd)h$>c7XMK zLlN|C0&4vnY^J~9Sk7uREY_vHDV$po01A)laBIbefC2;#WiVnCRV9l@E-^G4M~7M2lxOe WcFjL!&ytA%0000leqj zLzz4&u7@x1Fiz;VwXuU=X zwfg>F&h;egVphReZl#D=11Z)M4eJ6Km`?;c=m8xzq3w9z{~1XoMGUH9L1!7SFfHa| ZU~pl{oh6ZQN*EXr44$rjF6*2UngB>vcsl?9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/omelette.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/omelette.png new file mode 100644 index 0000000000000000000000000000000000000000..348e0e1c9a160fd70b767320570a462bb5765944 GIT binary patch literal 533 zcmV+w0_y#VP)-FK^O+$S4j{>TuKS+Aan|kq2Qstx`BtJV}geu z5TqZ`ZwSG2hmH|JkX|D860LdZSV&sv!3>wMgvjliaW^GeS)mAHKUij%W#)b6bHN$> zaoGSHU;}J`4VXTF)=p^{b@p3(Rk zl~s%-K&#c#0(WU3TB5Klzb$5U1j8@@E9Y>Hb;=52EPw^GG2q+=Rt2m;zY1s;X$5rXfnt{J>_ziO{Nh5He38{q^CkD+L{?&xHrb zMIRQ{RDPBjVr&Qeem^?#JROvSt6f5TGeYgB7u5u?WPF6Xgt+EEPxF|7kvjh#?K@^2=z%KRp3_(d1?8i2RUCMw@u>>q6g%I)- z0UIHG+DyL$grN8gn|kYU&YijIs{0pz5MgdJo88Tv@0>d~O#r z^{reV_Bp9xzqm%7K2Y!109br_TYOgca}RN?NsauyjEn_T?(Dx+b6aujaC2%bFAXnxs@_k39ovR5{)iMEtd@O^x~gunsX{hqYk1G zK%!P~31KI~QA2!Y=zQRvnzaL58`2A6@ykaqwx!%^N(-Q)07Sg(h(#uSAG<5Kqh0ER zH62!lq3}E#dD06TR;Wk)D%sHS6Nz~bDR&=w?u!gr)~Xo~=MPJrDb zZs)2jUR2l+(d*I1_uoMwEnFihIhg$JuD%VG08H*SRKt|)kgUwP%(%FPyW$`&DmDt@ z0If7q2LM`)Si{Lz;l8XqZiv>s0}%9fJ2RGBfVR-vgrMrgYXR^De}dnF n0X~9!rT*{#fd~)*eyUypKaBZStRtjr00000NkvXXu0mjf43YMT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/onionsoup.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/onionsoup.png new file mode 100644 index 0000000000000000000000000000000000000000..c19d4c0c999548bc3caddcbee8b3e7c1fd3b2f2d GIT binary patch literal 518 zcmV+h0{Q)kP)CY}Pc5gxUkAC%Pg3Tx8CC{hies9ESWu z7Uuk(Z-EfR4#5Bvv{w=yo*W`!z1~(P2txp}W+2t=rD}kwCZrYUC>#X!zCb|G-*p4) zJ8>!H?b0LB7$o8`Vn&T{atxs$c*ffT!l3B87><7F^91pC1wdV0r(kh5DIG`v|;H57*rHE+}j798~`U5X=y}J^rowA8?WDm(YG?7@#_PYN?@rL8Ios4)7Ne08Iz@1aq0gfW!5aFaQ7m07*qo IM6N<$g3cGuw*UYD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/oort.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/oort.png new file mode 100644 index 0000000000000000000000000000000000000000..48bf96b34bf34d964801f84774bb30383956ae3d GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7e$p z#WAE}&f6=2d<_a53;}m`1(t6zemU1l_^f5Ok1+3b{y$f`j$WR?TF1w#;lRih;9!2B z>G1aNa%RT70^PUW_!9V=cs-8FzPmc-?3xSGIu3DnB=|eN71|3q`+9KKX`W-c5+=V+ zL}2^<)6AbT)>fR-T+lnc?7{16n;EWeyxrY9{XbhFLvM&n*3-KUK^_Sa3|0wV%^4{S z8yOZZKAf?4-VHCq`e)rtpZf0^ezgf~a1k^-&=b(WRL3rJz%}Hmfm7jWpeGnSUHx3v IIVCg!0LdI;82|tP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/orangecake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/orangecake.png new file mode 100644 index 0000000000000000000000000000000000000000..adff03d692f427e43f5f38d5799c6e79f8db28c6 GIT binary patch literal 954 zcmV;r14aCaP)$txHAlRz}6r2MB!{oOz9ubx;FhhR*QfEd49)AVS(zz-~LIAJ@}MjQakoVH;B(|x_j_1a*N1uQXw_5={5pJRE#9{oeh zNG~cCE9o)|v6YCg06k1(KRFEt&A~FVown#~m4dNADn3gE2cS>c4Bf9q5_?~qTs#0h z$K?X*JNR0e0)%hdtg zlTKl|`vjbi&EU(+0U3l|F7!R8CWEM$K#nilYvnPcXUa7Y5vLlaJU-$P1@N)sAxd-r zpB)0`$i>rM4D328f*9Y4Ao6V|11W^KRGs+jor(yf{{xVn$znP^TBeb(0*(;}N{Xe9 z$Hx|8j06}XgJlRzn?5jC)r|H6s6)MFnr^p^XJRa6`)Yms1NaFTR11JqN8b=WEc_yNLfY11sT?K1(Vwx>A9R_=`lfL3GA@fv(5AcMj4Xm4|%aBm@- z&&ryQ^7ncTtaXfl`S5&z?YCOiYXYFATu5OKt>Vi|t?VPNy@O=7<}aevviK8QKi`BK c0RJt(Z;d-w=VDMs761SM07*qoM6N<$f^A-@o&W#< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/orangecake_slice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/orangecake_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..263b997c81addca6db880e9b4a951155906f02a1 GIT binary patch literal 671 zcmV;Q0$}}#P)3#x?{Jv%!R}QE{6U+#pHB+6F-gc#2Z3 zXYIjDH8(FF1^)r@aR;6V(Y!l5ov)eRAOtO)J zSoXnOW@o|O zw7DC`0k$99-5KCY69Sp$eJ0Tvs4KwRwE+0SYXg8R_xBpyxC0zLh_Zb`2U!^#2RC^S zI1XbG6;}b_diONC0)*Hiq}5&E=kEi<7hAp!R1J{zzJ5q00sLG+H~uUG(LtC}M}ShP zq-{Js3Gd)Bkec}NVivsbM+=BV_8h?&>g58`USjM60&%kcM!?e2D~(|o`2GI2Nwfu^ z=8B@=QF0lHBm05MBIsL?b7>@J(-=MU0V}>!y0KI!=p9pII{yvz8a|2Vv9D6us?`pn z>j*|JKgY`_XL07jDCBYtE-{MGS{lW75{Y`I#h6MCT}7sL4jzviX4DbD>2!i+S=8f? zp}e1fD>$Ma;i%344#O~k;L?RIk{o$S&V^aX_ zKn@JW^?gZ_TF%jw%o_Iu@H@zMYG?foEdUF^0{AZhegYU-*T0nrL1h2{002ovPDHLk FV1ja%BOCw# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/oysters-rockefeller.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/oysters-rockefeller.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb59721c37a093816ac3b610c0c65ceaccbf12b GIT binary patch literal 619 zcmV-x0+juUP)0U-)PkN&wy z6f1@GAR}8ypwY5pJ zG}Vd-^Ff&K&D-z&W**B9;2)O&5C8%|00;m9@J9gTA&8_(AY}sSE~LK(z>L_+%*?T` zyr+CP2}|~%&H51vfo<|FV)8x%;`%?0_O(i5a705fkko4Ebz0oE?ugFdu`-K>XJ3(%G) zfvYEg`VIgA$xyi zozYN;Qiw07ZKJG)mG|~D`o$$o$@?Q%$ETeb{C>ZaO>clorGj8E$gi1Yy>)K1<63oS z-B}|_wE^EO)JCVa^f->#+cb*BV*dc)a9GOc^W;i;9?z!}D7`S~@L|5kvQBLtGz$3a zy>2a=!OYprz5#Y2*vdd$E*Df)-P??~bt5yEL)oQ__#!e?bGC()Tao7L-Ef4?#KmZ&^{Q%Kr>~xv(p1c46002ovPDHLk FV1luH7vul{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_medium.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..3631a7e19a7345e9c2e604ae7e69a185613a68d9 GIT binary patch literal 346 zcmV-g0j2(lP)1o13?gM=ii=q496riz_cvbb{?Dc2D4Wm*-RRo zb3D5*Y5=Xl6gQVPz(2&Kfr(khWlJ>xnQ{AW+eN2`ukOQcvs6_FxVUw2ZRN!&EKsa< zz!u^jFi#EO-qc_hbg}aBsjZOE;z*h~JjLdys{qIxd*LDh7>05150I?{Am6)u`|mvX s(@Fr%W+U`(7bzg>5P$##Ai&81KMbQ|{Rb4fy8r+H07*qoM6N<$f?;ZuE&u=k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbf77d5274c0d63574125c5645f2c0d256e6ac4 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEPqB z#WAE}&f6;+`3?q1v_0(iSh2vOXz=Jv0OsHV?(U`G}#W;mRvR45I5sH z%bXWn6XW;T;&$Nam#Eu<+%LpcHxx--S8&)D)gbuQK!B5j+kW0EErTxcoE~-Jbur;EYI`!rq55bl|IS(;mEPtH=k2m z=JD=$%6u;JuPNib3AT-Xi@9_cKPuX*DA=Er^z1?&?^DK#ACEM>e*FB&bKiyIfW+@R u40fFNf*8L>xxRSuhv&m-fd;UPgb9uj5=`#5?-fl+%%)(NXEnp#`l-bYI{tX>k-A1 zvDmP~ah3W*#=bdE|HuB@`O@y^^CHeamP`T-3@i!^;s-XRJ$(7b`Lt$*|K*$`EsQzU zojzf10xau4pDR5eExusMYl9x6nC}f+rW~r;EXuv3$9=-9(iI$n7JQFh_eL;eZL>0qm#>rd)H!+2+xImjHdt;OXk;vd$@?2>{lm Bd(Qv> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small_white.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/packet_small_white.png new file mode 100644 index 0000000000000000000000000000000000000000..9840407ee0c3312db11c744817ad6554e133398d GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQRV z#WAE}&f6=7+>D75>>u`P1n${YY$zcUzI{e5W9sfTW`?(FI9GSRPYB%P5!u@}cgp00 zp5@IdoaIN^D_(B3`Tz93we9|U^X3WslVK8QU|>;T5Kl0fW%K4Sr&rLS-Mous1lSDD zvL+R>T`&Fn{oJi4^O%M;tDG(uZCGQwXre*b>)wb1j{1uxBzkO6ne&X_oS$pkrj(@#fRdD_}GfR51%V(`Qr$t{*Y1+F}g!{uI-FZ6RGwKcJ zNFR{+eTU)gSK&BrR+Cqu>lS}DKA`W+0CrLZ(*-q$3Ea;w9tC=s!PC{xWt~$(696L% Bc|rgH literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pancakes.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pancakes.png new file mode 100644 index 0000000000000000000000000000000000000000..ee14dbe315be1e1dd0bee354bded1f0495c3d2b8 GIT binary patch literal 543 zcmV+)0^t3LP)RCt{2l(9?0KorKG#S$qZ;-G_rq(kdaDrE9cXcl#~|A8P_ zanYrUi&Md+f|HYjqdKGx4i18g6{U+En&RNlK}3o)Em-pkmtHS-x!49=@}Q)-y!XD} zyYG^5_~!@#LVyq;1PB2_fS~}M4>MiSv!#4#EN}o;Fg`o!%F&Ns!N?^Ca{a(a0k9!Y z5F;|xa{k}s7vSe>5RSljfp`L(uO%FDG9fJHf@FOSaMj)6?KrrI+CV zu+Ye*UF!us0THuhPuzco;yl<|qv<6f-vPP-eZWN1vNe@*ZFm4Y1N8P)>|aWYgDhxK zw#T0Uu#i58crTlX7RCtF0&L3jnO8&V0=J-;jZ3E**#g5bx*w-oBU^yGmC~9{PhHnt zA0y!oEEf!T*wI}U@Pf64SWwK)_kgvdOQ_fD+*&RGk|HsIAR&4SP)PLZVUKFH3cTrs z05rth<_V~(3hj0q%6qH6EkI$@G(E*V0SE+M5hNOo_L}+)nXoSa5s0EF+&s&&pwsC9 h=J*l!4Zwl~8NWC?`tD<1JQRV4x`q^;!b4aVkOSgd&RP z2Vb7w!|(h1eO}L=2bRuX9x6Zur~nn90#tws*fk(vD^X}^W3sIsOSuuQbZpM`*%%z& zls^IplpB?S2|tq#FY68oG{C6bBjGc$J|}ZC{&-)k-!S1%3X&9H5R~-=KaEx^pIe(5 zmQZg1iTgeZrL9vcSdXrn4Viyl%W!e3NJD}(?eP=6z{uAsO4sSlUFKhqc`^Sv8N77 zHMG}YZu*K75jZdNs2b(?wMB}|rY#{`0%GASp$NrQa!9eA9DNpbg#)-;T@>6;CHtL? zs@8gz#~%>BIOQP)S-qS5%7NdtZ$V%MJ`*n{jesxNKM69p#( zYzNV1X6)D>S&b$YoHXE9$nPHi-k*^Q`0oJU08gOt0{{a%Pyhe`07*qoM6N<$f~wp| AM*si- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/peppermillsmall.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/peppermillsmall.png new file mode 100644 index 0000000000000000000000000000000000000000..3116ebff2d41a21ed58f3cd864b843344bf2490d GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0tt~ z#WAE}&f6*L`3^bo9NYbbM{1HJkD`VU50hLoyF;=8M;xnTlgokNIVs*|jWcFh967W1 zuxfK&%!#Jg)0$o^uM&Ox{+Iv3epLo01rSPUcpEfzb~0B~_6hxJ3m3fv<^xYAUkE+f zYuI4+OGDrZmydIU&-;Wg+lsxrotZkgzyB(oD>3!vt>bJHL|+i&V1p0%|t?oD=w@cvn~_il6*pR!=?Uf2};W?v0wqUcG{i1V|{ t8@4jl7qYJ_k2-XYVb>%Ejs^xBM&azBODtWTF+i^}c)I$ztaD0e0swvza!UXJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/phelmbiscuit.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/phelmbiscuit.png new file mode 100644 index 0000000000000000000000000000000000000000..1921356bac63894bd8ab77f9ae9887f48e7644ce GIT binary patch literal 670 zcmV;P0%84$P)*Q53-O?;D@Ou~<|;R36HeoQqtP?BE}4LLSVMXWAQ5a>OlS{pm5I&@AGL=#}4 z_p&M&=Lo;LNAamHlno~)?{U&A0rKK+F}N-wXXeO;p5tkM$ojmGk**`^$-AF-MQFZ( zJh2W}Z3hOEN^JTiG5-+m`WhT16D)|mGDFq%C?mzVYruowtY=xs($M3L50*efS++VYuw z+D%H#(%Ny8@xd3^n(8=v=_tbY1k`x8GIvL40{8-E?6qHTSS6OHB*H--?$W%S=8mcY z=BEZ(%QqAG7NnxY#I$5*s4t|Yv^GH32SsQ*7*SJXu$C0@LpGDO2)ODGu(_T_%F5Kc zH}QvU^uG?{tZT~|myY5f1r2qf`07*qoM6N<$ Ef`}$7zyJUM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pie.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pie.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5a01c135322cf080089b66e1656cd177f9659d GIT binary patch literal 595 zcmV-Z0<8UsP)k~Ibr+=j3&0?<{lVw z!`wN~bKZN0@yMkGw15`S0$Si+0>`CEWyD`y{x>^2I5~TUmmhvTc~AiXPp<%HUtvb} z;dLf}ku=cS0Sl?^Id#(fK9ES?0s-7?*zjVX;I$zV4Cmq$ywNm_#0u?QRsBlbDq!2T zn!hMu>dgpJ)*L*V+>2zoz#xIh)qb#i6~s^!M)1m@?ZjdW_%A=f@@=%8V*ITWC(Pl5kZSIZ8DjZ$lY4)a*%sn z!a#z5uZwW4Cvw0kx-b&5EDKH5l&FKa18~^neF^l6^vVRVUMR2c0uLk*CevH}LjOtN hf0q`}0$M-|`~^mt^g!k^kR|{C002ovPDHLkV1n`c0+av% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pistachios.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pistachios.png new file mode 100644 index 0000000000000000000000000000000000000000..57ef100b0f1bb9dc93fb616fe81fa12df12b6ac2 GIT binary patch literal 466 zcmV;@0WJQCP)*s$gIbKrYqu9U#yAwD*o&(50GAoqjvp> zVJh?4iFg8V;8zG_da46Ndw$;G(bR5T+%usqYLvGL$GoR_W+4ZxdS}X zzvQzU1`hF}7U26j2bHg;lPH$&fbE1@fL^P81(lQe^juP8I_dx}_8VMj%kj)IsW({l zgm}PX$^!~J5SUQKWLhjY{p$VbKw44&=He@CB-xy*Cqt_~!E*$`CqyNHeLKk=AfuM! zt$qHq&C7CCYx8kDm)ipJ9Vj{8#tW*Q(Z(={qyS2lhn_K2n=d@`dn)I`+>-kMg#y?- zSb*{AXG9Q#N(#U-bW|^&e!LGrL?r++mkcEUsuTf403!!@2XhClK~Z#+dH?_b07*qo IM6N<$f)fhCApigX literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox1.png new file mode 100644 index 0000000000000000000000000000000000000000..eaec5a909858445e89f3da2dfc5c8fa224fdcc94 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0tG- z#WAE}PI96|g2AhXK=vN1ge#1T`6NmYtYBtqXYP}E^V`3Cc70vqhQig!DU6YISNC-! zDjb*?>-#@&(SdJ&ymm#@+%S+i*JjO-va?}>QmhQaChlh(JuW9sobn4k{r~^J&O`Dt zJHduJu)SD0C6ABc>1jsYjtibxr>|t;HF>kt+9i?aX-0?ZCsoHN;(8AJ{3 V^KVAGXaYUO;OXk;vd$@?2>|jKXyE_= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox2.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox2.png new file mode 100644 index 0000000000000000000000000000000000000000..67b598002d6ddf4a93302e216fe08a089905b8a2 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP$F z#WAE}PI96|g2AhXK=vN1ge#1T`6NmiZZNv@efzt7_gVY>1~+zGHQdyovp*~Th=IU^ z6YG}!*9c6gu2YTGvCEO*OFt~juqnnNVxk@&!%fy=7B{7ol+@)bpZ>4^@A8npF9vL| z0`r#;FLU;WPfr`fTwVy3Fut+j(J}kx+VdpD&3#wEYyR1r>@M*zgt|HGKB&mBs;5SN z?xEFno99S!#S8fUdleSKE|@K6!(~@n(HGwQcWEyV``15`9gGTFTh25yZeZTR|IKhu xW&QL8NfWFj4v4e5%-p)Vv+>~CzC;r)2200;rw85B6oLL_@O1TaS?83{1OP6=aZdmM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox3.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox3.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffa6c8609f766dd83911f537b96f6d2f0bd2e40 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQ3N z#WAE}PI96|g2AhXK=vN1ge#2AhZ)`ZzWrUk`>g$bgBv@p8g6RP*`F1E#6aM|iFM2V zYXl}#*Qv(p*yTv@r5~1M*c9UsF;S0?;U;S_i6~KE-!>i7~k0N=$L(T?RgU7=DsW7HUI2Qc9(b&m)l(xs_t5IP z&2uEV;st#Fy$TCq7tEHk;j*i(=nHTDyR?^w{p%me4n~EoEoYh;H!yGE|7N(SvVQu4 zqzP6M2gF%jW^P^G*?4emU!n<@+v0=+iy0WcE^Lac!``luOuQJrp0g7Pm|?)ayC9H(iCLP}fW4uqOkq*O!L@yfCR}cd6F>w51EbCHS8_i2K0xm? Nc)I$ztaD0e0s#74b>08~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox_messy.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox_messy.png new file mode 100644 index 0000000000000000000000000000000000000000..e234f4b28bae17118ec7dbfe8205816ec244498b GIT binary patch literal 785 zcmV+s1Md8ZP)nQjwI~Oc3bDQ3q4RIu$5yw_=Re_{#m zs}Hch^CD_rR#S20Baok0FOn0ALw)ckpRxa10V26QSYpJ4Ht!AEj-NzzF%lsXlfARO zD;|@@Q{_Z1LMwolj#Yg57I5rrJpOi9E7lgDCx~Pb99;P9w-UNH>IJba$P$1B7wB^8 zBBZLs>Nqi9eh$_@FvENjh9c~Rded++Spb3hL0%O;Csn-=s~7O3#`=KvjDEr0`}h>> zWiFYBY+2CbbHf;TISoJTbn=l+Z-zWCvk6Ht!{^_j9g)!)z?+g#JQAJ>=Mj$)Sv^NI z=fvbCB~RvMq&ow|y`?H^qpR^4Clh0J=Y{2zD=oUqhz<%JR6cpk6i5Rr;d79__N?8Es5sH)8pp&O@MIuS|%I&u}E z_|$=N=|rRi@a4-&s`H!TR3elskX1cjY86>lf5=D)Acdwa5R<6-LDdI5rlBn`iQtJ$ zRdSzPZLTI1MW~XSpjzfly@sklS&)v@M3_rJmY{!u=rRiLgS>(6SS4XQL*u#0*=0n3 zmdh3Nd@z66%4a|LSvVPeMOuN0~s^KOX%NyV0JukMUob5I`8}Os>vj4=KV-sU} z{zppG)g|sIPi8+kEBDjvfFDn0Ff!@zys_a?YC6Tk%y@6l4h~P|Ka04SUpF+eEasCa zJ+OkA?H;4qH`gBKI7!Xbmi#S$FPzF~IJkn@P1fL5Lm+#P6+@6D<7?(1Q@NK~P7iNS z`8qMja)%L<;ksMmhCl2M-QRpur~Q_&kjv!#yF{-#9+}17-{dbp@A1`y`b_1+j<)q| hNemvkik}l07~Zow#dC3oEeCpz!PC{xWt~$(697YjYcT)- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox_tag.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzabox_tag.png new file mode 100644 index 0000000000000000000000000000000000000000..20e2333400bcf076df084eaf3eaa7603b1e8bac4 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D46T% z;uumf=j|15t^*1@u7R!Z471N@MH>mITnSUuI&pSMnZkPs`|w*aK($bCj-}&7ZhYw3 zuN77cTJ}0d6+1DmRcQ8k-w0Y-_H Y?0cHDYB^1KAAwBrboFyt=akR{0O#gAxc~qF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzamargherita.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pizzamargherita.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6387bb23e25289d2a66fdc91d9489182d34d7b GIT binary patch literal 762 zcmVl2w`$tsdE(bMew0^i^6*7DGbA~ z9u{Nt2ZijVKn6t=1i~Qdr5*}w#9|LIf=OZ&K^T^;dXp#<=G0uPK@hc)IoA1|d)Ic| zHAR9j?t$&z-#x$I`F_6VY}^|B<1hhC029CjFab<}wE<9^^%qxD+)^L0tQtTk`t%19 z*JE%=D-%xT0HwD}S7Rv{LjXRwNK~oSlI;hO+nt5v4g!Zec#Xhu_5SW4aC-pqP#l?X z3<&FCj39IX(=VgN2InyFeg=p>QAI^jid-@TX~Y3gaVek*u{f>yL;HA7AjtdIX^^r2 zi^j-|YHTLG4~<@*r3zp&wqF%z=c;&S9*{}sw_`VuxD$sWilPk1&uAZuYdHzjDG-p> z71zBu*KTMVX00t<_bobrFP}cpx7z1Y+vS65dnGE6=vE6Wk2I$QRC26{1a(1xwA|c< z@$OM5qEka+WCNU&ZRJj@T8la$d;4(Zln-aF`5|vU3S0{FL3U3f!T}ela4NNHE@_>i zJdcdVBp`W28W_iUs=0B2G$J^3E=mu4dH{RfHco_kd@0NU(4KRl!RogTi* zFbFNjS2`n$Gc6vZ-n_uAzQ;ImSrr#rRRARjaTWiD~%97b8k5%#4CUOh5)4y8$~y=vq@}9U&Z(Q9;BzIFqZxa zYmE(#4bNe<>T4AWMPxrZP*|9U!|8&vu?el)^T<0-!%^?nxn35avKt}FDRuMkMP3BrzILi7(PU9>~gp~9d;mk8;n z&@qFN5FLU*i0Dv(K}1-W2uZ<_nV!hi4yd={F61>l0+xxs@ z-_M@GI?(2#01BW03ZMWApn(4a2zxnUVE75RdjvM4a`Pl8o%p;5OiT}i0#Z*%)PNox zG;>4JIvd)y&w-khc-!2RinVCp5|@pmM5qOj@CU$Z$&CafuEmjy!Kn=2FkCS}e8`5gOYk^- z;JlN-ii}{m3$kmM!%1cJUnuRm6$Lj1s7I_$_%OZD55u|}NM`_RryPD+ZTPKK1L_fl zVi|>E5H_osbU)$Wx<$VB(sX#!fO>?vn?Wp|l6v_X-%@x>fFFeTU(mjV(C13G6s!s$ n)}Yg)Dp)n(uZjXFpzVNf-eRm-9rT4h00000NkvXXu0mjfvgFr4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/plaincake.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/plaincake.png new file mode 100644 index 0000000000000000000000000000000000000000..706b6ce452d38b3c0443b158c0a6e2741fbaea80 GIT binary patch literal 1057 zcmV++1m63JP);5Y*}KOo_=#Ot$;^7%74lyB{N`OYJoOJ4(5E(neH4nS}W zZNssOAQb^*);#*UD6v`0hyH+Q_ETl4#PK-LxJvmo`qA9F9+RUJ^1V=uIV5M3XcSR6 z{DFMTO4TR>keTzC6L@f=&lEO;lei_Q<_nm-J*M7GC^pOIAv{j8f-6jBRdf(tUW47PYF=5kKZSO(`_%oSyKncKS_$csZ6dMfIHc2CU1>~ zq}_=``==0tN6Q5(Re*gOQkW!hZQ~KtMoz%tw4<7p1Kj-y=zIql?}yE9gKL8qb;t#b#x16)70_aSFhSgO2k?{2=8#_d z2^QjKkx7tva2z(TojSe=K5r8;=`>a?B%#TZt}g^`>4tInhs6QL#|*J><#iZe2cU1? z4p<<3x$xgP8N<{?Poj<|T-rdP`^DTe94uViX53TZTX}KTXz}ZLj}m~Jm(HWp0qDLg zFhdtlZwK()D+L^uY=D$=M5uw%~w^z7Y( zGasj+zepSFDO-e;D2r2I#730!o&BX1u$qm1$X6cWjJa1Eg7IezJ*S;Ge&GOc>ifz7 zYkbd;!#5J*(iaaX!>kHmW|bGW#$qd8Ga>SOr&xTojLjNVE6}31YU9SJV8>VA+J$dF zi&G_r3KeK5zep;Y*r6s|oD;a2JX1M#t7|%l~J@#v8aAFTA!Je-X&t%zNm)IE?mxnAGP-+ma=94B3dkq|6)(hZ^9LT brxxH}zMPouWmo0Z00000NkvXXu0mjf8;$o$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/plaincake_slice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/plaincake_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5b57ec1de346d26d6167867ed95ba9fc686b89 GIT binary patch literal 684 zcmV;d0#p5oP)FZ(hVh!x6e#kApL77+>rA)HL_*L4gQ1Qi9m4L4%;y~qHRWk@A4a0~V{Fstj% zK*FPhH~^EQ(4cI?lf>Q(V(F#mG>QV6ML*J)b(mk>g?*=T&ebL|kcILJ=12O`H#vw6 zpXYM~?0xs4x2stD!hm2fC@+p2qB&EYZp?<8f^w{wEkiUck&o;r%rXrPoT z2&k;AL=;7q+8z;|=%%WvHI1kiq3U#Qu=K=2V8?(GY($jh3?>r6WHS97!0Yv5v)Qr@ z#>)nX-up3$d2*ikb?P{RRlsP-Jhl4X)l%=(>-D(Z?v(=^4u{}!xn!MAht+B&9*^S{ z9@BsIFg?fW2>H$upK$TP(n+;ClAmfh*yHh#NF>s|Rt#81sM}?TIuYCTX`BykuzqPj zyH8xBA7o2QTl%;pNjcZ4Qz|uhMSx!+t66L7Z>Rw@fCl(40p9^OTlFX) S#~0lI0000EP<3i_l4N zt&5|Jg-)V_2>uxg3Ob2<3kkMDL5NEspyH%NzSP%TVlHQ*;&R{exa9JFzjxPW>7Szo zw15`S0$Sk50w=kKD|=UN&18OEAPgLtHspJ$;i@FQB_Kip%nteQ-k!)?qrNnW2J+p? zdsPxj0l;}mfO7MrG`4k34~GlXy0N8jj_Q(ACXn`?#?>5dthlvNR?Ot++B5J*ac7~7@SlMOeDaKXD1C;oRDjhNmC0T m{;!xp>4B*P{xVuX3w!`z%^`9tpqK*y0000S**{57u@~%aua}i6@=Iyf%&oLJGcuzgOWx{)wb-eFe zc5%x%oBKI)B@%nIB74eQClk9IBEa>PKP_++w_*I f`p)9s!oq5n#Gjbezvs6I(4h>Tu6{1-oD!M<^fgw+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pokeys.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pokeys.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed10e4ff74698fae053d645e49e47580e2b29f2 GIT binary patch literal 369 zcmV-%0gnEOP)i%OdG zdvC3N)WdoKngK>Nd%AbZ47oZ#>rgisU~8HHsJYhh8D`HxgywpT_s(+=I{>TI;%owy zb#|3j0MwkE*↲Boe#;?HD0Ra3{z+dkaRsh&2oq<--qS@SGX4ea4B#rIa;iN0A#IJQi&2k2yC!8K9JPC7+@=e;m$$$ zvT6cwQ$B_C9P7FO^imZ-E`?V2)c`$I4L~VuueSjZ1b4j+;7Yv!j{|%G24|pCKSSD> P00000NkvXXu0mjf!vc>k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/popcorn.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/popcorn.png new file mode 100644 index 0000000000000000000000000000000000000000..56911cdb8557a7c4d2842fec5ef746d2c55f635b GIT binary patch literal 633 zcmV-<0*3vGP)M0U{oH(G?IQ?^`UJEToi#!|_k|#Y z0m!_$_X+Q>etLn!k7_tOnk&)^_Gg^N#j zk=Tm^dJS{_!ZQ4<#g3x5zc|2oDTAguFD_s5VMmd0tFuq3U~XXrL*bi9)+g~U zdeQ){96T-weoq-|z@`EOeaErd%L<|8Q5gna-uofCtT;eNs0K~p3S4FVKygfF?TRU9 zu)PJp=V3|00Ml>3Lzlad@clo>t55~JnOs9;xXT^@Qm|+~)-7XXA;2Sv`p6#5X*85g z+5=EBC(*9CadGU?bl^BCC))>5+BsFjT!B(`_A@Hn<>#Q<1wcDD!;t<~K#5~pxdEe) z7hcaYK+yCNmMTEzRURG4t4Jj_+3%>?1F(_Op{pte-@5@RjmUfjwpc|D(kbl9I?wsG z!cL&Ck8QY&qPL~F!lHo!Gb$XiBRIz*Yg+o>JPYR507#2>E#LPi3t)pB00-a?L^aY< TD1=iZ00000NkvXXu0mjfIffZq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/poppypretzel.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/poppypretzel.png new file mode 100644 index 0000000000000000000000000000000000000000..14d5944783dec94a5d38c5d9d75e449b3a097fd7 GIT binary patch literal 1050 zcmV+#1m*jQP)yh5)uk1;uHAv09czxL_eM zMiMWUP7z(QaHXi3j=*-KHrX^=mMJ>DA>xGzkqb1Ubt6tQU1*46DW=jYR9cHwXp(1Rw$s0f+!Z0Kx(=ohuamre`>I!G+qd zR6M7uxEvL1opPxP*U#UC)91#fTI+;0QwE@y)*bCdMNu41G;YSWEoT{Gi#APsQ8pc= zyDTi?an_4yy9HanzKD}QZQ!waf0k%!_oC78FeJ#N03>qv?*UYmB(wK<#YP-Es==V+ z5x%KjfEkJywCW)=x-a1uC%E3*y*zf_?SVRRkU`47?+FSK5@3ATYjm^ZZyp}oTzqfN z{1oi@&V+*pRM6-?$7o*{qN8I2qGVahWSqM)A|sayib5!ekO1U)Vtkwwo{!(o7?GYn zo99=m-6-0S5{N|f6DumKe-DUTY;ImhV~s8Yx2!JYq&s2kR0P!t3h*lLfcg3}7T?|A zW_nZ88ljlC5Y8?m=H_a#bY(}$eG#X##T zPxU(zM0Q*}r-&fdubLxg?co8CUHij?!cSDl$V$b@mI1lnGla`C#Dz!U=SWHMnE2_) zS(<`1OOoXpg`oNFhjx_YujMsfuS<%LV8@U4sr3QMry+k>P#>VqW@t5FU9OVvk@w_P z<>qWOoE=0>K{5`VaK!1MZ-A}{u5EKd73%N(sRx253cvN8T&a^;JFm?EFwL>92f3tYl0DcHG zcXFGi6Rzp>AT;@zd{|MTtzQLs_&^HV!xEk{fZwPt0v8g9tkHnCw)f+c?1KjQ7f7k< U_7kfnfB*mh07*qoM6N<$f`5eamH+?% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_medium.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..24807feb81f3cb6db4a67b0e368001e12510bdfd GIT binary patch literal 489 zcmV@G&Tr2!>qFp97%gq9&^+yUng% z*ZggJ0jQIynVf?zuq>;Zu%0SXPK|#51PCFxh@ZCyp!O9w2Uz6tMa@W$K$3b82uy?L zZ@v#eyBf!B${8zza+yFgD%GOVs@&`8h`KxwjYdqgA=TQjo~YG;ngXEGyJ55HtiPcF fU;r2Z{}SL8aQLek`(UQ(00000NkvXXu0mjfP^;FO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_medium1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_medium1.png new file mode 100644 index 0000000000000000000000000000000000000000..bcc0ab654fc55b9045b84c73fdf26d3042c5a5b0 GIT binary patch literal 557 zcmV+|0@D47P) zt)|q}wuB-n<)!~Y%75VU1}#5o*c-dnWt*+W+;ccLt>JDiQukZ8=X83`c|PZPp8M3| zk7WXw049J5@IL?+79vGE$5(Xm!@YuFP^|ej!1Bsw(cx&OYp=J9+U-~hu{9s8<9_6J z7U|wi{{%vP9=c8>6583h*~w2Kz62mI@p?LOc790#WLd_(bPUhbD%?U7Fdar*R)F{w z^>1vbr?$Prjq9uUSJ&$+!EN%6S~)2r`V5}+HCU+xfk!H(psm&Ua{#mv)rMp}!Bi+bfwOb; zJCKfy2T+vP`np^$8r&z&l=WL%-$HM14^B=_wKIkQ@cio#%49N#ghLxoDH+AA_R;7PwdFD~GCHOKv$Nj@cn^_ID{u}B(me*^Y-z^s z-k#aL`UJTyWQ`l900000NkvXXu0mjf*J}3c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_small.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_small.png new file mode 100644 index 0000000000000000000000000000000000000000..8b54c4266d260cbaaebf2f1a8a219a00cd71aa88 GIT binary patch literal 451 zcmV;!0X+VRP)4VpF|ZY+bB*Ck4R@*Afur{tzCQ_ww%dUf$gZ zepwPg0!RP}AOZRU$mQ~#Lg5LJu~Qu1Ofr2XUv25 zFvfUnCX*I|5CWitRGI76F>fTWcXb0}X&Le8IM8t6xD2*a!O7|(iguZIK@>s=fD%$= zwE1i6jlXN3?c&z6=D|7Ir~AOl2KP}+7eYh>58=JHAxSBhVD214@wzaGgaE1)hgU?E zk+${V7jF#{!|#ZiDvHHVzpASI8{YtE>M3DtY8slRVJsN<7840akW4P{Uv-(kfT)B3 zy2mRvso}9!=Ky58YqECf4#u30R%;Zg)Eelx`UXJLoK7Ehsv#B4Cc}@`>k`?JxAyfI tk}T^;_;Tq-f9ooi01`j~NPvF{@Bt?ekt7hlBJ}_O002ovPDHLkV1ga~!=nHI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_small1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pouch_small1.png new file mode 100644 index 0000000000000000000000000000000000000000..04322ecedd2544a668f1534db4318f452c990323 GIT binary patch literal 493 zcmV(NXZBe654WS8YEqT_Nlr7o4UlpoZj3RVx_xda!za18-m&E_**vRZ&nivr_v!}`-0IO6J4Ahd4VYPAIjU(w@Tlu0yw?Yktob|m!aK0)Z=oA;0hEdb z=7^k;LhinnY#D>SAF%smWV2s+S(e!|h5^vlQ$y$Q2pkRv!lC81bw|f1>{FekPr)lL z06Jb%QJ)$z2BG9CCa|8b&#rO~%#b z1&f9r!zKhpy*UFZ=|gBQBuRol;D^~{VjzmL$^8@R2;e6ODH>gG&~7x{^Sb^MK&v`+ jYdC-r5&!}~00@9jFiD`|ZI`A300000NkvXXu0mjf>p077 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/proteinbar.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/proteinbar.png new file mode 100644 index 0000000000000000000000000000000000000000..6b00cbf9d26b0ffd62edcf4db96a093721afe835 GIT binary patch literal 406 zcmV;H0crk;P)V04Q)1vA6s-uvA%WKi+Xk^mAw0!RP} zu(<%1Wi^Ij!1sM+NCC%jnlw!jhT)faS^=u6LQxbVL0<^Q#&HZ)Z8y4gN7FPYih?Z5 zM4~ z0j*_s_lx=X07#N#F@9dNdus3zP=}}H>)TR1UDsW!ySMn>A0h7n21ilU>mD#ovmpd? zbq1gVLyA+3B?NPI1{hMfOP z^lAPWK=9QiS+l$j-P{M3U5ZFFnphbBftXazM-gRuGr;l|M$gOgo(j~S9Lx)%3P8p* za&u<95n1AfC9#E6PDwnHu_h8t01?PGTPHMffhYp33>}rr54L0N%`jpc5yTLI#LR?Y zT+%Cw2{-|wT?P!tJDA>-T-7bJBtscjHNk#1gqf$JUew08u~Qv;~B1B-qSJA?@c zy0RhC=K@9?Rx;O?>6wlbFgY>py~g#s?+<63gA9Q7t9LMSZv>vcM%WxJsAeDtc`!fm zJO!b4CrD|xB>iS-Im?a1FT1(9&}RVZ9hh=Ig0*WBmKV)zFFqpN-vHD*U^$lnp$K}P zWbE?}Q;MW90zE*r3AUOz=Fj-Je$FjuyL?+SH`^ss^5}y$v{p)NaUdbafQ*ejsC8U` zVgy6{3cq^@7!R|fAHej2gzVj zViT|}-r^Oh#$t$@zSUZ=7WxER(-pW{JGnXODlJib5{hI3sb>OTUq3@scLR@SK4ahR zDxOnPT9L}%+Fa-3_th2D9XW)$?M)oG=+0@J6CfMpz2C>5>Bml+74yQOC2m&FMiCA6 s=7Qdc1-*_775km|cm9wR0sdQnU#V?J%f%zo9smFU07*qoM6N<$g0+BSv;Y7A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pumpkinpieslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/pumpkinpieslice.png new file mode 100644 index 0000000000000000000000000000000000000000..2281c9d3001358622351fe7f619146499cadd812 GIT binary patch literal 685 zcmV;e0#f~nP)>`Flcq4H@`UC7D z2x1rg0bWM^2lWqlRS;fC7v)Vz1l}re?lAzAjGoR%nRJ! zUS?yu7#KV}q9H(h92H;nhr93n(dU$kc2+kwaa9Gr&K_RPOo`qPw|;xBuo&a)T^hm~ z0@lVy=#Gw({WM2$c>}f-O64N{wl>ynHj4Q?{=jKUPSyN=xtL}Bb&U6MnyRKoAQ7rW zFh}LWo3zH55`C* zcEV-JU|F?rBhUmis=op}9uMv9?R+;7ywJ>1NQB>hhSoN4wLpt=Cp-`^Zp@WQI#tyS zb~>Hpaye90JscpFN)d@fb~lI*>1;i@O8>bkE0xdW%6p*E30gZk=rCS;OFrv%yP2P# zKR7_sG@GvLLQxdL;V^|lfz@^(qcdE<9s+``@CmL2a8P9~F-N+olz0|ROZxz-@^ zM9hjL&1Ilm#^G@MG3#c6n*!8>$Zq#`Tq}7>%?2L`upe@ib#ng?SO5#~-vG7&B&+J- TPd2BK00000NkvXXu0mjf#hWs& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rawbacon.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rawbacon.png new file mode 100644 index 0000000000000000000000000000000000000000..17c1003702b1fcb8f60404fb883e010099a3793f GIT binary patch literal 427 zcmV;c0aX5pP)Hu43 z1|$~#L{%nMb^<$zm|K%)c;!-&+HD-V_(@fw_U!lF`OfXgmK6aaKm>>YtpI$yz8E}v z(`QM}&Xa!ypgA?azB1`xSPKypz}(-NT)s1h^5Y}fdB|3-2?k)zOT()9qpZq47y!*_ z42bUNM$+4H;#k@oK$|oB+0#Ti9_Eb!&|rM8Ge=BudLp|AhkpWX48V=+%n8Ssx@m9% zpu~8x%v7O_&3h*Ew@lLg{$dP^pE$%Uuk`}pM!EV9o52iO>2B|iCh~cCQHi5m)8MRt z&Jsk)Uca)r?e;QrZK{oN4{UT1VPj}keqaDGbC#9n1k`dFI{|bvEjJs@?eFE;`;OdN z02E8EOAPZSrfUJ9w7u!?yPavrKU`1%oFix2p6OsHA?0-u`7~3j0BtG)M1ZXWd;#A# Vz%?>Y1HAwM002ovPDHLkV1m=IxViuU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/red-sun-special.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/red-sun-special.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf29b0e7a35cb48427e0f854442803646190fa7 GIT binary patch literal 653 zcmV;80&@L{P)>wD3WOcBEOKFEL8QeZ01a0~VbV^=&Kk}}=yuKLQ zL6mofoRfR+Isf1N$Vn@1*h~NuzyvS>OaK$W1ZWySiq2QBQ+Q(To#np(>IKJV-$IsU z*zI=a*B;*!bK!JZGe^AyX!4DKbO21a(glAgq$x=K-i%AE8yII% zZm`pdEChM3;~0u#3;u9OoXlki4Z!Zfp%6DTBChdjpQck~Sb zsL_`yMfq>pi;IHnRn!WXwmc80S`7<&B?kvC`w+H+tUFHrQ00000NkvXXu0mjfr*Cpu_M!_GOPTZs$_IzAWY+$N^C-DL(}oXTR%Sk5h-ul%evyrnduHCj0={|__Fz% z^9RPln*xt!IIf+{uyjg~%Uy<$oBxCs6}(J6GOsc0!fE56yPtIf7+8VmhjxQ#f~EIW Uo8q{CK>sj!y85}Sb4q9e0KjN%cmMzZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/roburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/roburger.png new file mode 100644 index 0000000000000000000000000000000000000000..811f6865ba4af9f550f7e1d4584904cd4cf17f8b GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0vp^4nUm1!3HGP9xZtRq&N#aB8wRq_>O=u<5X=vX$A&n z9#0p?kcv5PXYI{W3Y2KGPwdW}lB&GOW0r`JxXz)d4&NKv8#qq-YApF`)?%Vi?a-#PZ))0WoR4i-e6iT=P-VQq=g)KJJpa*G{H*;ubEKYx z!!&NT2~V3Ct*m}-{(tgk#b<$qx|(wR*5AK>&;Gbo;=|MT>EGWo=X!69=!s#z_Uryu zo*TDs7iV-|I$1xNk!f9s*1o^JZiiR%vN0zwZ{qxSip{{`z}vFfn{KXIuV-3r(8nq4 z^D*4W;Q^E1^2__GR)#EkS>m-f&Y#z1JEz)DZ(aclX0d}x^I9Teo|jqq8l2@fQJ8+( z^7GF>q8`&0-OTxxHJ`8bAiqh1{p5x5*RQ`?9XZ{1FfNSoH1>e4Vx2nuagw6g! zgS@!7;J%YDO02SGvmbm^{PrnB#q4Y&kG%OlYL#xwd_~ymU&<5|6*)bB{#>Q`!Dk;f zrAKcc7Od!F*#21g%hv}DT}KxcmzHk5Xp=B&|EJUm)=$sc`fX$igqlHTDxqUq@F?B zhF^d8Mb%l`gj~qly6To^tuV+N501UHk?IZFeDllO^yTvM@_WB-*SLy=g#e`{%uz2!`r>Tgztgl4*9L`?oC<2 z-shs^Xl-rHbt>t@+qY|@rh9tS&9d?_I9Y%B@`5{2yA0eL^s{-Cn~e^}zpg#-|J}x$ zFQ+%(cygls==Fbo7p_b>U&M9Y7NPC)jPcLGpi0pD=^O9^B;wr>2yh2@EKS%Mqx& zp`aC_J>#*myg-Nx#OMk90*VlG=S|?R5Ca+iBl`rq0#NM0ZeggiBJ&T}*Q+;QJdwIH R8kkuaJYD@<);T3K0RRD1h;aY_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rofflewaffles.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rofflewaffles.png new file mode 100644 index 0000000000000000000000000000000000000000..69ab38455482ea2111349a654f9c0b811fb14f70 GIT binary patch literal 427 zcmV;c0aX5pP)1QY>9KoL*`ye6Pu*QAfEs&fQvN%%vhD^&tJ&ydc5LNDJW1#ZI8J73kWGVX)r8O|Uq`3A84w z0@4ajW^rxQ=ju1Niz}vg474UGKxdc&6C3jWKptsLSOE8Z%Y2ajV;(v>23BR4|;I}G4fyqbO7JP>$0YN7>}|?$e#r8kh~|Ro(E54 z_~ei~0+_t6YiMrQXz-@lmK!8}a>$JUeLeVvaU9{dkRmq%avaaXKl>gi0*ZhW@C_h% V#`Z!mm7V|q002ovPDHLkV1nxyxhVhu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rottenmeat.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/rottenmeat.png new file mode 100644 index 0000000000000000000000000000000000000000..00502cdf846fe398c405ec3e78d182e47b28d8d4 GIT binary patch literal 1915 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 JPDHLkV1k6W-Mjz* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/saltshakersmall.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/saltshakersmall.png new file mode 100644 index 0000000000000000000000000000000000000000..d92e3aad05d4cc50a65ed08da36849396101bc90 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7e_u z#WAE}&fANITt^fHSTAtCDRlAH=6@u(XNKI7Q$YuBElw$CQ4H-e3>16T{37K4O8FZy zYz7UCJP8Ntnb&N6ZqY8#x0FHWderyg?6v1bj(ibM_~~KBZmAs^Zk4WD&8v|<2WWE;IxLlr|8bgnM^=(JHxhp4r{*_oSS>SQZr%M k7sCU>i44pV8)QGQUdnK^>|KA2ALv{LPgg&ebxsLQ0D`w#9RL6T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich.png new file mode 100644 index 0000000000000000000000000000000000000000..433e39f3004381487428ad86aab140960da5b17c GIT binary patch literal 941 zcmV;e15*5nP)`o%elrws`zw#QkrIJoB~*1S7wc1pGkKr~LM z(m<9{ieo8z5T{7SvU?W4XU4EJGl&jYglHi)1Q3mXRaQWiUI2M^IqzTg{N&~dsv7px z$@>l$+F;Eo=Htun_Cy2{7QlK%CnQv5@ExaQ79mca#QP-@4QtyVRUCmJ*bvX6L6_`W z5lX(l=h3i2C(KSw;AHzySdfqa9n~tKur>opnoB&yqB)6734-n-5VdIx2Vt-!7knUH zY&eYx1rij%RHhcRhH4~cSNhCZuGee5xtJ0Hpg9CVZJn_c&L4Jk%uNKXkB|{~bNdCf z1|U;=-X8%n35mPCoR>$|uyiQq}T!j2GNrC?a{xA_5rU>D|(-xo^vDR_QqaWYEX;X-P_*s1AN^QO9dUc98*Ru-ks zFCopt0*K<1?QYg`qN^@nXlx(C=+x?t1C2>koPmbj4un-y{|ChL{Az)MrN`?pK#fw( zjVaW|fldB74kp^+(KNXrKGQ*C9PmW_XXLK|NaD%1QHZw;V6zkhhynZo8T^}5^=p6$ P00000NkvXXu0mjfJ)y8V literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..3cba7fcbe39386c525a1ade4479f263259bd9c3e GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQga z#WAE}&fCepT+Idot;;7U?t1_w9G_e$qv<*6_QWNX^In(Ed0r{vdNFT} zAOmB=grG|XJR#RjMO_z84VsdAGkTMW@7GBoHkXeT`mB2`b#SdRgUkKzw+dyrni7H& zFPqHXo+#mW^^lBukK%#bB^m4!maJN})M$=DjPpY09q#Q5Dr0hQXKi|+d|+2?#^==^ zbNJr&9{*nZ`re#htR8$E5{xO+GWGjjd@=uX?S)ap>QZ)X%fw@HvugTe~ HDWM4fFieCF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich_top.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/sandwich_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b4fe2e4ac8a5b75590e60c42e6b946961b749457 GIT binary patch literal 666 zcmV;L0%iS)P)p+qWZ7D7>I zMFjtXs!Nr)5aT90KXxvP8x`CIu?wNA6c<4$AqYZ)=t5A?*hoKYZDP>AzH{p|16VCD;P?C|ROfR@V^VDwVoLxc{A>6GLI-=%-aRDatCb%j?hBpM zch6<)WM3ZHBgbU@(EX{FK$-$%ug8^dBrH1)cJ;&4-XY_b714PfUi%c3%A-xY!H@rD zKL)-btxDW=d;FNtvKp90xT^r>u-AlBH&+Y0Z7@TVaFp4Du9nP zS48|BK)G}@^O^uazUczwevrEz63Kh<<-3Z~4B#DSJgr3*(T%vY;wHCYhL9F}=CyXe eKcWuscK|Pq@Lr42DpC>v0000nHbSN&a4lb3ti*F#lisCH#D&iaX zXK+$NpneClPZ+_mZqifeRsJ)3eKNn1*|~61?K&32l31b~#+pGe!0r=MfGH4taOCkXl zh(XhUVFplv?PNqj*W-cv2?M4DV{lFY;Kkj^@dBSp=u|3$v-{5pKwd#Z8zzHe;RHza zAmKHAVJmdu(dq>O(}{x%0&M$DfmLupz$7#dj0%t$AYFiGmS91kJsi7m6jgB9M5lqG z0&JiIs^g;rl?p%?2z;|%W&%_SfQ0kIRCt{2l}~6BK@`Tn-DHC%O=B!nuvifkMLpC=Zb~ZtyGSYC zdNd`y2!(3np~s3v3F<)+A680(8OfZMB66o%xrd( z&6*hWAj&=nZ}!cb_xOjnu;>y97o)#86@b(+HM1r-O zep7C00qJxaR;yJ#CrJ_$ZFn@Nb|#z6VzqM*#AgY_Tn+F{FRGm>htL4befY@4#il0U z;3hS$6r~~*qGf6j-@P~RWqFmw*N9khC5E;`Zq2on+xwF{v5!DdjjA2EbZ4B~y{lD1 zU;r-v5Q`;mU%_Ud54PTJnD)CN2m+QnFQa+n0@hFWvm8zUTAht}^?Vv_g$+WQM`2|h z+^wgGd5^H1cvmmtBiETmRRC(k_eXIr(1#F#VC@yMaE^^39C^U5gW5aNofqT<=ox<~ zcZRfip0rt9+d!h2!yny>@R{=f5vJzey9GV|o0W2UfXC6#+{BYNQkUyb~QdRJj!bS5`da=748$qflsgHLd0XoVc55AXE|bgsp?wE zReWe>R@eHP0MzI&H5icJWj9I%MH(m;7Q>Trva&7{r9Kq>3PfjX4yBrtP&vqE11ZF; w(*G=0^z}@`x<+xmWA%6J-}y5#0RCHmA7T*@_T0?a=l}o!07*qoM6N<$g1=ToK>z>% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/seafood-paella.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/seafood-paella.png new file mode 100644 index 0000000000000000000000000000000000000000..e19922b132d1d8f93cc5dadaf70e178d0ac89b4c GIT binary patch literal 528 zcmV+r0`L8aP);~=k9yod!Nty z+`;wYmrDQ$00AHX1b_hey8yKvFp~r5laH4oU|N9mqX0fnl$|C+QhEc-W`FOKd3vh{ zPfGz-pE`hf9g;fxZ2+{OW5NO-qOy4iv~#s60e84AL&V_@>Sw!wXbUhh=4HF12@H;h zu(-d80gIiRzsBZ~$;Y|z^lB7jxEJ>GXR4JFsz)W9uSIa@1M|nd$lWGdg6IIOLoU{D zwluF5bATeh*pBetvmAM@VNT~{h)em#oRS93QJ+9r^R5B35Zd0=bw#ICDkPa{VX4}gcLdNtbeh3e>+k*x1b_heHvn&to5jF~ S>PPYb0000VQ!Pj5=WGIKaz@`~TLNaSYz+ix>#e+s=Ju zq`Cu=9C#TXpWn|gBSRK14N?bm0I|lB76lJpd}HX?@D`_hMSw5^set4(0I~$+2oP;s z`i0?eHxHao4j|eAVghVnT0w$~Ve8Q^K-L#9ALIzzQg(*Ni@CrdL^B5;ihWB>pF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/shrimp-cocktail.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/shrimp-cocktail.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2a7678b84e1ff65b6f28a740364a4410cf1666 GIT binary patch literal 372 zcmV-)0gL{LP)VQ!Pj5>fM2k6!6{lC}vL^Avbg#vF#7z2a22GAi_u(JPeWcW{v zBS=n!sd1a0gXoIuKP4HiUt?g<4q;%p{*U3s$ukTRPwVnED0ND}c2hRUz2#RK409p(JAj?7GAU3gHq+1!*P=p SBn#>Q0000TwlI59jOHeX6kpxB)XEpo;++xi z29IZc9UEXEgom~<1JvrlV~GpU3-P)kI-znv^D@CRAAbW7#q+rr_+JO_g7Yvj)Uzaj zt&g~^*6ohcd!Jd(!YZAjV8Cs^wSVp(Pow}*xV@t>Td#Htr}yAg%5E+*mV{-tcsqtK zP6n6@U>9#ytWB>&jAyk&fFJc^aU9q04H$PI{f5Z^QNTop-8g0czME+vY|wv1A$A!l hAnK3+36KB@_yM>tgk~%V4s!qi002ovPDHLkV1lUFw}Aiv literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/skrellsnacks.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/skrellsnacks.png new file mode 100644 index 0000000000000000000000000000000000000000..6b39f54e2d40a4e823075d53b109e4bab70397f0 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQ6O z#WAE}&fBSbd7BLcTJ?i|c~rDk@N$_g@b*6|Ft72}(xoLi4IFea=VWy8Cl`ZyxS%W|U|Ep>50pt`}=_?9LZY?_MNPdp>G+G*82`)JUh$&__`8J1t)?|idVnJR9&6BMEGqEKwu>FW`U|(`E)vGe= S=3-z7FnGH9xvXw4lbpGkZh$(K`5k)kct#U4k{H(y}R~GVl8+_k0Rs|c>lW>@_zj9 zC0WOcBL;{8Vu1e#P%K`K!)rp`XWDU`HEjS_I2!khdESr^vJft)-s1r;e+H3qz^FdL znCd=0XZry@rnv>#P@Vw;8xbvl1dJ8{JNLzN$KP65yYZ#^%K@CXCKi)CorTdTQcJrn zJXb2f^{pNNVKHlxpv}{+%h!QzbItZsrIJ1X(fqJnMo_EG)!06FKr*BNSd*VXiICRr z0JA$BiI5XalV6-!DnN5E;Mq(jBQQ*hnl=FTes}ym)U0is42Q_>Hqof(kTFwS-wiAr zdp&&s;SkMF3qHDa6Ak153re8`(0wzJp?Tr}s7|4+)?fWooGml~3L@NqwXYxG2?Q4& z_#Cw9nPU@^OfQx5mjYnF*fSiA*)Z;SuXFVvbe|Rgm4`1KKu5#?F~G_Jz5#0blRnq! RjI#g$002ovPDHLkV1jGi#6|!B literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soydope.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soydope.png new file mode 100644 index 0000000000000000000000000000000000000000..e439a7e058b35dd82ac7d7aca9b9dd1f7189b5b1 GIT binary patch literal 557 zcmV+|0@D47P)Sa8*$gPV)spg8L& z>LR#^AaoS`*c2={2yTKuK%u`tsED<#br52(RZCl}Rf##LMpR5qMG++jF8AgpInQ%W z5>ks_4okoiummgtOTZGa1imb=zc{O=E-qh=&o8erzqw=kaRD7nBX^yK=x&0XO2FIN zf|c<>b$VmBDhbm9ufgrD%}AwA8BP*Xdk0@5Y9l-`tmcY$Fe_q8AUrcxZue~tSD6g& z5k#yPc}*SY>+RK~a=d?E$YXJ|U!B?B`&6Q$fGo@E@zyeQI3;iNczCT>pTD_*(9pmg zfhI&svbIM-k7OjY21$|(MGOT9UMLjsy7D@gz!DTxz36lR8a(?@!(e(5Yw{U93Lc(G zj&e{gBZ-O~aJgIzKR7&sufxYcZasmYJ3?@8vzy`RvlFy5mElS{!)wk_Aq)lL@i+p3 z00!n(fzTB15iprZvJ8U-2l5vR&b4y{C7>QX-CcaI)9FMs8m(R+7!2AXk%(%y+c6Yc zN3mFhqA18NEog9XwP@=Egtrw-+UKZ)W3d=Yr4r|=T0obeSr_s9{g_-1tI3m^JQv>+|600000NkvXXu0mjftzqY0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soylent_green.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soylent_green.png new file mode 100644 index 0000000000000000000000000000000000000000..fecf1c978b43abcae15eadaa10db3c58929423ce GIT binary patch literal 433 zcmV;i0Z#sjP)t08+w|i|Ko~T>@amh5Mn6 zkh!FYd}F9#(W)Gx2q09hNMRL~4kY;Iozn2KWdTT>@?u1BZM{jVnZ-I{BR{lVMNemK+lDEc zrs>84_N!a##IX zjQ8pCZGS#LjCgk{ehLugT^}pAVs1~VdPq&huJv8Vi}M|bPPyFuuUz|6Q{k)U+Rg&l zLxK||Ek1pWm53hzNW5tp`1*XL6TgFr$%#XecmVL@K?{aqfZwv5cmOB~yvqL9_do@x b09V*IH{ZC;Hb=?{00000NkvXXu0mjfW7)rS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soylent_yellow.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/soylent_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..5657b0b1a1ca5955dee6c84dd5fa548cc257ded4 GIT binary patch literal 521 zcmV+k0`~ohP)a(^g6brJ?u_if*OFv0x!~6hDHWKyh|* zbkwCoC#jp0YX_GOI@BOeE>h_xBGpO=QZN*4Q@yG0+0Z601&atdOYU%z^Sk%m2Z`X1 z6#xVP0YCr{0E`82c@*o3JZn4c&_nbG3Q(S+j*T}KK5%;@BO_ao zHrlqIc^+rp>^ha6+;6 zaQH|7cHiALo;sthL>?xuaMua+KQMaZ*;qv$Hg>P@AplyEZ0-tPqHP!54D$F1cK}eh zq9`a<4j@voBDDAl=K$<_&bV^^GcNd%btav^*@1CEK=+R1CvP1b53GGHC4EU?o|?vcQO(Qy znzrozb9Q@qsDG2od1^M&^Cm+yO+8?>%SU(jU|I8bna ZIiWz~^heXbmOv*mc)I$ztaD0e0suZaRa^i7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/space_twinkie.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/space_twinkie.png new file mode 100644 index 0000000000000000000000000000000000000000..9850645121bbc69a976f179d10b8e19547cec1a1 GIT binary patch literal 455 zcmV;&0XY7NP)EKorMcjiw<9N(-Uj)WHl|73?BH5l1)w0snwb zUHuzeGdYW^ga3hu;8q7|9O}^3CAE@-nDZJhmmeCu(^f<~+zaI13-5iupWMOC!#{@r z5C8%|00;m9AOL0;pnuYgQ23J9Yn@(cQc>G#L|MKdm%(gzxwA}w!P!=%Ybwc9S`Q!n zT=XlDtS2_D)YO7r{qUAK$K8PtAqc~e=9QX8VR#@cW7qTOD$6pAU&lNfHUM%7arOAjbY`-Wxa=bmJ%~{2PE4 zfOFY}G002ovPDHLkV1hD^!8HH? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spacylibertyduff.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spacylibertyduff.png new file mode 100644 index 0000000000000000000000000000000000000000..79f455ed2f91284d423ac0cbf8a9915ecf8727ff GIT binary patch literal 3732 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spagetti.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spagetti.png new file mode 100644 index 0000000000000000000000000000000000000000..c4add268251ec6ce5e8b2d78fa99953f05edead1 GIT binary patch literal 626 zcmV-&0*(ENP)IB?CR3VbRKQanW^ z^i}mBGQ!_U*>UF-uJu`2nJu=1%mjB*;J$m8XMsvMLehzS;I}6!9RJTgJ%d7|xal=idn)P1z5u!1%6|F0c8P{AM-VKc>n+a M07*qoM6N<$f|!#73jhEB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spagettiboiled.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spagettiboiled.png new file mode 100644 index 0000000000000000000000000000000000000000..0a7d64f616b2dc9af86be550749d4d62b7b996e9 GIT binary patch literal 694 zcmV;n0!jUeP)Vk2tJV#<32>ZkKi~JD+rSp zAn)2}X@bVMi|$X6pq?zl$WhQ80}yJPLS(GDv^YB z>v`}}J(yyG(K1nal{HH*eBJlkDA-sKC<3&;gwb_7s~suSgwL2fVIs36qZZ~e?UgX;$EH%A(?AGv#8ELFtTP9 zu==iT0FnKA+OQ$?Lbd?vvlsoZv>i4#(Yns-W*fW&sQ=J3N(`Yt)M-LU@=ktjr4>y9 zd~Bd7YZ=pg!o>$i+O~^lF93wdoK67&SviijTENfvmxuhfQS}w#=Iq{+3LMRiMH7M~)j((t z>Q4h1gH>l@&jeP_0twXvfcWPyl-@K@gCGeIA^r!%jOqEpauJU|Rq>%U%z|n60N>{F z*o`pK!$0uoPLapRD0nP_(u5e=*NC1ENU@GdEfw z4-|0sGy{3^>YsIF9A?I2lLmDE?>wx?(h&BwYj~auAbOQSAcWQ40*@<^5aKE0TD~Ts zyKIGPnRA?!afvT#uj2!_8QML?%XHMpH?^KQeYT4?eio(sEX73n4h_ZJp#{i-V pZnAd;;FVkfxXs=*fEU_yfWKHJM!tlVZkqrA002ovPDHLkV1fzWQ;7fo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spesslaw.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spesslaw.png new file mode 100644 index 0000000000000000000000000000000000000000..69371c2b469b081e66fee08c7534c710ef5dd384 GIT binary patch literal 677 zcmV;W0$TlvP)4CotA|`v6DMd9ZBW}%5-fVSfxxTn&?J&y5~%1 zi>=)tkm4S=oO}M<-|usN_rlG>0yhPq02F`%Pyh-*0sJxG=3bCv_n=x3!1NP6;kFFI zdc{N9Pu9UR3anWHG}Y_bx}!79=6qxFfwBPf)HE=+`V0`bhVYAyq~vT~w;7(sVm5c@ zxRw+g{vr#J5kOB}+ZbkncWkX=eaqDo@E$sfnfG1sO~G#9;{$l@>k*9vLHFCXgIH^{ z$OK6X_%JS##|=6b%zZu|t@a6cU-<#CAMx_H!F4&g^sd%2X_N==Z4;obLbL4%o?1ax z+C&%%bSWVz0W|ry$W)@tS*t8)xj2r9a~)fsn^(nVFdds8Bc}omJAFOFxMb=aNE+`z`|=Nv52P9vlf)*?Fb7O#g!P*hQc&I>tMv^Wn! z|BVFZ`QW5<&trEz53^K(bS))d%pXE!SuqOrxe)LS<$+C!z_j;RTzJ_12>ktBXma=B z`e`#lz8(ZV$Dc1>2Hc(9Z>|=h$>#8K*e@TjZR1*1@4yh@)M^+@iXiGoq-uNu=Pt!^ z13`7A7Qumi2~>#pA-B|oHapM8g{K7ElJGR~sPGQaSd7J#4VXjF{$~gpzQQoOo-bX_ zgUQc056s_ZN}Lgp4x-6c|91bB^i|49EF17EdwvW16>l?(A z0eAI^xQ=Y&7=udwEdVPt*TRf(?ySC^+i(E#xdKrd)!+@d)t*{jAstmkrhW*!_iRF% zB<$Lc4bMd=%QBkzO-wzXqLNy}w0;Ic)7!S~f{alRJum>KyTBh2E*8TAe~FvqD#n!q z@I22RTXeMO@NL3ZAE+u199wNx5;1RGz(~ennie9FNYpecShIi##Ut9729LFI*2oM4U Z74HpVqcWkZpdkPN002ovPDHLkV1kAw%Dw;q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spiderleg_c.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/spiderleg_c.png new file mode 100644 index 0000000000000000000000000000000000000000..91159e508f5a1c5ca59a245e317856fa1d673cbd GIT binary patch literal 522 zcmV+l0`>igP)5fo=ku-7RXS{1wfHB3cQn`F&u)LNPun_kW^LR zC~xEZ@IZF(y_>)RNSx~SbBk@P7de3x3VCQYHOB=39g&d4V(c2|ClNHj*J!mHjItf* zI^^>?(6Khn5eRY|EYl<>3JBc%F#rl0Z-UUYj^jWkvkHo$K)){_kkP;Qa zQ~(cRfEA0y6z->Apa&9kA#q>7^R*NM1wa=JzkUA3kt_m;0RA<=Cn#CIV<%bz#Q*>R M07*qoM6N<$f(&cgP5=M^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/squid.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/squid.png new file mode 100644 index 0000000000000000000000000000000000000000..1b129363b08e638963196c22323880746c6cadfd GIT binary patch literal 431 zcmV;g0Z{&lP)FcgNLp^y{w799%CloP}k@Y=!D-g1G=xj;6% zcGVE1=iE3#z4c3A&^UvT-T)T=O&>s)Gr&>g zaxQ!i>`%`KAHoR$%VKeqi))-<07f;NjLkwSbvaN(J_T(nr)(gYymCN8pxg2R^9~}r zxo$jxbrAs6LJ3?id-CrS<28dWUJlrev=C;udx7nCJvoD0QY{jI-hO+}uP|#^DxW_i zfdEj8aRcMrefhiG?Im1|mtk`Ng9QsSHQnX#pzdGiMITqs;3Mx-U^ho!c-HX(&`m># z1dz*^W%XX}z{X6B`(VC5F@~K1zH*>eO*as>s5p#+cs ZJ^`qkjkx(H9qj-B002ovPDHLkV1j4Ev;6=7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/steamed-mussels.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/steamed-mussels.png new file mode 100644 index 0000000000000000000000000000000000000000..764eeb7e04f0198d8b1997f23b81b3d8380428b6 GIT binary patch literal 652 zcmV;70(1R|P)OT$MIF*i4WVfU>yoMkK_Xag z3nZOdDZ;hrpk&b&9SZdj#IY%4J2M1Q0x6iKU1FfLAlM8Y8pKH3=pvHE^LyXR9ci0O z&RP)RUO3*%^Zj{#-*dU-H2!fp01kiy-~c!P|1ZG#vk|SYCxnmN30JdzBebM_+p8SW z{~BO^O45=!Ki}`}7x6gi#?){ELy0+!J`>Ej-b=VQloh&)QDsS6Eyg-RbOgvRzS5{q z&;CIC&IaaFbv7gOH)|4`Qqfp42R0|&SUWmC-4?6?Cl@J<$+!V+(|QqThat}Hurdq zZW;nTe?zBKqH+OWzh{sKTBgww;B$4C&HX;zoT20xN4s8+3vC_#kpP=a4#aSO1dXu( z&o%X7h}7oHJ#8m2{^W%#f1yuHDPcYVo&L&$2o@w2na#T#`Nn&F?u;727q=T1>-rca zVCXX{kW#v_l2mw4+W=JAuwS6|XiryB00l}}*c1agR_gy=~w};KkrP7hLo%Xl&OL+M8IRMmVo}D_@ mf5CB#P88rI%K>lz9Dv_7H2v+Y5wH>f0000tC{8MiHV3>RE%sJoh+?nebf(>g6 zum#uxECf&}6sCUfZ8n>Ml>ubKQmF*v@fgD4u<|U)k?RJe1Q5o>V$osJ?RMd`{ovIU z7{x1|s{)ci<^a$fll%QXH%&g@+SiioxHvnq<4)%Tve^TEM&TIsRKL>!O)112z+^Jv z=Gf_>xdT~ZC``{!_V_r%&M&VPL}quyW=1UjazI)+_wa6fa}cbrU4d4s6$l1{(>CPb z(s*NLBR>B*+Og)JUaL_89ZA9@E@TaNUOKblM)HIk#n9(AY}?91qhpmG>wC@Hydbz%H+z%F`YRz)WIzbAe+)ySKRL^`1%;Bp0ykcFfpd9 zurz?2tm@h;_R>l(q5S3x#p7`>48y+Wwgo)_Fp(y!eh1_+ZaF+?4HRx`)mGGgj)g=b z&dc4%v1~$XsUVb}W4D5Ith-O1*Fk6>f#1JXUXmfGTmjZ)?gbH2-3Wgq-!I{RYH5IV dt<=U>;0H)^NAalVF@^vD002ovPDHLkV1ha#BLe^c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stewedsoymeat.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stewedsoymeat.png new file mode 100644 index 0000000000000000000000000000000000000000..6d69305c52cafb850992caf032acc85d3e871436 GIT binary patch literal 641 zcmV-{0)G98P)qg0Kug#$P9=@ObtSnnMi`+dF}8 z8e*CknOGVpTD&|@Q4|g+2!bULQvfRX;zkJ4@*)rxv8`=!b2_hmFW|`Wqdc$w@p5VCUL;tDEin`b=hte}btIk-pl3aY!`B8ezc7!P?3YT{bY9(ba?@?!7Mz;GqQK+Y z^abF`T%~3;h?*1dcsx*574L4J%C0137WwE1oCB}l$Q+>91++QYgpl&5fd z=pnD+cDo@-l68PcB;tt2hAomLMBIGt<-NT3-gE69KW@+iVVc4+Fjd2p>pwBtQFp*R7wDb`LZQy62ZWn zGDPKxM-7;T<4wIxv#ARcMmYoAJRbeF>>+v>VV#2lPG+tQfP?I&v`(p~=s75v%Nn%j zF_iUzeSf&abSMF!ktoGvOdVhQ_;kDm!egiDPy*mxO$Uc1K?}5?Cys8Y3>T(21MByD1bfsPT3d;fS=}406)#803@%!?FI(mmwo`dy`XXY S9D}U@0000oS5!z+Qm`$THoo7xyYQmPyFd$;obLs-_QHKcfVX1e>sK#eE~dse6N*FpA6L4-+tis>?32K01MBbv}nv(2^gs} zf!bVct*xKBbyo|b1)yZA@$pmV1NBvLtn0G}0ieC3J)BIrE8?uo z*U-3H*}{PiVH-j$X7Wm>K`(QE{8BCt<~8hun383!_R!HiI<#DKHh>C2ozQxD7086- zd?^yb>+lGQ>pQ4in1lUcVep-hg3dxMTEyr(1LnlB_WVunLOurT`va^*L#zhW7XXO{|zqWo)=(p&o|qKU*mW=4W-nBRB5Ll2R;=Mcrx$kRn0V4~gGhU_30z zM$;|Gl%lb|#4=|As1Vt744L{8GF}@XAT`K%V>2c`%Np!v)K@2@kw6qnsNaaL@eI2Q p_66`e$e`li`Yay;3<3U2fM3L#Amq;fnXUi;002ovPDHLkV1kLzM7sb0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stuffing.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/stuffing.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552d498b89a7386879fcb20bb3db127e1dd389 GIT binary patch literal 1000 zcmV>P)jOa`yF z5?$yHMMlqNsq|Em)peXsh1B*oIbGa294Jl)>b8m`OSoJv3WWmQ-QBj50NUHz4OfK= zStNe*_y>e)kFk7Vg5ZHw z0A1)Ijr_zqXTN=iwzf87U|_)Zj{vePbNb{UYBEG}+5@%XU%jHS`csC`L>9HRg804w zsb39jV|NJ$8;HkUEEZGvmZ7Hc8RoCf;d{-`^k9M`C!gZ&Cr&dm+*R5WI245+E^Saq zZ16(sV^D}wEgxkeah_XqD`YNcJb$8v;(K|rBa39HBKUHO))nxIWS2gi34I|Tyc(JN`g_8M4})|Y_0@f>k4&*T2~E$nu<+d! z+A6I3tMSYztl9VTZjVUzV*;{QxS4JsTq_`MKhy%d1DMVB^H_|g@BoV!Z_%>fNw|3v z?QV`6vk9{E2{yf;Ic)^LnWE-U1AAU~6FeVA&dig~Nc{5I7I!l1G^RvF^G)jp;?feb0;JPvF~^GaBe%z8osExA5~!~Fi{JFM86>;(r;{SZ zV&2kbXRc8b3Zd&c%eLEXqP2|D0Q`QRmE4r9ST?3!Et1#O)mdkz9jXq}{PaP-{Ni)V zuD9;&IF)hJqI#dDf^S67#{5laFP&epu>xtt+MGNYrP;`4gh+DcL(HssmCK`WT1X($eb zp`jt`UXtv%-EM|I9u|I13$Bnah`#707K_<-%k{V4g1){!8~?IA+F!#mKpEhF0q_U* W_;QooZ0z&^0000Tmz- zmLBOb{JiqOe}?>L!fU^lM`ef4Ke$!l7{`q{mdv*q*P04Aym`*YWSU}k1WnH$G$(yCG*K$eA zpfI?e=akzC8}xSLBmboL98R8|-~T+%)00a)?oo$#nx*+`AOGB?igllu4and_$M<2p zp@FXjv)3SS{tq@YOGE#vP}$n4*howU2rh$VI7!_*1n81cvUzlNC09~vLa_mYzwz9I z5wNCc7XtM)b7C}wPxDL|SB7vPPniit1_=Ja(Gm=tI0gOgSGWlo9u(QBpWF~G0WU*X zN=+!v0KrLp$G?GwrCU~DWONR=u3bXTHZ?BS`ymK{sQX4WP+PE3s%MQw8^5qw6-hIR z<^*@IT7~rCVID&wxUA1MWJn)gaW0sJ1q~3G#!P)0iZZpRZ@Iw$A)vjP8zIR?I%*t| z?*+#u`PkzKVJ2am%~mXG;;se=PGG_7LdvETe0kP_m-6$t2@*HLM5(ql2IqhuFG|6Q zN*9MGu82qe6OX{s+PBa-?=&F82^<<2hrip8JxN;pU};71)@NY5eie3K0*|#7g zE-P{~^q7()WazYTj)*KW5#y7$INYdDWo89^b!ywmC9<0Xfe$ArO#aE5$ga7<0u({PP9p2O$C*fdbuWL4Fcl}PsU7W4>ym}cYt zniP=4(mXvQaX5ix$>0`g617$#wtL{^3q3080~+PE?JqX75Afch+u_fzUx(|%F6bVJ z!&R>zqiNw1j07im{omdrBGWA~16Wjd?ScQp#m02$s|o{$P!m!gtTUuU;PXrH{=OhS zKdHvoHL2W;{re=zSSrST56IGPbF1Dh&`1UAO_3(tU*?(@<;8yXw6=*HtW$%-b?QVI zOC9%r6>rZq<6>u5Bm-26FOJ-T*D-P10-Mvxf$$o^$wV|MGC=V1PXZ|a^b${hR(1~R zPKtP~JQ0(@F?9UYf^!$M7*vd$d`F%SKmMkh{o_6w(Rv??8$ zY6H)Jd=Y`csX^DKr7{x&H$kO%bw>c^s+;JGvcIAd2xaZ~y<#ug zFCv2TQ!|+xwCov*y0;<&^s@Q-J86 z%3_+>x^qH<>fRem^F~CfD*RPdoV{9VVe{RG8&Sx{haA&LKeh>N%#7)Xhpl)pa?=Sj zn^pGOmiC>HRNec}?53+DujD;D&n*z6O!xGEL9CD^H?WjiHn419*}#9`E+D9TojrsA O0000O$xY5|ZMUnV8{J-}*J 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 BF}nZ& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tofuburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tofuburger.png new file mode 100644 index 0000000000000000000000000000000000000000..b813253016914c68b70a48937d44e1683ee1002d GIT binary patch literal 576 zcmV-G0>Axseu|u4ARiDh#+V>GIT&Y+87NM z@dwx}HnxhzuR(&1XrxUVi_|M(Xu_bDHmTMdVrbp>-d_8Lp;wBK_gU_JFZbT(bKkqS zZ!7W3F$4?&L%Xj4==$B;PMW=_BJ@Z?Rk+>B%}lc-02;Hi2*59S5Z_k5lT9l=KUn+L#iZ+q5}Gr zt7i&dy>;A;*U&kthx&O-_lctuKAt22`ASGtfZ(*(BtQ``3xm_@k-MkR7=Au3lQL5m z7Z{#$BYJa+&Kx}JXy=gTi4mmf46r;g2@*tZO!Ohep9`#>pjf0T;F`?fbT5_P21@+! zjJE=;>fkhfQ-M^Z1Z<;zxG=*dDEckYgM}=OhvF}fKya6p(btieXtdg~zkUPoSFRAx zY!@CA*BU$#(4H%Y0A+c83vHe_W~Q~tJ+t62k`b-BWf11>Mfi92aKC>H*%TGfUL`d< zK$E(g5m9U4%)v-Tw7eey4iCpvl)us#C|a~vk1)G8}$I7rl$1eX@jON3*< z?a~Gm5@Deuc+0^VcBOvbx1bI@6V*Y$&w~*aorrYD79__kqzpe1es+H zUn~gv?9(g?3gUDx3X0&92z#mzLLX#eVMAY}qGgIs)`uBix>1`ZZPTRrxVhigleCdC zoAnL`3g$p^@BMTC=lnj-`6oR7<>&$E0q6nf0q6m^CxF%U_reEJ#P@wXl)c2<7l2Oj zL}C~Sh7owHa2NwCr5hMapGFWC;Ri{4zx*Xm9X|WOa-ElrT3Om zYgF3#hSC@R0b*YOo#K6cS%ls&7;YWBkf9<4%wE5Wcb-i_U`N19Ma(XKhewPI29u{L zTLGW{d=2L(%6Rg~bMUZ&dc6cq*HNiB`x5P{fYF}@6C44GW&hna5!yb9m$HS-g7YEGCAYf*Q+XX6_SA zO`OD;W77zN+ueBXuYe*7u$?9F{21I|8DcnskIr8pkF)T?H3;D`eD>l6^7sju&H_~S zXa{-TIyIVUK$SOP+A+AUL`nq^WFAe+rv_Yy zYbCpheb*|>K$19W9tll5g_vBVF&cy*m0^22C9T0B=Ayifrqd5isiWC6Xc`P`Rpi|y zK2(*5E!%8f-rfjwdjtM$Al-J5F}R zvAx}F?=|8lP_F(8)3n>q91+r$HQ4r{Xcn}>s@o*9iiSA^T_u^#1T?imjHx&sHjb-7 zlo~XeDY8YQf)*qiH!XggtSg}}c7jy9Lyi0}9Pc(<8h=IplSm9j1HcL)YF3lZfi=_{ z8Jgn_DsE6im5FgbSyZJtj}u6;!QPQwSEgtJt|8u_l2c%qt6=%FC~VH7m812k)U$u*j-){6 z#f621aD056I^ROESj55c)$Vm38~JnXyMciLYCsuFOH1^0@n8k^#^mHA(*hxiB1T6? z4+PRFy0>sHm!qk1+PS*zyXVhwXX9QVQ6fs=NC3J4X|dZcS}H{?d|v?W2J#@|zx|i& be*xexl`E=BSc6xu00000NkvXXu0mjfjhOtL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tomatomeat.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tomatomeat.png new file mode 100644 index 0000000000000000000000000000000000000000..efe887ed85d4cace9f6b0c2b981dbcf0712db495 GIT binary patch literal 490 zcmVHXll#&0KKGp4l5z3R zG5`j^0E{NUj^%Wd)>hhH?oR-?sq5yG_g(b%>A+|Kz?_@u3k|>PQ=a5+XT4 z(8*D1g1|b#4h``5(g{B&Wf}R+CkV_rApl~j*1L#gPUXLPe#!;_-JCSV?BcXcMu{t1 zMQMh+03q^|^SH{V4`nMWv&IlA!y8D2APsn=Gp)RLC+i}ZmeUP2_Ok(SdHcj gi2*PG2H-dK2~bzt3gB0Ey#N3J07*qoM6N<$g75m+_y7O^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tomatosoup.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/tomatosoup.png new file mode 100644 index 0000000000000000000000000000000000000000..040b44338cca33b5ab264f37901f2f440bed0c41 GIT binary patch literal 508 zcmVG2~Ow9|)ahUBB4Y_G1!R8q<%tvM%pJHqHEa#Xp4eq`e2-XkmKxXGqD~*jh>2m{a zH*+nsTAi7s>g~O_#@}-g_kP|XG{<`7;u)(t2jC|Uz{OQro6~h?aXtasa1xx?2O8m&0rA3?E60**prKn8awx1D z3IK(zGLLo%1hgQqD2I`wtfANljUR6>)ZDN2fdCwWUddXOEs!`JXZM|(`kCKXtDZU# ypujJod}RcnkU5>y)xV(I;=c~?7g7K{2lxiceY$qzg}-0`0000Fc5~j$q57oUV@+yNF)}IMDs*wBp%B{AbAQ5 z0@vH0>@zdmbG);3e0w~LJGmhif z#$V*=y6zO@6aYb4mWltq?~TlhqF_=Ueg>fc$mXWTB#M_n6o?&w&O8VLBY=6HMJ^r0 z4#4xgZ5@We%9up)071??&xMBqP*oLA(^Lum4PC&b$ZH_HtDi|UsG))uJ&H=d!1Ob_X&`!zxxO)ZQLB^9L z5fBi8{8bcB=HocBA4f4k;3%Rf+Wut_6TuidmR<`0VM<{#qFktkjj(GRAx*wt0T2Y% tFbu68B)WINQvlMl7mcm1Gl)JG;2Wu_n&^kSfN%f+002ovPDHLkV1jE`p%4H7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/twobread.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/twobread.png new file mode 100644 index 0000000000000000000000000000000000000000..16efd87f91a4394675cb92d813a7b803e4727783 GIT binary patch literal 1007 zcmVzUj^97glR6? zwHbmg7J}9Qm$e(t&e!Pq{t>sTTczyZK>QKF0fSm{nFn#~Ts|~$D=^gG0hKNWPID`? z#wE~LP0;q5AwJJXi3BNk0*FZiTxQWyxc9W6;bZo)gY6`=JSmaIayW*N-^20O_V06s$Weoqgx&N!^zWb?8!_YWt_}5G;BO+1r4!yIzQ+H<)l}3Igg47e1317k5}$XT)I0 z(aRy6J#8G~=#7nNNH3S3b`L0g0Pbe$rA4_bp^q?er%J7kI|(u+aOV-{ci>u@3cGgS z!D52~S?T3$u0V=Wi?qTu2w8lPi^vcPakdvqp8Fb#adKM)KmWA*mkeBeVF%8YWBDN< zl0`mbw{QqLOfy9hw>lfQ?yHcUS<25en5i!u&|Ydn>fT}wLE;21*U7-=8df*;cyi() z>YE*&Gvn02hp&Pcf-(UnPS-%KMbS}aqL=5fPFRSZZ*O^DUd+7>M{gGwNGqh;$l~H8 zT$Nws^*vHtPQMR;=Ofz@3~fm*d#q(qCA*7^+Ky#GzE4g3N<^_iDcxVPl|#@~P-? z_uNT=Nz1+FY$)ZT!9hXn$H_J-%E^dM2|zZAkfM{{t6Tb~EH*6wGFedW;hC`i;~$Y9 dzz;AT`w7j>l|LxcdL{q>002ovPDHLkV1ite&;I}b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/unscotti.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/unscotti.png new file mode 100644 index 0000000000000000000000000000000000000000..8251d814e2809e3183ee85a3f928bd7c06354ccd GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq_xM z)5S5QVoq|RM1sMqhCucntAs0zi}@r<86x>A_F267zw+<&2Q|j-wrmpj>+kWpt+Hmg z>ojfl^aInH8jkFC=iza9vt0kchi6~eMYbNXXj{N+rk44KJu*Y}=m7;KEe5gQ=l@TA zs2jj@%$-evz46MSFG58eaqM4aeE#RYP2$O6b$bg52{~it$}>EN9NJ^{96GaL{pab8 zAC=9UH*je)A9iPJOFl1gKr!j)2gY{-F?|PKGE8{-aowea!+G!boeG$;^1z0Io55_M zxtVRZ!xg{WdnxeiqT+-;{(!mi2R`j};JL(H^x*C4^1>>id=8yEe?@$nbzaW?$8d&C zvak0TTSC>mrk{SR2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/unscottiloaf.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/unscottiloaf.png new file mode 100644 index 0000000000000000000000000000000000000000..955d679c7ca4d4f51f8bf8f7c1ff4b4722a3b200 GIT binary patch literal 613 zcmV-r0-F7aP)u zQGHu7b|@eXA=jZ+_LT@B%qxNt(#=PKy}svSdziv!;6r zFHw0f2t+|TkV0Af46?@D%Lx|%o5z|^6fgpj^{y?5hhP4R$Xg1HEFkyjXDCu3_i``}~5U z+|Pt*%Uk6XN-996S~KfugNqG9#pl#|V*E48fph)9`!-NQ;RYt7)Z z6zBdA*J`f7tLbSX;aUB+|BM2F03ZPPF97}kxn~T+gP~cE00000NkvXXu0mjf)?^Tt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/validsalad.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/validsalad.png new file mode 100644 index 0000000000000000000000000000000000000000..86233b749bf8413e6bf3f64097502a1bfefc39ab GIT binary patch literal 697 zcmV;q0!ICbP)17L&VKiIf8WpVd+*LI!+#C~zyL4+3;+XQa{+|!`b538ZJoW`UjtAC zH=Vz)=FMhv(fZYi5$XED6PTWD6_c~iN&*!HP$s3~<1_PcHq-)vQ}}pb9-(Ls>np$+ zPZ@?rbEv2R(sRI#CO7PSGrK?PJqO-@8}DWKy0&h$XFf;)04=n*TG{@k$&W9uwqWG- zD#Sx6*og4xz8-e1J<@|(D-mA=s_F^fwg@^Vz9I8Hi(oDWt~>b?K75TqDE+k%1pprw zlCZb{&#e|zZUvUM6H9rpsgJyI1H4psnR6q62y?(!ZYKr6;EqY8Ghn%^sRV3a%NcyO zB?Z&dqv${UnDzgy1Kz$67jCqO*Z2BxajX|+mn2TZUlGAsdCIYd7?!4hn-04=>4lwk z^zBNpdg{)abpzQ&>2d8|_hRGIJJ!GCI}i*GW9ZH$48W)6C=7L^e`S(QSOv-YK~n-X z@}$QDX;cy@D{(0n0`7H@`yF8JH1FrpdCXIwRTSXG^fLG8$y>4gWQUp?P&N)tp(Af4 zLRaMd=`KmMx~?9==Vd&6FwFYu0-zyV#UMl>&YCGfo6?|-6#;Et8;W?o^(6tc5Vl4O z_Bi9OP9~9<6^Go9km_ f02lxUz`uwej|~65AFJE%00000NkvXXu0mjfD8D+M literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegetablepizza.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegetablepizza.png new file mode 100644 index 0000000000000000000000000000000000000000..68f8c5960ab512a909844f619ba3069509e3813a GIT binary patch literal 905 zcmV;419tq0P)(1SLY>O`{xCpVeZdNU7iI+%B zv)?&mw9$A$1W|I}Bs23}{=e@#-!P;2#w!Dm0muMk05Sj>fbRn!F|Z=>CCMFATOD5v zkRtjZpJ;6prqi(RowA?HE{i~Swtb&m@;v%Hj@eY3lH)@#X#sR#QgpFo?8?D3M-#YT zLA<3MV`Vi~PdilRK=}}?--!R#PP``}&{j<-d;;I*eLB}jm~;>+0R4Xl6Vq}}6J35B z(`9P$Hwll{VNJY&U;M1AMQoXpMMGhXpxCY13B1kOY`OFd-@H!zEyF}ti}1NWFsly1 z+3hf=TtnOqS2DfS<9H9?_OU80t}546*Nb?Gs??N9rOmy&h@Np`M5@8PQ^cLx&#ISB zxW_|DgoZ&mi?#@c#F>E@hzDFBZj+>_sN_DzonR%Yoo zD~Nc@5Z-k;v>qIyf8hzSk0%%@7kei(${e&k!haLIJqFPQPAs>?S*mjp>0BW+E5Jvj zYQ58eNu?WTTH~SizzV3Vfvu{tY%HlHAZPBEvsY)#yq^h#%Jnf|w7>3BCq`(Y_R;gv z-KpUf6x)v2{&g}h6Z=G?6?a2W44zbgF%wF(p>dUm`euRntJ;Rx*d-N7mC^ym4#U$d zJrh((m&mcNdxo(p&)YsTy6jnyWATcI7C$V{^Il2rRy=^vnU@ruEEk-_|*UPZuq4P-&_fH%k|v(+NOMbn`YTDGEdg%Vft=f zC9vT=A=Yu*MXua&I~{_Wo{ zN#M%GB3!vIv`LANoc^=`$)y}sHwFhnObPGhS?pKB{dc$$j$(}Z3D@My7)ENYcs#-2 ze=g#$UW#Zwxzh_Mo)aUMyB62f87WnN5@2LE)KW0xO8Mj}N}J=%M`J$gTks+Jud%+5 fuVDt@hX(i`m3>X;Sem;RM-v(s|XyXdT4=$6Gj({tIR;Hl( z1*9eymfv#xC5J3ifyN%|-d26U*=wD^dL6!*wF~130}l5?;(F)&!7qX}nIf)Rh_lf! zj`rJlhr(=E`K+CfnU&Z}PI$Bqq2TvR;|T-iR>I6rdwKD`89JZBD_!g~7gak&Yf%^; z)p1OTi4SgC$8L9@SmC9O$d&Pg0kK8;oJG-Irx%w;Ai9-vgnJgX(FAb<-14l;6u?eqqUaXPA+c;wb_CAY%W88%Lk9x38uYP74qlPn^AJh0_N7t04gr baP5HKgq*XfuXIL)00000NkvXXu0mjf@x$%5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegetablesoup.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegetablesoup.png new file mode 100644 index 0000000000000000000000000000000000000000..92a96de29a451a475c13724d3cc94eecf23968d2 GIT binary patch literal 620 zcmV-y0+aoTP)1Af!m9fEbm6gMubc8F85o`J?GwgzTZ2K_ssau5&!}~00;m9AOHkF-2h)c1xxjw9riDn?hT+d92%cT zHk*aTVyVX8-UU>5jeu$Z6l2$LKxIZTIsXK9+at*7U)88c$p^zF4yy;G2ciNXbH$hx z513WWJ$+WBe_Zo8owp;@CiDIM>Atj9Zgt45lQ!k-o#T z?uD(bp=v7mej*f;c|P|30Nrn!_+6@dVC8E%Px)l@IlOzj@U9eba(ZU`3W$!6%Mru{ z7Ep*;@vhL%nsg!bK*q!IFu-66u|_@#J^^MvI~vEt(hJyFU71L9%E=+gJkR=lU7f?s zV$}E*kRp*aeEbl=9)j4)Q2}sM)AK_tGIMI)G9vLOBoPSJC0~(&m8azP55Ro|Y+Vfi z4xrcNhJR!fda41~PGwA+pN~qfUUtIN>_jPdz+-9$$Pkd9MHY^8l?#oPb)=jUEE(R` z#_AgHTNePSGAagvDg-rEV6;)I=GLb?<}NbaTyOM-018CMvv&6RBr25zdYq5>N-@ZS480jv5!9N1rxA|WO_!klY0^kOXiR5Bma0kHv000038b?L`v3ST6=noH%$eK|%tN1g||wh`N}xe3V98=(eS_m1do{%T}t$ zE@>NM(tpy-cINH8-@KW9Z;J7cRRAae6aWkX3=9m)+B3(WJJvQVh0@Ox6E0KM0OY*B z;S#FPTOh7}h1F`+dj&j$Bzs^`)`QRmpcNG6X;&ZS3g4&Q1sytrr-P89$Pzl`%;Q|6zZotW;?!Y6OurfTlnoh)5)gsla2@ z@dCCauhQ=giWzo}vPqmoh5)v=LzsaRbDx3B^)?i-MY?Xzp;7K(qc$wZ-k^WBU9o-X zw_~5R{TR;;z!L95aY}tIDhIY?5%uK)##ipM9s&McFV>`XlpJh#lKu9hz;tRD`+N=n zG{-b4IdL<;VVf6iPl3p50baHf+^}j#W27rXzuw6SfF{j>D2ixfp(hc@@~DkLsAr-5 z8IbTBpYz0-kh{tv@Cm3rDiEY;Y6S8IAlOwWA6Dj3gKpef6qCY&65 zpd7xGfdgn5fF`_+5!h;*6epUrOh^y}Lt~EGNu_4YM4h<-xFHQHX;nI?a+K$PS5=h- z6&0*zB;x7l^z-9ND*ggjb^wP(E3-8>9XZBxoKh>^FD_;DcXjp13k!39t%!!IA+4mk zrVbWMWyTg97WMDN6KHL1K`0c$?7O!xB16?syAOQ(9z3?)*zmCkH6m70g5KUcaJ${` zcviCmpbJG`-(7j#%(H4JLAPbmqSnm*=j292nx39AJscX5wF`!k_Qi9ju5-fxB%>3a hRR71VxB!q({RB!3Cc)ocoB#j-002ovPDHLkV1k-5Y7qbc literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegmre1.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/vegmre1.png new file mode 100644 index 0000000000000000000000000000000000000000..1f8b7e2c2de3b607b9bc18a61310fe46e90467a9 GIT binary patch literal 818 zcmV-21I_%2P)I(r7Cn#a1$b|nfl;krt3Ij zfbI2UU%d%@z6*Su@#7@g(DFdV`~DD|-KL(yb?lvE8z8ac?9zSHvDGd%`f+}<4K=sv zbu`B<`@~TKbjm}l=&V7J75;1$8(DTklGyuJ!K!7^BCmubk@W~K$1k-$`v6TED<(2_ z16x5ztV&1_1Vg&iN=S3R;qY1@lmS{jttdDd|ZqfPzzM2L|qmm}7A85ky4@fPxPXKM{6Hwmm()_5oU3 z+YPz_jg7s*wd*(V`qc{|r(_!l1Tx;9G6Il%nwmsYa~t1(ay%dYzDK`b5V8@uj%5Ux zm>4ghEX;hF!n`E2ONoY-maF)&66HYDrUPXw88bi-sn3!m8w7F?khi89(VwgQE_o!E w(sW68nhr!6p_Yvc`Lq39AiCE%1F$Q90VpjQz{f_&+yDRo07*qoM6N<$g4?oifB*mh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/venus.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/venus.png new file mode 100644 index 0000000000000000000000000000000000000000..c3475ff88f1df5abcd2018426b44d702a0f56bff GIT binary patch literal 312 zcmV-80muG{P)PbXFRCt{2mH`UGAPhxQ*p2L&?3wDB^h}$7BP@txUsOhiABI>% z{!8M(oBUV{U;!+E1<(W#Pr0+P`yty<0GK-`l9C9sBA$V09s!cuRgP?meJs9{q5*1& z)1JTkyaq153*eKvNnFMaZBj!iNQS|1&r{{Or9^}(93 t6%u!47>Ze#MGss!)3%sTB8-oLLFl=^V?pn|e4tMmJYD@<);T3K0RTdNZM6UZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/waffles.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/waffles.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0914685895382ee89822839119ee98b74a0060 GIT binary patch literal 519 zcmV+i0{H!jP)dmp%gKSp36 zFc26B3(|N@O$jSQXn@3}qz-LQ;oas7vZE&4JP!Do;$gzfB*Kn++(zRo z0lg#H-2?M(owWtleaEmrG%h;BzQq%D>1c!ovT4JQM>JbuE`ENNaEN=2#?=5t-~2Fe z|Lj6Y&IM;Mz+#`JHUBc?aykBr>h*fa)qp+s)DYV#ApRb8Yynk}kQPi%#$9_H9ho)($)fUB< z8es3;ZR6>3>Pp06@Dg`Tz-!}KtRfDJ-AjDI04+&2-GCQp+eI&fIDW((21r~{6qJ-p z&�zB|ymWBhC%5=RpU`Cc-c`(Mz!&|Xj|_)0s5C(o{7 zX2~h#B}jY_Yp6h9^qn`a`EI0`ZfS~Vo#88LC%^0ceGLcZCwEu=vDNyX`{0hI z{Ha>5nEuy$eSh~diQGN5NQt*6gf$^!@vpy@v9%fN?s+xbvWV8OEs?KgNWW_JI#x?J z=W^R!qoEH6cJF7(@|ABt4KW;#Ou!;X*a*Fo*b1_dy78ryKp00i_ I>zopr0Il$ofB*mh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/weebonuts.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/weebonuts.png new file mode 100644 index 0000000000000000000000000000000000000000..782319e4c915dec2e8c018e412768d6b62dbae2c GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEPqB z#WAE}&fBSsT!$5ST#aw^KAQP#=9`(bj4hK(CtIzGT%9~2;1{dve@WGQ505Wo;99`I z^&y^t@4)wUTN$>WX0(vYK9R$8vQclD{d|c9spnp?{B&W63A1D4Y8GX*TiN{YQ#a$O z0~?}^wt6|&a0+fOG`p>R-kQn&jgXshnPOSDyg=@;z{f82HLL=@lPhf%PnWI|3^eoJ zy}px;G2oY|`p32zj1$hrn`o^2Mm>VAfqMeG~alxA8y=D4u+wqb7-_l}(r%=^BI x9XJtoW^bM0@hsM#M;Ioxr*Ry(3UuuUme$JD&#$X(B!PZq@O1TaS?83{1OWL}bM62D literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/wishsoup.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/wishsoup.png new file mode 100644 index 0000000000000000000000000000000000000000..3239d6db3c096ce6fdc394914ac1f8a360a103d3 GIT binary patch literal 556 zcmV+{0@MA8P)^H3;q9u;t+X05|qR)Hu0h&Vl{C1&?^>jKa^Tjc!GWaJPE zfZMx!NnA^;XTX68Cy-}>)fwREOw7}m-n08knowjiL_=;0fY9!-X>4?)9$|p+&4Nml z`i(_kFDYIVBjWO09?dgvFCt8Y$>RJlD`>O@AQnA{VV?;ggp`Z?*4h{)5)#t~yF|DP( zaGFt#z9RrJ@}?#j@xSarvtgAa8jY(LCt@*;Wun9v*jIqfbX-auHz7SJ>;}G(V69#& u*YJ9_p{`Y|cddTM{?5n905AalEx-p#!sS%TtSyfvN;XI$+%Hi)Y}ua{&uH+1-FZdlUD0hl4m+-4d;W zQH_XW0fJlLCw?Cu4ZXnS&wU{I8@4r z;*=WOxzaLF&NnvsYJv4K`01+xa12MW6^I>6EHSgtho$*F?kiuCaxf)4?Sr(|0;jPR z=>4H01_@d)1&EjXrDsJE{^V{l^|^q{^=5{@Us=P)ju7JY5THa-XYha3xvh<+5Tg={ z%m$kgJN(OS3$8V(NQXv%3>?K)p!g~2#vHs@?AL{e07hN{azZQ*0nPjMgqZm^hVNu_ z)a^fDNrW?TV_A`LHTD5B0#2b)M%Ekk3&YKsp>c`iO30~+GDsTfl}n! j;I#|XA+CTcaPI=wsekkp3)W>&00000NkvXXu0mjf2xuZd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenobreadslice.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenobreadslice.png new file mode 100644 index 0000000000000000000000000000000000000000..29926b182ecfdf7200151aa0286157db6f2d9143 GIT binary patch literal 861 zcmV-j1ETziP)n(1FDqb9>ws&)4o$p4@N9g% z2cjXC1qcaS&X-VMsoxHphmixllm}g|I)b)j zS)rO&5J+Lw-Qa}7CRq`H+ry^I*k%SnKxRN|(QynKyP1d^_xe&voI`}fc_Nl+>@=2` z@|r++f`*$SDH(8xh`_*XB66@m5Kkr=aI*OXj0_}KQ^Z7^6!P@zJMi99Kw;-6H>Ux) zEf+|fUsHH>@EnR}5de>zZWbnWP`Hi&$|~E?)h<-R8;KBJE&}wkI|q&$)g;6tF*KV% zl@MN<-hpd4bkQju;41_(tpHMA(}0@(3>fG0F^F!O;t=6t+<*4DX^wjp6z~oU;{25i ze>GPG2nQ)-5ILKrh#O`l#-hOMJWpw-`3+J7c|Lcxu^!X!KEgZwfyUg5EyBG+c&3+2 zz!d>P5GJ`aC~faSPNk5TD&z~3^Pp2UG~Qnlw|`0|VKL&O074e5>F8Npc8#QIi0?BU_|sU;12_YATSzW nEgycT{kwliVgNCK{|4X-jv{X>-4Fzj00000NkvXXu0mjfGxm4I literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenomeat.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenomeat.png new file mode 100644 index 0000000000000000000000000000000000000000..98687e584f842c05657cfdb888b0d78613a8c60f GIT binary patch literal 562 zcmV-20?qx2P)nlSXO0 zE)HUN`GkdY1P`Ir78^wCf`TRXT}!bC#aJOsH$cPuy&goN;3hf+?OemX@EOpiJwXx$ zBqM7Wb_+!y-Hs7h)dqOcro3(=O6d>C^b_8BsNzc5?aaBmkqtEJ2ZwUmEtmrMM83>8 zl09pzF%RJnqDoMy7$D`x$>+^4QwK9sNF?@52mBG>y410?B|+^zLXg}W!|4?wz91wL zrY#1@>!Pq=T2|qvfM;2DHIIzwSLlP!>qU}ICZco$hKcF(AeEW=?&01(z*wsram2S% z*p+wjLhgO}JlhH~__&hFX3lVv%a#0>h8GIg)x8CL3%SvDjD@CAX&EOr3%3Lq5q5&D zLTv#!;?C1)iLeuF3s7zIUj_VCIRFRX0BR0+2bl)zYjilESpWb407*qoM6N<$g7hKz A+yDRo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenomeatbread.png b/Resources/Textures/Objects/Consumable/Food/bay_food.rsi/xenomeatbread.png new file mode 100644 index 0000000000000000000000000000000000000000..41bbe61164767852342d8326c1cd30fbbde6c49e GIT binary patch literal 1364 zcmV-a1*`grP)lxvT2yruo%Tf z#^N+vG+9Daw#7uVWg34O7DLn@Q?ogJZ!7CqWMF~P8-gkf;c5i}rv zp+qGpqGSqQ0%T;Pi6W9BP?AcXTf;cZ_8%KU{|jrGToFf4Q@#{2?eBrt zSBO=(h*4bwlPe+!cP$&ok1-L`H>&~i-Yi0V@alHe<0BV3accA1f*jcS)myMy-s7{@ zA|3Xu?qLxX(19GVJlcb1qwwAkCw|cAhDQ?=;-m-^x{>XK~KF3~@ z2*>3~C=m}Pr64CH4TxfrMd#pRBh-CtJ2P7M=@ez5V77q=S< znAA7_hbn^RSA0@1?JM)72%MQ-$l7*fH2USUP>nu0)XH_B7e)2kPa9x%KgH1qcgb7u zdnA4nTDHEEMsCPouBIS7iU;vD65noEqbh%*VDhy`q{l3z2*DI2vQCSnZVckC1Eudw$7 z#rwoYboQB2h#JDf&9zLLr>j7Cv6zWn?gbuZV=h*#u16E>*ehCb_pgz7D^@_p$S5@! zYom^D1f^vEu_{hU-;P}v@Jk^IIf?ezw!nJw4JJ}ZXS`EDX$2xdJD(pB*&+di#55!c zpoT(SO)*ZDPI*?mChRsJ=8j1pDdl6O7;Op)QlkuaM9gU@7@o`#<7ZKfk@OlMP#>6T zs8>ah@mqB5>@h`yK1g@xwaBla=$Q1yT=Y*Q86y&z=hQU``G|Jd?8t6t z6(Yn7LW1CQ{F+5&r=+hRJwXGq2|cmxb(LUvQkz7Wh*a{V2#|>CgNLGPEMKUbR8T)$ zks(tmJYLaq|M2?Y{q z934cQ($U~7nT3Ls4oRq+OB}icF$$qjNT@_mTYLB?Y8_6p#W^;LZZyQvtJdc3uDP>2jifN_+6%1uXEv=O1`qJw;Z# z#Au)c^NwzOP58}rMOqdhFkQzsG(FA0 z@CGxfB(A**CqWH?3r-|AH;zj28{W~GP@f|%o-~3ferHif!VGh-wgrO0AoBS<(!nUF zVTsfe5pb%?3E=l%@Osry>fldZZ{hN}V2B>nE1gcaCqUnf&H+hKZM+Z-9j;q49|wLx z*Tl4nqHyHK{(gOsI~_txg077sR0&@gI7SU7gxqd7%4V6Pw&J$Hc9XXx&@9p{W5JrC vwEh#gEde{3=4uuCR|5aKq<|EV0#e`xo5=;@oIdj}00000NkvXXu0mjfqmT}` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/bacon.png b/Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/bacon.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb1a301062b0a18193d82c1e973243fa9ad09d3 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq_xP z)5S5QVoq|RM1sMqhCucntAs0zi}@r<87}h8Ftz+{-|_5$Kyruo+SHcL>8_QHM|V%l zO?C-mXUg0;SyGaNVUbM0%%wm6-#zWkBY)pEDd5VN#0Zn!KmYg3ua|fyv!8ofy4ViB zZ4yr`Cj9vOI$Gk!&7B8--CBP4_-l?PK8DD$_qV*-%D?YuwDDcBwEW>Gt!bwmf+TY^ z_fL?CiSarq`09slg{YK71&4x4?%yNOm0`Tlb&U3;L#r<}(L^SYoffzXeh!CLm4dlH)i9o7N z;YfcTBniR@fE{>we2e<38xZHhxE@(*0M&jS1Ofo@#zgzaHQ9#~Dj>$;is$&*0Q6!I z0AR)tPzAYI7*%;HlSfMeU@N~I37udN6oes)b%1-<9hf{i9spuEbDLci~x|E9?X{>O;1 zIg4B@gR>#7ZZE{~N+Y0^(_Y|nqV-b`FoAP(2+KZ&YH3A4tB&id6Vw6g zG6v_l9ScRU*pyEEVQ~M%5+e&07Lb8F=O_pq?1ku?7H+NwO5j`qX(Ai}tyqBV3L=Q2 zi2lo$o`$lBoPC~B>cFQ2(nMr1ue`LUVU~yvSW6&HMBD|a@Qo--WIk&D#%jJ5*8=}a Z-~+l_#Eyk<+)w}j002ovPDHLkV1gcF%wPZj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/cutlet.png b/Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/cutlet.png new file mode 100644 index 0000000000000000000000000000000000000000..08b40878fac64089b556ac45f541660a3e41852c GIT binary patch literal 657 zcmV;C0&e|@P)S6{12b!@*3+`7%VQN<|CkJ1w4l<$=M5|MInj?bhWui@To8N9)|ZsekzUcmC^dOHO@zXRi;+feIlh)4X;=(a$n4PY^9 z$A_0wIfPQhBRVqxZFwD}5=Ma3qO&DKPV{*Hh$vVA+fD}}Q!fx2>=pW3iqD^3A(Q?F z#abga)VT5f-6edV+n7VB%o*r7C&q)WauUq78iul@54y?IwWxi5)*3S$(|D%h6b--y=f~vosU=Ef@~acd)&g{ z?rz^r%1!m4C>52Q`xEiolHKMbAp*ks~W-CD@9XQf{4mP2GoUP_7rLr0NAE&+2g8(qAClyom+cWh{I&hI zgdL-9E2Ev9q=8;`>VelBO?(WIeBUgYk1V&zn0BCsSGe6$A-BBTZnPLaXXI&dt;RwlC#hWzi7A n;Q3dY{T$;GWKSPxum*p2t1`gN(t`)z4*}Q$iB}>9~h} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/rawcutlet.png b/Resources/Textures/Objects/Consumable/Food/bay_food_bugmeat.rsi/rawcutlet.png new file mode 100644 index 0000000000000000000000000000000000000000..15a7a83e59e12dd98d477657e4261f5d77ca4311 GIT binary patch literal 658 zcmV;D0&V??P)$z7p-4yyF01BW03ZQ^h0bFNt2&>W|TW!KpI0U6C4`pSp zL~gHxm;F~j=cQ_rpmEYip6KcVO{T2o>cG@I4!VnR_Qf zD!`^|;O>|sU8iT0B9a1r4({`HplIWE_^0}@K~sv^g>jg)RTy}{qhXf^g;pnCObOt` zHxIt`!lJ7NBU8YjtHQB%FS*#Z@K;328F>Bb9-^P$V`RJs>2emqnNcjqqR3*6sIeWv z;6onuJANQ$=324YV8@d{A1X@@L9JL1hEXQ1pA-<^QoVhxg4Jk0oF-#1_WU}m`E|%v z>G5>(4kD2lww5>Ic0Z5(`#h-K)}456r?^gT-Q{5`uEd2?q1Atacr+jAc8VA0iE|cG zV61^cT;}|=TAGYL$GRqAZR=4u*v`^3>J)i3NU*t#L=J& z>e^Ak>je6b3u8FrW7s=91{6mRFi{`ffi6_50F-?cMKCJF2_m=~>NppIbq}C8o`Ckt z?Xvg=5S0P4EYsrXZ&r!tp2l&EwFNjiW*-#)Buf76=nA;T0&pA$#(%}f>qcw{AcTO6 zlXu;|e?Iu`r@rZ2*abjqpI#Qe9GfOH?sU-1_dsxdrhV_>X{l`;AWc(n-Of*kl%=>; z05Zy)j-P4vMgU1(Xs)|o5={&W&>EC6~9;bntjtMu>=;JzDJD?kwI q;=nZa7S#PRYUV|>1K0ulD}YZJFvK(;oX=?h0000Fcik0;OOYmjt-f{;vfhu2;QM5$PJu3dxM^! zrx02YoC+eibQRjgQC!s*O|4dnFB(M1x8%BGzG_TfH5X~D#Y6W&*3N;jx7S9Plb3JpePE6;}~q)7GWsg_aTZR(PB07 zJQwRIA{~L;9D}4R%MxH!UmJidx2pd!0G58z-;4fY-7V+k-0sNq0-$=s>8-7MyW~LK z4*v5coR3GMoh?@neeD4FtGVvrKEZj-*9ssdzkI&klw(zq0g}r_bKOoYG*P&KN&wd~ zGXYTzS1CUUAPmD6=lq0^4TinS!#4oeX#uE0H2FXj`3O`(z6$Vd82|%d0M75lhT>&t RTdDv6002ovPDHLkV1hmBm#6>$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/beef-open.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/beef-open.png new file mode 100644 index 0000000000000000000000000000000000000000..02ff311aab371e210ade76cc2ab1a1bcbaf2f222 GIT binary patch literal 449 zcmV;y0Y3hTP)#_taWS-gsxJ^nv3EcOlR3{&LxZ6>EI}(lj;b zLI^C;DgYuWrOC1k%3^#$)CRzCrIdFF)*2uPnhqbT4S>NAKva1^8@^+#L0T9PAoFBf}=bPz{tEalzTO1Yu zwRhaE{Ab&2{L1}YvvZ(-c51zMd-v_RiP!-1;pA9OF0aD^Kn0(@0( z{{Vc54KOYjTC24U{l^CjVZEyV69Alsaznadr|^&ZfB5y0MxY*2Ln`9MOl`S>$+?P zg<(i(nsP)p%Ch8n8mYEG7Kf3@aU2F~){Oy3yW7_P41m_(U%m7AY0xWI;tu1FC+U43^MB}?#j-%(7ALBMs18kd1#B=jFH4A{FCSNKb0s&1XbF%ZFu<3)+};3edGIfCaDsUoaAre~*@2TL1t607*qoM6N<$f+I(uq5uE@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/berries-open.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/berries-open.png new file mode 100644 index 0000000000000000000000000000000000000000..554aa3d680812b131e514f535681032522872891 GIT binary patch literal 521 zcmV+k0`~ohP)I$9+HV{oZ@` zZV5Bi`~YOLS&L#U7Ng5I3jkj#m9h-OfVeETASMPN^J1~+Is|JDCO;k?-RPW2>GLp?ELY0cFugBwP;99i9;zF?Y0Wzl*P$(2|7q0^Y z<6gImUH=7oPhI&O2V!D?PNyTyDN>KgwBav_m_*t%B~aQ7LDzL~#7Y5~tKO3tfrNxP z#e_%)*PIOy4u@@%An>Y}L=2)N%XXypTCL_CfTn5K-~N#I&*u8DUe&#SYu*BoHX{dv zXqWf$M>vZ-+5pv0?(6>cIVSV9jTM~sGq_#8a`X5~z;aJq1v@X}6IM1V#{;(g={MVxpbD-6OwsBFl8I>Zbx=53@EjR_0EI zp9P>!L$ukD**HJi1Gwh~)(9ww-`c?xI|Xi^jOORRU;(fI__qK*+^^5uo#Evd00000 LNkvXXu0mjfdIjcI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/berries.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/berries.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6d6049a666ffb6a7dc0a1c8e8f2db51badf1d1 GIT binary patch literal 425 zcmV;a0apHrP)EO-zOufD-efMkdS3r9Bkaz1|Zt4>dy>7t>4{x<>SZa^=e(L zy?ije0Hn?4{&y|sJKaN^HSbG+7b39HsPE`p_7d@V)`y#c|x`c`nD% z+Jfi|0Ox6%T8E%=Ktt$o*idHxI2H$@s{p6BnTT(fp(zYVRHp#?^jVfkUDrlC3qidD zaE=NvIfsg(pdmT~G);4Ij``JpjHnP`^GBzLeBT#V6hIIJFYRSnx&u&3$$YXseJ|Ie z>$+as?3G&pXgph7=6l;_wPUxFz8|0fs;ZJOoIbTX1#lr6V0BEiFdQ1!KLT*RW_1Gr z=kHuU1)#ejJT`D<@`pEo?Hi~Y&=Ak;LW&N7?at`;s-Oqx0sao)03Lvj4%1nl2><{9 M07*qoM6N<$g2Km_Q2+n{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/blank.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..bafce30f9c229987a3b98ba1abced9401f0142f4 GIT binary patch literal 340 zcmV-a0jvIrP)S`mqdv0Wbjn2M|TkrN^_h0wCP?{pP(W z3d-}GT-PNbg!H)(g8^Q{Ar+1a0Qg*p!2oq#Q<|paIF1a1f*_zINo2(|s;ZLfIAR@v z+8jYjwrxwWwyzC9jeD&BF#txtT^;4~{;+8Js#l(cUI1vh**)sJS7s;fc4Tfs765)V z&s+EUS^;#34UpYFG|!uN_P+vfAG3IZK=_#PvjE~aw!$#H;IctjS03&FtkVL}hUoK& mDfSVJ37HgNY8e0nU;wU*RCeJkCIvtM00005X|G4{deII?UEK66zfna?HV2&FQntz%PdKK@k|0}nf&$Tg#D1b4>nIn25$eV`> zfnKC=H8Dj2tZK>h2NFWiny}RSfl`E;iSZr_psJRKZj%5|GcgEQ z0QJ5m-RVEam&7q=1E@-$O)tez$Z^eC0DG#7ZqgPInApRF<51ol5w%wXgb;q*QGAsg qb2dQAgsHm!U$P940W!e92lxT<=d3xrc*M;B0000_9+1Xv%0zYwx&U=Cp~;AOwC?xEB*#+bv5llUGmr19Jq_n4S;wpGl_ zTh62B$veA`?d~;}f&z>nq``8M!uUja~Wq;_LIs!ozpqJEDu?2 z_@6IWyW?RDX99>Pk!;YXe92^MZ)I-l`SwJI&`>eU^PAUxJ<1)iOX}I3+tp@wy(g)N zy?(HUb=P->GoDv>h}k+FlG3$MXS!pryWo`qL-rO21tyW{OsfL*zei8x5og{NW80Ru z_VtIEB|A6@91AnHM0F%2w@1FeUU+!trf<0iq#l0b{gbaLsmIo0!gKchpB^OzCZz}Y ajOL4O)&xDdnO+JEAO=rYKbLh*2~7aVw19B{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/fisheggs-open.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/fisheggs-open.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2398a0b1fe5ae3cbf29003e540e5e111d789d4 GIT binary patch literal 364 zcmV-y0h9iTP)W?^x(brJB4LH2J0r2YEwxw|#sp~pFUsaXwbL6?A zD143vLiHVhIc|V7pQefOJoo+O93VJ11Q7&4QJ5pL5ya+F637|*oRES5?*7qaj4zI& zTEQH-n*pG!EA(;@F+$Fucuxgz!$Yx}WzKE@ch{a@#%t1;s{yPqU5irB2y+#{gD9(U z7C(g440000< KMNUMnLSTZw43)wF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/fisheggs.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/fisheggs.png new file mode 100644 index 0000000000000000000000000000000000000000..bb424c94b1dec7b3672ab577a083c7028ffeefba GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP_K z#WAE}&fBYvoXrLTtQUlLweUS)@MSOH6~AB_b6D?z6kmc>1M>{SHTDu5sx!E`mOiz+ zVKQlVb<>01eKL$34h&2J4AK`$@6NhZVLd;V?ZAgstN6~J`Ro&w9pn`lIc-~8a|e@M zdvbtAo<$f#z+p!h#$ysv$0v3z+R$6r+VuOdK|t(vv7I{IYkO6>B7V>Fxqa(@M%5IX z^Saj#23AWo+}ZB7UiKhwmdRro?gbwXSIjy;>oi0E+gW_y78bN^X54FTvgOxIp|;Ho z{)^Te+`YrROrrk1d$o3!KXXmXZF7-&uX6=v3QH5S>YgX7FfejF$Y;!-k`NbmPgsK) P=z9iFS3j3^P6iK#m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/meta.json new file mode 100644 index 0000000000..30e24696d0 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/meta.json @@ -0,0 +1,59 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from baystation at commit https://github.com/Baystation12/Baystation12/commit/464342c5dc8c417b7e79d56c69aa30445bdf3b75", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "blank" + }, + { + "name": "blank-open" + }, + { + "name": "beef" + }, + { + "name": "beef-open" + }, + { + "name": "beans" + }, + { + "name": "beans-open" + }, + { + "name": "tomato" + }, + { + "name": "tomato-open" + }, + { + "name": "spinach" + }, + { + "name": "spinach-open" + }, + { + "name": "berries" + }, + { + "name": "berries-open" + }, + { + "name": "fisheggs" + }, + { + "name": "fisheggs-open" + }, + { + "name": "carpeggs-open" + }, + { + "name": "carpeggs" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/spinach-open.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/spinach-open.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f434a9f07427b6987afa9cdb39463e3c91d0a6 GIT binary patch literal 450 zcmV;z0X_bSP)pc?GA9xe8yDaJ_!_L*37@~iUw-t(WjC$wiB4uDe1A(mx{C))== zCZ%-77-}Ck6~t%&m}{*khhVLN01>8R3XKMUG0hZ_{ijBTH|Z*xlz;J6U1a{%Vp0eY>Yaa(<-7DzquAw~l~|B82|tP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/spinach.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/spinach.png new file mode 100644 index 0000000000000000000000000000000000000000..e3dd654dfb17cee46d0e723fdfe63dd370ecf4bf GIT binary patch literal 381 zcmV-@0fPRCP)=!g``VmIv?v9^n506h+Zp@dBp+ z2p2*O-*sJ6RaKNE3B_@&eJ;e!0H@)Q3C9Qk_*{sa0ot}Dr4&U`q{E;r%cv|%J)#>; z)97^^v97>ujv%8j3^mx;cLreEZR_6+fY!fFKlOb5F&XNnw)>9V0zfbG_kKM0cAGEm zcK1C*K|cGL^oLeU^?LwE;R#VEx3qEH0sLxd`g$nz;bY$^05qI@B%Iz>Yyh=TBv#_6 z^^i^btpLzwK&0|{s3F{@{VV_}Wsv82hsOqCm-6riV4V|yF~l{Wm||anO~^w59xV^x b0X)DS#IcG$(D4d000000NkvXXu0mjfd#a*A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/tomato-open.png b/Resources/Textures/Objects/Consumable/Food/bay_food_canned.rsi/tomato-open.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e3cd0f0e4f1b8ea9280808b00c280b1afb3dd0 GIT binary patch literal 432 zcmV;h0Z;ykP)V%GQDYSE*LT^#@8hQec zoja7;W1xc0UPJKGF?3b+CsA-y6MU*fNXdb?NC)~q-<^bVMhCXz0Z>X=_@XEzpN?`0$fUl3)h{4COuMB9^qyYZw%d(_L zt$X8K2-ZCSah!lBCq8p)w{CR(l~Qbo!2oUBuEgQJDD^-f&M{UAu(?nDY$t~KiJ$0fPY6X%;_f4)KumvjF^S2$v1S`t)!IaNiBA40worabg;~1hHR6$Me771aJcQ aw*cSd>#Jo$Qs~~%C-60V4WGbc zPf%))g$g=*4Y8MwrK{s#iHw_;koOW%3i`o3OV8;4_$BLt{#YKs19*V{2axA^f1npQ z1%P>yB;&Yg8q!)*9LJ=TGJP(@(E$7AkTpjI0Qy{rqXD|EqpGSXiXvkMrD;lKS(=J8 z+O{>{am3mJyEu%j!Z0*o)4nqR8@IH7G615#zxgol&+nJxyq#NpDYpR7_3gv1{_L&l zPwsN^izv98Q>=!_8%_Pon{*i&z*8`%^-!-!)4JM@AA1=D3jn{`ayc8vFyHSx1(@n} zcow^Qir4`4aL^DpVz=fP*Mb8m0@%i^zU?{8CGoQWilPXzEbDRE!0b0a+yVH`3BVNM pP@kA$Z-K<*tN`bh2k-zMU<2LZj*<&nu}=U1002ovPDHLkV1l}fvGxD} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/bar.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/bar.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f308a6bf80ca339362467b8c9e81529f295ba2 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0sos z#WAE}&f9B_T!#zHcW?NZ*}#^;V0@tB-Tvvfv$u0L9P4lQYhA(i!9tdI5!Zpo*MD2{EZ@tuknKc~ zR60w1U<;Q)xZd%X3-T99OwiVM6=9rERQbQ6uIZ+4D+5wHkAKV zO6dKhlCbuZN`u@qrz79DKHl6Q@i25B#{`b`pL86Qo;=?mbDk-w<*NnD1di8*5(hdS h6#RR>{ZBfhu&S8A1~HE3azMW^c)I$ztaD0e0svZqaSs3h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/bar_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/bar_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad190aa6eb19c662341118985ca98afa0429f64 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C|Kd? z;uumf=j{bYt^*1@E*Hi2{GYm7k1NQ@y3>!@Xmjz@@4D`vSOgpx7{4*ZY#UA`Hne&&8>lrfylmil_jt-v=~F%+moj*|`njxgN@xNAN5w*- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom.png new file mode 100644 index 0000000000000000000000000000000000000000..2cbe405a6f3a4f4efa5cd72194db3e0e174fcbc9 GIT binary patch literal 987 zcmV<110?*3P)iyT$!h%`HbPc%sBMYYt}P7DDjK8;VYNM2T&CMuUe z_7jB;K#Hek7Ep4Ug+({kd@PDcPIK{n1R(0FT-4dW#1IH%pO@t&Z`7Pp9DpsADeA*_ zZk-Ep4nQ0i;@9#Fjead6uQxQM)tXAB#U6G7F#9e$iTeBa8P*vhfJl_J1T_Re_NCWy zC|R*`ADKgZdU{$Lyt1+)J`1Vj&{NuHyTUFI^~FuPndL2&cAX142QVQlhWJL%E5uhR zBO`-_3kwU`2>=zFXM{^GhN!E$r!9kYVJ8u{1P}+r`*E8P_p&%3EEbD42HVlJRvxzu zn+4!D1;Cz1$Rb0w5HBk$BcIPlHk*yxf&x(=OQh`(BcWIqqQzJJ{_Qz{fbEK+uy`;S zB!|O69*>8gK^#RII;27ljLoHJOJNjvp3ngVCQK7M0Ik(pq}dK}yWLK1x0_+$06C}hCrAfBGn>r}q0Bagw_oHPDH1Jcf25xL zM>`k*OM&e1TyE8$&*BRag?2!UkL|}6V4MR8&%y|03m32yIFyiWV4|Mf`E8s%icX4S z49fZ$3GTaUgJf6??vtbc%<_Q;$&$==WbK(x&D zsEzG`kgyQq+6ezAfcWBAFTHK;rp`A3-Mg_OvX3G~#Aa^@fZ(&bp--(o`yuLX=sSLT zQBcTS2CQ{bL>$7g#bzX)5I{nRi?$mBi?plw_y3gc0sQv>e*isL?=Eh41%3bk002ov JPDHLkV1hQ!vmyWh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/breadcustom_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..754bed77150547c777afd6c9d7a04e79b3fe6fb9 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEPqB z#WAE}&f6=7TrCCytQR70xCw|Vx=MXzYP|DbB<|oTrwJNOOJB=(7k*83>?Sisc=qT|Juv<@&${&LI#VE zb#FAny)GK?^mH;E@H}pLfF)p`&gsSurVkx|b#fw>XP)9%Te_#3;pX-xL52kFb>~*D xmgv~`e*5bG|4bM-1OEvtgs>A& zDF#H?2jT6$nfJb*H?uQYjel$bKmZT`1ONd*0Pt4;R%W|fsCN7ooB2}lo{!&q*Vb|X z64lRZ&YZ(GD$wuAR8DvK7cp31BeGdq)$f(2<^>D8Ijr zar-RKAz|t^9*@_=3xgg!8HqoZb>3Jm{H!5>N)X6N^2?`^{N>Y^Oi zz2aLz14*@Pg zkiZN!a7=^f>-YKVY4$hr;*VEwQvgeii{{1R+ZaL+e(+5Va?(sKS@W~MJWL>(p{B&I>uwbH z+N~EQlON1!zW4iu{E3^qXA0&NusvEnh3VYS9g~aY(pNu>ZrFKl%B2W^Q5eVnqqb)2t<`K{&C%>)xVn+%;!9EZ5D^wc zK}lj%4}tk2J=9ASba^ZbqVz$Epo@VbgoXt@iMOPbQu8)0g6S&iddbV~bk3QX-Pzq) zT_^~{4~8>y<~!g2_kHKvvlE7YZ0i8)0P6s22SA*t6cHN*O!l&8=jcy1hU&v52YoCM zyF-4z6`Y}n`zruq+fflIr-9jSa(U+6!ivpKlB-pIn3RAAUW3bew<1VD0MT|$#ON0w z!2;3I1=su{#$v7_7>l&uhThc$j;?KkNMmr@?rMT)0^g=791HF0nhVn zG#ZWGP`MTC-qCOjQE8b{C2bbbw-Wvppv^?~lMCSxvNs#nR8Mxkg7osOfa0UfFQlX+ zJS+mb<#`f&x1XFp0PSSCnG9hZ3#4T4E2vcgwGSQB^>fgLha!;q19ZFrGEM=*tq2JX zfz?z4m(xW=c=kHj3e0p~fi=QT5=!yJw$-f;AT&3F&nyQ_@`MaxTrQIY!b;piY9Pf7 zD947Sd2sa1K$Iu2DH}rFtCazUhXiq{{t$!;3;3KIKmnnL3;mrFQ$Vy#B<;)57E`ww z?I~NkTbyc`l6bd=7r^J*r^wKetm2)(G&y*x&A|3t2_*Kt1fraFGLTw`+o+T7$4A}5 zXl(@I4J@W$4`mtwE6~@|hYYj)V4q+M(N6;OlgaF}z#!SfXwu0BvagBPNy-H3*N{il zHXwl~AA#`piIfP9L1U>j0s`a}mZG?*5RXb0!0#aoqe!;smPDyI35Q@O=WsW#PD2SqeOOsSU6>ehYDU#vp2MjgbtUQUEzCx41H@P5n-W zaIdvf@l7l?)d*Mt6Q9ft3xgtcJa9Z8&u>hTO7wav5bb}EXqw{dAenbf;oQwdJg%u? z;#4CbfC53s&bAh@{nHB+U#>^qVc>+Bz@&Ar4nZ=eqSc*1!^c@%IG<0%3t-OLAN-#Y zHM)RSW9PvF{2(A5i)T<>)rZtwsqB4R+>Dq1_;@56`+C59cz%}cw^r6c0Z>yfq%iwd z@a5%E@sZZv$7&Yz7tu;t{E4ldZ^Cte{}$jkpO=K+A2GNl00000NkvXXu0mjfvh>4$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..a14d4a02239cdea0b27af5b9f0062f6a2d0cdb39 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7f6y z#WAE}&f6=2Tn!35YzfVL3;pGs-~V5tela?Nn@!Crikb7D{Gka~_qAZnI2JUAs4I?N?q`j$QRlHcYS9 zXG>qY>erB6HMx>?fwk`F$dOye+J<(PXnW7&V^ l&Adk#FM+LNU}$*Sz^vn$sQRSs&R38FJYD@<);T3K0RXfDSh@fJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_slice.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab53b3e55b5a4915547e276477ef550e8a1901f GIT binary patch literal 682 zcmV;b0#*HqP)pYUr*kcp&ZgMWHY&^3p&ha+4wnvuf~P4P z9@LAwh+{HOdhs^!9}w}dn;T`P$xez+^x~oQ7pu-oMOLb9BdqBCf~JRXm-?t6%acLKU?=mL7F6u8g3z`U6Sj*nFR<|#b&Z=10I`Rta7efR3v? zFhT2WUmw8pytFZY0?y83koUxwCv#xhe^fy@`IxmQh;l9o*V6&)9_7KxEpXG_$Ye6) znW%dkY63{OD2lir&SL!VejvXL@+=7PD8h4540V6NO8ZGAm`f&=D^}~@cyS${d^6aW z&ue?tLg?Ot{>zW??BOs@Ul@Xr+eDj>MekY^srQ^*^^6kCZUvJOUS7ju=`0)$I~tj~ z0GrJQilR^+d;oE23~fFA3c^XrLBrL-r1JE^kQ_V;N|GuVL4e!s{yRV-k$~Ut*EU#e z2|>KO)xWel<^jQA&=iS8B#XrYpU;Ovp@4+x z5pLZ)h4C{UtUSMj!cqhuy;E?KN`4tNI3ACqSS%`gH4RV^>x$ zIe!~{e^}Q@a6^DvkOO^#%5je4s?H-VH5%L$;CIM&&d&NbGyn#`0Q{GLpFgnXNA+pD QO#lD@07*qoM6N<$f)G6~9{>OV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_slice_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/cakecustom_slice_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..a2697b47ad5c8ae910fc8e8b8b2c2ad2d12d9822 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DA?iY z;uumf=j|m!t^*1@t%8a0;on7{w4?7=FKyrqXjQR4ZXpa@X|7vlPgjOPuEi8s!;+u5)pl6lR{&X4c=e7`fh+be%8 z2jBo4fCKmuKxwHEn`1jimp#7*U>X)CM|FSy_*_;OXVCq$#s-uMfW|Z&3C8tY6h*2H z!xI@A4rHzv$kSs(&tFw<)!yoTt0RaN0Osw+4~?2O-P}HqN_j;*&y&NwlHLOl2q3=S z{|49U8b1*L=K0)!&KTwl4$&M!Yl1;ImY48Zrs~bO({WfUFg7u*+J)r}l})7_d|5+d znj_=(V@Q$};O_cD`usuJTAx?X42(+$F;kAeUqmHj4&Bt7-vdC&&UTA20|A6WmVkmW z<~hf;6wSN64b}?GuAM3f1j^?=AXpI^n#O6&QvnbHEvu1KQd60H2TYJG^}qiG4!{98 e00-azvd}A3oS?}Tz2&d~0000Rzd`bBJHzHK1}3m+)0p$5PH5V-U0$mXbP0o}tDnm{r-UW|QC>zy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/customburger.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/customburger.png new file mode 100644 index 0000000000000000000000000000000000000000..197e3210c73cfa2e5830208f366a191a7e06df22 GIT binary patch literal 543 zcmV+)0^t3LP)RCt{2mcL5^VI0PvLbE6%u%$#4ToTM&A}}P#hNy-n{VSRx zXlQI`X=-h4X>zD=$Rb2RT8=Di5e!k61j!C7LVLfj-g(&InOYe4EO+ng_ukLv{c)-e ze;iFf6VL=Sf&LU&nnty`?JqJKz1&qOGtVu|;YTmUa^NwgGD&RmS# z^Vyr$mhln0#gJ#7U#VTVxZ?FB38-HQRVzSn+G`S^NH8OV)9g`iQ>ccYk3><;(5(e@ z4j)qaYuM}X>a3MRCfB_v(HUTQWfCNadQB?-!kV976k^zfAR@yWqU(KGp-&ys+UiovDCQQGAy;j`wX86;3t?J2~ zcEe{vjJ1YtZN9uy9XJvv2gz}qvkdl{%eQ`O-#u&Xr80kcB42oOXg6d$H&8tCJT|-c z>_hFk_{a!k6Qr?cXAj#%?qjk!m}4I+7t)iu>ktW(LJ$z##XC+iYa zdpxt_;M_3fozqRef0DoV{`z(A(i1zUGzbMSc{yEv2;^OW*rLnrjj4ijf@$P$X z|8!dFL%~ijk6ea_-dweo({e`lpBRPhygJW=cg#7w zd1G-4*=zmg?grBj?Fm?wqAkE?&35qfR+ooCOn3jeocgTe~DWM4f#|DFn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donk_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donk_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..92c6846211bcf6f41fbf682e9f9726495d0cf3d8 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DA?`k z;uumf=k1k)oCg$mSTBfJHA#CMD^yS~5WHT*T)x3~WxJEUZ*KDkX2%l;{|lV-I>rjr z#lUc2PJ=}9?%B(yOgqmgB{Y7?-V%kTwx9*aS4Ofj4W3Zb^4)d>Y7nPgg&e IbxsLQ0KkGsP5=M^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donut.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/donut.png new file mode 100644 index 0000000000000000000000000000000000000000..9c84ead6a7425c554ae5c39dcef875ebaafafe21 GIT binary patch literal 503 zcmVO$yxzh@_x6}~%8T;6v$?%o5xpL@Q$ zo5PeN0TLhq5+DJd0NHHT8Xe2!a)F5h?BY}^_1CoJ1tJWfa%XX?)j}*5gQ}{i)oL77 zsZ^k8nx*TyFhU4mmj{DEn5M~#n#CjZmfm45FJL`ikA=fwL?RJkgzHVn?=o|O2mNp`zz`ps$51;Rc*$76^JM`hTYg1R zkVqu>DsY5$`V%#h$7|gm0Ohl|g?p5cOeQ&kLi>S2d%_NFOahu$d5A^`P;GV*|3=uw zev}IVE{r}q&Vx1^A>P>8Os2#O?byX@`)4S#>$}D)ZW}%USON@T5u)DiW0gI61nIF= zp(s1&!@DjQcAe$^JcdrhHv9XZUS>H22n}XfDTRtDZpz&Nh6p;@Sn2EBf8y%x@_SLDRV}bobj2EnB-X4>(G@y}g|=9AMkxordbZd2 zg!IdMN$o) zl0R)k!*$I<{AKm%xi{{<+DV%?A9I5utpK(J+5Z-JyBB7l8( z7>24gO`|+2uaQ8A06fpzJO^|59zvqS0Qj=5>&UikLKjenVNmbjx#E#@LA(c+Wl?n; z$1NBhavW!aIw}zW|9=kW%AO(EUkZS5(=?UmF6?0#0ss=7>cBkDg#Eyq62a3nk?;Fd zmLS0000)k!*$I<{AKm%xi{{<+DV%?A9I5utpK(J+5Z-JyBB7l8( z7>24gO`|+2uaQ8A06fpzJO^|59zvqS0Qj=5>&UikLKjenVNmbjx#E#@LA(c+Wl?n; z$1NBhavW!aIw}zW|9=kW%AO(EUkZS5(=?UmF6?0#0ss=7>cBkDg#Eyq62a3nk?;Fd zmLS0000GwT9y0k{DC9{|pI zXEK?reCDQU8k`IOjdvfGBng|(=ao5e9Bb#ZEaNcl=68c2SRVxd=4gy2?RJ}mVJMGr zM37#uC%*qCMy5dmKqpWPx(5vg19@$;*+>xhuAZAtr);rU2oR`2Es57NfW}a`$$Sui zP;vrb_Yfs^s1`O=6a|Z-h%J}P3JjG(Z31X+Gc*O}tyW80mO3@w2YibAnmYk7{zHmm zGLQs{S_ZEKuxnfFs+sFLB`*M~YiiAXma76_#&7FNjaLP9od>!01Tq12qX7^wfbo#1 zUD5#3hdZtwn`Va^mu0DWWFKEL1#1GhjjA^uE7y*w0SL13NTl%m@}^C6y_UX)ujA35 zhYJApcz+{rK$$>wGVgyH4%vI2SLRjUf;}Mzh@jJFd_5DRS+GuEs0z%@?yUeC1e-|+ zD2OoTXw&s=SB%^5mDAh_phB?EoHREfOk<^%RrC)Md1EdfOf?bLxMh7WV=sUz$UYGv lV)QX?1YiL8`9 z3Wo`h`JSOEn1^BbvMon)?gNs=rRG)uivP^wlnjy}aoZqDfU4e$T{p8`=OhB)s^<1w zvRxYhGyc7*^muhZ+j+>=6W9dwMgtHSU_2AGO)P+EcGh^BCN}_Tquh56Ph=eKu40k6No#Z%S(ofzUP(919*VH(l41x(9@GYJ>UQU002ovPDHLk FV1l-wvJU_N literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/kabob.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/kabob.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac16eb96eefefa7d46b4986b94d52697d8d4c51 GIT binary patch literal 519 zcmV+i0{H!jP)dkmO|4u^yE zdOh#s1_(c$PLign(I#p)0C*HdvfuBe-|x$2vymi84Bi_KhhC)yn6%sNiuVxKG@Nz2 z-HPx3qAN4Nq@7O3LeXlp9MH*RVxfS?aV)J?OBRcTSD698m=t1dx7+r$+wE*(!mros z^RuN4=pC(->NcYuk4Jm|`Fyqp?)STeqn0+HH`OaRDw7kgYbgU+J9;{u+BQ>Y^Jp}( zaA>t!dGq<)XgJmi89+i*{%*5&G)yqj<#Mqzh6ybVbd_sBx0i>93)gAg8T0y`G7Y%1 zManP?4O-4&aM1U%=g6O$d?`f;lsBQFyKaq=#;|+Y^q~V!oJj zR(oH~`OgOQ0RjO!9*-pm0#7F`nzE1qJ|G~1d4TA(vPoYW&`+o3a%pf*&t@~@ZmK%; z?7(0!5Wsnj_G%MVv^&=T+RGO6DMb@fvwRo&X?@S1(#AlZegKRog@!L%P3-^x002ov JPDHLkV1gQJ;c5T? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/kabob_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/kabob_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..c75c184a63902e8bb03cf4d995c23aba753b9d4d GIT binary patch literal 463 zcmV;=0WkiFP)W1AGpEnyPJEvTa-Ya{w0ax{jKr zQ4-?i01z*Vg6g^^$8jjjvTvVX3cyY+%OY(moRi|*<2Y8+OS=?+otmaOiy~@74pE3f z6yjA?kzp9ib(a7@jGdym`@X--8W2$wDToil@H+sx(bB1mnITYN7%E-YX&lE{9R0@t za;YAPqq8syq71?3P6KRhbPxnf)OnsO%-D5ZD$8=dCP|VxdMS=`hXCLZo$uSNjh43+ zFBrNkDY&j(02wboJl5juc5BA`{#k7TtY-_Ch?k>Aq%4l_$arN>({$JQ(**Ftm@mZF zTg@VvGm8L<9Um3n1%P`LVuy2xBU(I6`o7ffY+douajXCU002ovPDHLk FV1mw=#P9$B literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/meta.json new file mode 100644 index 0000000000..fc56b7048e --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/meta.json @@ -0,0 +1,152 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation12 at https://github.com/Baystation12/Baystation12/blob/464342c5dc8c417b7e79d56c69aa30445bdf3b75/icons/obj/food/food_custom.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "pizza" + }, + { + "name": "pizza_filling" + }, + { + "name": "pizza_slice" + }, + { + "name": "pizza_slice_filling" + }, + { + "name": "cakecustom" + }, + { + "name": "cakecustom_filling" + }, + { + "name": "cakecustom_slice" + }, + { + "name": "cakecustom_slice_filling" + }, + { + "name": "piecustom" + }, + { + "name": "piecustom_filling" + }, + { + "name": "breadcustom" + }, + { + "name": "breadcustom_filling" + }, + { + "name": "breadcustom_slice" + }, + { + "name": "breadcustom_slice_filling" + }, + { + "name": "kabob" + }, + { + "name": "kabob_filling" + }, + { + "name": "waffles" + }, + { + "name": "waffles_filling" + }, + { + "name": "cookie" + }, + { + "name": "cookie_filling" + }, + { + "name": "donut" + }, + { + "name": "donut_filling" + }, + { + "name": "donk" + }, + { + "name": "donk_filling" + }, + { + "name": "bar" + }, + { + "name": "bar_filling" + }, + { + "name": "sucker" + }, + { + "name": "sucker_filling" + }, + { + "name": "jellycustom_filling" + }, + { + "name": "jellycustom" + }, + { + "name": "jawbreaker" + }, + { + "name": "jawbreaker_filling" + }, + { + "name": "pancakescustom" + }, + { + "name": "pancakescustom_filling" + }, + { + "name": "stuffing" + }, + { + "name": "stuffing_filling" + }, + { + "name": "shreds" + }, + { + "name": "shreds_filling" + }, + { + "name": "stew" + }, + { + "name": "stew_filling" + }, + { + "name": "serving_bowl" + }, + { + "name": "serving_bowl_4" + }, + { + "name": "serving_bowl_3" + }, + { + "name": "serving_bowl_2" + }, + { + "name": "serving_bowl_1" + }, + { + "name": "customburger" + }, + { + "name": "customburger_filling" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pancakescustom.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pancakescustom.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ec0f3dd55435a9a03a9d7158e499963fc1920b GIT binary patch literal 546 zcmV+-0^R+IP)GoSJgITdK8D+9GIZ zYKdqGg0=`+a_SGrz>}b%AZW?x2MrFVQ-ec9NazXKJ;HmwzW4sP^q}RwAbRKfJm1gr zd{2kqpA`ax03kpK5CVh%JpnxJ>n+iD3%iAZzyVmp#6;Y4CTlN2X85-2tREO905;?q zq6SCn?&o#5f}gLEE;s@s1CaupugxVW35vfHG5rhx`&6oA0 zd(E1EYBh*CrbO@74U7Rln(^YXa7bkY?BuAIsSTKhLwLN)y7y-5$*$>X@SLQ-6d+f4 zhK%mLKlgU#Y$5JU+}RMC^I)xNO=h9q0NsFoz(musHLpdhcL00_a0_lT=QW>7fJ(F} z+v86FSV%vJc&(aEZK_vPWpb@o~t)nfvK=?w|hdbdn`!BO@dZ4!8>H=}ONZ~I$!Rr;GJ~Li; zZo%X5pLPDa1ID@>3&fwy6l3|2ru#XTk@3YUV*&kHmeysNK({b>y85}Sb4q9e0J_pc A7XSbN literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/piecustom.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/piecustom.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7eb5c1f8c530cc8e554c8aebad2dbe97c52530 GIT binary patch literal 514 zcmV+d0{#7oP))@ml}Z3c0ADN?I|xt9pONWwO4VwW z#^W*7YBlQhdVaUt{URY1031ybhKpcvLew}oDgp^vVg(qEy&`~5CX*02I<*KD;mBsQ zAZ$qwwg|DtOx*l9lELY}=-Ky&mjdHgyyxRzNwIZ+)80N&h!|eqB?$HKf7Q=Xb*}q*I20>yMLSs83R) z0=NBD?xuC(;|kGu;9Q5E^LZ4A;EciOlSzOZ#R2(h#V`P0Xi@rD^*EEx67C`oIF@v%LGYR}@gS0*>QIp6Agp4EsGQVp*0}LMwm<9BSJ(xvopoG|{pwkMDp2DB#Gtu3Cvx z0RhK^K@jX<1n|D^9}qFEI3r!xQ5c5QGz~>jL}giSS(g2hPznH!rig%ZFrN_h2#$(C zLX|@S0mohuz}vQc0?Si#D2F5SJX4#C&Skhf^;Ni1pss6*<9Oe_YHAtAE1)80 zaHW8FR20RQrs)$9`$XkX4txcw72u5^fwSW{m#4fez?%z^JD_g~+zq@e@Lw?kM!*Ps aT;K=E_}qZaa;ql*0000lB*j-U+*GKVRt%sK4Sd6J zhYxm(c8_0D`R^`O%E&dCdo(kag3$$Fjh@H5HN$KCz3})x^YwwMPFz;&;Ivp!US1AA zR5S>=kS`4;bDmM^ZIlpM@dptxEzWdKb0_HuD%_x?aT?&54>_^c1n z$q1BI7l%j*9)-dhyKa&*Lc(^zMf-jY?6N{uQ_!PLDry2fD5~w_S{sFXCJn%+4{zx^ zkFVKXD`V}n*ay!V8a_g{!%ZgyET!ADR}rjBy5;eW@*Hyr)TgxOrl7m2SrpQ=7CBH* z-HfZJM4Y)Up#%P!<_9jtc9hTQ!fjU?gk46lUI#pqfB?kgWvZ2(SN~G^nW8($G@Qg c@LvP`1aX%;qywaK-T(jq07*qoM6N<$f&s2`BLDyZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7081c700c42f9de9adeb3f67a9c5b251741dcc GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C^*5> z#WAE}&f80lTn!2WtO3no^Nx5|3iv;8+_O0P@BxlunRKOFHRcE9f7s40`}~;^s09q- z7=yf)+U@;*TPK)t$0q@&jn|}}-mdK II;Vst09K<)>i_@% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza_slice.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/pizza_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..4b184d9e79ebc1c89e449ddf145823e77571fb08 GIT binary patch literal 494 zcmV3P9B8)< zSolIvbQ~<=m2HS`9o?2!To<4kv1H*eJv#yw%K)h~U{DH(0x~D(HNSP!fNDg(aF2W; z0HZ-Cq#rogxJ0h>RCjsZfNF%UpF%X2kg{BfZ>YQ>z&AqtFSNe~G3-b+RNNFmoKd^0 ksp6&qe>DU^04)c60^19)hU-sp4Hy=3bAbd!m#=I$DpZ}L7^SOaKz+i`X zK=#{ft}5@(I5V!g)v00lIcCSSy=Mp=fS?83{1OP-OLOlQg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl.png new file mode 100644 index 0000000000000000000000000000000000000000..2abd8de27bceccdc4843783ed8e44aa4a7f8cc87 GIT binary patch literal 416 zcmV;R0bl-!P)7jO{4K`nBt6lzB$Q&$)5Kaf=i$D)Hv z!A%q#x^!@JaMsn5c5v(%=-?nisY@Y<+O4?7yu%B*m*aAwl_K1?TnoMT{qi7m2^Jg+ zumB6N01NmZ0ROHX6&YGTI(23S(9(m$6Jvl6Al=o0G5}Fb3&Sup2JGy6z!=MbR1gV( z<)XMqp(^S7VkSZ;LIRA#cX)g5!*Z#t9Qyq+%q>>kMGS5P=hH}lN%c*!M^s_PmfUVhw4MIPw_+HTq6JmS9N=R9wQ(@;81~~C(X**20y2hPhPHCy%r!4{FNO2K6!j@ zZ>{o=qEuB*H>E4r0x1x(py=?q1O6fwU;!4eaKI14XN5Z<`tN)I0000< KMNUMnLSTZ~1gua1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_1.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_1.png new file mode 100644 index 0000000000000000000000000000000000000000..067d27e917594690b0282ec1d2a7c1667631729b GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DA?rb z;uumf=k3LVoCg$mSTAtcT6RA0Irms$SI~i69YL<6-m@1}{QMvEbNZeo;<9`|9Uw4+ z;mn<<(#a+Dzm_%xdF8JS|!E0nh5KLFaCs-J4b|{6KQq%d-qOPgL8V uTXi>w^Fi&q*q?t`r)}0_eFHV>IHUR7Rfe4n>gEL?gFRjST-G@yGywpA;7QZ~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_2.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/serving_bowl_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a7364bf5b4007ecee248dd153419b3102399e9 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DA?!e z;uumf=k4X)oCg#H*b-Vp{2tj|<9o!y_sFhnUD4Wu4FW>SadJl>}Dab2h?e+^39rFCeAMBm3dO_kcPo{1_)w*Xl8fqVG zeB~GHWqGW^>fJ@{-G4b=zZ4LBUAu>E1;@t?&;GYTOst93UeRH7y|1|S3j3^P6D2`_XZB`4Gi8J8MqAum<>0vWg8fMoY`DG zkG*#ObHkgy@2)k^-MROxo_IUgiUu$`aGfdkdhYtlNh;g-b22aogkF8NYh6pC#$^*v z5!YvXa-${N5~Ht&{@OR)=6veB^v(LGKTWxDoKGQf;k@TFA2kSeJ-+cKvhjN9-#>jf zEc${(jxId0jv*o8+p`0+mrXSBZ9Q~)(~LZZVwvLyI(1IZQ}VcNRV{1zrlB>M!5}gJ z&F_6DCo-L~^mojgf5=PT_V~I3zY7Y5Qy79pG+kb>SZZ4evK)MQ(B`lBAFH?a+<&w~ g99TiSZcK~iyPWO7&|zTkboFyt=akR{0N90ysQ>@~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/shreds.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/shreds.png new file mode 100644 index 0000000000000000000000000000000000000000..f740bff24f4c8b576dbaee6ed657dd9956b717b2 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq_xW z)5S5QV$RzsfxOKI0&U)#+)V^j6dDv589N*pm;@R)SQHu+7&uvY_muxWxo)Satgeov zez|_@wmaYNZhg2gk55p55sVrW8rQupiJYe8d-=pxyS~Nqo=09SeH-&XlA&|6&gIja zGCVF+uspBUdHO2(Y;;Wi#k>m-Rdr% z#BIyByy0%1o?|tG_oO2w%?~b{tX!6P=Hi7q4t8#Z6?bhoqju%a?s{CYe%Jfzsn2&d zE-J22w_G#%%u2oh@d*M4R;~J`CHRF$@_<6u#QW?u%^wc(vw9rbm%)(i!oEUz#k9lD z2OOC=RJNTLRhYGzb^qM2s*DF>3hH+M-2Xu5j&_2&4O2{GHS0e?B?Ts>g53v%#W%8a Ubus^y2L>gBr>mdKI;Vst0Kwjp&j0`b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/shreds_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/shreds_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..f740bff24f4c8b576dbaee6ed657dd9956b717b2 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq_xW z)5S5QV$RzsfxOKI0&U)#+)V^j6dDv589N*pm;@R)SQHu+7&uvY_muxWxo)Satgeov zez|_@wmaYNZhg2gk55p55sVrW8rQupiJYe8d-=pxyS~Nqo=09SeH-&XlA&|6&gIja zGCVF+uspBUdHO2(Y;;Wi#k>m-Rdr% z#BIyByy0%1o?|tG_oO2w%?~b{tX!6P=Hi7q4t8#Z6?bhoqju%a?s{CYe%Jfzsn2&d zE-J22w_G#%%u2oh@d*M4R;~J`CHRF$@_<6u#QW?u%^wc(vw9rbm%)(i!oEUz#k9lD z2OOC=RJNTLRhYGzb^qM2s*DF>3hH+M-2Xu5j&_2&4O2{GHS0e?B?Ts>g53v%#W%8a Ubus^y2L>gBr>mdKI;Vst0Kwjp&j0`b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stew.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stew.png new file mode 100644 index 0000000000000000000000000000000000000000..738ca9784200aa47974a014cde30cddc72860fd9 GIT binary patch literal 614 zcmV-s0-61ZP)E7Sa zy?cL0-ns;0hajjtbckSANU@c`@Zh#@be89Hc6R+yUi`u`Z)WGc?`LLrTvM=NZ2`6b zTY!ZC%H^^bcW$%UOsovR4Xf2Ej7B3!r_;)oX(l%eNC_Z~E0xNOiEZ0Z%enwR(}}#D z>T&l-)p5Amo9)*|#7>~!o z99O!(<3WKKO4HNgfrw2b3wO`&!Wd%|_G>I>-~NP;-avq0eeDjkTCGGfne<-$_~HZt zv(DFdU?PQM^1cM2^W_eq`SpY2k2<2h769dM5!CB-ku*u1=<2K>4EU-ki0q%=+|Sg^ z<#NzyH0HdN0Hsn1`u#rS^LfZ*GB6wtMSFSM2EZ$ZOw$Zv%*T4Z=1xNBF|;fzh|yfG zg7%{%!SQlkS2;%sfX@j}1Fiy#NKRI!?1d}n{g{1*_vTD^){V1*U67n}+$}kLY94ELJb_62< zFp(y!eg}ArM-DGq1BJ(0briLqV=0-4<9s!|&rN786@>D099EFVx_NwD2cdlgasO6D zi9=9@0<6nC3L>SN2!Ev5FX4Y`X@GU@)W&z<7sRteu|BcTJ^%m!07*qoM6N<$f)~0N A6951J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stew_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stew_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..57c0667e4ffdcd0cb35ab32926ba9805c083c542 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0slr z#WAE}PI96|g2AhXK=vN1ge#0H)(M4W2kM=&l9uNsESbf8LAT^$Xv^k&yXw;m^i+A4 zIWinMwv2s#bAc5@O2--l`8xqA-fy=)Ihe!ADA(3}U9RbB!wm(7N6OYhEPPjv{;mJ> zO*pLmK?#G0;R!*5({VLFn6|U9IV2fW&TyV^^{^Ai^rscF48<%0i+`}BFz#AEQI_ek zciI=>seB$@EquP+9ey!Knifvyb(cjraWS7n>46PE?{u>H8$4G&bQI_p22WQ%mvv4F FO#qL@U{(MC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stuffing.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/stuffing.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd597bb0024b2425396ae32acad70520a44b8bd GIT binary patch literal 943 zcmV;g15o^lP)yGpI6*R}dkgwXhM7jg^HZe}Ikt z2_ESnHKqx%(x|Aiv}n7Oh{Q%DNC;AD(jg==1TkaGlezQi_no3?D(&4gm2^&WlXJfB zeCPbm^Gf)~lmw6jkOYtfkOc6!0aynI6G$W=iXx(sD6X%sk(OqJ!g#GLK?#RpG#C+9 z6zFs^{DA->3cJ&4A?vgV1ws%d5qiBIu~-cK{rwtM0J^)o6Z#ZAB<8rKr3HC;d01Xv zMsaa5@g9!{tE;QX%*;e?ZZ5XBw^375gN=<16ciMow6qjCIXO@mFs^fOaDds_S#)-G zCPqd^G=BsjNfJ6aCLQsy1F{V<8jFB?DFyw7Z(>; zSy@42V*4qN(cIjOsi`T_EiW%8=lspy-X7Ud1%TH*J3E^q;OXW) zu(-I0>gsA79UW1+=jZ2Px7$%wRYm3SdcCB#zrT-YG>WdSF5)AR2nE8kXy3J~1HhYY zZEXz|6%|zb*49>3R#uWBZj^uA886l5<|ax?N+=`i>+5uGG#W8CH%A#cJ3Awrjy(r% zl(0Gg8jS#p#R99<3PBJsG4T$eP!L&JPgz7Uo+22G2Dn{rh=K^0%Y~ht9V(sAbA^n| zCpbAdf#2t+o(VI@mX{XvT6)z1(Cbs!h$(z*U>meyVBppL-SF@*pOSldz&b#BcVxBN z(9_d%FTb|EhNag6=kYNl?XT`01i-slW^>ISr5f~fwzc&c*`}_}*3`t`b0;DNapJvh-RJ2!`m4JLiUcJ|D^AZH9Q$-4U1hHsn-v ztFL3_xnK@df+%wVK};1dHCF;FnjVDOO``2p%@82dG* z{(=aT41!J|icBD=C=Mg2h%eN@2fB8_M$58HupsFey4hK9Q4>V0fB9TD1+lAlnM<^76+wI2ndL_+d zGC?w#w3q^z&*#t6>4fQYN<}3}!f-gm<#Itd9ERO)hhZ4lY&P(Ey;!YQIG@j0EEaIN zT%^rpGN{#RC>D#D&1TPFF!%-HTYzS>iT!?$R4RqX;{mJHitTob^?HqVyNzr%i(D=T zS(ZtkPN#7^9+A)IQLR=<8;L}yIJ+|%jm(X}>2y*D%x*ytpePFB@i=r{C%YSs1_pxx zVzC&F<8U~TZag02e!rtqsnGs*yHO*|MNNioZ^xeX(KPI2MIQ+_+pE|UR-{HI_4pq&@im+#$noIHDs_iM2_5B2Capik7x4(REu8rLr-!xu=}r9} zF{@<^+(SZHQzN^Qzy4)f{yI5I__*Qg_zgd_C%k`G(=t)|6w`@^SMvRDv?MSZgt%Hr sFW3Zhwn+nTz(@WYECHcX8>}C&Y8aLL;+@pL5*Szopr06v+9YybcN literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/sucker_filling.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/sucker_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..4b524e5e5efc35548a6807b3a6605f8fb402ab1b GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP+H z#WAE}&f6=tT&)H?3=bmaE#~mcdsoHy{^IK|UiX~SKR)O1YqGG?;B;}RvC-|a@tC$H z>dbX}`wvAN4h&2`^d06s-~7BXyI#iqROT$Jex?l{w#gs=_^?{~gg-;Q4F}VVWu0lU z*G<0~9x`ar=(@HsTyXjJhVI8=3D3-wcdcWdZNd7$X-0b@!~O4?pCuDq?tlNzykW)b zU005U26zQl_d7KB#zZmdwY7flSfr6q?VQJ~;`t~f)b#U7{nMYcg^u6jyPiUB(qYF%|Z!ZdKSnkBYB+$UXqR?=ikz4Cs=C2*HQ}}`YX7F_N Kb6Mw<&;$VdMSkA^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/waffles.png b/Resources/Textures/Objects/Consumable/Food/bay_food_custom.rsi/waffles.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0914685895382ee89822839119ee98b74a0060 GIT binary patch literal 519 zcmV+i0{H!jP)dmp%gKSp36 zFc26B3(|N@O$jSQXn@3}qz-LQ;oas7vZE&4JP!Do;$gzfB*Kn++(zRo z0lg#H-2?M(owWtleaEmrG%h;BzQq%D>1c!ovT4JQM>JbuE`ENNaEN=2#?=5t-~2Fe z|Lj6Y&IM;Mz+#`JHUBc?aykBr>h*fa)qp+s)DYV#ApRb8Yynk}kQPi%#$9_H9ho)($)fUB< z8es3;ZR6>3>Pp06@Dg`Tz-!}KtRfDJ-AjDI04+&2-GCQp+eI&fIDW((21r~{6qJ-p z&�zB|ymWBhC%5=RpU`#kO9H%XKAm-8SHUYKoEZcbx=udop zdtPqe4hGk++714ywKdWVwpyJ}1sHZNel{mwZ=O=+yNC0RFJn5;P%f_jGLTVW_u}s5 x_qARIGGA!e+&%rv3dTB3W&;LhgND6MjT)kfAy*$wI44$rjF6*2UngA-ZTucA} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/bun.png b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/bun.png new file mode 100644 index 0000000000000000000000000000000000000000..6927a0811a7d13610e4b73f710e86805106a42b2 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP?J z#WAE}&f9DLTulxlYz58RoIr7!Na{5Lq(t-R=UD6ygULA7*p y{*ILUP3O(}3LQ|Biw2%_og&T<*eFeMn4SWqB z$CW;V8^w(aOEIFZq|y|mP_nHtXY2`vs+qJEvCM^#nGBip-E;4RtjZsU0WbgtV6gyN zH7Dly?BRLoR{>5AJSDbntw=N+$!&Kid-aku>aO%(2Uv=AAf^IXx)z;cq3xMJjgE(EFIL5Fa4j|4i0(H+TMJ~Y6PBpc>eHW;PqvaG2`=Pp` zXr#)5hCJMNGl1VgS>3Vmgm7Xt0$G1N3zbX$_+7dMps5@{_OKp85QoLAEi#s6 z$@BnD1zbYFDa23WS`IKniX$Tg%EBxWY)U{dYs5^)@bspKmt$;7@voW><-v0_UUU3W zn(LR4*+GPLCj^_085a@P0)Pvx+FC4KQP}|mKs;uMB7%hhvI33*nN_qfz$D20VzK@Q g41fVJ0RIx;9Tu+#ub>zF-2eap07*qoM6N<$f-C>ePyhe` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/dough.png b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/dough.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d4c3b39adbcc1e5383748e60411efa69191faf GIT binary patch literal 330 zcmV-Q0k!^#P)?GK~g0noTCCZEAq zj0=(t0On{sEwoz9XXgfjGzztWEf`21f!smfiB|Y5;ll|VOZ$MF7((n5`7Tt1T`l8z4Scv zob$=Azu&Jq{NvC78bAZ621G;kMDPZb^~2E#>aPLLMx4ay_M)fNg?hUKqhoK-9umlv zXe&Nub0B1Ypj`nMP6aLzBE@c8>%(S#75S|K+U$pMd!QfXatXP$HFP$4!RcAh6i9W? zP^@;yUKx1L={ZJz_ClV@^3Mh&O&zk`r5JeF;d)mOUOmz>b6|pNIJ~g)@ zKd3`>7GhwwkxFMUJD)+*i7;qd2AIvtdnTSou~@`bp@3Ug&(w_gWep6+CaJ#82$2dR zMqZ}ivRjo)8J!+FmW3oq;5ZJfyk5?3Vz9TPCWNXkc=F-{b?17Nq%%3(8+wKYw++n= zZbX89&^lKBBos=el7iWm*Mq&MRU=fl;oV2$R9B0iFbswDyojmUMLZaJ1tX_N&|^bO z*oSby2ha?%nG6Olx2rD#0FDQqdYxWU?T>Xv59MwCJUiysm@&>wc8#o?t!DQf2 zER|KA`CF54Y-Uk`lqwZswV2>IVu9JH$J6m7rWaP>Ich;;K)}V05F`S!*PPhbC{855 zXT-==Ga|@+Lt*CA5+>fw!S4}}TmORo?vujfL~`Z80Xwmik=W}ry5%~NVQ!Pj5=V{0izBWx(-;ky!pSDraZ&%-@h4d z-+jjr6j91ZHwUa-RQKP(-U7~7RX1hWxQ6q;e@G6=jv&hc>Z(#G{BK`gGH|oMBgZJx z9k61_wEsfFq8Q@x^2!WzXSV!LPOl*;6i9Z!$-@g79Bu0{#Cdr57@j}5N~&?BJ3vZK zkKyy@j|@UWA}HdoUO#6L5mTbQ14^rBGaBm3{6}}dwJYZtGIFQWClQ`HeV#!hB zy=nvi#5AlvS$HbRKPDj0DN8jCur z&;mdK0ksN5hLJ-yM=de{CcrUteV_M*izTB57!L=1-d-gMuYo8|XaG>x3(!1jSqnASM6^R&UVrN#^2q zH~tbTL1NnKDaK@gx`K7%^8bbgzyKJ4e-H2jH8GpkW=_B{00000NkvXXu0mjfsVboq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/flatbread.png b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/flatbread.png new file mode 100644 index 0000000000000000000000000000000000000000..5a42d0dba07d37a5fb7b2fc13dd00c032e81a713 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQFR z#WAE}&f94lc@G%~xb_}l5z*{)IViM&Mb@@>>GEXGh$be^QzB~~oDiBO^!)x$J-((# zb?Mq4tINyQ=-lm3W>QOFQkx)Z@m4FIDI@P~(j*6#_uI9@CC+y`G&1x*IJ>LJ_^5K{ zLhPj!r&Fx%0;Yi^^e`QQ4-PiCrEH>I#=eA;|Sx4p6d ze!Wq_pFc+&_!LeuKDC_rf98z31GRj`935+Q4xF7ZUFLiJr8}-FtxTSLKfZiqZf@xk zV74}1CcEd&8lL_2wW$iC0aJJr_qq4+?XqA4$cJ;ux8`sq`=d;j#yd@*p3srffA@z=ShaOyN)`H{)} z_a*MtDBAuzS#+T5Zo5SN|35$D{i2#4@^8_o`}N86@UCX{7r`RU2W~m5pIle7;t@ku g6Et)d^D!`7an5}?U-~sKFjyHpUHx3vIVCg!048yxQ~&?~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/meatball.png b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/meatball.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ab65fa8bb18227951e4406160e28b67d9c8520 GIT binary patch literal 386 zcmV-|0e$|7P)3je63HOhq$e#!x7<=LT4AL71jFbV6*ISLKP!Ul|pl+IA&nHm2EW_~SnItOS zdUv*z-b+fL)hLN{LMM2wT7%wGFGyhh=7M$-h1=_*kV!#00R-XX2+!s&f&}{Z8uCUQ zM%$g#e$oP%K*zG^4)}dMT@bv#*nqqL2v1<@MU5BjDt}5)lxYvf0X(6_!WDS1?8uFo z6rZR+(H`;85hJb-Zr@ g3$OqSu)uHCH{mOZl$By&BLDyZ07*qoM6N<$g7$Z(d;kCd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/meta.json new file mode 100644 index 0000000000..e0633e80ce --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/meta.json @@ -0,0 +1,50 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from baystation at commit https://github.com/Baystation12/Baystation12/commit/464342c5dc8c417b7e79d56c69aa30445bdf3b75", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "dough" + }, + { + "name": "flat_dough" + }, + { + "name": "doughslice" + }, + { + "name": "rawcutlet" + }, + { + "name": "rawmeatball" + }, + { + "name": "egg" + }, + { + "name": "lizard_egg" + }, + { + "name": "bun" + }, + { + "name": "flatbread" + }, + { + "name": "cutlet" + }, + { + "name": "sausage" + }, + { + "name": "meatball" + }, + { + "name": "rawsticks" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawcutlet.png b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawcutlet.png new file mode 100644 index 0000000000000000000000000000000000000000..9329c230b381c236edaff45aaff281aa19066cfa GIT binary patch literal 445 zcmV;u0Yd(XP)BGFoa!QH(B+TGcn)w0hCQJ&HuDTMHhUeX|m zRss+GL%RTWd2%q8Ld?g=ccV!nSU|!V3=ndDa^~x(z2?SuV>~sr-whH#+a;XAd}1jD z_|?UwzfbaF6!)1{UzW1g0&>~jpC3J#$AHL_Gn}Q0cMV;W(q*Fv>HvTMl+7Q(v)*Z+ zdZNx!vo5(VRHarxo*n=R<}siyMa#r>${`rs{&}iYb5*i9@Eg&T->Psc~ nPq+%$QUdEr6o>**APRf~RZ;Y!)IQb400000NkvXXu0mjf;+wxz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawmeatball.png b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawmeatball.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a4e7294a6f7a2d8a54901a02f85f2ca828b3c0 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq_xU z)5S5QV$R#C8?%@kMO@!cy20YRFs)VBXZ_k6?IxZDpP4h6elpst+E0`Z2$0?=azxEl zWuuW;)9Sp1NsEo1_4aj4?elY~*k1X@py1r@=rgK*GGYmgAap_OM@_Y;iS<1F{qmnJ zU&phE-0)O2`0~qRZJMBfl~NS%9lJY;7k)UYOq}xhR^OqGhhLlZaEjbb7wow`3rs=IbuMHRnOe z@fi(VjaAAXFVtextGQS3uH*9`R0E3Xh M)78&qol`;+0RMTIO#lD@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawsticks.png b/Resources/Textures/Objects/Consumable/Food/bay_food_ingredients.rsi/rawsticks.png new file mode 100644 index 0000000000000000000000000000000000000000..9768f65063e92398e3342292fe09a0f47a3e7d02 GIT binary patch literal 1060 zcmV+<1l#+GP)QhJv_N>@-144@3gg7+VPHd0oap%tE-0LQ_+cbW}w5r5e z*q%FQ?)~m}&iCE1g_j)v19&w76z_e~ps(?zvtO|n4q)~6rNkP`nwiNXDE;`ETzvP- zLxC8E0RxPIS)-}m@Uuwyk^zh;{xblpcP>j}NiLuN+Bh@-)p#^f-(YF+nw8DMa2-~> z|7p5(=K6C%^qlnJPoGP}v6b{VU4ATuP{lv6^CcGr!*yZLOo8vz56nFf!0N3_(x9E# zlLhd4!(vjtPQwa_qZdlku6zPHL$p6I90$x`h^w_;`|G0wj~5~BBaNajWXv6{0Ft5_ zBZ?EEcz2#t1ZvivnI>=oVeuhOe)R3|4A3G%^4J7T<}S>m`DbZNgdCX(x@DSh=Z_)y zYr~`-QO(B48Gl{9brDo1T_oid#L96RUmps<^7$2uCaPXNp3R`SKWSAJ-f);?4$j2#<;Y2>KJ&v{_iAz6P%L>B;Bs72o4b&fHU zK?DNzQWN&k1q9U?{+f@%n@`e+Zfou5tJ0pEMfCS0$`4~^nePn*fSN^Gxt!LnZX&%2 zrgtJ*ExIa$|5K)>Ya&g$&jBq*+POjXXH4Cbjis|Uei@hnwNO;%PtF;tyEQ?erl&CO zlJrvvXWl?kZy;&x=#*5X)RdEymq)9#j_u#K;7nwuO7||45+#&6`U0R{E~o@D;kQaMxWVgTe zWuV_s^!nw1`hmf;O(dj}xFLeKuYQ;9%%ig;-RIa!J5Sbu02J?B*|c)rT->C-*skkl z^w;Z%>Rg__b~F2Q{_+Q-aKesAlVr{q&trVnB{PZytvnLr3UZByrw-YKcZvyn?o-?5C9da@(9v2GYyO?`UarnsO*}4%6^(_!nAu>=P^KE|i> z?V8uy-@d}^^>W-B7``_Am6H2XRo-;cpGj%Yto?D7`+gSGYdEPg2y(U0Ja=n`nhQ^_ zg~CJKj>qEC1=p1i>`k=Q=UPzFqS+T8pUdxZM}Pa>Zh>Qp7U^9~8t?SlxBRKK`To_F zan_F)4dyb_V>?g}`znei`275|jBt?VWT7d6aEW)w?c6#KwZK69?~ItAWbpr08$UHx3vIVCg! E0EmNen*aa+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/.png new file mode 100644 index 0000000000000000000000000000000000000000..7608f1e8f317de80a7de99bc39d0d2266366bc4d GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7e?t z#WAE}&fBSXc^edXT1*RtYA;TWI9M5TaOxM=@Ib?rI|Tv`Jo3L}mzcX_efv?RYD*Re z29^i=8FH`c{J7)m{Evfyb9U1@8|?z@#)n()f2>oGW(enKVBk2wHP3hM6lWcedZ0%b NJYD@<);T3K0RSmJWk>)3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/clam.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/clam.png new file mode 100644 index 0000000000000000000000000000000000000000..5edfe83073a839654942400c8c1e94384fcf0cbf GIT binary patch literal 497 zcmVK@^4Wf<>AQ{=_9Dg-SpzBoM?x(%IRH51?Rg zsbDSG+FSSl_CA4C5J6JJG>Jtd#HOv(g83&7^?)U2H6 zD%;e*xfof4MEr2%RPcqpY+lKi04Pbq2r2^`>%?(3PK8i?sR+K z19%u@s6ayqHi6hEDNcaz1)Wj>_70C7G$N5lG!Rsne2qb{9jX{iHAeOL#+Lz92pq*) zXlD*aBF9e+TdeOsKl!D{NQT00000NkvXXu0mjfombUW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/clam_empty.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/clam_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..59a7a43eaa6ec0fab9c84660c002b0bb78e0a674 GIT binary patch literal 513 zcmV+c0{;DpP)F-MhPwEYUAV4NwW- z^87Tk%ywywKY5|S$yq}yfO~ZjBHNoSY8cz4wf5^Mt?wTmDM6F~m`oO4+t?|s52D90 zh{8FD3ZfJMEf?alaPV}OTaOx12N0V^@f>AaqU?YyE`*D^Aiu{02+N$6&d)xCm|WF< z8B|rv2EbktbF$pAivVEnu!lV(SrKPtq6Yb4JfnpUVG0o~rgxAPC=wU>-t+Wa!z@HU zZfj6bhj%!%TyZvl3;`#^^+G^Qh$5rq{;jLu2@yC8`+HmQZwSRP_A=S&cFBpdYqmqJ z9f0_*v-~Ms5NN#s;kY0RK!`uTH;EenfrDzXVzgbg^1Q$p4g|}J)4i@3oUuG7{J~&3 z;dizH2l3`weID5H4jdgv5macnF{5pwY3Iejh-5l%F3p7t9q( z!e-Qx6CwkocDF?QKVnsQQ`iMt0%!!WEB@ARc?X~a@Gk+r0G4wIO;GDB#sB~S07*qo IM6N<$f}K7DX3daJ;!^YhI=c1+d;swo z#0T&NvO4wwD&3r#A!}_~P(mP;E-oeZKj}#;^(HA)M7TeM+}wL|&iDU;?9m@f184vZ zpaC?%{{wh!og{hZ_0D)_>j2$LgNK?2`*dj3s8Tyx9y(1TueSsw;@aW#ldhhlLYQ0t z48~B=+HgpQFF;J&NuPa>(<%Z{0*Grg5a-Y&eCN9gM9$@1>7{~D0^kML-c6d;aSB0U z22r_tq~Yy#_WTirWIjC63eHfCkV2UmvTzE}pK`(EtDd07*qoM6N<$f&iq!KmY&$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/crab_meat.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/crab_meat.png new file mode 100644 index 0000000000000000000000000000000000000000..5f878dfce93179db0ccf6ecdf8798faf9723b216 GIT binary patch literal 461 zcmV;;0W$uHP)9737{J_3BB<&Ntv(N(^?%=jw12>T+ktjfij}`}GYppReQs!d1*2u@G? zq8hEu6njycnv}{`&dvcJOmYP0CZ5)|1BpIgCP_jnaPKr=O^kg3Qnlir*92(12}-vh zkrb)GO8wn9Le*~}Y+%5Q9pHvwStAT55r)$>xCguH0xUsK*(?MV3ouz|j~Zxh?&E5G z0do~ceFntPhh@N{YoRP#^U)q%0k6jswC3+)X*v;}DZs-R2Ory~0U+&Qz=29q1$Y># za+-Ah+wgkS0N)Z2hmmLEr;|AYtpY0xv^rWq3uu84Wsj$Q)c&&N00000NkvXXu0mjf D4lKeg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/meta.json new file mode 100644 index 0000000000..9ebd9ba1b7 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/meta.json @@ -0,0 +1,53 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation12 at https://github.com/Baystation12/Baystation12/blob/464342c5dc8c417b7e79d56c69aa30445bdf3b75/icons/obj/food/food_shellfish.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "" + }, + { + "name": "clam" + }, + { + "name": "clam_open" + }, + { + "name": "clam_empty" + }, + { + "name": "mussel" + }, + { + "name": "mussel_open" + }, + { + "name": "mussel_empty" + }, + { + "name": "oyster" + }, + { + "name": "oyster_open" + }, + { + "name": "oyster_empty" + }, + { + "name": "shrimp" + }, + { + "name": "shrimp_meat" + }, + { + "name": "crab" + }, + { + "name": "crab_meat" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/mussel.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/mussel.png new file mode 100644 index 0000000000000000000000000000000000000000..8035de8aad657384012a635ddc8448a5c0bdee8b GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQOU z#WAE}PI96|g2AhXK=vN1ge#1T`6Nmi9NAk^*Zu21v%mZ|_ng0h;EgN;!~CVu VGKsHkm4Si4;OXk;vd$@?2>>T@d9?rl literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/mussel_empty.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/mussel_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..01c5e5c4e6eadd97cb194df2d9671a31106fd7a6 GIT binary patch literal 347 zcmV-h0i^zkP)VQ!Pj5=V{0izC}$N@@*P5-fpzk6|-;luOI zj5Koq$YLR3Srjp4brFWUH{US4d;6F{NWv5(^q&|b8-Pu4ggthWS|P?zkK}>&W2eIbI8jl7r}h0 zr2&}F&t13;=HI*h1>q2=We_%metcsBQ5F;J01%izwTEZ}1tfj{^YSYb?GSlmm7NXmxy&et*CBhn!>Er^gEf=ixQ tvnVQxNwJ6~4xk1Yb-<_tMjbHf006XMa!MSQ(V%SM)G#YK#Pd<>C!DGRus@2~kQc&;syulU4ib@78WtClj(IDbBN z2k*1{yZ^F26j+feVAfJslgtz-Cj6E`V21rx_H*yP-sMcsw&ZTgEOj+B(ACI3q9F0; z_x$PcGc(!+N)D`gxv*zJ0K>-e+=wFqdv40U;m~z;+;P<4!@rM~ZQrvU`gWXFPUge_5*gB+86}`-%`)9) nV_IN{$mAqJUl|8pL|8GH+t%r^O4=L-hA@MttDnm{r-UW|%W|Io literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/oyster.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/oyster.png new file mode 100644 index 0000000000000000000000000000000000000000..43e63e52ffed163b893b1315839c69b1072bd999 GIT binary patch literal 448 zcmV;x0YCnUP)0Q%SWDL!lU17rR2?y9tP050C_oKSf`F!tUaU(-eOLA{rUjX*>I;WDQ7aZ7z) zekR7=;c4>+WD^@AfUh{A@$8-2)S{qXGxl^Km~u5C0vJw)rQ3@er5e#8l4xP9xk8AC z5EfLT?B8KXUD_cAU<)X~CO8;Q4otv`)P&PH01GItKZ>lLTcNK>Ae;bTp;8Ufa28Xe zTvcmq15h>$%=9T6!uceGg|o)duNL&;+zLFxS#btn3)9hDfgt)!unD~-g#sY3u!f*% zI5%wAEwG2RFaTKSo_A9eR}l1l=lWfvIP^aao{Jko8v?BWgzB?(K1hn^0zgmzCjQ!! q{73Hh0hq{h{qDSwcmNNut*ijTJF=Z!ghVU=0000=G`P)q$gGRCt{2mOV(rP!Pwj;BK+ll7QHuP>_xi9Ex=G1E->hg9v`0 zgM)}Tb#n8Aj*8MH0!UA%_0dR(#;HjK8fqQ(u8sl&1;}n@bRJhfn-C91K#Gk+C??T2 z3mM%Fgew3JzJ7K<*SY-@GdL<34$-w6xdOn9k8`K+UMmBG+@0S*`QaH7GgIJ2!T?zB zk7kRqUf7+bIRu&8S)wt{Cs*eO1AxJk@d=x~+FK3ev1peYeFxy+tU{?s-7YD^<{X2t z8`l8(^5KS1BRT?XFK+4FqH+YljR#bF_6&g~!F_?wfTDd>bc)O88sOsgGJq?g69RWW zOLNgOEj+%$%36vhxEaII1Z_~1h!+4WM78wu5Ujnmv-3~+fN>(~=!91OqHJHF(*F0J zg5xth129Cd|BZ6cLB+?j=)HY=Aweg+-1ooVhXelPOtB(j+^=Zt`bkgNdai zrL64yX_hpy7tKcUXD3OLrPR|ijZzbuSXn4N_uT1Rk23S#7)iaa=FPn`y?1`+JLlf} zO7O?>06YK>zytUZK%_HbRr@tL?rLpA+PuZo`hxFQ0b=9x7LSeRdxR?d(1QVJL0x`g zn77I!_QkP(mz11yT9-N`2ryYgJF#y&3 z@jfH7jŗp5L&Bzh+Y<^S}1c%<)l04R7k)NHdiDX-;P9bSwbq{|wV8$}1;;H;yI zbJ6X7;lh=I&@)M-Q&4Vf0@m>Cn4?C_2{17bwYbY^iBYqK%FB_df@rL)Rc;W7 zQ;3`Z9NaFNlM4hA61_mdrJhnK4~C(eC(4bOd7F1hI_d$+oE+eB7uqC5;?R$1;O+wg zpG!i0A%Jr_;dm8L<{2}sHXJTRJZ>Nw%?2hHSf$sycmVR2!w~=nrf(jrQiw9y^^&=R z8|4I`jR)rE>=}YeLi+-p0qnwe;_|r$Slf>KXeE4wpq%3wh*-LGR6NSbaX1NrgPqd;o}@(DA!#E;$Xi}67x=!s_p(F_ z4kzFQoPZPfzXHkGiI}$U-!#2H73dw+#9AgptN8+@a)n7TB4Hw7Bmns4?jEm~&oAlw z>SE%|dZlJ0p)H`o5!2v^!CRj*TBIYPB@on0;&TwwZS(rqelhFQMt+CaXbIvY>hl^| zC$t2rcQ2k40r38zO$YmjoQb*=#tCh|m-(z(C2Im|;C6r^7bBnL8e1z|p>p+@&*1j2 zQP;izU;(wb3Z0-ehM)GnyapwLMtkX0mheh+!?*%J(1fA*X81?~Yjqw%ZjWUF%z%_o zztz$Mj$xI8Rs{gY^9t%T20uSN@;|f$ft%~XjRjC@3>Qj`ETQswnt*2#ki!>63l|syD*mGgcbNel00000NkvXXu0mjfb%ni9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/shrimp_meat.png b/Resources/Textures/Objects/Consumable/Food/bay_food_shellfish.rsi/shrimp_meat.png new file mode 100644 index 0000000000000000000000000000000000000000..09e6c36c1d6676ed9ae527248a15026c81ac4ccb GIT binary patch literal 422 zcmV;X0a^ZuP)VQ!Pj5=V{0YldT&nK1q$0jbB*TYD22Y@V> z@C{^O5L3sLV_^7CiX%vN0NipAcy$v)ULv`IBu9|!fZH36Gf1dvF)(PTV^;ul6i6QA zP+}ZGvIFe)9c4TO^dX2Xq$0tf9q5ga1Uc%)O$dGa8d2tvl?FhL0MUmStp8tKzZEPd ztfL6F6dpZ90*bOB*dhCX4so&uhlqA%5kvwQ3U9C6r@aG^9Rd!G_C9b(fYS((fGQ3E zg@9^+CBkB08hCeSF7+L7$Xg8@)OK5MF(UKL>>Llnmz^DU89Y8Gr0L&GAP96oO QzW@LL07*qoM6N<$f}(z*VE_OC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/4no_raisins.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/4no_raisins.png new file mode 100644 index 0000000000000000000000000000000000000000..9763e242cad39f7650d50a51945f2fd7a8f22cb8 GIT binary patch literal 649 zcmV;40(Sk0P)4`=NRZhEI(WXaxZ|H2-{3cd2f#XR(lcjVSsr zKpVbU1xYD5C0!VYPJ;}6h(I>Y-Q)nC!ooa+Hv|>mCJZ6UE5{iKslj{*d50j5P{=u+ zNh@mq6_-sJAP?S|dh9~DPdX#C;z9sF1q3ND#I!bd-3)9yrSB&w1w?Cw*=a~-?u!gv zfZaqw*WPG=s4@c}v)$%IWlbPVfweT+i-#Xq;sXfd5BlEXZec|BBiZ;E(}zVYd(HlP z6bjxAwBtFACSQV407BKo!JO~2g5TZ4}5Zn$EY7GEm>OtaNfZ3Z|h@H1#QyZ{Q zdj;Uxhha#=w>z5cUeb8+P)6jX5TbJc=GXyj4snFyI2J>+2FUYVnHBN> z-Bn_M`TSc|VXtP2@jn4rmD$!1Rr4<87Xk2X2!|2On*5R^5#Jj`6<~ zsx)AuY6Xz14}yU5$QNU8TW8ezxGm?o5Ug_m=BR))O{q0Ar};P- zp5us>0=yin|4F845?3q$+qTQx8walFBSPrg=Qk9`u|5FHvM4Iz<#mtlpSLNBrckH* z??e|p8h=@O0U#f)g?0{!I-O`?Zan!c+v|nukP+1sSq1rSZuU*dz1RFF9Jfu+4!FTAPq%9mY-dkPscR^$lDO= z9%fa3I0Lx%2G$pl5Wme6Q~ZNS@y%#;{tMOsYk+?XFafoL!HHm3qMHB!002ovPDHLk FV1hsB!K45H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/berries.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/berries.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2cbb00fcece8b9cc85f98830df0203ba828aec GIT binary patch literal 501 zcmVw9Nn>50K|&LqOGbboZAiy!Z!e!*X#ArAy{)jLdf9=L%spX7!ioQ z3aIyCPQ<{=aMCc)M2!?c_P*6>!Llr`ygD4B6pxE~E(B{IAahy)()?&x#Z$cGz0+>D z*$}<~27`exr&O9tQSZm!*6akXvOtj0lN7S}YM4p~y`BVVhFe{$1G!GJf7Jxhr(Pl$tll*88;GP>;5s(nS r)q^Sa5QKd)nxFrI1;7H}-vWFC0QS61E(@;H00000NkvXXu0mjf)sfuF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/blank.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..127d3dff3a102cb0ddde89a2d46f4e156c742090 GIT binary patch literal 366 zcmV-!0g?WRP)7d@V)`y#c|x`c`nD% z+Jfi|0Ox6%T8E%=Ktt$o*idHxI2H$@s{p6BnTT(fp(zYVRHp#?^jVfkUDrlC3qidD zaE=NvIfsg(pdmT~G);4Ij``JpjHnP`^GBzLeBT#V6hIIJFYRSnx&u&3$$YXseJ|Ie z>$+as?3G&pXgph7=6l;_wPUxFz8|0fs;ZJOoIbTX1#lr6V0BEiFdQ1!KLT*RW_1Gr z=kHuU1)#ejJT`D<@`pEo?Hi~Y&=Ak;LW&N7?at`;s-Oqx0sao)03Lvj4%1nl2><{9 M07*qoM6N<$g2Km_Q2+n{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/cakewrap.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/cakewrap.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4815dbf2868f8d8dbd88721f70aa5d6690a1cf GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7ebg z#WAE}&f6*8Tn7|*TtxQ-R{s~iVjQ_iV@iU_ey!G&@QF`Sm-%_l)@EQ*VED&eu(j;L zX5;6(co^CeIeu(&nj!K*V=_~~51&;XyP3}0>Tz&8DBFMkKZ7Y^&vS>GdCbNgs*Wa2 z5z|^kjtCt1{r0=UsTZ44Bl4qPbSfSZdvHu7BR_f@Ye;bBshRT>({G$nD-{U*r|P)V t?c?r+$FFHIyk#h7c+b_qaD%UaIp$P$-Qkw(g+Ny`c)I$ztaD0e0sw1mT#5hy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/candy.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/candy.png new file mode 100644 index 0000000000000000000000000000000000000000..3f34635a80fb0faa4a0a1e8dfe7d6dd6b1187f1c GIT binary patch literal 713 zcmV;)0yh1LP)VQ!Pj5>g>4hYob`M>`97e=}`pgzpyKZtHz zwFhn?y5%%;0Lb!>@7^+8zxRxwTADcE<r&YlPJr<5fy$k_ye+1PRbh6B)3E;e5xTUt1KC5mASmn>u0^Wz`` zA0Hps@|>;(49}iDV_3R$Db^f-;eZooE;I0QalkEpeE%Va24qWc3 zne>!FQc@BwC&I-Hrq7%?gVXmI4p0&1WB3lV`lR+phF?M~3<~!#EtOYNVep*f2xbQb z1%l}-lkR}&ldGpP1QoP_*%1wM!89-pFcdCbiq&!q2i$r42^<37-~VLz_Vp*+@{BF1 zU^d97#SAqJzdrp2TfT1HdWO9lO%=(pb!87Pyz(ecoQKk1o)18M==Cs zp;xd6!?v|M7($a{8RkVT0E_!X`7=DccL&S|(eW`+a6Q*<-ey?QkPMG|qOu_@1YW!F zGkjxXV9?$FouNA;oMGM!NEC!bMKEN!nKAswVh}9OK|o$w6-;v(`2+LhQU-hgYY063 z@QdNwzdsC*-acda_4hwRmcKPvo}HPI;Sdg=*g=CBM7+6u1MDC>?>KM{Ald=25a2lY zhJoeZKZZRxEW-xS9R`Z?brY&k)DWxE$hW+=y5^XUqfGy4m7DUvrm{c&b vT0{fl0DQ$TT^xYVa=JKx5Eym9fI9#HZ#f<+W#vXU00000NkvXXu0mjfbR08F literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/carpeggs.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/carpeggs.png new file mode 100644 index 0000000000000000000000000000000000000000..77460786fc07060795c14cf8b72397bac44c9a60 GIT binary patch literal 387 zcmV-}0et?6P)0g496#@k%6=D%!4c2fn06S1oQkbkj zNzVcf56O|GIu z8^Q_zb0NfG5Ue|(A@p(VDJuYs=|Hi&0J}fpB09Gr_ZV<_cLUJ7Z`+opX|m==QMA=? zAXwi4n4<$=zAVej{9za<&+~h&4Z;dA&+}%E2y+;uY5HJ_H66RIgZWltlNCUTlIHqC zVHj?sD2j(1y=F$3qjv41_W+=iEa{qD$VI3b8F?&#I9?yJbOJ!l$RJ<=BJ%HQTsN438Ci|*>}k?X9Kvr&{g06 hOXdMQfCu<_fExe~s=q?x?v(%l002ovPDHLkV1oR*n$Q3M literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/cheesie_honkers.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/cheesie_honkers.png new file mode 100644 index 0000000000000000000000000000000000000000..761a4a629342376e668d9b0222dd6f696b4fd47a GIT binary patch literal 685 zcmV;e0#f~nP)D&-Li+)5{L*{=gm5^iyO@BHlk49 zCG%#M_x;y2Q^=CMd}3qiW002F z574fp37Zw&-#GH5|NS?xFmLnmt2bdy{AKuG8#*7`H7^m!r2rI+AjZocD({22N;MR& zO#vi)_{U2n-WNdF-xJ`qse?dBQ2cgh@~{d9+WQV%q%$Rey-giOE7+y=cm&n~xi8}@|Kb&xm`2iGQ zJn)dzlmXgq3t5z;&v#Ga%qSb#=OtvBe>~^-R5H~}B+Eek6nN&M%RoppY8QP~Qv%?9 z!0KDHS{Pmn=S2@hZJ2>j!>aZ};_rcOVN%u{KS!~<{*4buCmPuPT!v}0^?e7brVJpn z0EhR&?zw> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/chips.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/chips.png new file mode 100644 index 0000000000000000000000000000000000000000..264a9761e3b6072798a8ca82e1743db5c95d9290 GIT binary patch literal 597 zcmV-b0;>IqP)D4i#sTENSw=G6$3Se(&YY zOeIRJGC&!i44@2PY{GDjz*RDU(}b5GVnu^c2I!iI{cEg}rGjhVH#5!>5R>}7G{8y3 zYgo}+rab2wNoT}bBarg=0F9$1LmqcU$k;>0cPziB5!>us5DPw$1aDJOHKjcs~7KyUExcq6E96W}($1IPi^8?_^r9InFyVmS?;71$OrLrIgK;~l8^Bj}Zll$kpAR##b jilh*e!T}sq$pO9rs6@m;GI4bO00000NkvXXu0mjf5gZB} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/corncob.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/corncob.png new file mode 100644 index 0000000000000000000000000000000000000000..0666e2c9218e9e9348d63c39e7a5265d35d0be08 GIT binary patch literal 463 zcmV;=0WkiFP)I4mZBZ6?LY7TaeReeJ~}`L=l~s{19X5z0LNXP%nbac zlzqpbs!^A*AP)&5>9ogMqF!(7>c;@b-QZ32Lm1JVb&bXXiF()!0d&4DepYLNso`*+ zCh;7VbLyLO=@*~P236kOlD;dSpoIiqsVA##$IlCP#TP+W1q z;Q`Ye#4LcJoT5&yL-*><5os9R3ilIU_I?K&o!oP!V|8do;gfI!o|f<#T|NSt)5XQrGQAxQ2D&Hk#IB` z?*}lJv7HmbS4PDIB*rEvMPn?~T%5oeB8pF!>19X56&;kB6z&riQ&M_?y+=c)E002ovPDHLk FV1gC5$!P!p literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/croutons.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/croutons.png new file mode 100644 index 0000000000000000000000000000000000000000..da7ca46d9822df03dc7e50b37bf6e0d312fc64aa GIT binary patch literal 514 zcmV+d0{#7oP) zRK~sB?`;Jj#@XHH2~d5azq@xbLtWmD`+%+8`nj1r_&KU$+D6?AQ~wJ-S$l>h{E);M2`M^i$4>33k(WFUZq$KlHF;|fRx;HyB< z0)%Lq3FdXgX{%7|4!GSlY4uLAR@J3c1Een^-qk4b?H0WO^Xv$7G$e^H|7}QVQ+ncV zH;lR5tn7GgtpJsN1TzR2trWv0%6$9(ulN9P0N8tgf9x;fvwo+vi2wiq07*qoM6N<$ Ef=un<$N&HU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/driedfish.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/driedfish.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee338a6d4a0f5545f3ddc85bdd6f9bdcfea139c GIT binary patch literal 490 zcmVaK~T`rtzV!H8H5%R$SBm+xl6|)9Rx?W zPTd>}4naB=`~r?TxCseVaL6L=;!OGo8xcsr2(k%xQklt44uwVoQ0ry6h*jt z*@sld0KO0G9NYnqr>ItY8iM;#Gy%$QuL@%I}7Y&Xwi#{n$38pLt>YPYwD z)11aU!;9xl%OEO&Z3Epd5LQ$sp8FpG^~`<7g8(9l06Z@NXz#ju&64oTp)$jLniFnq zO_+t?m6#{WV{Qz2q^|4O^-&Z}IT8rb zcL3(N0WcqiVRn7fG?b?4E0=>{0s6k5%n@M@gE)>qO!3ads;Xc<<#1vF^!=k=DGI}I z8d;WotTFHG2y^5v27r!wqq~N15pr6=IuXDL4?#8WIjaGj^|;N)1}H4kZ_(Dx z!CVAzB?>O+#plKb#-7`1t%%&k05*h~Ux=?#VlD=7+0a$L|4ZfpJb(xIdw>V=hK$4F S5A#w00000;#`7D@>r(lv4~$?$rBR& z+Q(d+I&XMUqb9s)o8AJNp z*dt5_e)zXP+4s5o+^0O%bFK_5fvVGg++=wEnmJ+r);Q}1-VHY#UFLr9TYs*34ztF6 z%?*qeniHC2j#hT85^0KaW0~k{CRVee?mZ*x59U)BGeT$rFGKUH#XhoA6V`k*nGn?(lb(H$qL2RBYv7v z=U!y#yq|7AyV@&Qthny(?^@vn_U?>a0S!zd2`n?de)iLnTyXM>Q}e|}E!FN*Uw6J& zXV829ZJS7Uo95gPyF1FXADPT@H+150u$*)@VoQWvOv~O%zs46DwR3q2wsrH(TmAKF ztIjl+)|w9=`%`UL1sl36xwdBg$rb(f%1?rW)xb z&mCAC1o`C3-s>J`5l~nn$XIZ_P@wSt$HztY{`#*=)Uf@=Yi)TvIwvZR#ldHPl{|Be g5!l5a$`8msI9D0W>GkC!FpL;HUHx3vIVCg!07FKH7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/jupiter.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/jupiter.png new file mode 100644 index 0000000000000000000000000000000000000000..cc613d0e1a6868b569bfea54f67faef14658a7e3 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQLT z#WAE}&f6&md7BM*Tw_;if0@8&#b|DJ!ieXv(Y*!cDpltgEK54f+$46cSev9RDqhdY zDx>}XsGr5*gGCJN1z=>rtnjEEGM*cy4BsbB z_x3ApFc(m~XLxkE=k^sprQRv7S;e-1*_B;;&C|au8;*E)XXMmzFS!x(ZD!K6RVx@$ zL{&Pbq0QPtBA5c9p!?7UAJMkNmwVEJz3 zwR%I24j0q|JmRbLiIF4f1?z@nhQiB^JFDgXc%U2B1Moz!5?;A}%UvxkCF=nzNHis4%>lIL zW8~C^kLgh<7K;)Uy9x-FWIz}YVqKDPZbahWlNOg(+_~AAWZH2McH6OQ*l**A+s;a< zR4Nh$JqZY&Yzql3iQQWU9CJR%-0V{S58(^b07*qoM6N<$f*Q*)?*IS* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/liquidfood_old.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/liquidfood_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d183ad86b4a8d9b2255a0c4adfac05938f45f55e GIT binary patch literal 696 zcmV;p0!RIcP) zKI&5zi2s+f8O+V5z&Ln6J%dOjqKGMGEuSf`=bGe%8M&(f$#+_TM`W zXHWOg0-D@1CU+I!%mD7zNj~}JwGt)JfvU5{HvvwF=}Am5IB5}r^UgT%RX}M+MIn?5 z=(Gms=_cP@;1nVCfMqxIU|f;YElXcB*eN`@pnKlJ+r~jOLkAysP16%hQ(8bOXCMNe zpN|5p3B9`DkX&MbkVEQUM0gU=`odEE9HPn^t9^-WgYU`XcrX@N=!$L$X$6jt^(zrl z2LypwKnl{ul!bNZlaDxPHz8-WWGv{iZ6?BV7JTU(RDKqBRNu4DgQ4Lvxq$ItVhPVT zB9arUrTaibp>qEBbzb2~fO9wHJK>_Gb}tzq>rCUo_);o=o}`#uw)n?<5NY@~F+0KD e`!4wJ1Z)BqlP1v)WAl^C*+6XXD} zbYRKQsTUv@$cmCJOT-1bz!4xA`VeVf6PvuMYK4_ZVE@nl?Dqn>gI~50U<6?0VezjBLT$o68!aql^EB&9Tfqf>AKDWSZx3d zLlHpR{reYx8kex&_ciBc5C{gnjBvcBSznmV2W)>L)hOG7&u5^yUbhpF6&D)9kAOY_ z*+KlS^A3_=R{@#_N&P?x!!4xGB`lYZT?~Ewdo&z7`kf=8eIQOC%QEo18N4nI5I$|e zdzrO?`T*v6ex^kY`f*K?Bx>G^m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/meta.json new file mode 100644 index 0000000000..5c505136e5 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/meta.json @@ -0,0 +1,164 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from baystation at commit https://github.com/Baystation12/Baystation12/commit/464342c5dc8c417b7e79d56c69aa30445bdf3b75", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "waffles" + }, + { + "name": "plate" + }, + { + "name": "snack_bowl" + }, + { + "name": "tray" + }, + { + "name": "trashbag0" + }, + { + "name": "trashbag1" + }, + { + "name": "trashbag2" + }, + { + "name": "trashbag3" + }, + { + "name": "liquidfood" + }, + { + "name": "plasticbag" + }, + { + "name": "corncob" + }, + { + "name": "tastybread" + }, + { + "name": "liquidfood_old" + }, + { + "name": "4no_raisins" + }, + { + "name": "proteinbar" + }, + { + "name": "chips" + }, + { + "name": "popcorn" + }, + { + "name": "cheesie_honkers" + }, + { + "name": "sosjerky" + }, + { + "name": "syndi_cakes" + }, + { + "name": "pistachios_pack" + }, + { + "name": "semki_pack" + }, + { + "name": "candy" + }, + { + "name": "fisheggs" + }, + { + "name": "salo" + }, + { + "name": "driedfish" + }, + { + "name": "squid" + }, + { + "name": "monkeywrap" + }, + { + "name": "croutons" + }, + { + "name": "blank" + }, + { + "name": "beef" + }, + { + "name": "beans" + }, + { + "name": "tomato" + }, + { + "name": "spinach" + }, + { + "name": "berries" + }, + { + "name": "carpeggs" + }, + { + "name": "cakewrap" + }, + { + "name": "mochicakewrap" + }, + { + "name": "mooncakewrap" + }, + { + "name": "jupiter" + }, + { + "name": "tidegobs" + }, + { + "name": "saturno" + }, + { + "name": "pluto" + }, + { + "name": "venus" + }, + { + "name": "oort" + }, + { + "name": "mars" + }, + { + "name": "stick" + }, + { + "name": "weebonuts" + }, + { + "name": "hollowpineapple" + }, + { + "name": "hollowcoconut" + }, + { + "name": "usedplatter" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/mochicakewrap.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/mochicakewrap.png new file mode 100644 index 0000000000000000000000000000000000000000..276b8b0596277c8b83501c43d73fc8d272fafcef GIT binary patch literal 334 zcmV-U0kQsxP)17OAXR*2#Xpg0_$%nhL$t*QbX z%tOsaEz6?60uT~U#YtNu0-)kpb}T=h=lh9AgUM9CBBn$!cq`o0NQ(B2{x9e-^WTJk^p@2U1CFqFXT_<;}BCS zIOdZqpwMkGCx1d%x*7l!)cFWA!46^-mR8*Hugt_PBKwK&?P` gfZjF$2EgM0Z%Y-m$-hxit^fc407*qoM6N<$f*sU{Y5)KL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/monkeywrap.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/monkeywrap.png new file mode 100644 index 0000000000000000000000000000000000000000..7afc02e295002cdafbaf0c3f174afa335da929cc GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0te_ z#WAE}&f6=td@TwBtO-8bHf?^yb?2aVLCm@XvO5?|TRYdzcK^g<82w@T)|s9>7E;fW zo9eEdR%Br0aA05(Xkch#Jhzj3@z%1R)(l6t=k9)P+o5$}{n5SO#h<_4^=$Q-x4-v& zusye%F-BwQl<2cgQLq2#v@E#5dGESN9@7Gi+r5IjU1g3>bWiqiGw4rnZ;)fN5qw^G zukwwQz?0;ju5_k@eZGt~f~kc~6ZFetiZy2MXHq&9lYLRqA#zE}o=@^Gbgg&|lvxxQ b7;6|yvvb9m%N(45-eT}{^>bP0l+XkKpN477 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/mooncakewrap.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/mooncakewrap.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ea9880039650efad84348552436419f68fdf1e GIT binary patch literal 479 zcmV<50U-W~P)g04{(FU=u)TUGRM=#F)Bq>bgw;TFjf#H3cFE zI=ck!=6CU_9`FI6Ww|yt1@=%6yrVcN6tF*b0bpk8&ljRGV{~WLi9-NhJ&jORRWJ<0 zVy>{y86>4=k{qB~e?xDCIqJHe?-@pGJ%hB+LJ{bVEC3R}VXX-u7Nh9kja~k8P z$F;vDiQ@wM3HIo3`4ShF!hjPS|0b=5NM0Wv%#E-^l|A_t#;0)0$fV1NQ_yv-@ V*&JmF(BS|8002ovPDHLkV1f^d#x?)| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/oort.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/oort.png new file mode 100644 index 0000000000000000000000000000000000000000..4063a0d1fff9d92b50633946ba9c791a3a1324b6 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0s-z z#WAE}&f6)8e9a0xt=^lYE7fg;?`5XH`ljN$>a+=eL7L}%{fTYgw{Ed{lE&)5zyd@E z{xha%R&CjTVvZj3if2Dn+@>@xU??!)>GGTXzj)TQShH%W1Je7>x|n*epEdi!nd(i; z8P~9P*{LpNjbB~aze_8@a(kLTZ Qpl=vFUHx3vIVCg!0BnnBi~s-t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/pistachios_pack.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/pistachios_pack.png new file mode 100644 index 0000000000000000000000000000000000000000..f87f252bbce52cbbe097f0ed1b73b2cdad47c4be GIT binary patch literal 602 zcmV-g0;TEd zz{<&#HW3;{CjJ6_jIE{`0QNtYv}Ws;0FZ_gc?6~hfntS?c1-*j>Ogcq1M#Ft1B_1& zB76UC%megeAUcrwUPl1TDxOvV6>UihfY+7v!5S;U^==-D>g4Oms0M%7W{mR=4fLEy zAGDl-r>X;B8K7~@QDrMm1Aw}g7$dodm@R_q=Jv5`>0H2)&(9^F=kK8xzLHsrc zEV|kU_`R2}@cP?vyjg8{j-uXJP?&L%&0Kh3=9cUO&2~9zK8mtb$YE&2gMjx7H;*p% z1E146L5NDa1iA^;nM^5ax;Dmw-2Vv!Q2Mt@{Yd^m0AEHHc+Ht2mo?N>@$^dpkdn^> z+>~CuQlZ}Mk;^hK37v@a8eUZ)B_RMk`inx&SR?b;?I$yLnapic(F+5RE>dsx&4-E1 zBGDSZ_No>5=UP9Jg#l*w+)zvh4MA8TVSpROiOk)HaqRN_-lW%{o4pb*odIZ8*Wcd( oG5h)7ev<99XlNOLRq8sxH%UzFH&Cd2FaQ7m07*qoM6N<$f{F(V?f?J) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/plasticbag.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/plasticbag.png new file mode 100644 index 0000000000000000000000000000000000000000..7584ed1a6df35458c3e9eafad3e051c51e839f4f GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQaY z#WAE}&f9Anxta|G*d7Qsap-k*>%DqV{Nsb)yLEngyE+uOlp3dS`)=Ge<;n~%MfOQE zGXC{W??mQyGsJGDPPx=yvluVDP3`(hX0 zA%i_^8`iBhdSsw*zIe3;*EZLLT*b^;uYQZY5nMEDS))bY(nC`jnHCoPum8_4aX_+^ Zd8tLw>q~gdhL_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/plate.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/plate.png new file mode 100644 index 0000000000000000000000000000000000000000..45379bbe6db4ea3585150158cb7fc0425d6e62cf GIT binary patch literal 394 zcmV;50d@X~P)24{~!QOx1RH1)G|IR`; z*PE^m#k$-k5jqr0Ci#Bxwt-UELm#(Y1C;2HdK5r6;$AOHafFbj~TX{|HP zaUA2M02N#mh1R5Mybfd%a2TBDxx9Xg7r5Xz`*B&80b}e(kWm1>+z-Z(uiXyLS1Vw> zaI8iB)|{CfBc30D-`)>EIM*0ratCbNhA4{Uz1VJnuh)Z#)lR%d8{o!O`>YH9NS*+$ z1K^xbMT`TIBmvL!wvAD<%K|2=Fff-}so4SEAfj%m4rY07*qoM6N<$g3A1)!vFvP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/pluto.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/pluto.png new file mode 100644 index 0000000000000000000000000000000000000000..2f4a6d3bbaae816e99c99ba13447bd501aa41713 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C^*N{ z#WAE}&fBSmTn7|*Ty?()_}z1QzrUJWJwNd`yJJRnw#Npie?lgQ>oe?bo=wqgVA5dV zJWw4!ugdV4uL#34MV84yM(1{V+lIO+c<3{1j+4DO%b4Nm9R2cZQI!mT^q(=LHDvg{ zmi)WEc*8q!ALfecx{!|&MP7_Il5Wg1ZCk{!zw6;$I|)(AhD{X_3|U-NwSf#>oYoA> cMI0FU%r_^8<%e%F1-g^L)78&qol`;+0Miyu&;S4c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/popcorn.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/popcorn.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5ac26fd4ea2749995a6010d8961c4b06f3f040 GIT binary patch literal 583 zcmV-N0=WH&P)VQ!Pj5=V{0izBe>;RAb|FMeiaAc&t1Avxi zM>@c{-UbW|TQ4v$Jo^OH829%7i9Jsk9?#RK$RW5L;Ii$1ptl3qQb+N(aA8Mx28NQI z!VIF3LJWVOGBf;)yYc_$e=dfPi{;322yO@b`_91i|1;3XybQBH2{TCXL3|FPK|mIW zUyJcG7-{}zxccxX!$$`40B#5T`ozG)&B@T?{ub0nn59Q~6*9(-%P6v1s;ny#p7?#|C_j|0OxhW-B^w!LSNHwq#-BnXxR>z7Pn zU|?orVBk}OixmJZe{%C9!<^;k8CY4F!D5n{&I}LFt@}@^Bk(%_7zzyLlmEN>$1sTV zu`uv*vB9Ny?(j1-YToaPQ728=pj)B&Ro008V} VrY-0{P}2Ya002ovPDHLkV1h&O1+f4C literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/proteinbar.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/proteinbar.png new file mode 100644 index 0000000000000000000000000000000000000000..f004d7e873bbf3e92942b4bd12950d0405b2343b GIT binary patch literal 649 zcmV;40(Sk0P)VQ!Pj5>g>4hYob`M>`97e=}`z~A5hKZxGA zaU4PU!q$&v9AZku+oLg7^I~SGVt;7fi2JJ zTEOt^*)xWvOP6BJ0T>Rrb?X*`yu3WzV&q`OW~tD7BQPx`!om>K5zZhfDG8So;bI2U zXU?3#>3a+ZfDGW|P!7T;>kmVq7a`jY(pn^6qJECDO zm1XuOFK6at_)p0vS!MAVUz~ZSHS#UKcPMpB%6AKFqlpG`Z@d|^9Z!mU#ySP)UeVp74#Y7q^H1Mn5Yba4Pa j%jx0(LSWPZ1MUC-i5>pV5N6X600000NkvXXu0mjfuh1H3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/salo.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/salo.png new file mode 100644 index 0000000000000000000000000000000000000000..59d1da93687f9e3b038c701e326d9292ed77b2ae GIT binary patch literal 404 zcmV;F0c-w=P)qOT14m%l9k&;2?jUqYy$e z(h*DFITwFIAkRFr1Hc@c6Pw_>j#!&x9bw(v0N8wrM;g1;bs&R0nlHC61VH+GZcn^9 z+ChV4{hR0YrN>YNfX%S!oe_h0?xV%n33GWp6{`3MGz1L$JdQqP<6847fIE$BH}!w5 zQB?qv1xb4{Z&X_bRDT#I@_wv(08Ie5EWnIS*ZU0}wmYK3*#y!2GD_wG$L24)1(4K( z^xK%Vt<`W!7nO(1*=e69m8yN0?Bh*D8P+P$p?Q~?Nt^mS!yk@+Fi y8L>v+1fU_T=FI>C(enGx`%}6AEC36@+`0hy|B#zYZ|tLL;J$27y$ng;1g`nj8)7yyfXj*002ov JPDHLkV1gCYl-B?N literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/semki_pack.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/semki_pack.png new file mode 100644 index 0000000000000000000000000000000000000000..1a58fce76029251cae2d2488a2e965edace65c46 GIT binary patch literal 636 zcmV-?0)zdDP)VQ!Pj5=WGIzU@p@&DDE_ZbJw0bVW^3_u6q zRYQy;$#y{Z)a7^$F3pboPe=_#4nPLjd`gVvBs;*%i2MK6nQ;u>>5CY)o%;&6fReO8 zk^_<)co`0F-^wr}LzY3-(D6UILvT5eY7PJa1qm*Oj2VxCj@Xal5Rk=>&+i925advx z1Bfz@BnO1_yDk+nB}&mUlDz{R6UoGjN;}WFQrg90HL^g$xYu7J=iNfdLrgM(-K6 z9%X0nw*Co>0!TUlWkX^TAXyH$bp0;F^5bv8Y>;JJOWC2p{u9i9_*D$Z{!X-cBs(C) z#{o>gdHaz;M3^7w^G#sO4QzuLG*#un4rE~1Pkje~;{W7NM}~RTMPOfos$)G(Wrl5g z#2A$1BpH7H`NPmLc`1XxhYd*{A}Iu}9^VAcY8@M1f!SA&GXO2uX9)9mVpu+}AIvsl z-c5A;lk5Ok2?%k-TPS@IX!%7rn}LCs6eEdu04VzfM+P!v04p9?X$J!^HYp__$qoQj zuZ*VC!E9j72d@EvJg^uzM?kA$nm7O%03E^zrQvM=ySnLc2h!XD$N)KH$N>Z1F8}~E W4*4#4(w6f80000mn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/snack_bowl.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/snack_bowl.png new file mode 100644 index 0000000000000000000000000000000000000000..aeca559f3ea59c9a7b09ae7fb04a6b4393d2c325 GIT binary patch literal 592 zcmV-W0{X5MKvc-Ks;Y(nHNm&D!p6*#>dhH)-B>cIWy1=1q26ihnLk zz!I&YHbbfLJ`Fnx9y@iAf1vt2W zWXcd`Pe)N{2L!1h51e|sg5YXn-$!Q`4TZEKIsppjCw-M~$x4gNaF}&Oz;ruYI1(u#_>-E;MciP=4AxOhPB@!rSze$J0~UmKci zEr1q43!nv1H$Zp>BASMyDF7s%w0=Gh3_~2<)P~arsFvw(ng1rP4M3SxirLv!f^l1- z1yC&$zf zk~ufn5Qb@`!5^OI;?cjHe(jA;$d!n3Q`FmjR!7s~zu8 zU&El8N8B(lf$LHQkOU6tiZXbySOAL{67;UejUG&x*XWiX1S|PiIP?Sg4wr&EkX8DZ zw}8xtURh$Qz=&$YGsbW!eKHb1m)8=<*Z?Fz5Oy1=*G^Iok7 n70+;DvMaz9XgENlt?2+?&bHUXex{9t00000NkvXXu0mjf|78xQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/spinach.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/spinach.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f8d73519f8c93538507028afbe89d73a200ccc GIT binary patch literal 454 zcmV;%0XhDOP)5+fTgfI!NO2rMj#gp`Ni0c!CIOqtl2 zkzb&B0Jco-p1eRLlralz?8fKx(iAF`vussG{VU6rE%pEI&S$wNuxA|(Kv5JL=Pb)` zMEd}Ugb-RO1!ibp5VHZ$TuSL3f^`N6g394TvjNZ;0*KuO7`@Mf=-h_8%76zoC;&xY zmLls%7wP6qtW4RMvNBX88xO-4qYSLP z08h|PwZzbs4Rv5co|sI2*KSR!O16`Nit?@z!u9riO|c3FSZPj~jVsTU-fZ66 zHaE^cUT#c3r_$t!1;-x_46SotQvF>R?1E| hsLtn~a0K|b0N=Tpn>IYjHIM)R002ovPDHLkV1gtZz+3&>eg^m*5qSppSIU@!VC=hnI>?vR|?JrS3aqIVLfOqu`if~f<>?rTe%`09Dc*yzSUXQ+?q|aIFL-?Y%;U+-ptOdDbPPlP9P_c6UYhV z1abn;MPRjB{g~c28jY8S22x|xB$2rZ87!L3h@f0WDgTB%$+HJfzo zcFAkCB;fmGLbO~`7>4A~xncl^My&WGWI6%~egT943~LE0-b3&ll}e%{VXBzcDNqe2 z&KPBOILnK?31E!Mm&m$MtI_A_Bz>Joc81Cx`mTF`#SsmLkSc3Y^6$gp3@9BO2|U_v zDGI{K+=vW5CpKs=-IMQT>%aVS&zq3RMV{+}U_B8b$v?*eW7|NGNI%QJWrw<*G%v zDSNIeU#%)g+Jr&WqD4?GYZWbwHZA%CQD&|}Y%pE8n>rV7jFUQdoWVdkAosyA-*?Zw z$ICRqA4lT}Tm;?Xcrb2Yo!4CeA$z_Kaq-~MAfGSyeB*5ahJ5vP7m!D#{jZyV9FAuM zTg;Sh0&}x7oo2J3NMLHVbR3elnkUd4hZ{2faOAB@((; zffUa3Jo#Y3db@-fXQScaO@)-GvIJI$UN@98n~hWh5P+WuoVuFQp3~kbUJ_b z+-9?pXKR616_CR7Z3S5048g*@kCYmocHD0a9IH(`lRzM{YY2VUFs>ZoG_cO)rB*Av zssNS1TMk!F;q*@iLn~ZS0Hb)biLQ262^{-c;Y@EzQOh(M@wt?jE|Ew6FY?09xS{(e@2w)%h$`l zuFRXpz|jCk2lN_>-=(e%Rb+X(w|>jd_0LbVGdi5!G$mw~0 zA0VF~Q*al>>k<%>;%b&mC5vwEXI|1*+E66#yrWe5hvRzpAphUJcXwR(V8hxTfbn=N zvG;u+o3#l5D+mH9gn+6^T@alC&^!!7?GUUzKoC?89qJ5##$Z6~Q-G`2xe=9*;kq*5 zMl}jRtB;}xilTs}ZG9_-h@G0ufx-2-TjCxFb+cv(r3upv4Flx10)V~=W^)0pDg z0qEnn`nD(=wrvAfECAPap%V*cv%6Q0jw zaKx=yfD`cmAO1ZYpAD+kj>e!O_B}9^O%|+64_v28d7goMP3!r|e2FGR`rLF z!AvycYniHiiU*MAIrRIz#Td=oaiajsdaK&Sy#I^X09a>CH>RD;aja5*C4eT)&PvVE zTqXT10D2AKWrJqx{O}Ioz8hE>Ac)`Mz!bX#x?e`y^S@vRumkwF06z@oz{fS7ylDUc N002ovPDHLkV1jdm)OY{@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag0.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag0.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f511a2d77e49006c3b5c40e5111caaeb7820e8 GIT binary patch literal 378 zcmV-=0fqjFP)#RYIsvVRVx*nzrv^Zv_}~C$ z0JotN0AvqQwjVCQ4HCE@b^x}IlW&5MgcyJY+qP8|q8NZ@|7l&o!4B|LbPj-kc+)g) z0q`Y6=5Rn0VgPBzhXF7|5Cke1@&5pZQ5c4kxV4s?j$($GuO<7aUV&8fFn}ZC0yrJu Y3j(5+DBw$VZ0pR2vG>wSWE!Ss8*eRg-pTv8tlfW?T_A1d)SME#d# zQBf4B4P^D*0b&5CEK9TX&;vL=9RSg@=^%OtV`&yd8GzZ=^|Y)m=q(X|ZH9Hgxg-l- z0CpRuSO%$r`v7+WwRK15EFAJU#`Ay>^E`X~))|0%zpm@Mi0uqu9LKS_-X#lO89;O} z7>20z#Di0@djSUJIpb>fp`IL z5SWc1%)*V}3GDnCpFG1%O`=j-`ZkG4_5a@go@x6g?i??G7r=7>q-i?Qysm5SbO0`h z$g)f%Ng|r2!R2HFVGRKBq9~MD*L5NcLp4@arS?yEU=~mi2!fDOF5=U-P!4$)u?gc; z0)mL+SY0D~tm(qI-h$ZGgdgvpYLqfnrSUFn2Ta1b3DI<4eJp(6|7k*h=>dd^^}7HN zzrvXkMjv1qj90&#(Gasa}4p08|2pe*{@p#W5S1kM3u&*vEDePb7_ z9e~aAiMI-N5?X~dfG$FPK*bhs~vQ$DmOAf>5K@cqW-YSE!1IP#uZQE8vQFPPhQ%e8{F2J*= z(bRrx0CIuHU)ka_hxPz!sQ(P(Vg$#d@B8K6-2fbd9;^%fchA;ytx90~RcjK@@xS1q Z0j}LK`nVUH3pfA(002ovPDHLkV1jQi&}IMt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag3.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/trashbag3.png new file mode 100644 index 0000000000000000000000000000000000000000..037acd242481da081d92aaf9177fda90c27c8d6b GIT binary patch literal 499 zcmVJL3k!Y@%)kW13{1xyE(|je6EFke zK7w!$KY|gs)L;*NgEBoXa@?}@vB$-(>gt|Z{ZN05w}7{R*AS5B`ATuyw!!5BI3Z9J zh03x_bzO($>LbEi0LZJV(q!W}s{8$}uT9hF-!FGyBhVrM64Cd)Azy!#b||NTpzJ)0P7mx!l^@H76>*S^nnYl7Qv2P8N>gc!Q-DOF(@sx)168`L&{66;S3 zpdA2WOh4?WLBv{JxeKUrkb`hp79HarV!&6#sTP2&EK9TXIG7lb2(bWOJqU0PAO`Gs zb3r7+%K_>+k#Vq-&q+q%-v$3#zyli;D|m_L>c0R0002ovPDHLkV1l#D)m#7o literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/tray.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/tray.png new file mode 100644 index 0000000000000000000000000000000000000000..0291f5d02b9b0f914647ec5ebb1c1fb0721c9b16 GIT binary patch literal 815 zcmV+~1JL}5P)OV?W3|L!RDKWiNjEV`-3&u9Vm^8t} zlf)Be4*d*GKZ6I(oCuygkeD=b!1QEdB1VlELrfvHL4{N{h0u_7-+|fAuq=NTUx(+zOO)N#dE&LgVUJ0Yq~yzPj5pbtKC!ygl+*W<~^}dBdph7EtOaSn})1dAPIphFwUzs#5}? zv6P+fGYbruGBOeX9THVlp(yf1zJFvy?T_9^tO`(;-_v=hU``JN1}uWL)ne%<4}Kse z0IE&BL|7$Ixlq}x=;gD&xF}_VL7s0OOVNX=I-m*%eqC6H?a4Z7`tw>- z|7ohySXwo0A;0;C0^ktz?{>R2(@Tc~C>Ak{tiA&V0&orbq8V3~0QAARe4~Y@+dGp1 tpbyShTaPuIvifepX|H}D!2i$`;2#D#UKgVXPSXGY002ovPDHLkV1kfXY0dxu literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/usedplatter.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/usedplatter.png new file mode 100644 index 0000000000000000000000000000000000000000..f6343a89574e5513991c62c72bca32ea3fc1cfe0 GIT binary patch literal 591 zcmV-V0Wg$jEU$X3f}LK zd+v|-zMpf>eQCxmO93bV1)u;FfC5kecN5^t>|jyGZqI|7J*U=QGjBUEaoX*zS<7XT z(2o8g^Vr4n6D!Z-o2hS(D*?!yOvy+)Gy$`;Ug*(zY>A~Rv9-L5*7r}LiM6b`%a82X}p>o;pfPl)D?V$(6n8A@j2?K16Y^|aORwKIb(YG$;%+( z(SG=QBd{}lh|X`I_v0{UY8ibDNM|J6>oHLoLl@@NYHiMa73420| z`%#Vz{-wJiMg6=iwhNVyh(%w;d5?w_kUgRPRJW_7GQ;bNs?tc(rw-t<12?U^`A?_- d6u`X#_zx8$zqs3_&Pfd!~9OJyVx#WDTMv=`5qe2PN19 z-{)`pfFElDOn?b+Pk_9_*2{$j++_f4>^(p!?Z`D+5H$dG%tj3H(t_`(o%dP>(Lk7& z;A4y`0oxH{YUedl1JoU}IpE{Do%{7)1GoTg%lqadGctuF+GRJU`k??l2r0Q4wK{bS z<<6Jp9JQlA4Is^0U>2DH*|8Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/waffles.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/waffles.png new file mode 100644 index 0000000000000000000000000000000000000000..391c8b74da5dac8db833691d61a096cbaf28baec GIT binary patch literal 523 zcmV+m0`&cfP)_96m}i zv}z^Fs&V?B%oSRJj?G3riy>>If2pV$ysN-B+~so7xm8m}ysW{br7;#v!1BWZ&S$o1 zjA$B$lzf9%I6|O5S20beFdy~j#0cU0Ipqx!(rs}`8Ie*fmS$49x`u09F-wGsqk(Qf#?XNhQqzuH=GH4 ze`;hyAQ+*`DcS=87MkpwA$H%CE){6(=mlp2{R9rG{r^897vKVeZlA|I&WMIWuFU`d N002ovPDHLkV1gr+-9-QZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/weebonuts.png b/Resources/Textures/Objects/Consumable/Food/bay_trash.rsi/weebonuts.png new file mode 100644 index 0000000000000000000000000000000000000000..18ffab02ae7a05f297cd929d572e60b043097656 GIT binary patch literal 369 zcmV-%0gnEOP)UDm79knNQ$wym;^Ki02w1&yBLcC^>j@fcCZ)5B`j{RX&5kk!IQrQf~UhOgVhCPB*1DsDG zK@)HIpmNXf_b P00000NkvXXu0mjfjun=Y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/barbershop.rsi/dye-e.png b/Resources/Textures/Objects/Specific/barbershop.rsi/dye-e.png new file mode 100644 index 0000000000000000000000000000000000000000..9d35b161a42f05311e58876d1027d2d15db848c2 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQdZ z#WAE}&f9B-d`$)-3>VA_zY4`LK1$qWFmuPtD;I^1tEu(4?R9 z>=4zsaby1?jMXBHXb*SnDG3k zt>>h*vEG{8KRBKoj%X8KT#J10MzJ7P>=}l`Sx(b*aK4$NJn>p*9 z;?%$21O7beD!AKNe*M@C<|XX26b|ig6BJ+sp%3#JdI~w~kDN_vVEY)ulaTK4Me^jX zl`B@QGF5!?M)rb;`~9Q2ZJ94#h+gPR4nD@6X5sTh_FI)D(7Oztu6{1-oD!M<(V&0u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/barbershop.rsi/dye-f.png b/Resources/Textures/Objects/Specific/barbershop.rsi/dye-f.png new file mode 100644 index 0000000000000000000000000000000000000000..9e113d439c42f6bcaf9c1dbcd1b131c4c4e1b812 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQse z#WAE}PI96|g2AhXg|8ca{rdIa;M>mP=MrZ5_s)2Pvo{?0{QSJ62CK6<7h5m0MlahY zSpj)@dv{MyP0=HE#m{`04FoTpXN=CXv#$PX&fNTQ=6_y=f01p~e5#wn=e+dnHCVWl z* UzrICt0)v3T)78&qol`;+0ArhXd;kCd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/barbershop.rsi/dye.png b/Resources/Textures/Objects/Specific/barbershop.rsi/dye.png new file mode 100644 index 0000000000000000000000000000000000000000..65c9048ef35657be3a234461885d6af4b6beecbf GIT binary patch literal 517 zcmV+g0{Z=lP)VTo`08TEY{~-GNw|k6qcL2z85eX?U`^^i6 z|KvJ?YzLS*Su)(a_7KiKxaA&M=8)}xQ~QoHgyzM8*{dflBG(wo(!j$jx8b2cR|ljQ zH2+^TYd(tQmR8~aj~`n}aylT{0U*oW+$)M2wgW&RK#9d;-1i`GFZV5wtYpYyBHb*K901Azu&js+fa-{AZ4V$j0>(!U1-i6|5RRY@7}`CfVc`G(xtO*$ncp1900000NkvXX Hu0mjfoMFz^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/barbershop.rsi/dye_color.png b/Resources/Textures/Objects/Specific/barbershop.rsi/dye_color.png new file mode 100644 index 0000000000000000000000000000000000000000..1e35ab83d8d65d6640f346b0946af69252f61862 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEPqB z#WAE}&f94hIgcm^xQMP(_7>3btlpr^>b*hjJm<{^o^@eg4i)lo9CLVE#x7$&s1LxK|Ptl6`{_O8`L)iwE z)kjqRrU~RW{AbhN>=Ja!Hy>E5cl-~MQ;FA7||lEHW@0KG*>L%HZkh=d#Wzp$P#0l6IW{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/barbershop.rsi/meta.json b/Resources/Textures/Objects/Specific/barbershop.rsi/meta.json new file mode 100644 index 0000000000..4450663ba4 --- /dev/null +++ b/Resources/Textures/Objects/Specific/barbershop.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from goonstation at https://github.com/goonstation/goonstation/blob/16f8a5c31a6cfc019a1549b0b97f18865002a44c/icons/obj/barber_shop.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "dye" + }, + { + "name": "dye_color" + }, + { + "name": "dye-e" + }, + { + "name": "dye-f" + }, + { + "name": "scissors" + }, + { + "name": "razorblade" + }, + { + "name": "tonic1" + }, + { + "name": "tonic0" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/barbershop.rsi/razorblade.png b/Resources/Textures/Objects/Specific/barbershop.rsi/razorblade.png new file mode 100644 index 0000000000000000000000000000000000000000..47b3afac180ca4bfe4e335d2044a115d46751402 GIT binary patch literal 410 zcmV;L0cHM)P)VQ!PP}KqH1;weK+NE(BPgcJiO zm(u_5-|o>q3SgGQg8jyw8w~fZJtWy2vK;`k92D%^Htl3k(vpYcQ~MZ*4h6Ct084PN zI0pqg$l@vW#~7Zi`o<8jkDF+-NOl0aN(!S_e48Q;kzyRI>W{X6^y4$RJtpk90 z8qY-(Z^=2{0CaO|^<)5BTbr7b0Pyg)q-g;0FdQ{9w*r`l-ycutgv9u@ya|XG#if2; z&!+&9Mt}za2pWR%F0T8s^SJln{-(JR6N1#J|_I~8_FX(Ip h{}cl-00VRm@B)3;l+A%aA8r5u002ovPDHLkV1mF=ig5q{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/barbershop.rsi/tonic0.png b/Resources/Textures/Objects/Specific/barbershop.rsi/tonic0.png new file mode 100644 index 0000000000000000000000000000000000000000..76daf43be28f3c17d4382f08a0716859fbefd8e6 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0suu z#WAE}&fBYoe1{Z7*b+Q!8nmVFH8f5xDN8Ec;{HPL&5KLQFBD^5UgEy7HhX*D3Ga*~ zkB}_wsZTaKaGd-@jWsGs2zcZ;l1Ty$$R5R@h!FvIx?3 zDLo(~pz|dA&+D`P2EE?AEA(!h+wj}ys%*pgpp?^&TbA$8F4b0+4%Jp=lVW7xTAFFU U&cky$Fc26#UHx3vIVCg!0Q{VRy#N3J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..97d8197527d4ed3936a0d368734fd31f7377ba73 GIT binary patch literal 3073 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 La?`lf2o~`_`Z|Jr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-off.png b/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-off.png new file mode 100644 index 0000000000000000000000000000000000000000..04e2ecd0d4a46749262326435d13358c4ff0e964 GIT binary patch literal 2122 zcmV-Q2(|Z#P)~evpC#3pc{E&wStpXtYhW0zfj^}t7sJ86P)r{CEfrX#lvO;|3 zvU;4O?wq$qs{ko{gLtl{3<_|L*7+D1YmBG=IQ~}v{R7dNn^2rW>Ch#*?Wr>=ASuVA z`T-YDzWwC_b?p9Byf@faeF=IxXcZtewIxu$cd%8IYiIXb2@zZcf+G+Hyu(U+bWOfg z`*y5y=_LK)V>JcZ_Pj^)7aSDNCyp;G{$HkT*S&rtC5g?4CW#Wvx6XZ>7A$=t7MKTv}&Q744CA zNACmTdDEs%!t|j1DU?RpFm|Oxp8)>Jjx)2~E^>VVm#+ zJ9=l(u3fuCn>fM)m_|A!Tp9W`P&d7HnsJJ>&TTH!(>dT!3y=;kIP&|y=@Cl6pH~SI zGiE+SE0#Z4LVdZsvnR5e&bgoGm~uby6q@$4U@F7Zrd%z&j0^%1dQh763f5 zBtvJuEYOovrqWl}uZdCi3%usV=V{-EAA9IITYw5y0!EzS6~4bbZ7yH>g|6TDgWlTu zCT-dJM(REQRt5`Dp$gCRtStb}3|ryBqdA(r2sP5ntCmm^UM_!XoKRP{QwWbKfD+b# zUN7SoGbu`7rX>X1ysOFP|e=ET1bUpjtw)Xh*Fs6GJwhY4cyz79_3 z0l8O)l~1?C|Lwv_LvbQQ2o0-|H1usk6`=0l!GLZ*&zl_e zJFFt=exT*(P!CmV^&5nY=2z$`9)BC%@Oza|(qS9FRyM z^do|LQ=kE`5|Rjnc!Zgr$_MKG7NF9L6$-0NgpH(5!|HLEYakTm^rWy2p3hPAoGk!z zzq6FckRIIx)mM0(ojL`QumE{j+Tb}aWK{fvo}QBhxE^2vaD+N7hbzwv_9^f$jIepG zbB?-jT1BV@G{5u$)jvFk27Wv*%B~HsiBS$SPiPv7(7o#l4u#nXGfe&a>%mK*R>lF1 zq=!}kNMIsCdg_CZhyzb9O`}|av>M&Jw%K9PE>9yF?sJGD`ZV*R($Mv9v;bRX)52)= zZxsr2y4)7*z;yX|SMXhdu=4>OF!ybg7^wgV|H+X#PN}karIZxP?!`k?4b&LKC7?oX zapmIkk@pcI6#%E_8pd+_ByM%Y1^RBx)=;K?q40vA9sOLZ2&*ZeUUslWxqa??8Vhiw zh;*7rjTvB6z_W{bd!|0Ttx*B0)>sKdJIi%^JeDm4&kNDMF}t(0`Ed)U z{V00!5-mwnMHCMJZC|D@~gu0ab0>IwV zaX2SUB!VN6B-$K!NZbPa9i2Gdq-m+EOB!}OfagRlK<(I{DD~eHNDuZrq+|i!R5_=~ z)f9Q#o>Rp*d_JWK8y@<4mLzQf5^92!85lhau;+n!#%eY^bj`RQu(p8i_02-Feg=ZV zr{@S=cwiq8COlwN0A4I=PaH~sP)muhoQM6IEOELkKm~R@B;o_0giPso1Gq0xLFK*x z135$n-!^wS1T~@3w|_ev&O_p>0K!^%S3qhx>{6sWh;+XX5Y{)-wB^CJZ--UjPU1H~ z#CGrHO*j&#QSfkg^&fcH$$wu88k!pEONsapVmvqBxPgJVFD zb-CNI4n{#=rR9RuEdVg@_bVfZQS54`*h+|tQLzBN9IZ=XF))g84o2APtI7oYzQ=S_ zJ}MSaUq8Lb&@fG1JBz0EU8Fd-K*9he_~U@hhw`2_9fspN#2~3#fFC-i73Y^CK>0jB zPa|p^Kr~5QmA(JlTjHXm$+}XB1N;~mxFR3&KhZVccbtyytnySS5DAtnfNzP;8!HPi ztpET#H+Nobjt_L?N>H%?zAB4LRAXiV;f`&BwHLPSpK0;Uu_zu!WfcfR8i%5Q?TV7v zD!_LIT<5ZFcGjkU{OFo#y1pCL#>xWz&36U<2HFT5=M-Zm5dZ)H07*qoM6N<$f(tkA Ak^lez literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-panel.png b/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..e50605569e88d91f22f49a4400eb5106d6932a9b GIT binary patch literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V10 zPZ!6KiaBp*`eq0_O0?Zy%DDK^$@#(Dj!`c>7dlOh2oPRkE3(?;xD>179=4@%UOCO} zVJ)_-Ugz)SZ2T9~Bw({;ug8(92~N%&Z2rB=8eFDy%Bxjx4HUG*_?NGUZ_wqsYH|hktwQ|IaeX;i3Ez|K>yUxy~v7YO52?tmM~Z zIycWgon_m$iH@1~`{%`$wQqlP{#LT$LfLIB0Uz#1yS_bkK)~o>{(%%u!}|UT`L9I_ z7aP4OysvHJ_|VhII>(;z3gc7r{mh9SAMDr1ubl58`atE1z>SIbIpW_lcj>O*tn1LS zzR*1GX!|?i8{hoj%!zCZzVO@sLhy3-mn;6=+s^Ip@tWnn+OB}uxknRzZq=~9`cEWo z%Rj}5Y72J#;)=aKPs#3y_|v5#R(*Frw3slqmJ8^vN@;7)^ zO^>_wR_R{>l_4v8ISN=WvBdD@Wt>b2`f@0#qKZ@5er9=2TtUPVjuTIclvb>Jy=cza zw5<*n2?tm`1RaVScizzd(pU5I`lGyz+C$qK9PX=Ll>Xi)5-Yev@-`FSriJczdlWU?=Vw<>B};pz^xk|XD(c1+jHc_9qt+*|Cv(PR2sz0g)SRki9F!# z5@guZ_3eNC<|~`{Gqyf|7ADqSdb-MNF@s~Z_}S7NmWWn$9aa-FY0Ctm2d$<1nh!h^ ky}^xow?F(g(ag?JUIeW4~a!6+>$5Cs#0 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 Y2i7b)05$mKwg3PC07*qoM6N<$g1!G!L;wH) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool.png b/Resources/Textures/Structures/Machines/VendingMachines/adh.rsi/adh-tool.png new file mode 100644 index 0000000000000000000000000000000000000000..23d4581828abd4a4455caea4dcf2c5084450e022 GIT binary patch literal 2135 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 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/cigs.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/cigs.rsi/deny-unshaded.png index 4b8fc2a3e58234f15502430748aee1c0eada22c4..1200d326bdcfe503d30a385436b176583bb46b27 100644 GIT binary patch literal 667 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3-o1GtKD$QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`0|R_QTmuSQ7#0+MQYpW=PFu0ue~!6daS-RG6Ib7~cYI(-c=ztzmE|&e z0clgGP7QVscr!cxj*gLgoXICm_c^v!91GkP%1v&bQY}vBSjMB=Xk`a9HT!7EBp@YS z666>BA17c?H{mt~D&s8hh%9Dc;5!1sj8nDwq=AlJ$EtXSSEJCte8G`}cN3mYn#s3l&P#>Dd)$jA$xVFrS!Vi? z5`m{a?1AU*G`uRjpw}YA{?zJIOztn*EW>mE7m zw^cg3H3jU@6%30YF3#~Nu(~*5L1u=>1grJ34j~MIj4rGKqF_c!bknxn%twMx7e2T% z4@@txyKeHa=9rRqltKti6Bvi1I1tgIo7s z0@925);+ME_T;u!rQkKOJ9(G=XI(GW&uDvI|JwX8zpqW_XKgMqC%B!(O&^aw_;~*- z&OTLp8dO4uJ7# zM3X)Q4Q*Y6oaIpW;yrp--_LS9aChJHx!?U5fS}QirEQ?^sa9AruBmzWou

u`ma_qjAcXDPoF%dXmIV%^0eQ`m;| zUr_hz!&2x>$xnlh47~@4V^n=hVv!7%F#s>Dm+j|5TO(5(Kuo`Nn$}_flg8L40vI9r z2!jm|?k$i3AWWlPe{OBa4QX<_rr3A3SclcU*ICGBRLZ0&%QdPtC9+wWQ}vzZH#5?w zVp1tjHLk;<8x`q>F$sc4&NfAn*3ByKNta7wjWY z0Z=`ine6IbG&L=aRAEG7XkUSg>wdtw3utArXS$FrDxr|OsS9F=XuAbXm?3d`H`d-? zXOyAp$7)BWguF1#3{-e@nKaGieHi-|f?j89rSEg56Iv(zKBdHrYBb?mSWRx;d||An z?=OKi6~`l}{TxcxG*KxX%B4@&sU=OZ9DJ%Ze$`-}e=5eWYh6j~0;$Q2)C*9zj-%S| zZzji9ww-dDI(OtjJ)-5BNn|G24$8y>~5J)C{!@sdY#k46p07H9DQ; zc*;e7KX1>z_YGgcG;-h}%q7U9oQ*5x)?(f#qCZXdVqBi~ZFiOPFBPtOG_@8mjiE01 z?q8REjCPp5Vw9QCqd*TvkMP|^Z#2U$q9`VwI;*a$yA7Ky-y+{3Re0~y;U)7!ScJuy zQvH5;jyT~-M@I)+ey2+C*QbO1$lr}Mm_I2P%|L3)xjp>3@TKH;bsAJgK$x+BD|4oXd^Q@G=$+4Z@jSaj~%{adpq9THDj&j+g#^$Iqe4 zV0=gF@1o5MAq%g+P6X3}ng(!nUBapFBIz-d-4F7?c&_bgm(8+`d1S?OOk)znXk)e~ zW@03yFH;g~9qAZr9yAA5+N~Yf78fE%2D5r}jS-9DrA<1YFT3RfKN_WMsApK>d2nLn z&!jO%VKcoUA>?JkJFs%>invv#6lxs?lH%}DP6;a~jH5g)I2GBBa*GzTUCFilmA6Up)&f(QL^fD=FKwA5kto->EIRF@kRG zlK~OLR>m5xiDuUKfQZ$Exp8}1gRa(~_P<}JJ zUEw$sshRvyHCwQ3m=WP`G);K)19D&TIYNPg`yS`E+T!Q$8gHhI9cdUP@Ow)_OHi$h z2#1}~ANd8Gs4X^My9ZzPY%~LMq_dx-KSBz-EdiQhnWaH;ARbI+8~}P1VzmazT_JY< z3|?$lb7=fqGQU?sk?CzvXxp~|^-C9KQpp6+hNusX?*X-g>zLLGV|9oXuM^LQtB^wf z-+^2*5I8^HF#mI7#z)CAE3&Iy@-5$q|4_5LhkQv~GA*b~++8Wk+D}=e2{bR{p}bo6 zL>XXpjrU>o)?ME28L$Kw+US{G7)&h?BNDVnZLoTrPn(K&}n?1 zE=P;k=m71C=Rn^NFeHi$U?leabKt<#0Uq2E4K~_U$P-^9oo%s?u;5=M;OgY*NV5;V F@-M?rWBmXC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks.png new file mode 100644 index 0000000000000000000000000000000000000000..a48da3512cecd7c87baf3368a50b7eb308ed6f6e GIT binary patch literal 1448 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8558ca3a7466627de14484ae013ffe2c05b332 GIT binary patch literal 2139 zcmV-h2&DIkP))}#+xDkyyj-u651`#V1O z+;i{yCwiYB=)Lc`_dLIIpYuG=eeQYA?B3p23uX>)z4x}6o}O+nC2V@St6&5c-@e#X zf~|eq8)E%|Lq`W2!ZvMwi~lf0pmZTgU`{Fw9!whi{n*3H0 z)dD#%2p?)6_GG*c*|-)CR+_06zm<(KP!I>0H4|v(we{=QdwE%M*}l2t+gkiy0Wd#w zl%z3|N)R(;Le8`toEE=R0Q?1hI669-2r7BOrxs8)h%rb;c1?bJ@z;x~8~w~|D;_F+ z1?2%e-t3=$(Tsd^#>BYm&2PgSLAF^C;{DuN;~@BelDHh|&2J$X@8K-uUCV;>Wf`1m z;rPG#Ei{~EiXmbVH5Rb=zU9BHphkI`{LTevUQk9B$~{E21DDX`w zGN2H+#s_F>YI4Wf*;#*1pe?*#lRp&%WAOR&kwJIdw4o~%sDLGFn$5(i=@el&h)RNC zz4$FPfxsb?kz3nVCOW;e@ky_B64KWI%*w>+BsqvN0BW5Bku$B$Z?gi>c!`}z%|Hxz=v}Yv_5;`Cw``zRL(NNkICLs=5V08mq(2g2u+!vE z#en&ZjV2FG3l^Ap^X9qpGh-tOGn5Y^L2?;@FarzbWNGtT7hS8!vIf6AnR!i`v(&g7 zc*!3DnjfIeZ)Hd1$Jef2Ejx(DJC?d50@LiwOzOHMkC|ZBz%}?&E^zgi^PZp_5SW0r zTju*@rqfi0!^e+C+w0ArQozpLd%WNf(0JB0fHS%FiO1Y=eEd>zfNhK1`JWfhyWe@4 zS-tsfn0fX0ZZ|ECue*L<8&*FW1VE=$?J8JfyiwvOi&~s!~9cSmRC=Hw?P8S z1@t|9UgF(}4q;JI4v@#igE!47wwd9NAOAKJv%@~KL*WCyD6>0F{=|yV{J8;;95{IJ zpf6SuZqP!T<+3iy;H>^uD4HS?oG|KZ@F!dVk@tcr29583I+r4chV#DI;9Fs|h78Q) zJ$ElJ>joP9P67O2;F9w2r=KM%DKu3iBGhCu!WQ97vb5(&&J<<6dEi|yUoL!T@;e1E zUzTg>tkr{nS(r38xerI~!DR-9KKvqsEY6%SR+Kok`K=Vn3JTEO-JQ@rgmKpuX9GTj z{&M?DXX#!!3y=j99_dV6ms99(b&9^LqOLg)`8V{Ty*>vF4Bba)w(BkQ%L!Ed?J!dc)A+-ENZ zOK`cluP^x*8xP)>EKoxRWwAg>pCzXzzh4xE2?1v(#u9&I0CNh3Qp0(~_>Fs5kc3Rg zBTu*}s>N@^@8%dPS!R~^WR;;p^e`v?CTrDpAn$zZY z3V<*0z02qrM%9>LXd5PqS5aP|f~-$Y953eOrRaREgmL~#3anlwE3L^!mLXQlv+d^gAU2_OpZP&`^)T1`lS|s;x9&sm^rbH$1nrS zx-ZK#%Q;r=f1wzbzj%#x^q0;os<=|6lG*& zlwF)1y(DvmR5q-ajMu3V=8{Pv#@R1cMn>hGR3L@BRJ3Jel%iZ551mN-YwoY(R|CKP z*6G1HrH}VIqgLK|12Mrlf#MGD;UL zio?N`wNhx0juN~B7*Dy}7LBpvt~!1WTOdUtLda#dTPdtu>mOF?>iCi~OoP}n<5y_d zJYs0Id5*5H4zlBS{8_i!0Puc!rdc4Ec2-wpoMm}imt;;N^jR!-a8xe}pX?CsP#{_* zpx?8KwR?`z-D<9R(0{(riJ9*^pfIy}El;lM#{7|e_yaR?RP_0!`D2zNuE{HU4@BF- z5KC|N6?Ra)HL%)iW21AlJXtj7;PC8n!5rlgJwY2dtC8=@34jOgrGP6w^rYJ4=;d2< z-OuH6**~ivDw1=Pk}UUbeZ#|u(hes}N_zq?a$?*SUpa(N-$;uf)Z-Emo;?(^Fs zztxQj&=7{I#@U5J-;Bj&johl&mzcdA1Z75yrS_*KdhHUlxIA6-v?!*UiqTbo9WL?dC$)q=J!>-`g1Q} z!?I@>+rhaBaA4{%2d}ct3TFRuym?J*LKr1Q2kyNqCl2Pi*(>PBrw?2*s)n=Z{xr?;16!F2er8XyUc!43MSSh7s@#+6maJ$yOIBHI`OK2ZQ zNa+5LnvJZe3J>>SUtBABENpw_0w4!E>6v_p}{6Uutjk$^mD{*Hd(o|j5<@)jmM@{ z1$d>t{F?mKC}9ib&*4z!3H>^(VQ^k$*IG{?`CINRxh}L=m*S}`aiC&+#}_< z%M0=Y&E)(VJ#paG@-7B-oS)ec(`?fGTNC@j!1wxoO=KK6ErJZx>h)Z9K0o#yE*XeRV|SeJ%^r6ouqxM68Wi5|>56^G30CX!&Y9 z+w>itfm!vXVn^z|!8Q;A?I8Ak{Wd^xc^nXyAg^0n!{^Tau|bSe*J~de(#WDN3(|($GSr7B@AVcI;%`y-MDQ@bOO% zJY$%A-e1FY;{|hO&P3P}Sdrkc zzKz%`p%Tpocne0c%x=Py26g66OIzF08riDt8qP|{VkE6XFrZ_5$qY9uz08Fj)EHRI z_JJhNQquxo``{!6=e=%{%F>=Os~+q@)t^yOQ`m? zz`&_{Wu@_Q9_#A&)$6-s4cFAS_(BqJpUlXcs|chY@O&*GIeFx9UDVjc1r{PY^m*Wn z0z1{4O6W)e;3S(9dBJq zM%wo_?uJTgB$S&^TgH`idKx?@x|EO<_uK8av9`Oc|8hbEHmLfh9lZx3ry+wKaBQkN z%s$R+#Yy?ts2PtKU7LTDyn=DOb!PX?!ByLwWLxFqaXq`vSC;$8CyMWv!GPA+*A{VV zO{hN4cI9qr1eaHv?;|moJN0dKtU(!Gs*SYJ<%|4c_2;DZTh@Y%I`B6u(XHLR1mp`l zT_4GoNTbrgw@jHH{wQ#Fu@3O6XHS?vn=EQ?ri7D|0TlnvHstO`^G5t?M??Pyyp^>z zdX>@BT^^ll@|71bI;W$-yYSn3HS~5!H4P8Nbzo1RoKIYkb#H^iun=6d{0-@@hB&oE zG}WrP4DB9Ck`pJ=d|UB0LWXh^GROo$hiL=nl*4u_MFyY2-JZZ#cMx}9$CL`PzZ3TyhwNV&_(~wP5kDJOgaeHsc*?vuGe@ze zkEp`!dQWsl<%;93VytkbsgF3F>nJMXR4oaMq6sI-3Ud?gi>edH(Yh841dKF`Y1jt9 zjuSZno5YLMrD#QB2RQM( zDA|=^(nkp{1VHtQjikU<{DIZ6a?iMcI5m4H{%=C2^|D7fo!&hp2Pqs5J^K@zFy0)vrN6Jt_cLIDzH-tzV z?D4rbnzK}UV+p%!m{)YUz-(msIr42ajnC}MNj4jS=DQ5H55_b*kb8n>q~Y7Ty#>F| zOd9M@(wCCl7N#yimVlDikhJJRUWbKaEZcy~s2r_aeWT1$l!Q8y47GL4{9aCDMoNC; OGA>8l9iKP^r~eZhjwXcw literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-off.png new file mode 100644 index 0000000000000000000000000000000000000000..22f0fdf1966d8fea7c6281ef03474774dba134b8 GIT binary patch literal 1419 zcmV;61$6p}P)vZ6?)QFnZr&!i+jpl(n-~H996foAa=Bcl#0v`xH1=kcr1_NqAjg3$q2I71 ze?XfYbpdFTLkWQRlSo4Pz7&5j`)!t_Aj!@A^$=*;+oGPsl91#N?mv1U=88k_hSgS* zUxfg?076JXl0VD=UB^#RVR@CBwrq(t!0O5hwQp^T+(dJ8v$Oru(vsTVymljU(^CAY zCc*tDcF@e*#ft4fUJE4QFB1TYCIRAj=3QlS0LsJSHe}78ng_rI_XjiaEKo{wKut$Kb`BU`({J0pZ^4Wf~1|g7yKh-4I z*w{!LMb`YO=YaY7c{+2v%X)5l?hCc;*{8O(LR|j(Jit7#(If=MG4Ji4HGf2ad$(^TA{~7AINS&Mfuo0o%-{AprzC%{xVYG$pXj-iFJhjI`7+k%eih!U`E~w!k18i$%wKj^a#7uRHuyv> zbHkdLlx%N560X@{%*Rg$8_0vK`Rk8C{fntS9!bA8NPsa4%WIjv^a~6eE-#SauX_OR znChnuHKxZ4r1-rau)Cp1yQ^4WaAAFMqDX~={j=a#0@z}YXJp8vT?sEj@9T?2Nq(mX z;L!n~+CqO5@rQje*7uk%<7LGk_+k$VqRy6UO?Cl4KmDPZrKknXSi~_&eyax{_5dh| zL3H?DXR%FC*a{f4+FXz&f8dKfSCtjBEgNhvI+#{4V-b+#FY^Gzi*H>G)6pa^G;l(y zlnb)v51`tMiBF}Zvwjv0KYpH2`&>^4c#iD?E(~*a2KvH^_#AFMsE#T3UgLtr^CgQ( z@<%-2)P-}_b$fPIsLx88R^ns)&XMY4wBa@T;TJEhHz2{U1Xy2&DweIALqQCT0YT1n zb@L+hWBfA{eP9timU(UdKPQnif5Zdy2B!L4cEWdFQ`gt_dB3aF)@FrDg%Jt_(Pu=;VAxlw;( zuod+8cbJQ(r;_{u$a{NxX=G$Xoit-lAB>@wp7=Zp66S^C9LBI^WN;1)421hq{AIrd z%-B17<-CeNR8)AYS5~+T#pGOlMbbih?7N=JHe}5o3cxO*tB*LsAY4zg)%8FOQYOX) zVaxr@SY#`7c6LU_k>ZbdfT_L@?0O)>2SnJqil5bZfds!20I^_GzY?G}Tolh-U!t;E zf#YAAKlFe&>N7dVB@^&*SAE{+1ycM+C_ z-oou{Fx#19*{mSRAF%qo($aG|AHGRh&6aNs;W{Mv Z{{f5vqoba#O^N^j002ovPDHLkV1g81u8aTx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-panel-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-panel-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..d955bc3ce2726cf75abd531e6b5bafd8d070eccb GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|S$R zr;B4q#hka(HhLWn5NZ40lM<9hmv2HtAL;&*WDwoHH=?*e=)t{?(n|2G6E>( za&cvcg2gq*649@mQ|ybpWd;H;tMsvNw$v@keB>sK< z__F=^vgZayX0P^q|NHgq|Gkxa*pC-a3o-$&Hq0 ze!4!He(giN%GCQo47_3M&eePtdgt^;xJ|h4?NaVbC-QGIn#5~Pl|CdXcD3tgZ&Q7K zMUKA8-1j05#W!=rjwWra%gw40^4CA_`!Gmg{-hh~w|86ryZpLs%O~q!Jk#{GXC5m0 zcl_)BGk?~^_lO)UkSpdnzQ}#jiGC4<1Kxie6WYhL^M?MgOkHMXm`e@%@S lf8bkD&o2Ce`|qj$tVyk(?G_mR1*RPa22WQ%mvv4FO#s4VAE5vM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-panel.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..aa50a1978db9ae750907e881335fd6d95e319cac GIT binary patch literal 631 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|S$$ zr;B4q#hkaZY&{M;NVMHw)T~faP*8mBXy}Vq34sC&Sy&xITm)PWo;>PmuI{>8Ly3!Z zp-{I{)TWNz-HX?8xw6!2Sa|K>R@-Kp74&}6!{76sPWtlr-s{ORK}ESNg%J!LhnXB? z#26lJU=V0$ZLrW`IFiVyz{kx{IE8D5gxvP#YwzUVs4kdM^=T@XMqJd4nREVa&Z|vl zwpyVce_Es>=3ddQYdS0m9(;Tmm$P2DFYIK7g_>z3t zQd=rF?w{7WU6wTwWcgGt&cbrnm@AXd?`OvDVz6ia@P+M*|Ns8?@2X#2M)$)TbZm6y z+?p2Iz;(%ut$F6Z1Mw=SYUVM$YugiY$9qZc0iHcaL_}^r|Jyln#n~?F`@$c7eQDac z%q)6eaQ*&StZv(<@;Q9dWKWDJ-XR>h^~ltCQ`R|GMFJU2988N6nHJ^GocL>@THl}i z?+oRdFTXjyWw=xK+08N_Hsoh0(-WadyQeH+-u`~6>;LnQPvn2mp71s+?5xzjH_kR~ zZ%*wCp1Ysl;8e~1;|pSvgwFe}c=TFw4o^vWztMg#hgF+jfBv+ik#Cxqb)C)c!l%_t veQT1R)<>>gTe~DWM4fh6NM3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-sidepanel.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-sidepanel.png new file mode 100644 index 0000000000000000000000000000000000000000..802fedbec3e1f993a0d659e165f537a3345b7056 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vo2 zPZ!6KiaBqm8G0XfkZ6lPxN*U|uI9ID97=O_x@Pa-$h+kFt3Ky{!;X&G0Rk@-rg+Wm z`XTQUp81#cl=RLb-^t#Wo=tlATW-RWzMAiH{`+o3w-$sjv@B*)kP&5gxPpPhoz=lY zi{Vfpqd*^51DR4moEfokfA{sYN&NQ-(%rRjTi@a;X7lgcwNEh4|JlhTVfRyx{o(Q7 z?Kke+E3*6l^<(G3-`Wv}Z>6gKIOqSDvt-@v3h6$f`H$JG&zkKj=RYAF|I?4rs(@WeVYDH(q!6CwKHrL=XZXP{@{4;=R~HST5+`tcXpq+#p?Pj z{T;)$nTEOS$7^R-PA>m9r$Oa+;Qd)QXK35xii^zMe<9F9>%{lj->2FuACR#;@8`F? z*#EEGx3aS4)wb`I*0p8t-nF3T&rZGv6DR+V&72Zm{BPUy*dteOeAeqaH=k>PWL)Jd zBkr4zKkVt=A!Xe6s%g`wySyBz}xhvnlxtK*J^mHUqAh--ELm4sYx9*@3|JVc3217cU<`ML~wx-Zy@WXpS?_rG_>9Z zD_@Z~$h&Lq3#a*C6IRr0T<=(J60_s-!k4pwW;~N~zV@28P@&b>#z}~0;`>;}l6%kg pUgKSMSyDFWRl!fM-0n+1>ub})znF?9Jp#rzgQu&X%Q~loCIBtO>_Gqk literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-top.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-top.png new file mode 100644 index 0000000000000000000000000000000000000000..468f253660bb0aa5d46fdeec188dbd0bd7106a38 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TR? zr;B4q#hkZO47m}P!sW3e8U^p?6VS+NFf;*E#A4`J_CxfLB1IZE(sua$DHtJe*D>6{T zV^T^>!;f?2VhM+Q11{^B?E5^ICFS*&EjKOW^&O)Gl;ZOn-Yznf_J4HEcC+vz)`g$0 zGR#&@Ho2Qtapzsw^jUZL??nk1#q(xFZ}|JY?&DXnmUH3E|9G{3uYb;c`RJLKNyW?Z zx!X>JGtXk1`uFh5j;l2{UltXY?Y~)?bui#(mc!lS@9Wp=$KGpF{QOe-16%9Q*~*`m S#ZLr=AcLo?pUXO@geCwTSdHcY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-vend.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/fridge_food-vend.png new file mode 100644 index 0000000000000000000000000000000000000000..fa21a3a11a40372f6ecd2d1c787b2901091c7b4f GIT binary patch literal 2051 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/meta.json new file mode 100644 index 0000000000..5cb6003982 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/meta.json @@ -0,0 +1,189 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "screen_small", + "directions": 4, + "delays": [ + [ + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fridge_food-top", + "directions": 4 + }, + { + "name": "fridge_food-top-broken", + "directions": 4 + }, + { + "name": "fridge_food-sidepanel", + "directions": 4 + }, + { + "name": "fridge_food-panel-broken", + "directions": 4 + }, + { + "name": "fridge_food", + "directions": 4 + }, + { + "name": "fridge_food-vend", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.8 + ], + [ + 0.1, + 0.1, + 0.8 + ], + [ + 0.1, + 0.1, + 0.8 + ], + [ + 0.1, + 0.1, + 0.8 + ] + ] + }, + { + "name": "fridge_food-deny", + "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 + ] + ] + }, + { + "name": "fridge_food-off", + "directions": 4 + }, + { + "name": "fridge_food-broken", + "directions": 4 + }, + { + "name": "fridge_food-panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/screen_small.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgefood.rsi/screen_small.png new file mode 100644 index 0000000000000000000000000000000000000000..8f7e3ae28828c4b8a25a751594d928547ee53560 GIT binary patch literal 1766 zcmeH|YfPF~9ET616KpEjesEe9v9jB34f(@~S!xwXwS=&G@kbXp-=6pLIo z7ipuD&c;hBD`uo)TM=9t)#wy5r)j6c44Fh7H>n~b*o~X;`o8bzJ}#M`{J7+I@;}K* zPEMZRlbqYd7ie+&U)>J?h$}po{{aA)=oXWVkBJVtWw1CpVp-=(8vr2u@?v4Sj}wjn z5YtzffA$hb;xVUm9ibi0v$HSPRVN-A`VfyVy!9zDxuPo`dnG0LD2Msz>U%339rf;X>+&G z+Gi1WK-I(R(;$(iVl%oL$>r@hymos^GyKr0M2A2v5jn7Bg@aOOFHuV@M_sOKOH1u1 zJ!m})X~i;+O3;j~f&+AcKj0k#_h6Od(K8{BBfs0rsz> zC_i>iIJ2MEoFPRjms++rkTG;Z5PhxC(-I`9HyDOvWlpt9wMzFbiqoqM!way5fFnPJ zLw>er>JiRh7N{Dj>xf3eraIn_a#6?OzG9<;CjNJEICDK9M-eD$p*{_ z?a${X1#g=c#nBQW>Fa@E!h5F)s0p^xhx8IFVx2}P2|}*VH76fNjb&pfAHT2iC9nq( zy&E*IoHzhlfy^ygs?qOM+O2LyR&}$o* zZpUtGodlc2HG6To^-4~kezYDqPeYh9ziL8OI|Wls&d0G3+5miS6-%Au6WjRvMkJeL zT?e)Vve?hNmr?gZ)Pm5OT1z5H#<>s^RoO&&@yEa(q_G49eXdthoideMrC#i%`COE5 z6xxZl6+{XnS!uxC67jI6zx2%y`xY6q-%GRmS!Oh#nf(JLJyyTY=!hNbhL}%kbu+i+ zvd)`toRk~&Z$e-cMasFn#LPthIF|F)T`Z>)+IoQH_(xBW{(5a7>OiKjsyr(R`Mnd@ z1ejGh@GT8vBnXl`570rUk*|a&ii2i&-)T*r3CQ)VYh+6Bqai@MRjSC-QO=E7X+dozzsk#EZ zt)BqnZP#-p%axdK4Ga-|&q~>oX8*tBzX$}0GP&UEc>+}v{kTA3!G(O~+ZCVv4K$j1 AqW}N^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b5de48af7270e62324495314a53d3c8a5c509f GIT binary patch literal 2106 zcmV-A2*vk_P)`6pHRCt`lTV04%RTN$hCr5&QMIsFyA7(Ob@}&`cFk}XQB9drQ zL<$P+!IZKG(SGb9trQ6?ntaf~2TMd75hXQ6kwk)-r_|svnC#!9NSy z=ExIGO{t8|EgQWcov+h%9@E#XT%I98-qgmHO!|qF-;9aP?+gF|zm!U;OjKxnaiRa- zw!PDlQIO6<-QK=FSu}5PMh<2De!eFq^VET3GOz8Wf!O?sE&ScdGyZ+ha+Sj6ip+zs z&MiG&87Kx~q+40YV>)Eu8|jBm>~{*s=1+8CO{`spR%80|bsM}DHIbErv~{cAbMO0( zAJ63LR*c1;@&E{=weUnGU4iK$3%vj;MP;aHSzbEsD2vKk#Nc-Zfcvl#gl*~gNS4f> zpX!+Kj*3WU$Afwc+J=;bTWUE}5(;Z_8}l*w6Ky$GVqtVV)_Q!mEu%pfCBQ*9207(w z?pXW@U+gdu8a9g3nWy7A1pTA5g0c7$RM0H}_apLRH81^6>%`&%c(<+vy@JRDQ z>Fn@g@+VpmDr3jfyM;X2G5IqSq4Lnu<2sVw-rk^~%l+4+{;!*t9+Fbr`r~753u!?ZP5}V%{KwE$H+VvT7S{wlR z7h5-{dTt8SBy>Nb{`q~X2%tR?TqZ4!y*QMW*Ec}Q-p=%^A!wPTDu|;>iuK#C$I>Io};Hu z%W(K`{o33-kdugtFiq!a#OBXc={r+v8o9l9#P`AcNhr$^AiHs1AyzZV<8fRie zsPoA~wbR|v;!hdiYR?(DT6zCq^H$l}b;#%SSB55(2|>@|icqwWiNT+6UaW!PXm{s6 z5i=24(Y{D_R-P_jfi02O)91B#Y<}kf+!KJ+k9~hOGZy!szapF1VbNT5q3{r&(PR0 zX|51r@Mk)~&^%ka8Df-WY|QFY7ySd2s}2ljgj(}^0}NTeJbs3@qacWcd9kODp$N!& zwsmgdGB_6hh!;b7&_~lnsKyIw$saU;w!XfEpnLATvwdAwyCGZQ)B(vT5tBb-0Ox)p ze$|Do=i65r+_CLt-4jX-DiHkfwdQvQVEmx~EQR?vm!;Tx zp4!;piBN{OEdY>l0kUT0{?zHK-nNF!%W_S}=m0NC#pJK556~{imY_wU04^Qe?Wyo+ z^C#B&K=+Y@nQ_=2qw704IMUWrQ(G3YAQNr~4&4g6d<_1K2Qc>RM1ulBX0NUQxOK&A zC$<$Ri?LXQTJtA)v1g&J9J=KJuvKh}Xar(0Du2oY;3fdwFSL~mm#ZeuD1$QTiXp_{ zPhd5@AJ2lAW`4bWTS^!#3k8bq;pi(a1n1&*TxN^KCS!I|DHGtYEqhua}aXEkWo>NqM2Np)woGDoPH$_ZO2tcs~GfL-*4i6_=bK=dEmX zNW6^5a$K~q6(EbTShU`c!5_RLqph!%7ZTmc^Jn}T45QZUkNTFq@=8VZ7oC;g(154XqmLGb$<>IB1C&|OI zWvgUw*H`|#+N*E1{aeoJn>K$Y@4o$NsvOey?CD6g zitdrwks%G-KumsrKR{btufgGdQzkdbPd#M;Xa#)3qDUhVTSPxmckki-E@o{jXwI1Y zJ_Pi6S!kjGt7_$lrzW10>9aR__XIIq5YTR@FF@wq5R1W|*x2CitG2$q)5~uVlxEh8 zT-YS?khs659~)dcV%GhsR~pLOi)Ot0u-^82GPZG8*6lWqyPC0vqEkik9KN*J<`P8Y^Ix3KLTJtn{J z1N59b1oo(OEs(&vJHG7j#7x(UY8SSxpb?ATpAOUdup~PVJ&XXlQ$Zfxi(@na8B|oe zG3ta`Att}SBSZ^@h&8Dt($Au@{0_B3O#Xz{=N=k*%b^2=;h+2g)zslag?9mB@+W%M k#rJBT)z-1SeoX%V0kjyQ`-sUg4FCWD07*qoM6N<$g2Lw`pa1{> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-deny.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-deny.png new file mode 100644 index 0000000000000000000000000000000000000000..ee13f27c570174540ae80fdfeac0b249220d5499 GIT binary patch literal 3242 zcmZu!c{H2b`j)DuhDv+1oMQ^DilX%BxM+PXRdb^_)EFI9si973v?6hFs4?cLG|?%F zN*juzIBKZ5hL+OEX+=I?#bR^{ z-Q~CTknXIcF^%-y`*X}nx{>?c6|Y+z+LmZdNp!xHI$nMCZ|#8H%G&!6c|CoSE~V?Q zoS3P2u+aWV;AL`V+J!K4lOWxH$w*7f3U68sZ7;NvyLw4c>JPK*cr3)?dNQz!e$9TH ze7lSPx#3+O8@a7!@#eol*z?K^+ru9@afME6+KHqIKy#7_yor_U;3#knpHb_UH}%?3uy8sab|_#u@2ww#D7)@+^#&Fk>lZqkpSkwf^MW-XNGC z=F~0iK1HX$a5#_Q;f)BrD>=~luSEO%XtNw#hI7;NPKGNi!<+j9EEvFU+1H$YyI?@C zx%xcqVFZd3;M|0^kjMW9=}b<1PP3r1Z5s!}BCDp5ha~&ArVMYmc4M6g9>`H#1915{ zjTf$yifk9O+I%;1_Ji&+M#GMhBY&$b6lrRb$*)zA>BB+89gW-?EPTN>BqJ8k1x#1U zTYblhsKjOO;3StOqqOEoxunu1o@IBme=$aaVs}!K^)-}WfB z=B-NROj1*L*)QPYblwnryR*8TpHz}djAHs5d9a@MYz_AM8_=|td(Y>`x1G`VX8R{X zh<8_JY=PvaavNrCmYDVINHDa738>xm-Ux?!sb$NY|DKl%o5o&opqY=y%G(H-^GuZP zKSD2|{8Ka>A|P%ob(BiRH{8tndz|0$3NKn*wNn=fG9CmKZue zUA_Tt!>-S~P-_V3Mvt)5+Ef7Jy>B?zP{cOF5XvsrW7Rm<-5K_`uQspJ53n~CbZS?} z3&OR{$9b!8eVstmqMB=4`n0k`d`GG%lx^^QCwW2T^Ty>zF5qJLfazoa9WNJ6IcK8@x zbVq}@lvrF8vSH1(rxwxl@NZwY<<9&BSCj7wH|8Ir8r@p@SN)@aF8q^~VVaL(b1!e0 zMqbeq6+sqIe6t<=E9836;F*ZKmR^&>@wZbCus#i=fV+xpa@FA)U$xkM19f9bGfEwU z`0SRA4&!KyDsv)~+@Y;=is=I%whbvA8>Ka3#-2M~A>*qoY0WWG3K=u|O( z1J+=u)4PZwMu10F@7)(}JmdI2yvJ)=IH`-Nnd8`Qzyluw#ppk44GwSeQ}tN$h^Y4v zt2Lxg3DuOI-;D*L*r+Hc6IrrhzH2apDrZ_#;QHaRFZZ=Q$>!&`^aC4oCB%gZng_7@ zB{6Xp&GO~HL#O5B-9H?-k(?2{?cGuzwR8Y7M1_a`-i<7 z?Y@2{_SbkiGC47}J?)#o6?FzK`5v3I$tqde+X^l45d|Sp&7?za5?tOL(sqAQANk0~ zJIvS4ps|S6M?K3IoVbS9)+-uSig)Ty)Lrpt^d>0oCT25tK6eo{7kf?tP2d)155b(X9r=_|IGzLEQP9@Up8w{CM9UnhX05ZE4U+uXQb*`f(@LPXK`t28) zYqX`E$GLNeI^Ei}9t}PBBf{IiXcX<%xplcU_uV8p^!HRzOH!C9DQPpWwEjqvk(eOOu`6ku@7}9lXWvzqf1`ugjl#E|z$NS(c3w@9+XTEFYCWk5pCwx26QT1`MUMe> z@HqF5UrXp3;z zx)VbIt~kTI2&W_ z1uqT^d5MxD>?NG#Ph}u8ky~hMgg7|~i1$myCsG>p3W__PAPU(4sDZmy;3ErYOT0M* zqmNVDf1dKTWG|Kr9*h4`GfWsAyg14fAui(+gb~aHCidxiPkelV;^C>u@C<4mqu?RE z;bN7D${O$WSY%46yT$&bD|Rhskv##WvtrX46kD12_}uZ2$lC=%+%+}AtiF}l)pUpd zvwvhB(?R>q>ohlI7o#q*VBJ~96WR|mS@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-off.png new file mode 100644 index 0000000000000000000000000000000000000000..2481ff6769eeccaca254a6360a66c32b3c0adf41 GIT binary patch literal 1540 zcmV+f2K)JmP)5h^y#c20;vng1Giq zy|3qWO;t_zOi#aq^TBNOyslSY^{e+@)l~IHKb=0iN)8;GIMnC5=aaXq<3m;a5&rBN z+fG|YM>99hojSRC_^X3W3O;#Jo&OdV=*ra_q|I*(0CET<-WjPi$wKm?I^bjjX!1w& zlA~t;ddXo7fcUVJ5a5!99rx{JjwP_|s3! zJnTYIc~v@PwiU&TgxD2o&YRLj^T>>Qv2NS`I+N|12-lo*nxQ0j`1fhlfoEf1SNx?sW_8@|ThWKnUw% z-;J#+$sof$9;Fbf<}b|y_;)#wO-Ko8E7#ZJ&lq5ODqkiAj!qnJk}-j6l=D2i2EQ=? zPYtd{Lx7$y>*mq5uQm94dxA@M@AOH*j%HoPo;+!zQqjm0Bk{H zH1S|Vwe9Kt9rR|eUhJa)s^%}81aZ#p+hfP^Q|Q#D43y2EF@SA-EJ{|yeaL+;C&)Uo zgJ|O(JuvdM5nAug{BQVTp7U zTI7PN`6F2Ew`BAwi-c zn=}pk+6mND)ZolEdvSc%2axD=x-rR7-B14lu^#H`43o=ph?(43x zDd&raNqjcuVqYv9u0e-Pfj<)hQo*)9Z#?pMK)&vdYmPryn!n3YV2;r5`KtMi0T6qw ztlvMdo@ScIgk=_v~pLf61u1ViDkTIysMP@uzQ!@>!Z~eIy%pDRwWo*3I2- z(UC3vbZP!M?Tt$S*Aqjp(3dB&R+giHYyKf3-xSs2PeXt`A!L1dJrfg+&p$RL#mn{a zmB*$dkd18mFs;`-3VcSFUC(RrXO6~P*06mjvnGSIEfloz_Y`ggpwd zyz6L8gFihQb7fxc1kbG!$h@rpSLJ%4jI7C@hJbB-USz<6_@EQqAs{p@NyvJw=4B23 z^#28X)@R7;b`V;fY4WGD0KnE~Ylo1hj;o$)6g2rGwmzTDk01UfohI^>`~XFCz=hLZ qo|iTGBe}iA*G0>sI(F9AGY3}O`Mvx5aa(aqecq>ri~(}O3=ryp zRY6&nRY#ruKAYte3U>U6Q%^|CK7ot{so*f z3qJ1kJK$E$q>i237$$}4aS?}CE!~VQgZ;9FYqu;F<=T1#s@Re&NNJ8h?yWpul z;cxgJJhJ9qk+O;LYJw^I#Db4=S!=GwRWLeg#MG>}PWV(JzqCp@W1F6fo)h1`%?&|? zwh_9|F0M0I5Y*fESGeU<1?LUD_fAGKHR+5&;_~JomnAbTuu%h1Znhow_WUS|jeYLf z_5V5N0(1RDrt7W(cb>oX6{^u@)HuJNsU~Z}u{QS$tFwj8>z6d-Zzw*>lU(iRDL?M7R-3hKU02r?Oc`r?F?Ba^JGer zB3Wdef8DzkEphYAga_YQ1pe$O>o|SQwCvREH+SW3T?l-ulk%j|sBY_~r9WQQ{Rrjg z-+Wf~tnZqCt{$JN)f=RG3cvr%`1hf?Y{$cc=|O)=zA$j6O;A6%eg7duq(I{aPW@#0 Y{W5gftX-<^z~sW<>FVdQ&MBb@0O)lBT>t<8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-sidepanel-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-sidepanel-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..5b773eef69a90eff9be66001d52f3e7b35fea503 GIT binary patch literal 590 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|OI- zr;B4q#hka(9lZ_*2(;BNe4ZhAMS4d`vfys9{0E!ZUpU2dcFP?|%~yyGUvhWH8{Uu! z-;_4i7o2)x+UZ&2D{d^$u~2_z{STw}g4PCo+zo{>3_XvT5@f^~9`9g~IL>;&LXY8C zAtRYmeyWV&e{ZL3{kI}?$93DoxBool5WJCI_mnf?;OW_pORL2%OD1hz|Hq#7!oMFs zHTTxd-T$7Y)i?IL{-ym>6es=nJGk$&H><%M#>#_FwpS?m8dR9|$CQ~oC z)xC8NXy3deZnB%?pRI9A7am{!oKs22dVfH}4SlZZ_dk7msy2o9!IInFOTzAIW@zvK z#**>bYR=h{aZgKslqCsT+lM>cJDe21U-D<~!A<{nh^;fP{GI#sIoAWZM-nfC!{klw zWXDYYo$`L;#199uoM!*DX3Ch+y0oIhE|oQN%ELD32H)Za>Xmha(;hTH^B7gVIHAl1l pH%yr)2LAv6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-sidepanel.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-sidepanel.png new file mode 100644 index 0000000000000000000000000000000000000000..900359268b83e32b226ede3d5225f63b24e527de GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|VnC zPZ!6KiaBqm82TM{5OHDeELL%1%5(5^Zdu@Vr@@Hbqj80RE1$zjUI9~%*0xE~3_@Od zNk261A5qy>K6z{G85_;6g>J$<=ja=e_}#97NeWwXxs`|<7B_g^nR zG0g~)?^oR98-1aqZYcw|`Rj!T`}*ha-?&wE%f$808{RbDzCWcj`a)P;39}zty9BTP zbUqd9ik$aHuWfz(XDZXGH~MYAGqd-<-JF&9PexET!`OZoW8TesE&2!6y^WLR^_aU~ zMWN(<<%0O@g14HseO@e`U|M{+`(SFdvFXas+)QWo)kbeUrKWW|yYyjP_-T!7NAaJm zjPdgMH*Q*=_#d#fV?y=+!?ufi^gb0c?%rFM_R#F&-5*u|+*J-b>$`>9rGK-WEf#el vv`+89;o5|#fA{)QZz$D?1xQ>B{bznSSAW9}bP0l+XkKT#U$M literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-top-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-top-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..995b9d073099f3e1f8d6580dc63b05e67f396e61 GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vn{ zPZ!6KiaBqmZuDYy6meZY;e7y0?=7xrW^9YMcGyqwx^!ddgpj0(=iJtOVozG@k)y-B zElb3uUgeqIp41rglYT~!<1yE1v0`6PiHV_ z9A|N`RAV4Z>cDq?{rvZb*JhcPzbiF3@a@?#AtfQJ`_T-C*XQlBSn>ARxua?&`=&Si zz4dXz@#VXJKe2kRT5&%4y_uKjkrVS*vX`vWznC@e`9259mNWV~4Qb!|_$JqWyHL$` zzVghWkAeqRD}?PUXEg}%DiCZrr?1lREwYTq-a2>5Qg!{qmP))@JM-FBH_iBI{FOm- zuWP8&i9aiuQr>$igdgA)|IKuKr_;hJ$2Wfti7NEA`+EHN_2PfF%i~#>_Z&GjU&G$rIF!=otD&~=^KmYL-$^$NXSJQS zcsQq}xaaB3w_h%1Y&DEx{1FsZw~k@^#~nL-J=QHX>D(=K^ZC!5W~0yAmFC_%c3UX*CpQqFwGdXqczp{e#xnqX}%wu+KXxZ`bo%e=69X83im8m~|ezx7n dB{uOtw=)0Yq7M?s4g=E!gQu&X%Q~loCIH6c0HFW? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-top.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci-top.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbd5dfc1a185b3a4e2038109e81fbbb413834ed GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R4& zr;B4q#hka(HhMWbinzFcaM$U%#Wl^0?PAoQ=8#Fp^jaf2U9F@yo|5m_sbmQh1*KaqS0BXPOu&cUd^>O_T9Opi8Uwzf|;?Eo22fv<9yRhhUYUinV4TYP_ zua>YEdv(MoT-g8Pv)CG?{X3Y8yfh}=`q|4g>F>o4T+*|vBiQV2OUHal|0uRbYkvl_ zmzPFU$Df@{b@%qVXe~6Wn=Wua@D}UpGw1IyL_O`k9c6L$+Q01*Q~$GiNlI+fU{H7i Pj35S2S3j3^P6XoEem z!xwPFRvr(2yLmdno&hT@4BLeKZc_kirN1?1=EBPh;oklt`R7!o)We3Y-fNtj@=c!1 zRtda&-OK;%_cvRDclRbR_-2d9dd!>|W-5QJD4e>&BX}1@4w_()ESC}^R$qQ(aVpXX zcbyv1;O~2`WU<9Q@@Xhqx$Ph!{?0pb)1b>oU30mgzizeaGhSh_&-QBQTw#sO_RjTv zK#22J*wunSnt&5bdp_t$FX)1v=k3byM4c+Vr16Zkz3euL_`(^1vXqp6{2@S;qau8O~Lschwezn2nkR zfkwHlF>zSIge75ZLmFznmgQvKh#cm=`na6Dag+BGlFf0IQ(ROL`u;}BobYm^CMs6> ze!55E#sbg19}=a+uAJq##0G~NLYG9v_Dm*%F=eZOv)^;a88|CX5BmDv=v+~BFrrWu zoS8Qw=yk#6#^bu0d6RM{<+c#Qvk)LcNx_zjTb?lFu%A0Iwv>%$JC}mgD7xudE)GqB zK1&Q;tP}rSq2NQvR}ZfW0|9#>m1+Hy#n~AB0SV#w?Y-UMo1U}gZ;a||1lT`5VO9Y(l$n>OX#geq-TvuF_@#nS zn2NZDGCO+k)t+hD=<8>KBbF|A-k;OhpC8{8T2EDG|M&up20j`;@ibYuE;;h6gF3*L zFHh_y5fKSg1rde#hDgeWi}kr z6TK~)5Hcq(Mkl51M4Fms_&P>BtQ@*(5fxCE`8+kmMo4o;Cb^rG$s7^vOOWS}KTYmK zyBo>}lINXmz-J-i!J)NB>4mgBn(GP;l76-{I8muO+C9#^9a73{q{uF#ICQNw*@e92+YYm>0 zX7(C4EwL}WG_HqBzTwqX7*T74?4L{~QuTVzrdrL6ciM?V9NJki?2*TK;zu0oecm#( z_;884jw!Z|X?LhCiV_N>h&>WMRZ;8p$!zZZSJo;ttGY$URgN(r){b8vvLV|M%SAMaUbs{yINS;>=ZiPiPv@y53 zDFLVrufjl)>?tDIUfDTbqRbQfQx#F?Hzr59%nyVqwhIZYL^2oee}coA_~>pzx-eZD z{l!fu+eOnETj4Ol_248Zl^8O>duX-ESfv~_qxklq-%hFRj(o(gF{X4nYBvi+_tT`_ zix(B7FiOX^a*e-#MFZ{ti$5(ypROybbq0*LqSA=S6Nb3-5 zEO^&t`kGa*Zv$#TDg_HE&YX=|*m@!C`*!p~i{TyFdcXDZK#`tYZGs-MW=zbEb~OBa zR!)@$m*R7=dX;7dP=!j?%32V^lxyh+$e7wegBBI@J0{lxWRQg)v{Euc?!ng;Fg+Sh zQuwOevLf@!%@=~xKoT-D|EU3bLCf8H?t|^u=QAh6Pk&FoYw<^Im&-2H=%#-IDor9= zPXBXET{i&hfE`qlh^xb%b8DulVxG{q<288S0%Qv2(^v4zE(WMMRg_dgSqrn)xksDdA@8STVw!f@cQ zF}Bk^6MW4b%v`2nbXHRRwVXFk?MzLj#}Bn3ksLww9qk1#j-n|@u!bS^#=gxwA=4g0zHoPWUAxdCWRfPx_?JQ%Z@ zgAU0cNRuGez?m5tjogU&)t$BZ`H0uYP_bj`9Kni)o#c$c4S>jlT%`R?<^OJOYdc%F WsyLzFngRZk0B5XhEo;zTasL7L+hWH6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/fridge_sci.png new file mode 100644 index 0000000000000000000000000000000000000000..79d5e92ec076fd1ae906ccf8d0fff2526c184a7c GIT binary patch literal 1577 zcmV+^2G;qBP)M&uK$K!@ zapA(yiqwdWb`kZNg=iuLYl9fNX^9ILQri;j#v1BIgT+`VRnWu~+b;4C2nA6Z=ev_L zIdkXU`)1yoH)qj&@N(}vbI*Kt&OPVc`|h1YA5R@$AqU&sj?arncPkpug33O;#Ro!=K1>D>7rNSogn0OSxz+`FZblZE7Eb->96(BzNk z7RR~)=oW`D0OG?=LV!yal9$nuF{#NPeShX#Q{jXpF?sBS^JYGISsmuq7duU^yRk7P%*pvi9xfRz%^``j*iqW`{@ zN*5Nc(DKx`^sCib*o$d(xoeO@{6NsTQ0TvjRA0@kX!k{I!Q;0jUu;| zI-2|)%>w(6U8Lq9si6w~oB`loMREMVBk|vA9f0o_2|{Oi93Y(beAbO8&FPEa?0r5=ElmL}TauOtUxMYeBrtZ>^9>gKP+1F)v% zY|QI=SDS936aGqa07&_VN$5c_N*IAqo4WZc%K^CYuUD_q^V?oD1gHZKZQg7;_|5Fs z=32MVE`KFC0EDnE_TAXJk_<9j<53EsZvM(VfPa?**@TpkwsL(f{)_<*?sO**7e>#{ z^Oc3o!V4^s`)bp zu&s|p$(*@}hhAiSCii1C>D?{Kf#T*yAN> zbMR(t$u)&CNl5C3Vo{Ud>j9WL>}}_El29@Vai#wdl|fznkuUZDSPd%pYwpVV`umJyi69BNDMvGG8fd%AHiyW{CitQD6RkA$Q!x2I24O= z6rejX`FU;>0F3yKf#ka;f5rn`u?H|A$mI(O5^J(C(+S^wLb*VL-x$Cbdu)BSyd<~Z z@L*Z888Nn+h#KBekei>H{HX^lJ9b#4^?7NTyj3>teDN@e&$YSO7t4mribXB{ObD=o z%lf?W$ln3^x;yF|f3P%vm!oi!!mq<<@EZdlE?QZC!^S&kdh#>#0l1WPF44BtD1h_v zsqwU~#qV4Q+19^yeUV<;{WASD|1&+=cq~)$wXaTpnJev4D2h7yqrKa=rza*p>jMuq z8s@`wF5iFWpy>!;m!VOB4BUVwf5e$n&XF$b|2FU6xP0~XVRIcF;u1jTeh3fuE*MhV`ixewsLdbo{E4$Otg&tD-?OPNcT>ngeCn=^MEERyM06+7?9z9% z=f8jA_)A936^j6$)5&>Ui$8r+l+V&^>m%8)OR;;wwSIZ_ZaUPzfle>nq}_1|pg!Dt zJH7Tn*2;1eP{+r9Q&fvT4FUFqko9GKIwl%gxM52An`mhHhUo}oTQ)tKw#$zKpV4L4 z^IH6wqcNBDZTDkLOg})_XPBVGB|&=m92ptD(`t!_utx!wcO8vs@TW&(uFT7w;JH-- znYR_-s@yJ=ku~|#5U{P!iwsy0A9R8{1cas~3E8gIysW{W{=b0F`V3ib2d<1PX8|q# zbQS>E`fTkGinMXHbB%%~f5g`3v-zQsH`8gNNXZXSMh9Ft?d5q{lRuK%OI$BomesMd bz9#?wAPw6qF$5Yb00000NkvXXu0mjfdNdop literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/meta.json new file mode 100644 index 0000000000..0cb0e891e8 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/meta.json @@ -0,0 +1,193 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "screen_big", + "directions": 4, + "delays": [ + [ + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fridge_sci-top", + "directions": 4 + }, + { + "name": "fridge_sci-top-broken", + "directions": 4 + }, + { + "name": "fridge_sci-sidepanel", + "directions": 4 + }, + { + "name": "fridge_sci-sidepanel-broken", + "directions": 4 + }, + { + "name": "fridge_sci", + "directions": 4 + }, + { + "name": "fridge_sci-vend", + "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 + ] + ] + }, + { + "name": "fridge_sci-deny", + "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 + ] + ] + }, + { + "name": "fridge_sci-off", + "directions": 4 + }, + { + "name": "fridge_sci-broken", + "directions": 4 + }, + { + "name": "fridge_sci-panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/screen_big.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgesci.rsi/screen_big.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff0928110691020210c99e46da942abea308a6a GIT binary patch literal 1957 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 FV1fvv0+;{* diff --git a/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..447914b8101b6a3b5e9f248d59f9bde787cf1cfe GIT binary patch literal 1568 zcmZWpc{J2}6#tDiI~lx0rfHNVOHr~WW~|4ODN2*YliLnhbwlQ8Kj7;8m?~nJ+d!Ktg_ug~A-+Rve-0wNxbVqwjF=2UO006|St>8}F z=*eZm0RgVxm&c!=-KKpy~5$wB8BTlJbMy!Ak4C|%-bKxVT` zBVT1aJU6NaE;V~8b2UP{bwi|37pAJ2l@!q3jd@#>oY906$0b3wL9?qfFBYN7zqC}F z(|*hlm6&VBYf~Vz&iA^t>H_|4L6rx?PGQ|-+C8M+0I9ZqB@SbyN+p#OGgQ}+IY@iG3A%{rbzq}>}n@`M`GQbw8i<{73en<7N_{- z&-AlRB8&QjX5s~K8~I&Mg1+ai@r34eDQ%({3e}?PBSD-1S(J#5<+%+yAP4A)TRJRoV7xBDWUXpx|${-F&AC+%`ODu*B>M|NCQ}TbmJjA0Fp<->o zf6;Mu<~h8XOg24`tErWFfP%QC%#y@bC6neNGB-&q4wCtklR&&1KgDE@P0^z_v*`S3 ze__DMiEzSb7bfmMIrh!`qg=VjotU`d{1XTqq9>~NfnYTYLXf;5-Gu|p%YY$rulzR!xJjND*UgsZ{8reR808N;j(_fHK`k!vh!7|4 zxUYU}YijSW@F|}Ls_6G>Hc5>2<*(DHfwZTC1nrG(<_1_I+-wFraG}Vp=39R z%Cpi!8pGntIfV-eI`u@nrgtfS<9%5&0MXOihH(k!$cO3ZV=b?w;mG>OTz{YLtJ<6gLw3otX_H-QwsX)vnfEPU#=Xyh%DDz+i#wy7OkUJ#CyUwt*$RCWh0;5-?hsTs*Lz<!2b{L7e+l$OhbcuymNC$ zp^OH8VmuD|Uxb$`Q6Nu3ZV;m=s;g=}U)al`h7Ut+NS6YL`0}Ra;t!dfne@eC>&wt8m&1C2w{#re#UpGktOY#)`+Z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/eject-unshaded.png index d5814969aaedefd6a5fa5751e303dae2735c23e7..329c15295bff9be6701e9bac6e369c86d34a48aa 100644 GIT binary patch literal 1939 zcmV;E2WP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micFC^-Ve@P_~Z1&~QZK~#9!?cGmklt&!K@#l?O zi3!z2N}!=?1GxkXg@VEMVtNTAcxbU{#ghn45Ah;wqli+2+9qirmwISJL$B3>;voyE zXtZJ_g+igh%R(r@6pGl?urb&T(?fihb-SAV^Ult@`+h$V++Ejw=AD_Hck;sTRRRD2 z0000$BzPOW;p^Ycu0lWTlQ+CSf^H!BcJu2Bc~k$%{=@x~$A%=y|1#NIiI_ftfyFuBH{a-_Z{05M3H@~12;PRY~`i)2~EA`erjY-n49g4T^ zJ$+b`l6TL3XX_h4zP)@ao4}yI0p#1ux3UQg@*6Xcbqn>XLQ8aLnXeY5PVVB}lPFZdMjqRmHgS*g)4`UkwL6MzKdR;}k7 zc?+J*j(o32;rIan000000000`g+hOS0N7O(_XmLE3E;dw9_}W9>-u;&-UGONqWb-_nwOmx?wK1NYcCB zhkv=qw|)Fv3FJD!i@C0kM@UWquIl6AcoRr{IsgCw000000000000000YTn-`WulxP z`N20o^%_@$;5whdf7RRpRN8UiEo>_MNpMlQGoB~|uN8WaG^-S&{RI>9co`1t!Z1HR4UASX9 zuJ|?bVHo@sbq^=he9j+)flit2=IR;E3{KX1e&nsFdw5BQP4*zPm_yfF%%SU*7z7*n zYyyku{3mKXzFCVSPtEf+2`V@B3j}K#ge)iz!Yg-|MU)DJ=iuLhftIy9p_m{E4T;||HYG_Vx17> z`uMQb=lhdD000000000000000Kv}pqK!o$TH$a5*xi>)VArD)5#A(e!%tVL`Ju_r+Xz({`EK){X@ndhpZfy<0000e Z)PK@wmdP2n{A&OJ002ovPDHLkV1j-R$u0l@ literal 9387 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 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/meta.json index d45bae2bf9..6467c18580 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/meta.json @@ -1,43 +1,87 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 }, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/dd67e1e4e10bcf632b82b8b14b6a8479d80d5f78#diff-34173d670aca65c110ef18312c32abc4e05c84f33a9402248a32000e45acd0d3", - "states": [ - { - "name": "normal-unshaded", - "delays": [ - [ - 2.5, - 0.1, - 3.4, - 0.1 - ] - ] - }, - { - "name": "broken" - }, - { - "name": "eject-unshaded", - "delays": [ - [ - 0.5, - 0.1, - 1.0, - 0.1, - 0.1 - ] - ] - }, - { - "name": "off" - }, - { - "name": "panel" - } - ] -} + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/normal-unshaded.png index d7ac9ba8c491cf991aa8fd52197ef98bfed91e67..a1578bfc39f67606bc6fbc23418886896fa4af6a 100644 GIT binary patch literal 1299 zcmV+u1?>8XP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micFC^-Ve@P_~Z0}x3>K~#9!?Uz4D8&Mp`zo)^$ z&^D1GG_=})i&!WW47Q7z0tpT+5-Lt2G#%n1T%(Ah!Pq9L;8KTH8oCw-i-Q3xqE=c- zp-`x}9E4I#7qMcv43h9V#CJW@Q1d^{`TH!ncRAkg_xrxz``$Z%AP9mW2;zbwocF-X zZ>%-f$sXSlzSo)nb-6s`8gmV}Lc?AF;J?a$8DmWffHu7uk{ks9NOJUy7^<-*1(4#9 zA<0p+>CI9cG8aRNL-si5M6~J69_O4W#UX3b1DathPVh)9P*t#%mTodc8I2~i2(qRcBbEGwgd7t!BTd> zN7nuh0PYEU_iM%kOW6VCDm>?NfGafYN_>*>5dNb=^ub2p@#q+r8;(2amF~J0E{u7u+8W0Pdz%)hiZ;S(e~cAlfJKS$KNO!S0)3kk1VIq_@f&23+bhBn*!utg002ov JPDHLkV1jT_SHJ)O literal 13122 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 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/games.rsi/off.png index d688eea5252c9024a48da47ef1ca23114ef79ff0..39c2bfb50cffe6360c15ef284ed53114c48cec3e 100644 GIT binary patch literal 2031 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 a85yn#X-C9Zhl>K;&fw|l=d#Wzp$P!oLRxqL diff --git a/Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6c5c81bfd9baa2f9054db28d6340e77508ea74 GIT binary patch literal 2121 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/generic.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..540e1af3fcf0bc3698600054df417daec2db039f GIT binary patch literal 1055 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..d594e68a03c6736e5f60ced5e947f5a644dda339 GIT binary patch literal 2335 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e57139103e351f9c44925b633372e1b6b5bade GIT binary patch literal 1302 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/heater.png b/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/heater.png new file mode 100644 index 0000000000000000000000000000000000000000..40ef8ac864c72766e41e14a791685c8f9b5a20e7 GIT binary patch literal 1015 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3HG1+{xJmq&N#aB8wRq_>O=u<5X=vX$A)7 zm7Xq+Ar*7p&Nj>z2^4XgpRj&W*{qh1MG9=9Yqm|8aPE}RghQwN{;yNj1F~-sf)T+gq2WKm69~7xDj#-kZNS-uL!y&(>Cam;QL> z?#qeaKTp5^yY~ODw>K1yZdKgBf!WQ??cc8a`YTP3ZgjLB`F->GyWDr}MkcoV0}lLp zcI;uo+YiTjWij0%KA-(Oc*2Z*EO&O*soGS1+F`Ez z=*QK)&-dP(P-~NC{Q2hb_Qq9hS9Z2Cz4@{2L&?h%H}XE~rrmz@(ZE`-dsUlOktItf zB0OJ4JN#*zF8e<_y3WQY#B|A-rOZb}xL(Y?&oNgy`S%>@^W{&r-_$u_7bh0V8~Q|y zYlFSS`NA7NCrC`wzp^{NEvIgcV)duhT~a#s`^pY~TB~Ypj;+L9xEk_j`dbAJp<$tqI|F`|zo5#n_ zo%8c>l>QXUxW6x#d99j+Sni4E0xE2bNdgLNjC|(DkMoD^zPsc-Ge^M-pSzr^ne{SX ziiaOK{F|RI?fLVR`7WzwG|Fk`$Elq!U=0aua2GWWnERe9;6L*f;Re11%r6?QTwr`u zV|5@g!du%mhA~v+!NPeAp#iV;lU{KKux=H*zy`7hY#Eezu;Fi^a%G$Lf-a_8erv54 z@Cq-u#&oMeJK@cvts8E=WfRRkv7Gscf&&lJksVB8@%tyN^UHI#lSMJ5Q#0yeZ^IFh zwYgq;4cR<@uGXGpU9(|d$Zf{Cnqd*uU?(}u@n`S&{1T+tTg-QghS_OjCCu$Y!L%{_SELcGwM2&zxmS{1cA`OdxEJ;wFiiR2} z6jZQLL1I`E1=$I~ClD!MK$frsf&?Tb3;{zDNJ!=l_SfZ)H}jjh=iWKzo|*67?>lq* zxc8COMjMR)09ftm;eHYT5U_~=K3fSl0a4FF;Ld+8y15r=;99u@cv#)Q*+Q;8M`{Lg*yKCl+AMDw(-R|!7uvf2W%|$8H za+V3}y7dBLY% z*<`*oFnu9IdWT2MGqy8!b~s;%lQ(Vt{zYfY(M{z~n5J0sTRvWlq|M?Nzs6I`eOYB6 zTo#Q}_LB(rrF(ekjW*fVhyHVY$I)%CzsvG{xYl_4AT4f|R!hDeU{rJT?D%O{gN^3} zNSz_KuHqvuGw9@Q6a65I$zTh~h{49ayhU_uUdyUc%1YLJHut1q2*#6L@p9I5clGLk zfT}$NWVI0S-7lXHWCgZjac?HCsT|aWJ9j4;&zHt?_NpS)KmoIOe04;`XYNK>oRRm# zE+9vnSU4a;5^qF3<=M2>!OODp`(sDkfz0J|vC>8YkF1LDI1>#3c3&-Dh^tRAvGAbb z6;H3jh7tplwI)FBanKF`jL4quhfZA`1c$jq;Rnmc_x1+J>&_QiADp;Rf8}wGd$i6l zu5FE5X7^LqO5>k)x!v->T{rpiz&K@A7+d3C=8@de=)VqWHh9}|i&0h*=8XgXBu^C& zygtBtH5qhgJcEr@eFrE0bl^_BTs-D;#@E!8+6;=z>b12yi6|$o-8$+MneCaM3B84! z)9&?YI*q*A5-N;!uO;Wk7LhqxrwSa6f~(uv4N}4fnJUN&3|B&&N=oDaVqxL7Gg+8Z z2`0D|q=(fFY{(zBfHr^xjiM;FNQ)sPvfG@_?F_Cw_bbn1^6TUnwg=PEbtrbq;kj}a z^zpNHtH`PFt-#?Cw62v~ONO_c-OHYVZjBM-ZGxza!o^n?uU7LMFa8yNcWTdVE^T>1G;$kCNa;{bdK~yvztWHcBx%i zQ*A$L5@~g8DbEK^V2_(uC~SM7QL6%Y%DwdCT2XGMDVzh#73qF-E!WByFN!@mLl}E< zgEpmE1(9%Xm3(m>N>os5)Flw0*vLO1{aZU<-23h9qe=Lnt>6NjuW-8c=tAHt65 zcM=RO?^MQ`fVPo(8=}KMI)Yj3#_&P65+s-9(qmFv+|85Wug+kk5_9s~4?bA?a{|P6F<2DFOS!_ES8+5Tw zdB&$hhVm2mtykr=wqRWPLIuPTxo>%9x!U@IE>4W?#xfNe01k`fHW=zOT~hTNm#gLD z(KI}UmYRwuLWxQ8w)HLl57571`+v>($In+i;uJmb3qw8|BfL09vIQi+jUFSJd31^7 z;Wtd!_b_ztBAGrA7<5Af(w&h1eRB0o54*a99rqL-MMbXh?X52=iuYM-Pp!<6V3|Y{ zpdA71kJ3vG7Qt&W-(~2(znKmg6s3B{7kW z4VtZpbJP?fc!*%Orr*FD=zR5LpQU0rIasw>>YtqO-(BP##Xgx)bvMtu!?O}z9DAY5sN?^z@(ApM(A;|rQ8|7;)krtc%;?1M(gf!S3w zDVy5-#G_Z#b63*mwCXdxjCZkm$-9DX@T!e2bX&>w4gQ4g z^HMo>*Mv^qsaE5r){|OrM17bYWX(g$h6|UZ`BLemP?n^3Z%{2!tM{u^Xr<@0`ggkn zA(7^;0HS(CtE^RuE`@?I!Y7fgkhFQ4WAr8#o5o_(qeWXDHIQ3KnaSxd-r6P$1xEw| zekG=P**$uO7-PKq>F;K)evg1(Et3N<2d`Pg9Pn=!$CBn_!ZPjGnc9EVp_a(E6?=iH zSF{NvWek|5O<0l+GI?BPVD@ky1L_B%YRe23bX8*?#t=feLlmDnsfsJ#GP=womiK{> zzclFJNIK{vqI&VasfrcIZaL|Fvpv|3#-W0o@ZjRUtyt2!_6p9F(fMb}vc7bX$9`Ts z=;llh82S^jMx0m<)GFC*yRlJiq|hSBPBXmF4LR5H^(AbsAha43dG4JZ*RDQDfgf&! zBIs251iC+(D@U#%aL}4p8u8dGO%r0!=gp}tkYnzg%+Ak~sfnXm z=I3f?B6L4RWUCiLG7vtOW7SssRCCzl6x(Erz9aamZfJI5=x}5L<^JWRi@XFVtRVa$ zL8P8Orj9cYR%u(B?#(gcP2}5TlwJO2Un?Bn)DTI^5ayKKb#+gni!wps23o^g zC5_Uqv`ZtUlFkMuz6t(w(*PT~eK9Y_Cttuc>5^$z96I@lXF4@{oy9`6Lk29rinwy< z^3Xz=Vw8yad5?|FNP$&7T*!E;KZy3ScUNOdOei$QVSk<9Lj?!PE84J#(N_Yu2QOiCZV4RD$MA(d|>BupV=Bw|euV zcs!R5dy%wh8Z^=sk4L>ZG3jua^W9QyMeA4ZN=@->ego@a8JTvv7XI;t;4muDOZh^OLhQC0TfD%A8va6Ve}4ymMRh}M zYKn>%8GW^8TGa|UFT4?l9#E=B7Kd~XPkkbq$=v6d=`yNiaD|NNOMZt`w-~EEVaiF{}!GmR))LgFI>UM`>c($bZ7RDYyrq<6pz@zmq_#R_`p3B zR6TtW_6i-+(eg`aGL_W4(FjLZqHVWjz}Yppif_ zGZ4|9pR`~eaSRr&8gybgw`iC^nh)1V2Td<(atF6pVY=Tf(h)-?Ug+_ug0?}o((K%@ z+%zl@jx}=Yx`}{|zOAT4j{335T_13B3npX}kQ}I_e3(G&o3vU#xx5OVhrQid-=4kx EKXo9Ia{vGU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/hotfood.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..770bd85da2a46099c1d861c724c001ee1a6610e8 GIT binary patch literal 1720 zcmV;p21ogcP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micG4LbpLSIGbX1hq*-K~#9!?OV@J+ej4th=6N~ zxU2-kxVS*2E>YR22NWcTIF&=Gsy!g(g7}m6wi1Fvq#jn;&;zUxC5^N>wvm#8wC$R* zF;uD|MUY#wJ#-K34CApK{~FtbdBOAwSKDN+y&OTVcDG)=?N(UDLCG);5WHZ1*v zPL`vSlM}RBEdW3~9tQwRd0}C}^=JpZ6n3&_(8&+9S}og-6ImqX3%_F|eht=uCO$p1^|>QW!kP(DI@!Q9T)X;+AjIyoIeLdNr^;4Cs$98k(_!& zc>vTAL}s78e1GK)1X+s5kFa56qUeQ>RBw-jp zhz)hZlPLj!hCJVfcZ??o)a!M8`_`oL(9ozs{_^$>^Te{y&S#&mV>&sDkJZ1Bm2UXy zcN{0!}YVCRoJX`jZ`rhs-Fa|814%0cm`1OV- z7=h2`Q^4!U-%boT9j2nr3IBI~G&y&7-UdzQcuFt-OzuBhMz@l!1N_cqK9%jt2ypsl z#yU&%+$Y%`%bQ)}d0`GXJUqnN*_q{iS(YKovgOF%RxrHvTVkb3S(oP%{-S=4Ql)Hq zjpv0#Kvc9epQibJR$8Z>>-0A0q~pFEu(`QO`K_(3KpikHP0*Je166>L_&sDY8O!I3 z#iCdTu$?DzkWMg5XZdS>Rw`ExkY(A_qb&H{$wa8zJK2c_EY|!$sa{*E47Mcq4$gC)ekbMF2J6>$)`b@CrQ{l)R@YDVK-@CbkcJ|vkAic8M)gx?Y zzby!sU+*D4Iq9ihFRDsJbi1`dRaKN<@A-2;dSw-R#Xnrv>orY7B9ZXD4?xZekl%Cr z?CQ!Y-u?QEzX(7q#*D^D$M*I5W#D1$#s<3xaD@SOik-Fzvh#c!I}C_9iU5Y#dO$aj z&1RY*&~RNJpOrUmt8%YraR`a|G}p#CATY0}=+} zPNet&;h5Xb^Poo!3bQ)Qok(H9*DVka3IU*};g-eC9L?I~28jFn0j>eaB-!Y#9U<XYX>h*r=@=@yU3HlGX>&fA0vyr6$ O0000 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 T)C>a800000NkvXXu0mjfLV^1G literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..44041c324789ee3ee90d8af86d38912f0fd3695c GIT binary patch literal 1453 zcmY*Zdo<~y1ZS;h)bf2YSZb3 zgc@?H(FbjXLaRRxT)U$DY#fZ>~yB*0lK$b8*pcce6L@}_u`{Rvqr5;Q*4fB z){R?8?#%4fn+HW=G{WvH6=Rz%&1&)RJZ=iQ{6tyjOy~Y%p6Oc|oK$8=p0uvCnZ94K z%UY-U_3EMS^YGf|rE-q@?_S21#Hh2Ydx_-QE3}$_%z4s@#<94^90O*0n+8SAGATj( z{D}_RtSk8n(pn$WB3IIy;!-@MUY+;(>}nyZ?8k!bh%@N*|GH#)IqO09d8y3!s?3gy zDxYQYkc7N$$w`tJZJok!7WYSCD(mZ3GcX?%UNz1A1Ep<`wR&Um9Un|Y8jvUWWLxUh%O$PfQ2N7Q<)k)bRjKb*B$Jv zfy_PSz0{Z$RwP61-EIPa?vXtMMNv@%VNpB+gS8Q#6@@Cu!?{+(rvM=G0%L7?DeB|m z*y-?5BL%=|NI+?dPpiWA_PZv-v+-lWY>HCJs?u9m-+KJpIWRsSIdIrAdj(XLZ2h>% zJ~c}eYciqWxZ-Kv>!j@JO@=ZG_V>t{W~5g(zeNYR3}=J^-FHi}D-heO0!|Z%rOM6C zMp%r-5(sra#l-@3*rW}>C~BJz%;wzteSu^QN|vpem{?*DtQBLwuwvQXkSE|}7}q6d zkka)VZlt6_Jkx5Ul{h!iyl%2SAfH&Vlv_EPQF+|A6@OJOvRqKPQEM=~)K?jKv=pY( zZX=dANU<5hPF^13Wl-9hb0pmL^}11k&iLTlyzkBhxhc6yP9J)Z z6X8KtWIx|RQx$<+#pST2)Ib66XtxpO9oMFr7T0xKJj0Z>E#csUlT1Cmqebh@p1S1VgeR7E#*k2mntg&wJ|lJ4v4XLCrB%LYK00l| z(D=GoPN!msJI&^`jFHyB7B`C8uRp(Ih-+3nUe6+r(?t8c|VIS zTmuJ+gqP`#4arxa8DInGitmRK_One?POG*keN4OST>dA`!FW{Q;?~zhz>6wAAe)@UdCu5l~hhp31m&Jt+{WPzZ=;+XTL_U=LsS-!{3*P_$a&+ z58|o9|C(u(gM3^6ySt%@G;1+XyMXSLbKLXo$re721y399&JM0kYTX?o<4pjI>zf?hv>|ofVcR)YDEX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micG5*znId7l6P0c=S`K~#9!?c6?L>CX36k7F+;ew#bsbL0%Ji1@h|pc;Ab zQ;!d&pM-M{FkQ7XmG}?VAhw_eP9cOvkH4>b0Q#!&nBcL8`RaW9F>?Z5YD~a;PZQ8o z9}8ft@iX=obZ=EI2I}`|jFta~#t#4h0002|cWJrVT`H#-s?90ISC#_6RmU_x9Mk+D zK7fOmgP4OD0000000000a9izHmgN*G#r<}jmYZG93s0vKUttyiAPtp~v_t{VUV002ovPDHLk FV1k6efm{Fp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/meta.json new file mode 100644 index 0000000000..71ffade3dd --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/meta.json @@ -0,0 +1,95 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.8, + 0.1 + ], + [ + 0.1, + 0.8, + 0.1 + ], + [ + 0.1, + 0.8, + 0.1 + ], + [ + 0.1, + 0.8, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..09951acb4cd46bf51bbd6c3771f344c914b779dd GIT binary patch literal 729 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/laptop.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..95ca9554d3913f22540890e7f7cc5ac925c8d8c8 GIT binary patch literal 611 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 A(f|Me literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/meta.json new file mode 100644 index 0000000000..f66df2c079 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/meta.json @@ -0,0 +1,109 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4, + "delays": [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ] + ] + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.8, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.8, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.8, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.8, + 0.2, + 0.2 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..810cf5086e1b788a36646fa48473f11f450b0842 GIT binary patch literal 1058 zcmV+-1l{|IP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micG1`tj@cR~OF0v}04K~#9!?cKjl!ay9r@!uH} z9OVgc;srDgJ^(ADGbYyPGgMa{c{KTm5KlW000000E;43+f{EPdDy!6mDm9bFV$qe6cJS&y+6s@R>rT&4p2>I z4bOJMM$Ukc@vE={(#Cej`l}Pt4k-H!2pYd6J1&K;Zt_1j#vC`=(k%N33?1L6-6AWS zi$l@-*V+3;syh03Hv5gXG|Q-L==i0y$#zB6MDrRw6C0Dg24BZ=?z5ty;t#dn7ZEuz zpQn`>1G0l*b`adu7!V|WXn8Y_?l?0bZh8FRgYe4Je-qcr!12S+f-=|G>}+J&jKsUp z@d4n!hz6>0ujXwA?1U5-$k~fI1(jBW_zC7;vi0`ru zje9lMxOv}Uinf3LcAzZJ-;$*<=RK8dNjRPpa@_2{VqG; zuGN{?^xx9EBz<+hmyYn+a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/lavatory.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..22dbf40c47256de1a3ce26422b3d50e2a02917a2 GIT binary patch literal 1588 zcmV-42Fv-0P)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micG1`tj@cR~OF1TjfOK~#9!?ORPqR8bWEo(vd5 zT2#7mPzrUCq?xwKK!*M#h$N&!S4In6WHm(;E~SW?{uYUgTqz|HMi83C5cEUTXe#5v z84N2oO+{rgjH_v3@A=Ys@7?>(o%;;m+4yFB=YIEmp8MUOb5&qsCvuyUzVb>?EI1Ov ztyqU*$5#fv#|->z!v#=n+vYt$50bnj$ii3B39h#*Jr|iXK_-4is+Xy0M{QFkeg;;! znG%q9IExHGX+s9S$LyD1dgJ6yeCdsoeAA8ZF`7D51*HU_+R*r*)+X!JB?~_#0g*%$ zK2&08d{Ed}izK34@5;ir6v56PL$*OFz5sCS{W)^rR&98!8ptW}qI1GtAUP#oAO^=t zAQ1onvF`)+2*7c22X9=v4gd(fc#F!N+qs`lo<2n<008E)vXB{P6Qrr%Gbmi0E#xm0 zdhu4sGnoLD1S89g$I;~XBlzek5FPt(7D678jdcYA!ZTp{<7e%8bTW*xO{H9)Nh?8K zYx4V1ShPi0@QY0!oSo1AWd7028gh$8_zEhvt=)Wg+*KD zMNkk4`2}9>=jdeEmLLif!OVEvbRh&l0~0j^bobrG+MG37Dm%Usv|0+MWB%Xot95=Q zSl4zFeeJCaA_u^CVE4a=7`pGf0s+*u-9$J@S8hjEg6}d%3`K5n;CfSo=V{aGT~!Ab zXG4C0R|{5sr)*QH;rmATDbMNGZCIZKfIC|+<6dqIrM`KfzV=qIW()v?gJB$r!I}gq5g*BOyc*QLZ5%3tutogvj}pHF(+h%$?$? z)l=>S$j0}ug7cKC?cND+0$&jgt~Z`L0Z!ptZigvCBtpc}ji2`W0ku^vNhf?+jhO(R zGPQ`hzASv^?J!TRUPMV-7QQ6`c5C%oO}>CO5s>kz1W;=Akwg>R~`M_zN(K1d~ycZxwEhO{F?Y|I{?*}f^TJ(2X>3^3h-FfTsf4IV)VbeZR=pL zwyGtWoQQyeZ&j0I$^d<-o7GewyTR*yDfm{#bS%E)t^lJC@0|cA@RV}g$v)AaBR7WOoN3qsaeBfVcSs~;X|9i5*SBr;g%a%{@QR@{8 zUdt3T{jIsspDPWw55E83QF-~b$Diqff7rYQ5)xluk&eCA1!~hG#DNHM@op1l*pPaZfku9Kll^R3hvV{$M zXKvpxH_euHX~V&_O`)}Qq9V*PTUnMe{8BJg%S}(TYjYHt^4N<}6tf$x}^!`U(I%RwYgrHwtv@8#V_0o&&Di!Sn-0@BztpfoP#lnd)oIl a{NMk1ePj5cGwHyz#o+1c=d#Wzp$PyqgB?}? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/broken.png index 17d7f7e59551fbbe52623d3dea5d65792920ab6c..691470ec3a43b4e2dd870abad0f53481457b91df 100644 GIT binary patch literal 2617 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 bX!-vIFUKKeF)Whs00000NkvXXu0mjf{#5%v delta 864 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 Yj|Yi5X{%^uAOHXW07*qoM6N<$f@Gt8hyVZp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..92dacfcaf806ddc4ac5fc47a3a2487160762e453 GIT binary patch literal 2333 zcmYjS3pmr=AODS*ml#R?ld>k|PA)0ox0riwxpb2$jTFr#q1bW>rMDqOD9ZhsyDr8; za%(D*OE#C+mc1l18@Bas{h$By{?B>7=RD_gKHu;8p7S~9Id@&0Y@{U>B>@1CwzEZ@ z6!fD9#17d2ipneJq=SPcP?8yKQ`6tf7Tb8YO2#NK?48i!9z^eJfh^(| z9c)m*Lt$NSM$iSwAHlX~!T>-=MQD)7V(^9lgkHCEw1U#bWVTBxq)!i!1c;&?>bQI4 z_+q}Z?H(JY9y~Kck|gUYQJA>m6cF>yN5KMpXxPh??cxB_rd!=&X8ZQmwM3?TCn?=j zV-4X~XNvC?!V=ue%Zt5N6a&>&#YxDhmnUG0jh!zxZ}?FL_-kagsMN;lpg-jU*5A*c zZA_35B=Wn!O~#7$M0q`0Y1J7aAIxp^-85(NmUs3$mru>rX>p=>`w5IsqcTP6Qv5(J z&kjqxwI3a!fQz*Hdwo2L)43rpO8rdvuFY&>qe~XM${vQYdq*$QQ?L(z?Zlbm0|C=x zfuIYBHgk4ZpxO9eubp^MkuPuIbqc>p&0o7(qpTzd+tdo)ANVNkHtvXHnQDJeQ!k$6 zu{2FyHK3l-F=Hb5!?=$@b4T=Tj6KhWu3ku*A7OkJZ7lpn>696)l!&=*%`Smn_H9zf zrD*hr&q?AV@qs(_Cd7Po!-RQ!tbc42tx&PaKiYz&+`&E*|F z*1+vw=@_rPx@W^!B$LzdoK^mnbZ19wn+O<>c2w@eW=)+A=yh$%{}eZD%w%O|DH*A} zcvS8pI54Z0@0KAiwcTTNvY)$nWHDA%xzV_R?o*S_IxTR^3Vl+@-A@naZ$GLveVYxnMY_pPFn8@^2ko zQV;a2H*=1#jjnR`flnE(vUX<9!$mu1X!! z23p!zGJ}ZCBN@`Xk{ojGg-L#2SiRk`4G85*U*h_$@rik>WnZNKOZ&d*0u2CLttB8tB^VAP(qc$Qmwvd|*eSz}2 zmNIP}<2TcMS_SdARr^cgZdT6Xde5xK@+qR&P;D*CKzAWj3neAn_cXii+!&XWeRXLp z>&X2pq5kJ)hW?I^!Jv{>RWK7FdS9x0M>O}L?4u>XcYq8OU7dUBNsy~!6Y;~vCp-xt zDIUL^=5+uuo|hUQk}1o+>CK~yXdS#LSa4U{HgD6?gJIB_mt)}0K?3kXDPgd=t8ffz z<6)7El=%L`hIQb%49=@vabbY`mT>4cMqVlW1zNG_)Zv431smt9Gd%Z$A{`TGeS`=$0df!h3xzjo342|69}n}e*MvOK&i_uq>H zr)|l7HOGIPt-l`BXTN#kHp@MDggML1c#37Z2QTv~ZsMY|_^tKN>JwPn^rY&OIMWt% zrb0x+!7J!D;z%Ji{b?<<15aUmEe>BcDJT!cMSHI>S-?>HeU(U!NFjrI3gRPv{3M&o z+FEu67rmEzQ?mf;8ao{~f}yT)XG1a{SK){JlNON5dLno==3~1L8;l2wPBMBWd(GIE*Y?!2M+>DMIVG(I%sF4i_!Q4Z(Eh|I~pX zydsJM*MC|qSJtOL<`fX_JTd}_68xh2L^{!SLVMWDJbD*%Hia6I1DDhnR|^xmHfQFS zD7@IaB}+)fjT%g;%2s`W{&&tUvs%Q$gR8D>I{_~nI~?n(+`Ls7KH^yCU|&QKq)Mb< zVf|-RADNJQSyC|?^MRln2QKKl)vkJLOjU^4F3hgwGG<3%JIEGmB#*VEt_g&zP>#<# z>}oLf6*Hspat?3*l?Aw3<(FuHO}_I~7uI>)EKVy87xz`0>fD=R(Aw=-b zZX|PoH;r}7OhM^4)b0U%ohuEKj-&nV8?$tJhQr~61YSbWN7E3QA*fO zpAuDuf!i4XkHt-EN;VJ=CsGKMmtsD>&PiZ)dzR-lYcE}gOcI&aGujhBm8;CDoQ47! af3`y|niI~v(Je|7?$gf72~}g^6Za2A)_Si1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/meta.json index 777f43a5fd..b340c35168 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/meta.json @@ -1,31 +1,105 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/3e1db725c152145b1682a31e5e54da7a63595436#diff-b4b731212dc8db8859d52ef3b762bccfb667f8783ad4c36f648db7f758f7eaf2", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "broken" - }, - { - "name": "off" + "name": "normal-unshaded", + "directions": 4, + "delays": [ + [ + 4, + 0.1 + ], + [ + 4, + 0.1 + ], + [ + 4, + 0.1 + ], + [ + 4, + 0.1 + ] + ] }, { - "name": "panel" + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.7, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.7, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.7, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.7, + 0.1, + 0.1 + ] + ] }, { - "name": "normal-unshaded", + "name": "deny-unshaded", + "directions": 4, "delays": [ [ - 2.7, 0.1, - 3.4, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, 0.1 ] ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/magivend.rsi/normal-unshaded.png index 21e74f3c7fbb8a737a142b49419bce2fe176b0d8..0c700c9ad3a94aefaf56be20b07d95baec2b59e5 100644 GIT binary patch literal 2100 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 delta 231 zcmey$@`X{cGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBk~}VVS3kV@SoE^)WqR~Q%bNt7N~!R#gr6Z&Cw;NHD&_8oQ=9}JZ5%5KQncjy1EYtMNutNlr> z_!aT<|J>^GLaQbEh-toRxIh a85yn#X-C9Zhl>K;&fw|l=d#Wzp$PynBwE%0 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..5a61cac92f95fc83179ab693789b6948d92e5d4e GIT binary patch literal 2842 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ff3380972bcf221bdcad154305fbd54adfb6d6 GIT binary patch literal 1409 zcmV-{1%CR8P)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micG9wT%0jtu|+1Aa+FK~#9!?cFhGQ$Ya6@$Ws; zOd_>l!Pb^23W|e>(!r^N3NC_fy4x;=isIrTE)Fdg10vKq3oeR+2-ZOthhiulq(zIy zVk;w>+jQnuy?k)ro{t$yw|oyViNLwda&E_6`z2)DKA@k+?Ce7 z)iupdZU6Any4!&jIyTxO5IQ#>}le@wy*9)vJqlb)k_tIPUp1 zM?jd9(CV6I`}=ev=oL15VBGWlI)>ux|Bf>m-KkWj(K$Ft`JtwuOh#9O>+*TssC1mq z>qhwywDB@9?)fb}2izLb%=ol9lpXaJT+G3pkl)fbV!=sh@U;2S$b6iH{7`SiHedUm z=}PNNF!xouuDpD9)LR%lZGL1&y@h7p$iz86>=g9*{_e|Tl63y#&D)Z8N&38h`udn8 zEsb6au4~C0oVa{GN^ty9MES?7^?n>{qxU5}zisU7){@QJwVSHvfW100|6=3KmEJAp zRINMu`rCVUJau$(S-HcuDwp(pBYG_hBfH2 z2X%UW%4TJv>UnX>_nH}YK@a%$QY%qC5OK>-*%)@E$K{oYV%T?benU?{X-K6W&}wnY zZ~9eGPyrY7ZyfS{+ZA&8-N~Jp@7o-XE+joal;wgso8))9NpHV;Z_nit9p~P2Ox^}SA7EZZuK74GaPLTv#Pn3 z`L5gVTsto-k7NX}s@Y-tdwms>&;#4L{j6$cRWmB#UmDuWXO9>F07#}k+>+viqgYQ? P00000NkvXXu0mjf<{7gN literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/meta.json new file mode 100644 index 0000000000..24c7cd05f4 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/meta.json @@ -0,0 +1,91 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8b9fbf92b3a2224f05a796f9d812ef1df88f06 GIT binary patch literal 1042 zcmV+t1nv8YP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micG9wT%0jtu|+0uM< zxzre@oi^6(p*1}zYEhbO?Z10~?EuvGgkdhn6FBMiP%Sr*?)FfPCvc+fl^aNx8%W#P zODXG57r3vi;yA1W5Od_HvWny4p`0=Dq8Zj4;Oj<6CBe*sd=Kl2;AkV%U;7v1 z2`sAEx2v<-8+p;pEXa2wFPc#gf#=hS^#TAaKkn`W7zgk?b+}akfV=#rs*79>`1gk) z&B^ihr^jKwP#}a5LI@#*5JCtcgoG90#@PG;R{h_!r@8IW=qxhB zoI$txF)usg=gj-1A>6pVnt|6Fbb=ZPuk~YIxShFd?Mx7E??(Su17H@hn*qP^Qs4C| zpgIsl{QIG=dEFtue;f2#L-W!dhrzJ*2_b|8O-&}xLbD7KLI{a4ABz1BZrqKjC;$Ke M07*qoM6N<$f@GlL0ssI2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/medivend.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..923199a2c10c2dbb4190d3a358f155b8168bbca5 GIT binary patch literal 2278 zcmVEX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micG9wT%0jtu|+2IEOYK~#9!?OR_=Q&$-OLAosH zk`1RqW)wkbAzMU=#LR(`Hqe?G1qq%S0-UD_19r)c)V%I4IcNE|?{ezJ3gb&&u>$Xq|8KbiwIpLMR-| z`**;5Tu^g@-R*+Y(F8MPFnm^aon=UmzgIBRh)_6&&)YwyI-n4`i}9Sx{|;DA#ss{_ z3*UZ^zgM{bSTOC={O!u`iWUcXx$2ZhZWDzbE2XkH42(g1+H z&ME{$Y3y}Y<#Zf*PWrCiQ3!=&2!&&r(%AG?UPixuOEdMpMeT)|;nN5VKQVfk5n@lC zE8F_MA!EPnJ|r65T;B-$z7}Kk|J)$%JOaA|_ByK&x!Zt;kN?5ivQ^BAZp_@m3&k(N z?yN$jub*1ynQC?HCjfw_y%W*Ikm1pfCWiPB5DcZU!hphHD2;95$O({NMElCAj{eL>@jD&j0{AIyz9d=?%=^USKxJEGn$lu7w5G zHXE?!^&J2fzi-Uk0sy?YF5`?F)6?QRZ5@XY@STLu=K}zgzWfRoU#A&6J$sG%{JJ%- zi7=;0bA6-Ot}X`vK;iU^3D8$>iQ#OwsMkxEUaHSbriuM(X> zbC})jLckm6Cqiq>R^|LGEX>Q2Wm`uki~D>&jEw)ujQ};-zGou0T1!`pBTPnF zDj&9e#MCY`6HJbct6uNgy;BtdX6JxtVu%X=?*iX4wOh=R1Io+Guxs~Dl$V!LucbM` zOaxr`;V%Hd!2BEr=I3MxNKK_NJ$p_3D8t534j3J|#C1&&Fn@ai$GVT=aQ6`|ClIzM zU6lFYo%g8E{yjM*OLnvbsU;Sc9Kb__q*dTp_fbU74dPh$QL!Sh$o&1g83#yU-i$`w zB#7GqN+OgT8yDmJ{Et7wYTHD;Cw(6P4tF2Xg#amQtKZU$#AwtIBUEF7+ElnNDI3+% zdl#}s`rpKG);;om;9{o!`+PpG&MOmEq_1DI13c|;BjBr3-!LiqMDn+%y%WJu8fSvv z>!!HU$&e9d80qUrVl=96Hh6EP6`^p9dpdk?rPVN>CzBzga{{~D1+V{vI51ox5bz#H zU^tVBNjPZ93IGA`=}Z#zbcvNfDx^H>oeVi0P4KjLQc)4<>xb8WBJ15;PSmUdZJsVw zZca0x&C|75!Ya1nm){oS?#&%8?zmNowDZ!Kw!2-hyIrcz(W1f@mWc`LQnfPCoWJn9 z%y=V{ApqhCI~`3jU1ZOJh5$oEh&KUAy=-^8WX7Yj?QNx}Qs7@(9^7 z*OSa>d-6O&&J3{f5oP@68g&ax=g$lb=rW%02j!kTZ)qj%@NS(u9Rql`wN=n^Le3ST z%IbzCU8m2dgu*dYRyW{)bH8xFxnIz|CTRAl4YP#Ut+lnL8Un;)cOF5cpHCwKa)~Aa zi07Vm1n71E??T2ihk$1#2aw$!)KqiaT`!;wdMsqwN|U_n^nF(6~II) zj=I`y{6y&0HLHc@`bLag`a{<&Zz2^}oq+I&bb_SE1^}q5-G*pl2sdZvintL#I?vC- z;;M6SJ!FWq$Hzt&ouHcuE_yOsIa&V)z;r$+AEG?JB-O8m0K-X83wrBoY73g^wDhxt zj3ERl#mte{qk{zj7G4BMVW$-iW`_Wae(CB`UJ;;#o%DL@@}(t*y_$Z~d9@0l3jsuYM4q|t zHAeH%d0rhXb{DhffZTA@>Wm&Iu&hLB={KbcXq6F60a-vkQ9I!M_kPA8T!s38slLMaoUXbgZD_19r)YcKU z@7X9Gm0i|3fWX!0kD+K=+vKEZ!Fd47ds?HZM?X0-OAb>l+Z@0WgS_oXJDqF2vEVr% zU%&p4wnI*buq?K+*v-5Q%fZP^07eqAlW`xgi-{ z8`V8>rRLq`!Vi?a3?7U)ueCSBY02J$I&W zih(Q#*XocAYsFLU2i)E@pIEbpz4g2O$I}l=;?jR~UesQ+?XS}3SM%R5jbUirzVk~i zf4u&@smBjCsB*1ed`gw)8-GW+^y(Mf^9~(9q<*BXBstqwMd`8YlC{DTv+m?o_~&*% zxLU!QU)`6WZ=iX5*P-~?yZYYDPMyHQRj*vlBl0ifhhftBm!TKiu3u1lkh+L_>Q+{s zDf3Q#yX3fj4(IbJo-26YA3OgwI>^a*3+IY8wocc7T6e^AoY;2i0}Jo>{jKU6Hl7)6 zW{f6Jwx>BK)of*n;wk-HyZy!C^{m(V;$xY+c<(QNJNcrMiJ-Rpodf-!&Kemo=U(`u z{$lnquFHX?_sqHdGlU(S?WTI2l$+>WD!6|>XNc3o)c60@qmD02jco5t{CYj#)MjC* z!`;Oj9%)|4Dv;J?ny2>uw7OH3jN9zRz(BFTS27c$v)ryCmy^~%9{~V z{MqPb;OWA?tJ@hqrq7%=m0|mTjU8MYx_e~`I08b8K5?yC)*$W1Fe90z!4iWy9CyI( Y=(A^QwoUxi08GdXp00i_>zopr0M%bkO8@`> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/cooler.png b/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/cooler.png new file mode 100644 index 0000000000000000000000000000000000000000..b6f02fb3129f3357b731e5196e9e6db6924bcf4a GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9F5M?jcysy3fA0|Qf} zr;B4q#hkad483I>WgI>V1})jp{ZeFig8CBfh?a)AEJ194JnGnIJFH6Bp~vFXrEr6z zY?9ub*fZ%J+pA}8IPvz(ySr!iCf!^A;aaR;;{5H;&;6axvXFb(Ddf4P6!!Dv*ZUJ%MAp|Foj?zqJ6dO_wC6ZPWq z`uu&eegEcP+4%dngu-IWneuve+iov^f3Lk@@11{kY$ta7HjO=9CXZ|l)Z&yar@7|t zzLQp&c&6@sOSs5%(MM&w_ZTGA_c01RI&`c1aPx=H&$h)zb*OLM{bE~2{dddx`)c0( zm1XnD2sfJTeZuw8jgIF!New;E^nabb{kZk`KHq)Yj?3AX_3xJ1%l0wo(u=qHlhH%=?q@@6(%3Uv^Y(F-Z$1u`Gx^zAbC^MLv-yR! z0TUP#*cv1m(imnSF-|hfp3%QP_M2!xmEFFwn+)>~Y+~EXK4nh-`nwCf15W<@aVwR1 z$~>S7Gl!QzPNh6X5VPIooDNhDRiMh8lLRyfV(i@oPhU*>{Bf)Fm-v7zJG*m7^{wUO zcc(Nce*RdfS9cR+cs%3M=Z~|W_e!9}8-_KAD8(mL&9HB`_0rDO(z3vm$KdJe=d#Wz Gp$Py}TqdFb literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/green-outline.png b/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/green-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..1654849ed94cce2a68f165a1368824a0aae06026 GIT binary patch literal 2230 zcmZ8jdpJ~E8(%XhRk+}8O1@NB8ogAqUbazvt28dyE>tanvz4M z+)pl}+)B!=+)Zvp5;_>SnfbOl&vU--`(v%&+VAuJ-gm9vv)*^@t2WjaQUpZ;06>aC zH?u>LyF8#3=xo>HgGWKapME3&0O{)Gfl1MjUJC%^$uKiM#7rN*!-?plr(pJU}-xcPT51H7R zJ9Ud!*wI(pwFdS!4R~hw?D5pM%9o}5Gp`g`-LYNc<#U&@;0nMZO-cZg`UQ=d;HJXg z{6Ih1k<+PJ36uX2NUS5JK^5O=8oT1UoeM7&U<v;3ry>c4<$cmYNJpGnD z0!o?fly)DHW`vQ!)`;)fiNX@I^amBsa(kI!fNa|~Cba77=iISDm zaYJy^xF$F1^ff)GrD-*QEsO|kPK@aXCzhMne!lQpwS$i-<8>0*h==Lx`)c6p)9A#C z@!F5dS|jUidS*V!nI5L32LY1+b)==cOWT!YSd}j#eCc~3HFoyqAx)1(Pu~4O78$k{ zw!6`G7%o2b|NfyX{&~58WofWXt@E(mmiRJxppz99Fwq;mIn=u=DPQpJ33&2f)}Df_ zO;$$}rtw!c@Y3i)=(!Ly4~DF+p%|Yd`RuTa)m|`h-6WppFsnFRqP;B<3r3HuBn}RC8(=pIl~K3b*f7aoTcZ;| zsPg&k7Iq+pYQw*L)UD9&>Cw%mcEFozGhHzH#$E>{Hc4(}Av5xE>>PM#skeCw&or=R zyg66EBj&)ahL3(AWXNPA6=_Kx_N=^(KjDvXXxxw!ZR=uZ(}IXA4Csqu%(}~C8}DFm zoO70!W3WI&N484I+ja%X(yu(xdQ_B=sq)evNxTaj0miN|!6}WJGtJWoZ76!=IFQ80 z*YB_t7VJ%=As3cpeHE%?P}SG1j}haGVIY&UpF)3@3^9`YhyuYxJ9a3VPm`7VWlWf# zI9bwY-(9LfA_yF(RMos1)Iy;|A?Th^)|8uA7)%{6Gz_+0$`e9P>hEfx-&z@AxM#tq z?S;M_E*m7$)Poq<$y}MrTCGb9-RhyE6^>VUYsN^iek%K4h%wviMCFU0jRd|ojRU`n zL={b~BPw?(2N0gJIB96apwXqSR0jeDdDHZc*ANj=vfz2m>Ray$W^TH8>n(<@!GQ%Z zK&wiL-a)R%pfE>P;4ksh_``!)MpKQQ@2=AJWPXav8xE~X zVD0OpaNP`4EAaVEo(8lhdr$4&^*SI|=BZ5@T4;rLp~nNa?rorrA5*GZm?RXAmUr8H zO=%*e2%V}=kyf^}LHZu9IMC9@IZItsS#EH^Yq|DF)c8}Em{DEReZFclmYxc{7b1tL z_u`+9P+T&1mS0$_UPelFj(8_1p0!jG$9j499k=R~!@!bgqFtl77Jg1yh&3~y9`WzVM;4}`Y zIh;0~m}Sn0G{r4D`K!G=Y~|;BEhAPTV-i4@Bd-Gzo#%0(* z2nmJYK_6-v7GTI+igAuqcK4hZNJqfWUKa5SHctHV^{t;VrymPznZ?@x7VZKoGRoO6 zGQ*?ki)RD-y(6W{@Qf)fJ>qvyiQ`oZ1K&35$Yb|nKp+kkY8scvQ45lk9(6u-f}ohW z85zb3bnc2>)Wsu}o)Unqi#E>XWbTqm7pyYy$0ut$u=Tg~bmybi*UAET^PnV>uwGr> z3AheT+gPN41KzbVdiMrzvs-bemr0FR|k-M=xy+)`4U`BC@8H!{Q~q0fXdAf|d_ zoCiWG*YsqkkGt#%nJ+HT`8@@Et|JF4B);i9>Z|4zS4Kmy*MI1vr(^6k?V`XK^B^e} z(D1_rv5*(=jf*AQOy|VjVrNGCQ|q-NK3@NHUFaWO1{|)X_br;N91;h|ua==rmP-o4 z#ACxYqs~39&jb=&X_S8+$MQFhz${RkD63M8Zsc~#xhZJ@uzyJ0MmJn{;g!MfSlz%c$GFixC(vQnFv1K%vK}cTMgP;pvA2W~<&&U5!id4n3Fr1i6 V{99KT(ddr|VC=Itdt!1t{6FN`@ag~n literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/heater.png b/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/heater.png new file mode 100644 index 0000000000000000000000000000000000000000..3e0c8ff0a69040c30a6dc21395d598c68422a130 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9F5M?jcysy3fA0|V1N zPZ!6KiaBp**=CD6inO^4{BP*$J?M8uEh90xOW{Umf-=WHwruPF4znhlJEfGM8ve#* zg2*H%6(Q;7sYzP)R@G-CjS`LD&E-G&MEBfhk@9zv-|{w|fA{9y&i5x7f&>)U7?aS6 z2@k*AG_IevUYGa2`L=szf6M;tj<>IyH)Fdjla@t&qM}aw(!@PGDl}{E-IF|KSa|N( z-SziZeeZ2xIy`g#*7zG1xBuJCzEP32j)6(bWBS5tR_sh%Han{SCuDj~S6tm|k-k{h z{&7|9H=W(}EG8dbd_272UrE^tvr9V*W0@F5WA;~7T0FjA`@jQ=_p7V#KewxuYiMA5vrH;~!$z}9maF|^f9?p^75m=V;Fq)R&b{9{`}q|d zc$khTEMTlwm$+ZC7N{snaPEfbt3Mv>{kx!qk8y6r=TD{E=9y1tW@K$Uerm#(szdwt z%3HsFe$`SSz_Cgp`n3#)hQRE?;E2@+XXOU#Cp`vv;)rzCo1(tsC(c@LZ!=u?KXWcK zL>GUdDg*`?YO{kM;hk6D(kH(NxrF`Tp>< z>-Ji^$kW#>(SsZw4V#$yl;z*gU8TJs-R_>XE92hJAMdT)#Z>j|@!nvO3)VoXWy=@H z{j7K&!ueum|98JYhxavm%4baji_({gKAfaf#(|;h}_u z9tM`yyYHWQ_nD!sYm09QG8*;lJsQp-khkI5J8g#@j-C0v9POM2mH+zJ{e61f`={03zqZ@zvfkd4 zsbatL_~(DIlil$(ucg%vO!=aof0AR}Ypz0Draz5~kD15s|5N$v!{?`e{+&N7clz3E z+wVW#O+S73`TEuC^$+wdEuXu;?)T&U?F-f9Xq}1=LhHV+ih(B$Saz_FJ5i6>-DdvuaEoZo6U^> zFl%kvi?=re7{93rCPi+J`SJYw|DN+!tQ_lQ8SlNkb8(`v?7?OZap4CIaxL4XiHrd3 z9(dqzZI-`79|OD6zQ2MB<}Wk9-@P27!&o#~DBkLj?YZT9G!HzfuldP7ZT-ssZ%&IF zbF5$1*LT1+hF^DG@4NB?Pmb#E+qYzXx9PLse+CEQ`eZw|M(?|1xDUdIMAFSFy@V>h zg@P&nw;%g_@vET8-q&a1Kb~Wse@y#CX^Ct?)TbtY_V^^>yT4d&Z2YCc^1J-zSQ74eCjJNL%?cxt$0`FERH zaw1cCHeG$O$JIJP>BuLh4<9ejp8R2xka&IM`u5ljZ))z#`#<8Cb?@&w>-e8`vIh?{ zD(_)4C@m1#!&dpXZgZ)0pPu|D=Naq|k1jb}z3-oiud}_lGaH9(M?DvpjxwISf#G_c zYp=v=-Bk{-2AOm0iu<6O&$s2v#yKmDQW{=bC#&YMe3^8m)xQ7TFDHdVR?ch|rDe$r z&R*w_f3w&1yU7RNS?xR%);#~1E1Q&mPuiPvwek~DwZ${+{hWU0g_zPY3 z+CKMATEq3>k?;5Nyuf-N-T9waF;rIw&%5{ch&%UTImh#T^WHd=HblQ~@}Il+{^s8o z55+Rt{Xg5ST>IzEiIYiIuUHn5@jw$+a3m&E_q{FQ5CJ4N7g0D_gi{lgX+F3yiHZRxTj03y!eFU z*5R`a%bM>B<-ZIN`1QaxVQFQ7t&ID2J|o*j?+VqGKe606aqZ*RZNF`~Hgz$SC%sm< zEdCo<8t%5J)93r}ac<_$IV_Qxg$+;T^_*5b=HPNnJK}sn%X)#b=AC1LB28hO7v8aN vU&(brQ215>OY4GF3~%c$w8?^t_v4QX~@#lqm}>gTe~DWM4fKRB)T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/water_cooler-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/misc.rsi/water_cooler-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..c05c14d9316bd170fd5f601a20591caa406209cd GIT binary patch literal 1056 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 P00000NkvXXu0mjfb7iB8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/nutri.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/nutri.rsi/broken.png index 265c20ed44ae2c9c05f98760a3ffaaa59f0e3952..0324187f46a33ee645ed3f2c23437ad57bb71ca9 100644 GIT binary patch literal 2553 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 literal 698 zcmV;r0!96aP)?`mSg7+=lCc;JF0!3ZW80H)u|7*2C`!TCG+bRgn}h71ZH z_F&bsGd1o1-g|ccGevd&6EdF`_U}G(=KsRhU;iBpo)fg6g;+;yx<3ib_EWvWu<8CI zhS&SM8AKgR8SZsL#6iiB6{;ST0vMDS7#Lm?V>24cU=q;_ zNFzEHSugFuS_Viui!(ep_=2P|K*3&uf&J8XhTnQFMB9IH{Y;X}0D>t1y`aIzetZd{ zhngvX6#HR-loUX)48RA9@AHBSC=iVds96S(V?Wi)fD*6;+6)Z$VItZLJq({2-jzEu zoIZb^!L;0&fnn7KxO!@r0i@bbN(vwt0H7px!wj<;yLXBmY&i&kXyif=lmg&oz~^HG z%Nc6f4+EeS04oE|-oszc5tRZaonpr-zG>HCtm4#80i@bb)iMB9z<_9UHa0m1DwhG| z*iT9sKvW@U%?^oyr^en4>>-(88U{cuGMB!~DC*H$f|LSM?H3djWYms$%-FN`8$tVt z$^tNu@pv+vy&0Uw85krow=lez?!&;q@DMJipsEL^AKbn~4gZsD|0oy*qhJ(_f>AIE gM!_f`1Q-|?0BUh`3JL7;$^ZZW07*qoM6N<$f=S9Vx&QzG diff --git a/Resources/Textures/Structures/Machines/VendingMachines/nutri.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/nutri.rsi/eject-unshaded.png index c49dc97d2829b7c1bcb42cfd55dac3a7a46f2d97..b1c7346ae44294a8371e9a4c1402ddf094ad0e53 100644 GIT binary patch delta 1058 zcmV+-1l{}j3aSW@7k^*~1^@s6;+S_h0004mX+uL$Nkc;*aB^>EX>4Tx04R}tkv&Mm zKpe$iQ;Q;15j%*8WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7i=*ILaPVWX>fqw6tAnc` z2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Kg)$ED_s%9Cfcz;aH=2pe-R|GJILG(kE zn5ieyiy3&1uY36TdKckY-sk=teM;VBfKMcjGTpF9h4`F!(x3|x zKXP4m`HgeYVS#6cj7(~tI7BQKJ6P^uRx(uL8RD>_YLqWzT~;`6aaJoe*19KuVKA?) zq`6LW6mcvefqx`K$f%)=3M@ou)krasqWzeMf5h=8$t9Dk3`ULxRG~t0{NR7^yIZp` zJ>@0^V?f}=wm-&!?p>f+x9#s^+iso!{%7DyYx}DWVD6LjdRq%00R!8>#dTYg_khbC zVE9Rw49SuFG=)L|ct4|W$^k>SK<}E{TWcSu4?u>xT7SL)4i15dB4w|8yt}8fw|~#H z`uhR0(sIE2w?`xZ000JJOGiWi{{a60|De66lK=n!32;bRa{vG?BLDy{BLR4&KXw2B z00(qQO+^Rj1s)MFE>Mwf=l}o$CrLy>RCwC$+c9t2Kp4jH$5xZs2n7kKQmaEH_9#PU zx~2+C^M3`JteyJ-Iwwnp<`ZP9TB%c%p$njFnLrh)(x|XDku0$w-Y#5a5J{+FV?zGF z1sjfg&v*7?FO~oR00000=El3PLF=b&l}oDJ*RI=BtMbyTCq2Nd>!;2CpT^yuPVd@J zTh{e6TYzp)t(8^ngrSaBR<$#2fAT+OcK+*&et#V7={SLj&$NE#5j1OOX+=<$^{1&@ z?qtjR^EQdTp3TzewhZp}bXqRy^(YFSPo9BSU%lY-H+_HqN$(yq$gJxx#62LMw{ANO zbrk;`yR-vxK9^fKi zeSh1oJm_dOt~`U??3qYVCCE~zrP9s6#~;l6jVzHQfs``*Pv2bp#K%&&kj)CWnr zywt~0=8o;B{S=gCeE@jMih&Q87?^X%|3}*0gc+ zZz8I@XZ@jBF;F`ve;`Sh1FNP{-}Rf5KYu6&YWIg`s_ve-g;~?aO?;e7so*P;q(;;7 z?qC~D%e%AB{hnrhcNI38mUolw#*=pag)uqdoycnQI`fKw+Aap;3&KqT0000000000 z09ZP8%bhR_$?%y10000UkLO>X$4~$O000000000000000000000Q2@3-^E%~yc;71 c005q*zqLO~0yCY_^#A|>07*qoM6N<$g0SN3cmMzZ delta 1395 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 delta 547 zcmV+;0^I%D4Xy+siBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPKe*xf0 zL_t(|ob8uSO9DX{#^04<^^kOnT}wSAUBZhM9Xj>rSoj&bckPp`dK&mG{tf(X16WLT9U!4v*Y>^_IERA8hx6@Y zTn5_pH)xbQ=3Njb*NxWCclN#)5_EfWC2PL^PWI$BKna!F5R^|<22kX_^<>NgPXi&n z1M-y-*np9h;bH%t^ij6<@(jwxOmG91YXd&go801)l~dC0=5la$d;;g!e?{9~0S#aR zq7?FZ(k7>(Bmuv@MsgcE6Yzs+pnhB87M}05&IATBAi_`+NGvSzEBA_Uyb=&$s0oM^ z;dmt=QiS7`fC$M{nzXfQg*lgLfIeV?K%>V51~SlDiTFOryjVU+kybMgHHsb)H$cTB zM^8*qBRfsnc&6Vl?jig%dBla(1g&f*>pNTDMQ0bsUr$iO<{swJ?&2=E0Xry;Vs7J3 zs5lzZ7-vYP0U94xbRo~KYPx22J8FtsuV#K{ORfa47b*{1tJx�K002ovPDHLkV1iA?^LGFM diff --git a/Resources/Textures/Structures/Machines/VendingMachines/nutri.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/nutri.rsi/panel.png index 9e3049e07d7a844331a3a4f1d3b659746f2c4727..d8247e3b0665880bf858d50aa88197f9cc4f026e 100644 GIT binary patch delta 749 zcmeyu_>EPuGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM~>`(+W=)$B>FSZ)ZAY z2s?_j{a?zs_|etLSGB~7g|);wn`Q(RX@=$YnR0b;%=22R};z-QLlc%ZtZ6^v41$KQ*R!KU!-4k@a7%4&ByA0-@C*T@L}c4o{3)ehn99~7_jiL zL?1nHCMj-aPq6IVbH9H|ZrLt(FzFxnqwL)q4aAF-_Ohm&`D=0g|H@~3m)bFY-g&;y z^sl2#@Ql>%kAL4e+sVmxN>0=I$+{Zn`xb5f;j|_6jJ@r<+pX#vHl8cm zg&3dSRL`)imF_flyePMM!JMo4tjyBYebW0jv5REY`FA$_nLT4;f%=m#=R^c6mi_bf zem#G|*=szP15@u_=l0i-te1UzsP^NfUq_iW?rLW;H7sW5x71fxzbI(+ zExSQ0EnX~$)yCiUz{78oqYwRm?;+~&@a1y@DUM7gDcv32|EzhQWiTf6i80heX&ALZ z@WD0y)vw!fSX|DPD;w6_zx-ai;Z>Cu_pJX+)deCqp1=LhvEV~U!Wt2YS?s4;I1<9X zR2lv^tAEX`Q=kTae!Z|6*AImS(0eZ5SxRX4~+G0a%Z+F*%Fysa%kPn VGE=!jw!jq3;OXk;vd$@?2>?!fO^yHn delta 231 zcmeyy`h`)kGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBk~}VVS3kV@SoE^)WqR~Q%bNt7N~!R#gr6Z&Cw;NHD&_8oQ=9}JZ5%5KQncjy1EYtMNutNlr> z_!aT<|J>^GLaQbEh-toRxIh a85yn#X-C9Zhl>K;&fw|l=d#Wzp$Pyo@mkmb diff --git a/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..788e77a1c969289edcefed387cae12d4d2ff9ec0 GIT binary patch literal 2634 zcmV-Q3bpl#P)V3H|0iIYgt(u*5=3Rnv@^8D=ifz+dgyebMAZQ z&YUx6_ilgcfo0B_J7;FzXWn_|op)yY$$uRG6Oi=dspk*s>|a$G%j-DU9zFlHyRDBd z%V&P0%i87Bz_$B-*C9g}3=92C4mbTSBPLbE^7gI!+1tLC0CoVC)zqFRxyC&vUHi<= zs7!}Qr~bw+FJgB@Izvc6+w)$UY}z_`Nq>`vI@3^p`&OB|W@7Ztz7A~fCnqZZmZ8Ik zbsjr%G}gYC00=X8@ukr_IsDv*M@jx9YJ`^HOv7G96KO^k*arP|^3%T|#nhW+fqX^Z^V&sQP2x z_w7nU1gA07@DlK9eVwGiW^!}fK>ch3kstH*zZh58Ay%9 zDd19>(lT+OVCe}8tVzfMwvTV8o_2-gzWT(x*NnTyqTJd;3qcZP`W(9qEn*h`HjpxX=_gbQNjnmT2eTOM! zFRihjfgSq$y73Wb49Rz@Yoyn|^^SQSKH^N1YT*G}18AhOf~xN$LBqBWfGxbQA0V1Rk1J)nJXX@JfTg=<$w=+UnlJxcBxeTN*}-x}pmAOr6j}?6XRa26p8tST16E7vt`E?{0}viI0n_5p#1`pLJ^_Ts6j;)gM%s`Ov>hj_ z^6y5~#c$QM@EVvNHW5S#0q_91c56_0psnq=R9~3ipAQ*2)CiB!f|^5h@hwJvNkIeV zt(lx@TTAHeEuJxteS!e46$0Ql%O6=JbJi`4#Ux4ypxSZHPMtqRHZ^WGf5dgyUu{w> zhtPt3twrGps69rW!e^QP1Z@E8J?U{~Y|!A5G)9!*F2g4|rpm?$05f)It99Z>Qa!P6 ztbsqI*`(Ds=kpIWj*R^dG8n;e1yMqAY~|5NXrDoJ8q2~vzGn&&uw%sTQ6q7I&Tn+W zRacJ~qC$Y)8)VS}j$+!j*hdTip-BRex(aBJS>0)ugQRT*g=JoMHb4N3A4c9a0NPLS z^*Qoix}G`eAOh3!uOn^As{p5g7G7^>X&`kNa_*Cqtk6Qcyg{Q0O*>=nj9lkrPqdFnnj%0d0b0Pc;09L$ zj1sr9AOdCct4jEmIIZIlR)^&DRMAras-F|_YGGdej^Ci_$|ouyr;eK700zmSGh0(5+U)4(Mh-Q>K6RCFr<;sVKM zi~-IL@?3|VY@cnT?`hM(OTerfW*WhpMuMj|qViltCYoVu*m303I|z z19%z2z6XGFcijmzihBh-k1xkG;C31s#j}39O;^82+Kh2ECa+5aob@N#0Qm55V>#zs z2PS%y^J-ex?c?wyn5#KerJEpMzi2zSAMqh|3IIjpmW*N;tvyQ10bQqSo9ymOo&*S= zG!0T$0dvPr+D(N?j!1E-EYH06L7!Ts^(W*|HgyVsJrks?@}Jk`N2a{%zYDB8O?ZI9 zQwAS0?FH=pc4@>$dL1s|b=)!JG+85&0NZ$I4ZyQ2VpA>$$OkRFj#|4S#Xyn)1X48s zA!?`-A}ffhXm^+BO|{psPp$Pzqx--^m5@{EpebO7lkB*l{a)@R&{ww}^;jP&3*`bX zW_by~t?Dl0VZu@jYm;StK^kB@p3l9d5lQh#Z36&K4;VoEhPXze2H?X}D@*STY0pdF z7zJcPR^20KF7j6gUVLy|xT=*B}8^6RA2W$S?>(pzvE z*KgvpO2A>XVLuijMNchq`{U&li{uOYof4FX`Y<}zgNcDmK=N9{% z78gt<08w3pmRO;!{=~oK3{miDgNMn+<429~`+oc)W(fE1|1j!%T7AJWLHi!sDv!#`ju`g9hOjELt2lfCUZcQA|)H#Iv&n?+uOMt*>nb;Sr_UJa4D0T=q=Y zuZv~v#*H%N!CqPgbi_9e(2#O!g04&dZxEK==f19s-Vey9u@mYLltlwvTjX*shpY>A z>u@;UegE21b`9_uKHZ3Yf>iF1n7tGAMTW9$%To#9tubGP+Q{gCr42os3uzyhHB9{l s!R;U!+tW7x0n==_dZJ6thX4Qo07*qoM6N<$f;9N)q5uE@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad3b337e5ce0fb46bc169a696d357c4c9c143de GIT binary patch literal 2264 zcmYLJ3pf+(7vGX}aj8$Di%)K;&%LWlj1bHHHkUPXE4MP&S=dJ3=N3~~A=XGGq)|y| zqOVP`To!Qob$ftoac9*_nhB(-vTcWXQi!swgLbEC9sR5 zk8H15m(81Gx^OVc7ytnN731LG1$J=QpOAz&A9LXx0C2DbU1H<%x7|Jp+_zB2e}{E` ze&l@*r1y?KABs-k!HYQ%O*a$qbli9{Gay`6u$DP8buowu$-I^>X;tsG*u|zk!lqNC7UH7M2~A zTjUmd%fiuUmvtaJ6mr;adiQk8?O42NBn)DKNQ4+38|^f}hMAF??{s)1?@Tn(&en5$ zeZRJ7tC3^$h>Lm2ZE-~&_SLe%8~w5-#nZ*|ezm8PL{r!wUC_s7HnRuhBkZOqPeIgd zHmoM7oyCb5kG}fBQ zC^~B*EP5|*ci%EY8V+Ti@fuR!`>qxi7^eNmb!VXXb~f$9r53OLPBXW+H7x=sMasw? z>&i0AVZD2$AFaZt$k7Uy{GaZ4q^@tuypBH=kWlM?KS>8~9|%?G#Cg-&3T9oTzQ@hG>b;~NGKDW+PAz3;`v`qr@B$B^8?aRaH*03bR?6=b?Iq2^i5X>F-b#F) zNK62dvz*uZ+c;^EzQ`h9!_%I1dK^8$>2d3UUEn>{HfCnT?v`t>S;jYp%7s15?8F4DX=}{zi&ecOA+$DENim1}ZFRQ7L#^{ay?uH3)ES|Z6fd*O99n}27Z|h9-Yxpv}vQqlT^{S*IF5H;)2d=w)+*;^>Bc{$Y1~&QT#FLRM zEIjDOQo1f!LohZ!ZX!q%U{qn}^ zhLMO%EZgYo>kVNs$51P|-2s|S&6S5_sOQ?ri++bc=(fZ*-KAyv_(Pk~gvYeB99JK~O^|4ZQ z?IVVqak<7(`C< zDNa0-x2?g^WOh`#{bfGsO52`sG^~_H3UPf)zf!DM4gqZm99o@49g$7ds|CsP8|CFG zB0|CSaJP;yj?|3H3&?^|zh4De>Vnf()_B79k*LoY82RmEoB8vz7(&vA=Prz)LY$k2BhdcQkHKB8% zL?nj&6$m~;sbDwZ^}$$aLa@rj+W5Hb{Fzy|a3*Hq%3Y(gv6n53P>07s=UE z%kiIx{Ggbl(lL4C?vu~3yc|IxMQ$=ejww!Un&TjpQ6K4~vs*~8pCLwfEUz&xI#kJ( zU?T-`wTHvV31ZV)Y($9F$kMBP#-3#*Ya-v9dgA?Nc5@tcU_T~~qQXKxXzQ)Q@tb!r zVt&$kyc|XM)I#xZREd1qKLG$t6~Fsj^3~G%u$yS0NXs&~x-BiUo{;wYaZqq_)`pGp zn*p2shQ$j#+ZDe+W}qu|Y|lJpklg7BqOxKyJYFpkYh|XeD*OmGB)jCwUPc4F``iWM z$!}Gt)3V&-1~J|o_PbeTng3Ol6^>Us*3?aHQOLhd125}V~<@pSaX3L)K@3w#G zu#nsEtNaTggh`@G@7H9zb<=LXruN$=bO1wu7OxybuN++#&qP!JjBFF&980JK>99m}3uNG%aeV@YrVE{nO=Znuk`^C$*aSY~$1(i?z;sv_46f&wd z98^=b_R)y|0z9dQ)0bfCtd8k2w6WTaNPzwc{n~i6?*v}Is|YU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..8f10a97c6499f97970e478f2be3177ad29ba8c6d GIT binary patch literal 1360 zcmV-W1+V&vP)EX>4Tx04R}tkv&MmKpe$iQ;Q;15j%*8WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Kg)$ED_s%9Cf zcudUZR>kgD1Tcm{^h1=GsVCBl8F-Gbd-(Wz7vWjn=l&dhO5S9EPb7{q-LQx^h-Wt~ zo%23%h?OLT_?&pspbHW|a$R=$jdRgqfoFz{OlqDuL@X9NSngm}GF0Lj;;^D>lrLmm zRyc2QRx35ux+i~OFt4qoxlVHwaV#N$Bt*!lp^OSFL}=AWF_EJEn1_GF@h8b8ldB9y zjs;YqLUR1zfAG6ovoJm7CIw?a;KjB-#)0l#pjo%=?_=9;o&f%5;7V)zs|{f8lk|F9 z3m*Xk+rY(jTa)*I%N=0&NtX=Ck^D4;LIHR`qi@OqL$^Thn%i4zAEysMhPqn50S*p< zi6UjMd%U}+v$ucGwEFu2veI(E`?p6V00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mj1V0t@wFI=pc%ap)TEuApQf2#l?a{#X%*7 z7K=^57%J3W!Ue;(g9c7f6HLxGXP(buPVVk`-+S-Am%KRzh=?wflter!i8zmhCM&YA zz9I|jPVK+N&5dvLeC-238~_dgQS+LV_{5~dCz>^%CCCL-r4_b+%3vgno=WSbGuZCA zr&jCTK;8Kbbp@m|SiEf6X}a^Z4L~}BZLbd_(I}E$A4bkwKD&*GtjTKl^VBG2>u}(; z=4&rO)$Yux5~MT#JgX9#8&n6+>aj0RH7i|IgVPx-M#6Y}QVMRLJp=JI@?-i_=HKg& zsA)1wcYZ_M1MKy-{5l#%(*E<*rKMEA8qB`U?P4 zqnH(uwR+TG-TAJ(2b4J+U+vI#mkPoz`!#N85vpBx6HCcn3@0|RluW4PY$NCM(L|P@ z=Ef_4h=_=Y++tNib36+C96&@wM09n^?HvfCYsS8u!QQx=@^8f3&C+^h=_=Yh=_=Ys!;L!fTSeiEX>4Tx04R}tkv&MmKpe$iQ;Q;15j%*8WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Kg)$ED_s%9Cf zcudUZR>kgD1Tcm{^h1=GsVCBl8F-Gbd-(Wz7vWjn=l&dhO5S9EPb7{q-LQx^h-Wt~ zo%23%h?OLT_?&pspbHW|a$R=$jdRgqfoFz{OlqDuL@X9NSngm}GF0Lj;;^D>lrLmm zRyc2QRx35ux+i~OFt4qoxlVHwaV#N$Bt*!lp^OSFL}=AWF_EJEn1_GF@h8b8ldB9y zjs;YqLUR1zfAG6ovoJm7CIw?a;KjB-#)0l#pjo%=?_=9;o&f%5;7V)zs|{f8lk|F9 z3m*Xk+rY(jTa)*I%N=0&NtX=Ck^D4;LIHR`qi@OqL$^Thn%i4zAEysMhPqn50S*p< zi6UjMd%U}+v$ucGwEFu2veI(E`?p6V00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mj1V0t@wFI%Zc9FuME19Fjte_GubLBG1RWRGKlLZ}Dd4!U+T8k-OSi+$#;9QW4C3l+moIC_S?H$d7pn-DcaQlFW>uf-^=?!`40fcMbt#( zF0wViO93o98Ku;c)+^w%20W*d$okuT$G)hR)IFA+Otqx$wO;}0H1+|Y)4?GC`1|92 z3eY%Lz<)MEUVBf~4k8r*U2c9P0T^`i-mx$SV`ST5|IJ78eSi+BFqRi0VXp&3L`1~h z;E(?DJO2afRt^R80d>n%R;XWz#lrp#Sz;PqFmouFLC;%J>x)ATK+p;MF1^MCBO)Rq zA|fK1Y)wg=GYUjQw=G9A4Y_#SlFfyNTs#IzH*Z`J{L2gxQIvfEx_#enhbG=r00000 LNkvXXu0mjf-IKvr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/nutri_green.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..329f13911b6d125c62b7c78e2b802d966917ca62 GIT binary patch literal 2241 zcmV;y2tN0TP)EX>4Tx04R}tkv&MmKpe$iQ;Q;15j%*8WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Kg)$ED_s%9Cf zcudUZR>kgD1Tcm{^h1=GsVCBl8F-Gbd-(Wz7vWjn=l&dhO5S9EPb7{q-LQx^h-Wt~ zo%23%h?OLT_?&pspbHW|a$R=$jdRgqfoFz{OlqDuL@X9NSngm}GF0Lj;;^D>lrLmm zRyc2QRx35ux+i~OFt4qoxlVHwaV#N$Bt*!lp^OSFL}=AWF_EJEn1_GF@h8b8ldB9y zjs;YqLUR1zfAG6ovoJm7CIw?a;KjB-#)0l#pjo%=?_=9;o&f%5;7V)zs|{f8lk|F9 z3m*Xk+rY(jTa)*I%N=0&NtX=Ck^D4;LIHR`qi@OqL$^Thn%i4zAEysMhPqn50S*p< zi6UjMd%U}+v$ucGwEFu2veI(E`?p6V00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mj1V0t@wFI0`P3EB6vc$myzWT7Jk%%b;%pNq* zthtGkG@023DH#mPTviC{y0H?QL1fm4a<1pzd+zNyx3^`ueaX%3xxGE-eBb$ff6pnf zN-LXedS9%0W?jzZbz3%2HkrZSHx_I>@2>OL?LkNMg*5Bvci zq)5WD`(zk79wAgURlpzc0RW^(0s!Q8F(e^@1xfkL&U%qBPY-P7P9{&)ee`B-Z7*2Hv%3>fjGml-*?}W!w z4FI@&X9dIKLG$2?xtk~T%W#)TeG+2ORX-XKXrWLR2wf=z~J#z!{ez|=>FwPP9H;WunUJybeIwVQJ*F6e^B?MS=-c3z%2k;1!$dDdjOj5xgX|NzKEg{ZMaggMMFk-es4+u zJHB+_J|^;?-*NzercG$9Cx8F=o0qwQ8j(=gOeC3#Ey8gnn{Vg{&!$d7tcvMriJMJ^ z+B@q_3s3FULOpRsfJf%xi)inxSNyJ! z@C?)8x&Ac#jm_}ZY(;WvI&Xy=n>Ba(ds8o;3w9Z=WmSd+*mGtA$b4TaT= z>5Z>`o{BAM!f7r9lnMpBdxOhi{8d_|6+$*%eH6(Jh|yy0$BPm#W<-VR5BLy@#pPH;7yzch=h@;)vE7^f|jy{kwy;>Z#Zw9LOJ)-4Oc=X@mF6Y6EzE zw3T$>ZW`A=&6XI<`Y-eTDYqm;FG6Vh%;` z3z$U!?+S?a)qnN4;kzVAE2|e^Q7KAdG=o;<0ya??ijYuD*YFpP8X6*N{_bJvVLIH%chPWjNPybo7Z2rLUwy>GSN7((*F)u`Z0m`$UvF|^cJ-P0yFlsJ zzIR)f-eX)Daw@9gFPp)e5A&<~Z?GG&u4p(ke|Lr4&ExuxLK=Ts-{b}Sh&@={VY?vS z_0>G*RSbgrPTj0v^}kjApju&9oeJ;G9G>?_x9?O`Tqx)zcCfwEEF?|+LhvsAZ=pT* zci+u!RoAfb%xDo}oO&}l!`iIr$H#^n^Upb0#_t!YjfgLv^WmFRz?$Fos!Uw{O8f3i z)yqy;#`1s3FLm9s^-W^Y#vak%_T-Dq3%Fz*)p~ei(bp$+Q}m}E6?POAiR<|nzsSX* zyx`_^AGM=zHJ-injaa>S^(Fb%XkLF0@q+44eJ>_t&Ptje*J0&f7B%5aShKZ&yKeeammIUe{R4xgg0oDQAut_ZFdvXAFKF{qa9a z?|TgMtI*ilQ&-wu-aPkgaKnN{xw+EPjByV+{Tcms&SchO+|<=~mT9);21%@Ld&ByN Zf&caG&_yNHfxyJf;OXk;vd$@?2>{?KSkwRj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/broken.png index 0e73b4e957aa070a20f0fed917a223b2f3df5528..c5a38c1b2d3f07db11dcb7cb79af29328023e256 100644 GIT binary patch literal 2887 zcmV-N3%K-&P)E4q`?BFDO;_pX&Oz;lC+RCq3s5V7KE^6`>3Rfwrfpjm*Rq;#qzUM zZM9X|-f!Of?w&h$=H9vQt$xYN+&gz>&d;1VGjnF%W#YgWCQTlgI%A$xgTA9L%HLl< zaS5JV7Jq%f_ss>AZ@zt*ban2D^Y9KZ@8wqxm~_syi{fvgKpXq^|2jcGr2q)OX59u^ zy0}T6+g~b_uDkF1Qc+wic-zl@m?+oL_RxS&30imxhk7~%4J{Dbw*fl7_9F!(@=^+b z@Pth~FC{Zz61~l5=9kNDkoEU{M?%1MH8hQodRiHg@>69~3P2&6zl#B2R%4?{kM#D& zy=!B~-o2(A%8*%CZ`rVifDgJYtz;YI&1V%(9{`XEEgS`Z?1_#P0TR)sN-F@MkPx80 zPw^Vs0(R~Dl~J_L4^cMYRDiFt7Tg7n^CApr!1|Uh&Q}zKq|kW&@{}niUpsDX6~5jF zoIZd(ZG$GwXI~jj^!|I-B)(@cqZubHSBmd?XlYO}x;)!;!RZ5fA6ajn8`u8GJR{ZL zp=o;xVmYLzrY(%~F_d&!mm_j10YJT$rkfMrR=-nc(qD{tFIBHUnj#ya)^ld2*D6)r5F=U|;DECWR#&c=@3DK@l2Sc%+**ZI>5@-5HI6?Wy)q zzmNr(A)w6o!7UHVGrM-C%$NDV@)fIO>r-3f`hAy97-`d(L?d|R6 znL{TJ_R=>C^aq7KvugQZE36Z`Tzn#L&$BvJt%j5_pZ2?+2hE2^x>b#s8RKC z9n<6OTVmnyjJy!oP7^?Hzj5YGxq95^%{!h=`lZjw(UY&qA}O1>3miH=h2|;%c%|ov zNw+@L8!G{Mt8QOup0)4*1O{eLzs96+OzluYfED;wf)ErxV8+C0aUQJTP^1tF3gy`4 z*ltx804JycQ-|Qd&d#Uf@30goXIsaP*aCWvy=uPow7)8$(3>G!5n6Bp&Txh*Lo1=e z_+FC*U-ysYrrf(3jkmRFwgptqe4hIr^<%O6Qj9NWaKp$+0RXHZRCvJU z15TYdDR+MLo96kj95*S2hv`GX5PDn3&lB~kwg7v|!g$x?Tnq24uY3R$z%&%}6PgDo z0iYsuK9#^BLZMxjV56`Pp!bLH81s7igS7zK2S9i@!6JU3|Gj^kbZX^YFNCNF&IH;Y z@L3D)n;nQCA3%(H^B-pJC%8V)N&w74Dq0Kl|LcMgp3B!z=v5n@u{3rGvUcN^RNf;S zA4rw;tpWkB0l`vH*;It_6xf`v8pH zECDp^vUWQzI2F)z>3__Q&b6n1^ohsij^($>sml9;mgYDg!1^5)uw!?+$3m940D2K% z;M0y1`h>BaC*l*_O%~n_Hbgr*Fl=v!fvJUI3oBWM+efiG4u=|NFoscPv?AQnT%iEXR)M^1I$m z`hcN_@|*#*;EX)eD)f}e2(hhryx;VdWkvxmWI91G?3$Me?(?}d=C)Tei@ek4&lx82 zfN;4!ld$Phcz)ALz)yd-;p%-LQvqyT$NC85(LBMh9Uow?10li#6y7Il17 zK)84Wf~P?{`b&a3);36FnbX`uw!1>Cl5g*48dDZM>^HSf>v*(F)yQ-i@!wz0GGcP2kXcz{b`mjiau zr||If3+5(!`ZIOIGHIn0Ku-*T@ze12t`BTOJD{x7;mWsx`noHsqUZDUY|BO4X#rVG zR)ZpAeyC~ZA!ruhk$Dm5v1y;l7lFPrP;@m2Uy`TLAO*mLLk=u$u#SBuUj$r-==MU< z)j2QM`hwR1m;pjhczx%FwE)8Fv&lT@<#ZNu6#(<60}E9GPm!y!8Xq|KhqTG*8hnHQ ztYP3)z}J?pGS^(*{_wI&Krw6;$JJQqQFkcN9{fY;^&5@>;%rVVYS#(8E$r7{)p;Km=AKtib2Sq=d>AjLk#=a=-3)yU(3 zQvt2RCJwy5@CMn8BdxX{8%^3bJpk>I!OUNdA5VOT*9LQQW`0qs1ut8%JpgogEk@I_ z0cQ+HxOw9yGXz?@WuX22liBwK2_0E2Ux-NWrnoTSbhD!68>up(>wh17)0y5}p@Upk zU`QLnL!Q-AmnxI#1I&?Dv@Z8WXaIUz`}?4o)}{cq%k~J;WS-3%zH<+fbvEEs0L)~} zh_M5396d+=l)2B>#P!{xj|-&H96*B>z>_1}{DB|~AarQ#lMpr(HZR)w0fjBV1!$8I znV;Tzi!?2M$K;n3@lQe-ng#{eynJu>!PF(qECg?c*dV+u2$uGbh>7!=2)ztd6s{ei z&5NE5e1TAnAO+}f*Dvp`lk3*@L~pZA9*7$z90w>LC(!#8o)!SUz+d0d@d>`Okf{JV zK|7vT9s=p|421z)sMH$ZKz&@XA6)p99dd)CtmaGeOeg4qR{`hFoV_HfWWrON1;9i} zX&&ISzFAf@coGVI$H*MOdU)Z~%+7%DkjK?#rUjr<{iG{W{~pn1N8%)ycbZfS(5}9z z+Th`Zpbzi~4+Q%FDuLs?WKBIdN5rWz9iUpT57aUY7>?t)0@??iQp8j9IyWzx?>q$0 z0yaoYn;I`k`z|Ea3dRNv9TPFGT-^3J-yxX=l8yMyI&0h`uvtxD6!mNY28UL5kcRcZ ze^y*DR{>z0hnBvvo#*txOi?Acgm=+(tvU2QAdhCDm7r@Vgg85FX|w+1lvU3@j;q}5L@BhMC(07Ko$}H~( z9x_7!H^5vGVr`K_vKwS$KvsjU3k^dT5=;A{touNr$W;K(>~*7|<~5YN!6I~t5bF!F l05nqVy`G^!Q6(1P_5T@tS=F)J4pjgE002ovPDHLkV1g4~bT|M2 literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCim50(?STgWUt}+`M}F*uJS#r@njl&e_Cr!`hX`N=oeP?82fV_4V~SIyykL z0s;cQK+1tjRaKRrpPxa7AucY?(b3Vv!-K)sw4nJ@ErkR#;MwT(m)6EdAc};Sorr&YAkCq;BjR>Xr?ozlWX(;|BJny zH8q*f%Pn`EJ=^;UhoRdJAFX9qw+Q*n=G@lH`XOSvGWU#4i+1q@Z0BCY9?`ICp6c4U zj2mCi$~*mQ=}WGH;#(V*{ZEF_BU3k26;S!?_DG6#^XA)Ds zaqKm0kPn)1$h?r_yY=dYOh+81*zD?TT*0&~bHT|c{f#dd&J_wg(Z4d?!`aU0W6fR` zO9`CR1DJN7ta#N%#A?+Sjz8hSMnzoRj{r?s%lJ UktZ&i1sGfmp00i_>zopr06~z-3jhEB diff --git a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/deny-unshaded.png index 2a2832c15df74180497cc7b9e80ae130c58f97a2..5dbb1b66dcb0ce50e4f4b2cca80b410d97d524f1 100644 GIT binary patch literal 2539 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 K#v3EI2mb>*`u>9e literal 481 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~;1^9%x&N27x5!z2o&3mj4fZ|NsAAUtcdGA`%`R?$#gK%E0jM-McHx zWr~A1OG-*YLqmn5)s7!OK6mci<;#~V&z%c2=Aiz@g+NNIB*-rqs2vk9FkU+F1gL_u zz$3Dlfr0NJ2s7@OnEe*$KsHYo$B+p3x6>~2H7oGA-o2w$JUegE|NpDAb-Nm5gDY<^ zw;xH!FW%eeqS4lz(wyTU(fp`Hj(wlrvT2`+WZhr-bcS#;tYo<2`*1Ov#2%K$x_X;P z!(7pWyk4ff1y_|`PiCx5YMifd;V(;W^j7a3Srbc>89o@@^Vz{R@16Pqw#y&iS!I2g z@by4Lr00WI52bb#TunMnq|OB{K}ZnRS9g8p^O|J&6joc}K|nb9?3gQeq}I)!AOrqA`+O*j5Js2L=b zt!d;AuTS**@V8{zOdh50%riqczfI=d#8`MCLBg)U+o0n8$%8+E!NlO{>gTe~DWM4f DJU!9h diff --git a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/eject-unshaded.png index dffb34087110742827386107354be4842556df54..3e0b2c656dc3b0555181616f7526a29b59e3ea3d 100644 GIT binary patch delta 1372 zcmV-i1*7`J1mX&i7k_{V1^@s6^xSN^0004mX+uL$Nkc;*aB^>EX>4Tx04R}tkv&Mm zKpe$iQ%glE4(%W!lA$_T2NiLYDi*;)X)CnqU~=gfG-*guTpR`0f`cE6RRs^dzd7t}p^eY9E0X~st?f%Ws@Z4huXpVr0|v#1Ue#)Wvcav$CNQPZLKKRik_%=d!|ii?dp-v-Umt3qu8M zCBt=^!$@EWNq?juLPi}GRAC`Tt44~6H0{Sd{6mgEMJ}0K6)_@99*t>dpXf!R;e8yzir1Pp8g7uOw4-UBXo zfWaqSG9*Xx(-ewD;QfrgDG!8ifxb1jxAs0xAAl@%wSRmA92^2;CCXm+cz17iZ~vZY z_xA(5wsORh8``M=000JJOGiWi{{a60|De66lK=n!32;bRa{vG?BLDy{BLR4&KXw2B z00(qQO+^Rj1s)R%De=R=9RL6WUr9tkRCwC$-OWoBVF1VR-%RUXdciy_lqM4PBAvnr z>SBSH5Pu}?)E|&Sr!HN*h!+ob(PQ}+bkJU4>0l6E3?vZ`qHGddv>rNy#7ZExPnTVp zY~7dHab{=c`+;R&XMXd{JoC&m%QL$Y0002c989Kf&Sd)LN{?%u=J2%SH?ROq@6YsB zr8hUenA`2=)l=)ta@*SIxo9nUwI{|Q-=+o!JAZxI4PaefeBgZElGIRcTMJVwx{%w} zLQ7IZhulJbc0pgTjwF#1>t}cyDe$;O1^|4zznaygl`1E`6zC)6{ zZUUm7U(*JthjRgpG0WfHTCK0rT72?CkKC?+DCZ}t&9L5s&_7$(vTin73!|QI*D~Xl zq<@A=?cU+`u9E2y%^G8t>urPMlwb2PAe+@=XIppF>*aRA&Ox)|rZ&bQzotE)c);m! zhF5yMWMl`#YGo#j8BQ-F}`J9M_=|t@G_{5dced)2ECo)mYue%$1_4&ko6$&3@ z+jlod$6r_KhI!Qwk6k`rB?SCcgmWftzJHEAcx`6Es-kF_tV`R;zx*xB|K4}U_wihKT1-7r79hEd6P{j1*fbi20lX1M#5tNpoQ?Hb4!Zou_4D#!Y61f-f1Fo7s+^s*dm4V^iyLVTX%M=H3mXwr)hK349s~taneD2)2 z%a<=#o;x?#Jz(n8sm4l5Kx1zD{YnH{E-!FZN!X zEK#pAJuls_@r0&8rNqIfPfIIqY`^E-zK_4{EhEdZNs^QIKmE3{-e6hv{~t@*E_@eA zu{BXRzdqb~rStv%raCUU%aX6EIZhdA*J_l$sJ_>%zoYYK{+hRQ8IF2D{GIP$g=X!OgZ$oL~s$J`}y<~s=TOs=9 z_+`#n(=r8q{`nE`8Ks=dq<9?d`Ea5Sw9fXv5s9X$twMxJ+m+BV4ckz2KL8{E{rSK1UT2kINmle)KzMn z%Jh&)NKqu=Ba4x|3ByAp_xw-yH*a3>x{lGlWoMqvwxhAY$YAhv^>bP0l+XkKlso@$ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/meta.json index d0d4a1f0e9..b9b202a57b 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/1516a728931b4985c1e86f0c5995a5aa1554a1ad. Modified by potato1234x (github) for SS14", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 @@ -9,48 +9,86 @@ "states": [ { "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, "delays": [ [ - 2.5, 0.1, - 3.4, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, 0.1 ] ] }, - { - "name": "broken" - }, - { - "name": "normal" - }, { "name": "deny-unshaded", + "directions": 4, "delays": [ [ + 0.1, + 0.1, + 0.1, 0.1, 0.1, 0.1 - ] - ] - }, - { - "name": "eject-unshaded", - "delays": [ + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], [ - 0.5, 0.1, - 1.0, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, 0.1, 0.1 ] ] }, { - "name": "off" + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 }, { - "name": "panel" + "name": "normal" } ] } diff --git a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/normal-unshaded.png index f98b47be440488d8d9fca04cf96f039eaf142c9e..3f5a40ca5ac12f54df9ca73cc3a6b8d592f5921b 100644 GIT binary patch literal 1003 zcmVEX>4Tx04R}tkv&MmKpe$iQ%glE4(%W!lA$_T2NiLYDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RR0!X5l%$?&0I>U5saWpZjz4D+QAQK9P8i>4rtTK|Hf* z>74h8Bdjbb#OK8023?T&k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQ_C5IvLj`Rm!*!a&NMH#`q#!~@9TikzAx5i4iitGs$36T*jz2{%nOqex zax9<*6_Voz|AXJ%n#HL}Hz^bc0x!1xF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVkDYy%h99ZlW?E_Z;zCtWfmNAlAYibdf4jJ_!kgl~bqHMh6+K29HiEOoVf0~{Oz zVgP%Z1oSazpMyHI{Ex6+o45l z^!sIc1J4^Ps^X;|TbuPeplb)H)$+di*dIV#Z{Y6i5lealcm4q4)^pwJi%9kD2DNMw zdC#T*07N24pFW^vl&7~aSFhu=bNJEOh5^89DbQC348q(2B2s<7RSQ=ol#efPIEfwL z`|ksT4uU^=SE)@qgRMyLa$9{KjC~BS@&^z%^4^;7y=0Tfi%4}U#(;VqN9J7rtGrtZ zEbmIw?z_R!JD@Y*h0Pb=tK5)Fsi);#Y35Sui4&n|mgDl#HkA(HJ0J-fKV&}y;Ou=DtKgo3$YLpja@~8m#(h{iHK+l Zd;xw!RZS{CdPM*L002ovPDHLkV1mX~!OZ{w literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Nn{1`qXK+FTwiZt`Tx-O|NsB>_4OhmBH`iTZvBz13=Hqyy}PnprZ|W*F)@*c zhsV~|R;S3OfPtZ;q$D&n)Y{rwI9iRzMdJAJ<8$ZEUAS;zb#?Xf<;z=IT9oI`6>De! z8n3i-_9P%BR}$nG3^X4%V0a@T69-huS>O>_%)r2R2!t6$HN1ePFs6IDIEF;HznykF zui1ddVRvg!Zd+i+^{Kc2|9>{;rpg2%9oN=&&E-N_Z)XUbEBrKh=Ofgi(s*LO;GDR) z|8_r$zg-oaAFp$pSxiGE*lU00o+nwsxkTJ9~{a%bYJnn z)bD;jeirN%{?PUQ_F0_|4vf-u@5+@wa9p?N=$OhUrn{y@V8!D{q2Kj`gMKvvYyXl$|j#G5cSCJD8_ppnImGiXAA?Z`=I#r@fr| zjXD1xR|*JN&p9a6WygH`;I}U_=T!ur{jcbIm0%AwEzopr055(A@&Et; diff --git a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/off.png index b9aa0c326a17a0f245e85372b7df8e52e7d405f3..aa1857d1b6bee236ecd998465798b1ad31e69533 100644 GIT binary patch literal 2321 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 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/robotics.rsi/panel.png index 95f1e4d33e9cd2d5317975432f8b735e80c480ab..e8c4b1a79d81a54ddc0fcc9f4c9ca7d069178c58 100644 GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V1C zPZ!6KiaBp*I%WtvinRS-%DDK^)yY@2#EONr#5$X11Qlt9<@T9!b#ct=3KI0nS?r{I zXdaVN#pflO*IuPYOR?OR>)z{e#P#;G3>!`%#l$zWO?DNUJD%ZFsr>AikZzXv{eN1z z`fh!OXBmtMePVD*L(srNKses)-r;Sz%({K+nKXVJN;>ATRQ|!C7!e8fV@-FPzRf&Z z<9+JGU#^I=wIbIZS?~0HXznk+`pt$<0Vh4a%qiHGzUF4V(7W9YSwB8^8pXZ8-8lc? z#kaPb1CDm?tNU11%DMM$`v=Yck{{n&Z`>v%H1Q#m(X+TYl79oj+cwR9a5_c&)alDF z^zA0+hCcRxs2{hp<;@)?52n`rbMEqT?brSz@lpKC+K9XNwS@!X>RQ%K-af%Xbjn-F z)Blq#4p)Cne!6SQ1&&mvPwSJ8-FiDgB2G)`gUi{(7e(vE=Pmf4vQY38%LN&k>9u z1RP#Qd9LGF_4C`-goNs=E8EuJVdg5WU+i<>V!=6&<(EIDJkhXiiI9&E-zIYDk9x*V z)5BXrXMXQJB<#gLzbf5-FBpI>mx{;UmJ z<+gw3hnDwD^On7PnDGANtPiU))G9>pv)-63ee4?h+ottQFDw~y+v;T4inlNrxN|e0 zQ4yRg!uscgDu*#CrL#|*u_yZSbIpdVs6wv=v*uFWS$}1G2xh+OU>d;IxNxEo t!!oy12?|_^8&0TOd|&l@;fV!ZceJ>KZ+ztw&IFpy;OXk;vd$@?2>?)ILv{cF diff --git a/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f044ba681e7924a3cafd3b5a679c365e3fee70 GIT binary patch literal 2811 zcmVcfb41Idkq_f62``XU?3N`F``wH{X0S_kF>^f&~j2%a<y9f7c z*RE}(-g!X&-rnAD?@Q_w>24I4HT@6q6M=gu`!B&hHd4&Uh&b*Mln-vafe%C~4E0KyZt@~W#g z2EEM&GoATHMn*yom|wxNl!&tLl#C|%ZF$=WKqjic*8rfuzdv3tU%p)QuEmxuTVg)s zVPn1CvamxS1uaWSwqV;*TH)FNfQ?Y$DERR3a9aheL{;_Jv17$M5RwCYpCVqN8nAWi z)=0Fb=a3D!1f)Jz!9CC(u#DVB5YWC{;VCrk_wU~y)75aRR-}3#C8d;+ij@uy4z|2UI_qlMf*!3K1hC<(%ew+Pv=k)9=4W18cZ&vqeN|fzv=L>j>KHzH z^k|Fq#rGHv_IuP#BZbD|hwpy-+VPfrJ8sPnE1K8m7v3q-?wLO?UNJ>J_rmjTn=oy% z9<4iR1Jq*b%z%4qO=YuMoD)f&CLqJK@e@56oJ*egd`1oMOjKK1FrFmd@p zyjLwiUX;f))MGV3>;C-bHpeTp;Puhr_yZ9N6&}~!Pag~;^Bxc3$icRD;d^R;t-Bz= zn`V;IdZrl!lnaXesp^{@Y4guyGCQiq%2#uEcEsDwM?(D5n7+EyKHz7Q8Ts; zhq|zJ7X-jNgO_GMIRD2BQLrbz{Y3cNU#G%!Q#}_q*~E3~`t_KGcPjkU)Kt6<4Go38 zd-ukB9XcM_OtY?U8DI~9-A}KJR}6s^P%bnP^{6M>HVb%-gRmrlf_~?F-!0OHpZQ6c zzV(kt41gX72^1dpNKaJQ8Nq+yjRW z37s9r4R;psgr`t|l7Qd#$F{}mqQBn^q38WYK5D>&YaWPK7$%V68BmLqCkR3D1JWih=(lzI8qP{&%m%d*+>(SuKZ+ z8#lI9mgC|A=tY2mPa7vp31f{XR(@Pfk{IiYBsBnqr5fDRGc$zX?}H2o%jGK@kt?hR zT?|>_>i}&)SymyRI$&(wc%_m-{tHxuzpW?fWq^gl7OGSFRMeJlS2St;Wmmw z0jZwKFriwJyU9Y~Q$pw-gK7fX=V^ep!HZ#(5}>frUskAbIaY#(dFo!Z5XyxLt3s>r zAO`V4fZ_XE1W*{Rpzv%rI0&k~4gm}GF2}~kLMLFrlpTil65#a|$w)!% zfR~TLmz81bw_0S!IfsBwl^_TmWLLGRj!A03lVAT<7WW(W&s?#qPNwZ5u7r_H%8fLNwZ!yFE{s#aL&iZ#mPz$IX4 z-pa;bKKseAyQw<6cI}Ebz}qxYi;RX~*F^!Vjm8~1bSQKR9=2k6fVYF?%{(y1Fob*d z?1@8Q=tOAjy?ZGy9-xs`2$xz-=~RQ$AcU?E=K`J1?9!X{K-InDGOQcIL!KRBep{YW z8$c3L5gK~}#6q{D=7OqO$nz4B#tumB90M)^P?IGKmo{KHUVY;?rR)6E_^Uc=)Cp2` zr4CJ!eC`}s^#`&vfbc?N{|~P(1+9xV0QSHVpvDiVtpOg$riP%9W;YvQEUkg+7PKzT z3am>b(He}cLiS>a1+o{^<5TO8M&=xZr~{5?d$_@Z>ji2=juFlxK*L=SQ2m0f_xHCP zJnFXa3QK}l52rqDcNt0vpb@n3JhcNyuQYvuE575CvmUPkqeNg}L4j8N7$c-dMtF|OT%m!_s@NnKLF_OH4|%-2r5b>b%KkmVJpip3s5(?V z7w8bHiV)ETq=W~uZ9rLYLH%+*OL}82!+_y9?kk{Y`JB6DSBC6aAO#wws)LZ-fbIvf zp0eT4m03Uwu@%{#PXU3=P6DI&&I+KLB4zdJrfgYUu#x~YoOU1;nN>f)Gk$1HT@pOu zEokg4bRAGtXDv_A4h8mrXY_Q&fDd2xC#MuNutHdYQ|jL}PtgAN&mtA5us}nr0+a;u zr3B;u1_66ON+F$9s(FjAH>tOi*a;1!5Qcm}DP zAu-Pum7NF5MI`}sR$~_3S`G5}UR@6}NBgog0EKjVuBRKQOJbe2{ue6_=G|Fk`t1M! N002ovPDHLkV1jRjJg5Kw literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ee39fcf951d062fa5e1867d8964256ce941d1c GIT binary patch literal 2101 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/meta.json new file mode 100644 index 0000000000..24c7cd05f4 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/meta.json @@ -0,0 +1,91 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..bc32376a67cb428f6f0c9f02d1acd574cf97a033 GIT binary patch literal 11132 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 k#EZZ6p_qBzVPx# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/security.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..cf829676d43daa5b90157948c5ba6bf5e6c52574 GIT binary patch literal 2211 zcmV;U2weAxP)EX>4Tx04R}tkv&MmKpe$iQ%glE4(%W!lA$_T2NiLYDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RR0!X5l%$?&0I>U5saWpZjz4D+QAQK9P8i>4rtTK|Hf* z>74h8Bdjbb#OK8023?T&k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQ_C5IvLj`Rm!*!a&NMH#`q#!~@9TikzAx5i4iitGs$36T*jz2{%nOqex zax9<*6_Voz|AXJ%n#HL}Hz^bc0x!1xF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVkDYy%h99ZlW?E_Z;zCtWfmNAlAYibdf4jJ_!kgl~bqHMh6+K29HiEOoVf0~{Oz zVmXjV3yIM(e&YbzqH)rOIQV__{&`_HY zg1CiJimk1!lrfH&DtqL8m6S@cRg3JF7=qFw380eJkRvF5y0zyi_bn+B4A$* zSX*sj@X*-y`{m_l`%89MC~-jCa&h_+u1sIX#pz3-a&~@G=A(B%5PrA$`+bKaLk~IJ+*Bv>pKF*`fkMS?1c5epY4larIe4T&ImJG*af zT9GnBzP(bZ1j8^;tya}C!L`+vW1eR@fjdD8+gU#%v@FZffhg?+Ccy*yU+yGA0LDg~ z&)ipg{%y(~s=7$x7ei4pL(8(zdX~J&oS63VUYJp21`|RY>wzG<%xp0fbxojY8VZGi zy|4;If+8mN6V~B;K9547U@H$A7P9Z@x{i9iE<}Z8Stt|=UB7j|my#gM#D<23+B{^v z=4H15`F!57sS)R*g^eQnoS)Y=D*=-Jy%^ z@`w=NXInbXw3K-{iDj!B)_i!WpiO3*)B%JL8_q$t$D)?hybw^Y*X>aj?J0VNfD8d$ z6&juck`h^IjMXH0GF5eu>^V>7fjHp8ho55X_&DZ&`4wZw$5AeqK?qSML`tc!jUcJ8 zs8e1fC$htDB`O_>UXOl1=zbwZ$s?>}9)`?BHTfXI&J3vLBkuV38}+nG=S3?!6^WzN z&F3LO+j~~&YI`}s*8zkOJNejcVwxrhAvkvUXd3{&y#95UBL;dkk~<;HZm-gs6anv_ zd#4Qmcb4w%Y6SR+Cjyw~b~^$>J0OnTon4K9=Y<1Ubt=>>Kq-Z$X`xPyh|1t$gq61+pwLiL*vBU9t_&SP|eCpS=*7E|~*VLNF2nD5cVhauOobVZT*Edp$AmEz^P2j6;G$bKG+h+)nb>7nf z57#$Rm73A^iZMb6rlzKZzjs%e!^p(ML_11|MdpBq>l-Pre~%shh_|xA# z)$jlPu}SC?VtA&(2&Y6C8yya;3ehs~4L&^K@hS$cI32OA2?iZ|t*Z@$)u!#4EcW(t z_S1z^9{v&)=sv1**q~vvz{CA}&at*luKl&A^S~2Nk<;-4{|hCoZ(k0p*whXr-p`BW6f3v(w;$G;F1YnsB9qClwQOsNmF~YDiKXcqdRi3UhIxFR zzu@*-xkYQQ?RhUgZ-SD-{PW!lcCG6!TN!d`nVx^-1eR9u#sB3!1Rs3$n#@|NrcxF6tH=eInJjmgXh>Zm~OSY@s)5EEWTsnwP6;MA5!8#I1VVtSIxMeu~qhA VRGYcl3SdHJ@O1TaS?83{1OQN3Q;Glp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/broken.png index 883a4a70e613128735a64729c150064f28c1e15f..7e7601218e9c553573e394966aef2b22fc382f72 100644 GIT binary patch literal 2566 zcmV+h3i8uYq?xDZQ1HA6~^@g zh{gK^+jp&ba6E(wARg~jgH^ZO?d&&VKv|uW0b25$2ugIi=E;Z4>h*UrWm(I^&Pk!) zhyj_ChotZ!Fs2?m1Z<1QiOD9AkYi4U|}Yhi)` zXyEDuIBUTIQ$GGwmnnV3X~x-Y>a-IIt1|~9B>iuk`(Lm8ns&3 z0Rl{fR$>X*Oz<)Qpv3!j?kpqz)|*y3+i&Rpo3}6hej2EO&>}DZbHMnt0esF|qQ77b zC^l@9_SWC1=Mo}o9;>KNvS1R3X6fq31?(Q^AAr_4B!NO90Od$v%TK_d<5zVq=AgUcunX3R6hAy$R;i`^4$8f8QZf*VXx`DTfXZn-UX!!Zh=&iD&GfOMzLDt)(q)1U?{nP0Thm>8Ln2R@te-kuMgb!VLX zBf|*7W)wBRMyex3u0hJf2a1wzX+2j8g+fB|WCS&UlFv(g$#382Wx@qNpC|wQ$8K5L zI8!zc4LUVr#mei9%@`cq7x$<8CsJ(yfwlkEo3G1dKe;?McvoJv+^l~a+6GYlYGng_ zfR;f6G(bGC7d}t!)6M z4&rrxE(F;Cs5>-(YOjfQ)dBaezAtuAY(p3d?FbRqcKj~U?&JPFC2i~5Zb}mGGmbG85(lD|Fo_m>iNbZYF7lnoq}c_5X)51e?^E+-W34z{?G$9&bjO#c1tm1-q36S_dKJ`T6x2u;f6+ha_ z&jAZBl1gEp^!R-H>PO?cw6g|&<2yd)B^aP1y6DvQ#{mXR0nH4a1dY@>j*T|s^>XHq z=ZL&>L@Gh|*4Io)jp8zRZ1tTn6Vi^um% zRND%kvdZj4r25S-RA&4DAJZ5d)$u~k1Mlc4bXD6Rji2wCJAvK>3{x(NKGAO=UK`Mm zfT#^f9-f?rz0PfD%_#~e-H4|yfnT(>%Yr3m%FZ|5H6>11WpTks0Z zX8@qx*sS=XuBS%W?z9cBCx~V6(#8#f55SVfE(FEpQ+hY_c9@>1mcG`Yt{lu{AHLgZ zuLgupwqBU5@q=~&UY7$|7Tw;fvkpI5V6K4f)0QUM=jb)RI>l4^#_#l6*fED>#Z>)`czdw z#D?v8)mj5MMy;;Q0WSl7wd_ixV!Tsxq{Vo_tL@PCStwm^hiQ}^n{+(C=|$&K2+{zZ zCIj%=+%-|4R)qWd_l=Kha6Q)$hNUu~xxLjmKl*N-SLQx2M*wYW#Rw7{IzICWU>t8- zbw}#ush0sd_J)ppnI5)xrYBg5`)h+&^@MhHUGuSX8W@`Q!OMVy2L`7^FB)$wEg8Z! zp^_h7Jp=4ML)>As;rRo^gBD-kK{kNreu9w~4SRz1fF8r%j_m_dsP+Xhz|I@g$4(7S z%9UbQ4Ybs=#;4s0J%Q%Z01`G;c1pwC^5f;`-rhvKpcekT4$T_K z3z-yzj8Ee2i&Go9ZGh?cm1WBtGa6-VTBD49HC5^j%%kDxF_}8Mv21)*yW*PoQK!|`dmDs%9V*?Lgv5M+boFg86Oif&y}vV! z)^$6b=Ma|30EWn!L2gfIGEwsNOV{@Ls=kurcg;d#rG2+P|Mp6Qi|`3;tUf4e|Aht} zAN9$ATygyk=DGJj|2E}keSJnPYaI=;({+ffV{y%Qf#Qu&>5md1{KAVbH6MI`MVTny0vRm?)JU4R`9&;Fqdt9^K2;(NVffg0vCICr-!-BV1H^=U#~{Qx`;M1&07*qoM6N<$g28y&9smFU delta 842 zcmV-Q1GW5y6w(GEiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPKe**+b zL_t(|oV8a$YZE~f{t_&!w z0(L%_G50-B0>t%aBPds5h=O>re~QVc8dgg&+|3?idl&e!u;V$_mq1j#W_P0kl+fqn(c&Uf03Y^evm6? zONU6D1$O_~Z2)`;#CPl1Tl$5)rp;+eACCej<5;71fQwI3|IO7gfku)pk5EddoqJis zaBQ{zxKBfR@HJk%9}JkQLjo%6+{BdKnGnC1ix{1m#inK=H6fMREfeEoeiiBBPs!_)`i19G$n7gDhat<807*qoM6N<$f+1vqnE(I) diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/deny-unshaded.png index da34b0b104638340cbf5b099fb16793428c82c17..11d9aa191d39248914e0ae28d0f978d62285888b 100644 GIT binary patch literal 2533 zcmY*Z2{ap67mhJyrWNf>DYd0zsio9RQME+WQX-9|rHm~ZLx@mnsXdf3Vr>$oVJLJ+005wsmy`##r&=oYBD`R>I?{St zk8l;H)3&xsFxf0*MT@Lw^pEZABgKa5+Glf8G2Pv{z13-1&Gpjtsi$_u-mfwUi>ewz zeeIUtHyO`B>z~1&=fvhv1=^RKq?}!^I%&SQI!n>{+IOK(-b%i=ykAQ1!Oz1z(TTHE z>Lgi<9s%L77K@HZh?{?PBOBcTeSXoLj1Dg4WKwH&2mfOIb^VIh2X7KUqM-qFVaD`|&Bz+dIY(ee~Hou?)PSi(Ke{-KdxD zSL=anc-*O|BkVep&Q{J19>Bk<=A$BmaqPa9%TC7-If0z8$GJ?VfL<~p`o}};Zi>D| z!VhL=1K2;f<(;H^qR6-5_CH4g0B6+>L@c%va*!q&1%=y6E*?@jt|BKXXZA=Gc@MR@ z=o&k-HtQ4Q#ZvCuoHsewIC#Q!RO3v-FKI1=0#!=7Df+nIwT$WFf}X__{kEe$5k~h{ z>#=B5py7?IwU9{HDcg#))zf!f1}BK^ueBam=G>DpYf_F@4yk=DJJ_T#UU|LgzxlH zW0r4UUE(JSaLfxMHa!hOWbnXT%`XBRAdB7%q7kIZf8NTkPZWs{;j9Y~dL>gD|MMo0gK>fZ&& zZ&nxUpS+`4JPx|NG{(2Tc`2xHz}>f*7inPGIfj^#2~m%8JnavQw@i-7MF)A^RLj1% z=jiq@b);+9ai`Ki@>STr;DbM(`sWdZSF83D4}s&(re(NGb+=6EPTW8sY9@j%IYa3p zsVv99EW}ue43$x&)^SsLPu+9M?!s?$OZ^JrcDI7;9xdk7_+#tm0g(U`oTAXUjGr+){v3&=LaZ(x2*xYZPLyp&2MYd|&6 zgv-ajgjpDjp12=^xJw#-u<^o&a*b~-TY}ZWLqvo%SLFLE309g{aM=>6SqkL*D#{EO zzsZD=2fAV}G#}0O+l+K#6F40Y(7S%IofGSYv0oFKNYkh!hU2?ftd~QCYlzygkfma5 zcWJ)rwSqcjw{Ru4vCEhSyTWjP%i4nE2eVkxO-T!nxqUBxQb=fMU;N2yfiD^i@7*vu zb58l3g+51A7%>AVwcp*g{6Zg_9;=}d=Tu3vC7KI+iJb$~B1a{E<=Fr!a3&({X)!nAFtGw63~b>XhCcRvI8SonJelZ@BWFF4MYj>7ebj|RZM=#ssZH&7FBv@P%bh<=1lKdO(>0@zW#O!-Ja;RTqPW# zr<@mcY-~u?NDwT&0JO}MNpIH?geenyqyJxQ{{jmDc=WMihmdDM)7-+7afFTb>#W6- zfujqN%m%54a7dWlJaNyJGj=iBNx7vhX`I$zE0B6YFHyPvhOZeP%KW@bDt-mdNv@t= zY|SHMT76mvMHvC`?m+lZ)o-OWdzUejHRnwYKW>Erhq*_HABUBB#rs(^s?aJ7@2y(d z5~$9H=CVUWL#RO7a_#K$;ie%u6P!+S)#V8 z=saoyoQ^3kI*+4=%1@-!iYdNd-fi-{X;BW6slQbk6Kyr(w)G$tgIXby+Cpa8V<)zL z7M~a^x!8IZA>Mh?^$fRG4AUWzPk3j#xG)r7Gl6*;-yaC{$k-_Rm4o13r^ghUb8fDd z;b=IzjJLsTAZk1bRhT%D(keSU+RP<#tT^nD(`81;SJ`^^!xxgCRy=LCwD=FNfFPRy zft8M6vmbF>AhuEgnf0uve77~Ekg`2ic3p3B{u{1{CibNt=7YoJc^~q^S|La*&@$P4 zE0irsfT(bgLfMmvmg_Lg<->pt;DL2rVqLOa}_}jtP z1_QO;fasU7U~LT0KG~ei1wsz7*2P7!U@TSIlJ{Zy6$InyIQv=7sQO`8v?#lbhU!|Q z6a<=q{tLZUk1eS_Uu`rCy322U7#0c`0W~y!sdMUPXH*!&D_@Jk(a$9a5MOJSmtqRL z53`!Mg0ak`A2N>rhlD4Y@ykwjf|~^b$NoCuUF72+Ht%5ikUl)f^MXcuY9(C#pe5AS K(Wc%CnfgD6VgJSe literal 632 zcmV-;0*C#HP)Df5P4_2(<#5@F z%m$?Z1_m~eYEZ@?$u5FPMlT?ZV5sghS3)TRB%Q?>9vpl@QW>CNFTucm>N~@4Jr{Io zg7zPn*Fkm}KrjX1D|}#VP#Hk26oAbRLiSUV0*ERDF0!457dY71)GPzYv7hE;zjM*6;o&5=>pKSgFP7z<8za`31Jd(oj6p@wcK+yj6ebsRL85v1y z3=%8^{YCylEyB%KP}PHY{`Mu3EGGsKWB(`^1*2dTjDk@x3P!;wAQdn$FaQ7uiG>4L S%b`L50000 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%0AA|z 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 S1^EpC0000M$tzA literal 563 zcmV-30?hr1P);DCwvBiNXLeb*i|wY|HxRE_bwylZ>+-sfK4{pb|f zD6t_AApo_m6v_I|767$!n1E(S0&iiHBPso5yWfE!;ES%$fMo|yrbxB!jY3fD=oc22BQ27CdCD9{Wfm)E#X zcs1Y)KtzFNKtzFNK%@wd{&WUJiZI9734H;G=*L$Q4u`0(g3p-JL_LZJL0F+2E zQcxuxCMg#Q&IG7mK7c3Daf0J*0bVJzjj+d%s|1y29~002ovPDHLkV1mTY B@cRG& diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/panel.png index 9e3049e07d7a844331a3a4f1d3b659746f2c4727..7265126ffb5b822b769a1ac8babd10ebadce7b3c 100644 GIT binary patch delta 750 zcmeyu_?=a;Gr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM~>`(@IYl$B>FSZ)f^u z2s=u&-CxSM_|etLSGB~7g|);wn`Q(RX@=$YnR0b;%`)=C4|8=H}ZjwD^Ooz=dts~+e|fhM?|$dbhF5ojx6Iwwd}Zc_jQ;3P^~tpr z_I2m)iwMnH=;H7(_fW(h>B3*>r#WoHH($E+a$jUc)1k>NX&RPRyV%$#O}(nmzp!Yr zQW(qCKYs#^Hf(#f<6(BO!^(&C&!=!$$mvSl%n6g}kyxr;Fs*(1RNdB+zrtJY%nH1< zD)#%?L&BF>@9Zv(Wij;)-jaLU%&N*tMx*Ia_r?24msn+ND^66JnzpVxv9X?gY1WtR z((@*0J#c-d$X7n^jzFB~ZQgfEp$vcj$JZ))cnCXuXXH@$RVH!fBGUmGT?Qak52e9W zqVj>Ya#zE9Z*X+Xeeas}q;dKEaE7a2%ZeO}wQp=c-cWn5uAhO+|LM|OkDp#^G*V=n zQTkVoG326e|D`a-wJ!0`1n)h6U(I$+xk1i!xw~8DCI{__8`>_YAFEH^c%_^#BczyH zYv+!ax6h}EDy+zezJJ`U!6m-pP^)WqR~Q%bNt7N~!R#gr6Z&Cw;NHD&_8oQ=9}JZ5%5KQncjy1EYtMNutNlr> z_!aT<|J>^GLaQbEh-toRxIh a85yn#X-C9Zhl>K;&fw|l=d#Wzp$Pyp*jm{D diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf0.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf0.png new file mode 100644 index 0000000000000000000000000000000000000000..f52017533a3616e44d11a5082fe5d4984d589d75 GIT binary patch literal 922 zcmeAS@N?(olHy`uVBq!ia0vp^4M4nrgAGU?nUwMuNO2Z;L>4nJ@ErkR#;MwT(hLmD zKAtX)Ar*7p-Zjh)E);S27%jNeS$z2esV<8S$t5O}H+wj4`Y9O0&B{KvM1U#wZM()& z4cA2_1zv*fZG2m&@aRoi>D_i|sj2?UfVWp>AJ_ge=YCLJ+a2*Lj+7n$%dK0|7z)@J z(uX9$x%&OQ`Dg7ai(h^XKR?Sj^vwSsORK;A&pv+t_QpSnk57H(RajZLT6Xtx?Ta_E z``4GtuMM%QxB31@Zr920h7B#}5)`X`e~qXy*!fP*^$Xvxsb}v?p0$#j=TiLe-H)ob ze%fq@ll~o>djB+okYD}VqX}QiKW~t?{=Bv$>d5@_v!|YwKOa>kIoJQF{om{>&t5;S zK4s9*l7IWP@y5M%%Fm=3<}eU0XlhpU!IJtja^^OWXheH0FfB$^>GwGbV2kV8^Tb1~JU97O! zsrT*b;tJi3^XFZZw3EB*Y%6wt{cd}|Mdslj>;470e7^UjDtEtVv!h}C>PbIS=lM_I zT5!XE|NbvYpAPbOAN>2JuIkv*zkhbVzHvU^b@`7s`4nJ@ErkR#;MwT(hLmD z!JaOTAr*7p-rblT94O)NQUB2dD~l^jgQs73ut1Zq^%p+}U!&h61+U}l{F-JfSnL#Y z(GX*w$k!<5vh>2)Cg)D88(w0pFP}URQqRsylFbp%mkWPkxqsLlwBX5{QK~} zJ-U4H);hCq%TAxSpEGw)cK!J(Ipz}^fcpL&NjdX%Kd-!f*1IGBmd9=Usej&Nk#)7| zvwHh`v+qgnS+?i7Q3Fr>b!)-5tuOfg-M?R9y64;H$G?+4w{K39x+r<(9Z%k`;IGGC zn5G&u@T@n#p0#mjnbI?9hB=G}Bq<_d!WfRfUH*N({_(d{uPXiic>L}2>2vmfdhqgK z|IK3)Ut9kEX}QW~e!?2-13PxV3_a_&`%}KUS~tjlOJe^{T4gm~LAzngY`NWgGmb8O z_;`!H{L82{Zk(BMwIAAM&v*YUe?DG+*Zlu)y!DsO68vnqi+jnBUAvz?3$L_u3}eU? z|9jt4=$pP(Llj4>D#^{D`1{u@O1TaS?83{1OP8)Z5aRn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf2.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds.rsi/seeds-shelf2.png new file mode 100644 index 0000000000000000000000000000000000000000..cd379eb93845b13f9be536bac1038bdc197bec1e GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0vp^4M4nrgAGU?nUwMuNO2Z;L>4nJ@ErkR#;MwT(hLmD zqMj~}Ar*7p-r49qrBJ5f<9ewr9P7k2URboBA!gYyyw`N#D&rcmMpYvv+UY_U+03=h6;~^!4{2|H>Zz z$SqUZzCLS>xZVEM_3ekBIbFJL*ub*Z+t|>${L}B69oq%2UUp0TtnGet&9~z-=Ea;l zfBydT#i9PQ^BFjA-M4es{=H*v?Pcxar+;qtZ@=Ao_WikCHNX92u4fniSvT!y#HsgF z4lxM5d7JNh$mzPO(#qskg!JGb8=>qtq=ne#vQRh@AUEXxYMDSK*T z$=dRNH|=j7G?b2S(4nJ@ErkR#;MwT(hLmD z?4B-;Ar*7p-Z9LW94O-O@V1+PxTD66hyu;4p@o?jk8Zr+l)lj7waTu}#XB_pUTLu| z=W7+~@+zEEvijiB2qQORjy_i}>CbgithbL&|J43v4!_fU2eTRUsrC|`J3nE zx9r=;`0K8({kof(;rq-Qe(t^LdF!gYTO{L^<9co;vkc1%{CWB7}Z<1cP~8~Z(nV9Y`yQlo9EZR-MZ-BiX#T6xD?(lik}hxM)78&q Iol`;+0GyIQegFUf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..84fb48d3335ce22d311362d2ba893de3b784fec0 GIT binary patch literal 2630 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..47d437da3fff878bfb1819b680f5cf63b87084ab GIT binary patch literal 2356 zcmZXUc{CK<8^?!2_7+N(Mm1w!`jv>WL@_4WvXkX!pAuOIgF#Wklu=4XV=Iw0lBJnR zc4g|#o@FqGvW(qews-u_dEbA2_nv#7bHC>~pXYm@d(KU>v4V;UNecl008yCv)f?Pc zu)hxRbNBS`0qOt%&wconD>kqzSLE-8h4{mR`~U!@toSSg^R~;f9iDC$rYd6UN=2AL zy-`zBSqsT@uflps*T{2Co5C-(K*}2E?W`4NOf-lp2R){{q)enb3c5wqb6viDiHw_QYa4D+ z`W|LPpa1<_nE!x2Z)gU*8TQFozXg5^OHXU7Q0r}N$Ie)`pEboZlcyOY?q^YiMYYad9z=(Cz4#|NH?48zg#NnlV`GC(lW z-X(f4WNlb2j>i7ArbZ6N6yuV-n@y>f{Qnf^Q6AgvORI92iotZ#=8=* zX&ECQA-q|si~m3m-2?cRy`#!ZO&xxrWV_w`wFTLNWYDj-5P_XjVcmm4&?xS+@OxW8 zuL3yxvjAV3%~b^Nn!AJp02*ia7fBeh2fOJYA!(oZ{-Jx6s_P%G6Yh@ToCTUh-ZnU-k}b2%mH}hi1uL zbi{;5ocY6O(lyUwVdu9PhSeVF`Z)l=5oDW(b2>nDRyh>;(#)QsFK{4a=h${F}Zz!VSyXu@1vYc~@V{-B3_W6A; z%YNF_@p>lMLBSI_OCHIzj)7E7cfRtbyMtYgSIvFr-SfQ`G(Xpo<%C zs6ZNE8H4h1t9d5zBJ7Fg-r2o(;jUc`PQhPZu0lGR`F6|J1bjGjY z&IZ20uVnjEk0YurEJu=A_BL^`wTf|*%dByyvD2v1XfeM&U_OvMiyB z32*H?P+Abq2{Bca0i0u8Zz!=&2pUUeI-m~Dbdy;N7pG>nl zFw6hW&7aCHs+KV)Gabd0@`78jQe%oRJ(9AyYm0I+ZBX?nQX;`LMq)pgpsDt ze)@dq!YIZ!lg-90Vk*p`>X5^(+epRkz6UiKjWyk16}HP6 z-SmABURwURvi9YtoT?W8vuICQSJI#dBS35^$C7WF;@C&56}+_Uw@KZ6Twi?K2GY#G z_;eyqXZnHNy^dq3(RbWvD?)&b%{SG>tD?RUH{Y>GSC+DTurqe)2GgL73xw-^+M5eF zGjQ$##bjQAFw^IU zWvM)#f(x}ayi|=~UO?ob{PKEKYDnnZdr;wB3*i*zYd)BY{?dxFr?ZiEM> zeAlR;{y0`J-cU*dCq!YWCxYCc$&od}7v4{zj4^xk<0w^FN({ZF5{oLv-LG(ZJTYDE zZiR#|3wG9P>YO4N1$BxSxJuGJAkNqof>f|2*Q$1>HE%G9xNVpCVgnJt(07?fQ5%hi zJ3pIoDL$oB%GER(%Rb1lm-GcIs^+MZHFGp>!#5f~mh?714r9O15sSkQL!~*z>%@*5 z=<{qSHCnY2!^t^z4($*RnQDBNZaQn5+kpWHM#OyyK3ytLT zVtEzFI59aQpW?v2Hp}QwQg>D+H~m%ooj-;85tzLK8SFI9vsg^4ji>)H^&zo$;s$hB zId~2hGzyJ!H~0SWWd{Z?Wy%=pgC=oe`EESNR;)kvIDIn`x4^jI!<5pDg(-@!^VdT@ z@hXgR6XJz(FpJg#3SLF5KR+g=7sOvgqx2$Z2TRINui35Un>TY^Me{0fEz0ThWYc;N zs(8(?{sdEb;^*euLnu4bB@k|pyj0D+A3Q-u%Dmx?jEdtnpdPT-f7;3|fy79~*KA%4 zf2;XPo57!r_Cx|R2}Aw2!(EnvtDC>Z6LT5hwX=uD%S5G*RBNOr3SH$Z;f+#ry~Snx zZ_o_#CvoC`O=lneM@j7dkuM04d?IvcUkPkZ<%r2n6k;;P6NSwAmPQ00`hFWtDxUTw z-Qrv>_B`PLp_EV#*k4wWm;4v;FY3@IzZIkB12~v41-gabv2$1Nt?{x8 GmHamq;)&G& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..ce930c3b8f8ab56fd2a314278cbbb253c8bb01b5 GIT binary patch literal 1827 zcmZWqc{tly7yiXMh-xZI%Sg0ZWRR9jw1`ASmDH}(8dGB{Q~OR5#;37VN6DlVVOrJA z($7*#q#aahuNsOr(ssl)Wt27vN&3a~nZLe!pL5Q=@AKYs?!D)^=jOY)IH)QgR0aS* z)$t78Lu#Mw$~Ov9?eRKV5dc8Bk#=@&j&^qN*!Y;R$mmc2Ff7R`!JO&E>GTu*3HFFR zCWgOVtF@f5x7Q(P6b9F}YWO7`>)cYQKBLygXeE-kmaKA>@MI4rray>aSsgP0D?Te^1JM z)7v}UWjGd(f4E#keMzm%l{Jz-aknLPe&HRvybSP z-^Nf ziM_An{ZxmxZQ379DRDCt8YhccQ*t~T$C$)cHsn~dYCu2=DpIZEH7Ktd<*xbDbBCAy z#xm>STh3|lM3t?Elgu`L+&1vz-TMpLT<+fMhVGvq4|Qd9W$f_JcCld3xbf^iq8*Z@ zX;HX9aKHm!c6$x8zEp}R#h&p^007g&y8=qB!|u`)6CIuH6_@07)sGk#G-7%HKpyUh zxAjV${qV*$LMK#9k(=`0?D4=uP-tEM?bL{UP$%Vr{RQy!I}-%kt)sdVI8zN|4i#FG zqxtZgY?NY~rU@-5H$B3=;1?$~RZN7J+ulfs_TGIKi5g<-Ns~FhE>Ejc=alM2Gw|7u zH^iG+>%;opL^%Mul4#j8-bq7}F+4S`dtT)r3J3uDg~nN;q($!@(WmR{`>0MskH2je z*v)pPc@{a~!LB3d!-u@X>JLI74HoZTP^q=k?}k(~L*hi)(LGD*Wk}Yr=&7}0V24&A z1QG)Ax8$!Ee`hexK^A5TLl@>f4KRUJN7mxvyXmPp2TG|3suv1j)mmu1t5iIQNB zdgLCa0FTGt{KN@|Kzf_HV~O~_L4TMiv$up6dKG$7MM^wPYP`W6-Iwt8f-xtWl^}Op z=nU&=LGlU^*&i1)tBA8l+zwdS?heU>tG1W1mKJ8B7o8>dcSfFY zMfhd2m(D=4R)I4rL+>B9RsZUlaKXn~lsu{62Z6Y2M|>!_JRjsTlK;xjHS!1H$`vQ8 zZfZH)#P}+agBFaRkH%=VWqXH{r1X%7pSTM@{j5eSpC6k3LS~OK7^}x4&}Am}eIAoh z1|grCYN=GgW>YP4W%1Xw!GlO*l{}$B3H_rT!-1J>e8@ll5A6D-MF(d4mb0ie#tyx8 zv0TU`i4nGG(!=7=vmIq5VOHYF?+ub0)=tEafIA+)XUAW3xkV(wMow$fB~kjEDSAw6 zoKfA@@T(Q^<(ss;rn^7`%DO%M%iFRE^Ew{??@yY?)d!_z5l$~hVP-mM#0Jse%dl?N zreb%TSNRlG3kU`PoZdYSLzj+gUh{=foLX!E1del{V~*Ym+j)6Y2A?b0@)8{FSP?JB zDS6FEwk*sTXx%sE;_ZMY84+eZG}b>DnDW~>CKjWi3!GbbDpGb6N^k85JZXVmV2?8idF64Ca#*XhaInS!97-?Pop(-L~dRuORk7jLJf7IPM zS6PvEth!Qya2YupZl17ul02@1(|u$k2;;5gX37E@z&$?@YCv9EcL0FWE^OVnBU<6{ z)yYb`ABnVa(aSCmtjua;*gn$N4^X}@UBEOGyJUyxY6!{!TuFCGQ4WnCkYGHJL)@u%gBjus-o?)PL7<_n@S=Nkg(=9~HsjUr~z9O)C^d sxklz+(pM|4lcr!9HYH6b0Nlx8fyP`?DX*UurtZ!i?OpJVr-F0-2j#_1v;Y7A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/meta.json new file mode 100644 index 0000000000..59ee307d29 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/meta.json @@ -0,0 +1,295 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "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 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + }, + { + "name": "seeds_generic-shelf0", + "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 + ] + ] + }, + { + "name": "seeds_generic-shelf1", + "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 + ] + ] + }, + { + "name": "seeds_generic-shelf2", + "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 + ] + ] + }, + { + "name": "seeds_generic-shelf3", + "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 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..2eab092987d38f3658cd1c4ca035492fd92f96bf GIT binary patch literal 1056 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 X`|gvdx38W8(=mgmtDnm{r-UW|728s= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf0.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf0.png new file mode 100644 index 0000000000000000000000000000000000000000..5954a9c457a1fbc61451430fa41944cefaeba4a7 GIT binary patch literal 1079 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcaloCO|{#S9F5M?jcysy3fA0|WC* zPZ!6KiaBrZ`gX;HN;Ev=+QD)br^tDN7}EM0%v@wfbvd@|?NuKYmLpXbu8IfNN9nG}2(mT)$hFiucoxWwWx zi@{@v39czBEG+zcHaz~m?Z3DE_scIoepyyjTKe@#@Ot~Zc6Scvy#2+LF!gEc_n*__ z@9d6^>rlQHziw}7E#rn$e>&}BEA->`-jU^NuNHrJ!nWr3-}2q@byd~hE4YF3Uql~2 zyZ`p@^?bemd-v{=+4k@J{(ZHd?%OTcfL=od%t}DU(I{}`xAp1`p;&_r^eOaJM3{;{j3Rp{k&fLD*n&e_D|*VuI;^h zxNiUbxz_ego>WR7xpwjiX?Fkq+FHmz+;i{$RYngl@=3wD$X_7%LzX$n4byxi{4&-wiuUbf7r6#Hv4ziw8j{i)=1;WgTe~DWM4f7oe@x literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf1.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf1.png new file mode 100644 index 0000000000000000000000000000000000000000..95c15fb2ebfe72f71a873a44a404e6afa7a52f48 GIT binary patch literal 1079 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcaloCO|{#S9F5M?jcysy3fA0|WC* zPZ!6KiaBrZ`gX;HN;Ev=+QD)br^tDN7}EM0%v@wfbvd@|?NuKYmLpXbu8IfNN9nG}2(mT)$hFiucoxWwWx zi@{^a3LelB7Z<;Nzvk=LyN~bx`%!CdJ1JrAC-5X z%K2^lSH%C^O1}Q|ujO_B``3QF@%jB`tA@;pv&HLbbNv2v{QU6w*X6%Y<)(>0TyE0O z_W$?!{qN-Z_&GI;qct_pmFN8b$uZlnV`lor^PgWXkNmpW zrp)Z1X4)5P`NThRcHe$-)UiyaQsTZ{V|PIF`D6L$#~YtNj5YIZulx7q=G&TI?Z&s< z&mNEeY_sR|v-J*_kJ_C-HeU(kx*q|vnJR#(=G*16{rBHLnDbN6hfo&#%UmvhaYvs? S!G2&#z~JfX=d#Wzp$PypkiV1w literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf2.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf2.png new file mode 100644 index 0000000000000000000000000000000000000000..2a59f75ff43abe469cb76743eb33fc5279e77817 GIT binary patch literal 928 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcaloCO|{#S9F5M?jcysy3fA0|RrA zr;B4q#hkZy46{TMB^n;`R`47>G^MHBU@Aw_b3vx2we1@wH?*2>5NL|+Q;b;G`ocCz z%_>pItR?cS&cj+cj?J5o*8P8XW_Ql4|M$2Ku{g|P@DOImWK!^DSi;$0!Z<;V;nHvr z-2CSK`}ua2Uw%CL^ZI-K>W4KJeAixoy_b7lzAyZ`!7S@|hBHQcKfbfCDR^nIS8)0a z`?-7H)-W2J{?TiHr$Rq&Z;Y&*T-+|s=`n|2Z_f{lx08*ZlkW`F^XG`gZ|nL${~lkQ z|M*wN#-H>3`@a8Mmt0{Jdp&HuI@Q8%Gqc3^_Wiq*-%t8|xW9OL_Kl-|UP`@t_3y{+ zGxxuKy>Ie(*YkWM>xRS=H>K_GZt?#k1XT99{rF{5pZr6&P4amEy*_@v`}5N0{AOzt zSDyd>^K$y~+1EB)`D1zhe#-0l4zs^y#NR4e|LdcZj$!c(^F8nR-}n8?%>T7}U)#r9 z{PX|nt^5CfLny=bw-@(KDg3viO_le)$>F*mkMI5PUY}U=es|2_n|D5&%E-v9d1v*X fW%7_tGvB1&roIZjt?lCk%yJB#u6{1-oD!M<`lDAC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf3.png b/Resources/Textures/Structures/Machines/VendingMachines/seeds_green.rsi/seeds_generic-shelf3.png new file mode 100644 index 0000000000000000000000000000000000000000..038a01866d3072d022d3b2cf7d3ca748b86d39ad GIT binary patch literal 928 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcaloCO|{#S9F5M?jcysy3fA0|RrA zr;B4q#hkZy46{TMB^n;`R`47>G^MHBU@Aw_b3vx2we1@wH?*2>5NL|+Q;b;G`ocCz z%_>pItR?cS&cj+cj?J5o*8P8XW_Ql4|M$2Ku{g|P@DOImWK!^DSi;$0!Z<;V;nMID zG&ue5-@liW-TU>=?XUa4P3m0xzI6*uQ7<{?EtX z+spm6T-Pr)`~S};74P3$wH?1)n)|hiY5{6y-B4KnW3}}sy`A=dEXsGa#h#hJ?%}$3 z{rk`UiH-m7YrL-dpW0?-iMBa=KVJ6zeMEmFP+5J2P3++>YI}SiUwg2>?#~{J_^N*i zm!+ot`ZM3Ywrp1>ulL#cpa1x7`^UK@v;W&t-|wsB^^XV{w^tti{qMuO7xTX@+y6RS zV*TF_H{U<{^`AeQwcxJYTW`td{n-(hKKL5HX}5pZyZ?*SvG4m%o6b3F8-MuV!Go{X hefBpPf(hxH^j^bPp*^Sd7XY&ygQu&X%Q~loCIDUuTmt|A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/broken.png index d08a87b76072b5699b74b9cacecb5be43db08eb8..16ce86dc2d0a9234516d382d58029d6843f34db6 100644 GIT binary patch literal 2869 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 literal 869 zcmV-r1DgDaP)R^0Rh z3D`w9hU9HTYBgF(ikJ#osA7|pGkNozXWnNT=z+(~oi}gpx#!-QHvw2+qM@a1HU6)d zFP>ESYqVSQN&FEC>l)UI8yIegiZQkC2c3g4%%xvheql>Mf)42zdcWQXdRfn}V-l96 z-QbA;E-2yVoO8XB_DldCmGG;UV+};_J;cF!23>(Fuy+g(5f z)J0`G8c*Qv(1@_lVz)&9`TfVHZ?j)DB-7o9TxvJ1<%@s>Bcu~Li?t6RSPtTCW<|W! zjy6#Y081ZMP2Y@9O$ik!zZ*QA16$j>!kGl4?-?5x*3Q;$)%=B-8KHtyzzLoYB1TVq zf43mi2bkYh&ZWE(S`%W_oDL8X=hfx+=hkr30pe_RiLxa4Z#( zyCHeDXVd_daD(gbSS3M+RDdMd=U8uF7()a7(B7Pk4ZeOxbO=2qvL7fn zRL%2K1MU|RaoAJ}PDrj*wq{I!pWWUOkKw#2jM+5nqf!HIBs`r1B++-{x`>)7P^+J$ z_^6QiugflwCm!=o5iUl1R-2 zc(Yl=z9}+Q6(=N9pDRRk1-RBSzW5_RO#iqdE)!nB{m%jtr?23RTZe*xexqM3*`N01fT00000NkvXXu0mjf+**$o diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/deny-unshaded.png index b8221f982ee616c3b1f529157c03c63e027fc1e5..5a6d5e1d4bd86b57b24f97da124813e6830f5ab6 100644 GIT binary patch literal 1794 zcmV+d2mSboP)EX>4Tx04R}tkv&MmKpe$iTT4YM4lO96lA$`;MMWG-6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0p4bnDMn8WP*hV- zC*ndbzbXV?;l~(47{#E-3@w>i%))hi-NVDzyC~0cKlkV8mkS01JOXiyX}U?gK|H%@ zYMl3p!>laI#OK75I$ez!^A?Vi={4RWnCejA&$t3O8MTL z!!qYB&Puh;+V|uy3>MUt4A*InAb}+$k%9mTbyQG=i72fqDF)KCA9wK&+x`@}Byv^2 z$gzML6o|GT{11M2YZRxaoTOkJ@V{8r$2bt!1zHWu`aZU-)(PNy2CmeOzt#liK1pwM zw8#-Kunk;XcQk1axZDATo-|PxZOKQ|TPyCSl{2%DYE&U4P3^L=M_`E~*j zLI@#*5JCtcIw9V+@b(%;9_U&vJZX`Xcs8 zIe7R<@29|pU&`6@Co%u}Fs4HBJLrGReuquhSCKe=9f_|pMHB!49S=XASwsPwV~I== zg=hZ4_`ntp=lzwH2AUcspq1Ni+KKF%$okSU^Y?nr-I*T@%nGaSob zqcQ?q`4vWh-~IPx5mrgm{k9QcEHr z**{A5$(}h0$kl2uYaOAhU&aSU!#tKQ{+N>&ic9ZL2HAKW{6clamddMbu+DyAcOWO7 zs3doD9G(1zAK_ds4?2I>lHag9NLZ;r7r)_TBxQWhUK!uBH>i&2?k9v0LI@#*5JCtc z8X~XBMyIdoM9UHS2_b|KLI@#*5JCvCK{j{ys;-Zh&E389ugBnYBZMi4DTok42qAYoPe$JPfr=#Dh3@fb$3!);7{`HNpo(KFjp(y!< z*D$Q~&x?bs)7RBsc_sv09HqOzVk4})7}80oHNWr@erCAcR4bp(Wz7Orzd})K|3>xj zm1^gGn{m4OZ<23NBOh4jHS|}!{0jVgS`qU*ekW|@Ijq&i2Z`=}$Mx{-4fu|JpRa<# zngqJ~9kDFsBlK^K?U(ed!c?=^)CqO-GfPMZlyoO6!a&M2{Q%U k>VBpmrXczWAtWUJ0c`W_?p3MRNB{r;07*qoM6N<$f=g6j5C8xG literal 779 zcmV+m1N8ifP)I(`Ds5)f}EUr*H{mjf2ywlY)Wjq39p;AU9l_=%IQO(`W8IiYMm+R5fwRBi_0(wh&CCHt^oz*>LI<4kRN{3shBM1& zBa@rWR}HoV@{?X}1~xp^x@Jaz5q(o5AQp`xs{oN`9LWz!^_iRMY{0?`&(-_9Ux=9z zU_{^4r+|?pWG1rpg%MDgfb=9GGb6x=elZasJPB^E8UU*J)c~G+^1$m^g5fodz^gFY zLf`T11aRD+K~@=*auPJ6U(88R=m0$Wn!m0GdglAk@S_j?lcpS8^%IOS94f{#y-3y< zdWtVx$|%b8Ch9r}{m+mCY_JDQAqUuC50+B)4j>4EAP9mW2%MqfaMOb zx;{WQwyzJ6jqU3LWMljK0NL2SKEQGZSY97M5ClOG1VKmuz+ZF{9>G{%D@FhS002ov JPDHLkV1nQ#aIOFV diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/eject-unshaded.png index 49fcef45a1d26c31319980bb43656cba1b10d26e..3200386e08913a1b8386607973aa6a2628637e8f 100644 GIT binary patch literal 17989 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 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/meta.json index eaf66cff8f..0227985bb8 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/1516a728931b4985c1e86f0c5995a5aa1554a1ad and modified by Swept and potato1234x", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 @@ -9,44 +9,101 @@ "states": [ { "name": "normal-unshaded", + "directions": 4, "delays": [ [ - 2.5, - 0.05, - 3.4 + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8 ] ] }, { - "name": "broken" - }, - { - "name": "deny-unshaded", + "name": "eject-unshaded", + "directions": 4, "delays": [ [ 0.1, 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, 0.1 ] ] }, { - "name": "off" - }, - { - "name": "panel" - }, - { - "name": "eject-unshaded", + "name": "deny-unshaded", + "directions": 4, "delays": [ [ 0.1, 0.1, - 0.8, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, 0.1, 0.1 ] ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/normal-unshaded.png index f04f2db2afef0695b6fef405d0ec35164e720163..5748b25b90e81cb1c66891a0e957769640184641 100644 GIT binary patch literal 1798 zcmV+h2l@DkP)EX>4Tx04R}tkv&MmKpe$iTT4YM4lO96lA$`;MMWG-6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0p4bnDMn8WP*hV- zC*ndbzbXV?;l~(47{#E-3@w>i%))hi-NVDzyC~0cKlkV8mkS01JOXiyX}U?gK|H%@ zYMl3p!>laI#OK75I$ez!^A?Vi={4RWnCejA&$t3O8MTL z!!qYB&Puh;+V|uy3>MUt4A*InAb}+$k%9mTbyQG=i72fqDF)KCA9wK&+x`@}Byv^2 z$gzML6o|GT{11M2YZRxaoTOkJ@V{8r$2bt!1zHWu`aZU-)(PNy2CmeOzt#liK1pwM zw8#-Kunk;XcQk1axZDATo-|PxZOKQ|TPy|}O6Z)Se)_hu)*c>xF^ zgb+dqA%u`PA-q-z6w{bC*fq?B_PJ`{Iy$&2(#Qw>9@mb-LW1YgeGk{!e^s?3$arMjO$b`;q#l@fS^G2~e zlU3RHIQT`_J=Q62w83%q3$G3N*$FrK?QADbek+RZTrXFhzgx*~d2K{jDu|2U@^dC- z^1wlvJaACej>O$h2qAQaz9)n3Ct za>as7j!dX(M6CU_*+bUkwFW8Nc~ku2w!1xo&q@_^5Zuh~OcOf%(VuzeAfzMmw(v*U z7Onel=e!Ne6z5#i{Qf2y-7`KVbH#$_@9uMUJ7qH!#@%n9ap#$LMuvSQK!4O-(J8OX zi>eNSDSqE`9lLcgyIb1bH0lpSCiyMDXWz9^YjT+@7Ie%K7z@AKC79cCUAH4z)i3A8SL{eIhI1(nxVi`7$+mj^5I@?cau-%NhD=LaJ3*NT(Y%CmL+ zA-q}r$_lgARf8!!2yyqXYeem};>VOs@{6E3(CwcWM_HS{)iVK6`*rWXcO)n%j%wuD z0Bt=%M{$^2jl7PW+^T*NGzy)UU1E7AD|5wyU7)J!F`-!bH>-zttDTQ5;^OLGC*Pz- zUfIsa(C>QrrTjT9!~DK)Mbz>f{;!Kyd5@+Mf0XF-vlpXYIOhJDE od7UYs+5JpGOhNP$LWm~*1-=$PniXK&F#rGn07*qoM6N<$g6QRRuK)l5 literal 1052 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 rbP0l+XkKmQ0Hg diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/snack.rsi/panel.png index c60f5c3069d9db8312578c551f2e6b8c66eac5e9..12864f00cb31c020886b31679a00b132c3f87209 100644 GIT binary patch delta 704 zcmeyuc#>7IGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM~>`Q?;jyV@SoEx3g?B zf&(Sm?k61G5;4K7m5;YfsJ-dJ%H|8%&mA;(h%7NIdB3DjRHjs5mv=ympHREr%p8T) zP4>;A?HN`gLW?gf5ESlvZvFFMR({sb=Le?OJdgA%(!cY;?t9Ji=g;~aEaDhi9<#!! zYpg5{Rn}8q)YtwGT6ye%#A+rc*?;eDFs*x>{Qkz15U0Xv3BC>&IR9_j%6`?V{l?5? zdF}zLWjFBpN4#YenOCu~nDKhh{R#i-#5&Zk9(J3#mPNh!LD9xU6&>C1jb#>G=PYKk z?s_=C=Rbo~Ligp&3oYq=!i?Ipb)USOd;DRu6<2iOnYB&2ek?Zia=%-@sP(Wc;5=s` z=&-mxoM}@+uP|fC?@U{Ub?H;z{rjD>+~H6cL)6=aL8kNb|NfDh?Xt-Bd-^1}1b$`lrPM4cGk-`tM zj+ZB=icVh_WB2V&`}Ox9O}5v|zWnt@zT-{3*7sX8yH6_X3WnNbGuD^YbNwy%7FuMN zpP<{&^md=tszYZj-rcO&9yZ77DLvGC00t(cuvXK#WvOJ{1<9^)WqR~Q%bNt7N~!R#gr6RNN}aPQtX`wqK`4+hG2WjEyPyYqk7wdXvS)&8Vb z{EGPbe{Oa8N2{h+d@Hh3nJ?#k73KN1$y=g<@4)JLulN{#+N^GvnHcG(?R;fQ)`Am> zzpM`AP8MiBwV&UXr}XR^9-gL_tHIY9Gmrh3Oq-j!hgsZX`DW&ZX@_MT*NDAJcNWrN aXJlxs)sC2(o%Rywb_P#ZKbLh*2~7ZsJY4bs diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..92c80e39eb834940270f8d6fc26df74ec410cf2d GIT binary patch literal 2285 zcmV+P)}q*5dSkw?H#i6IaQm500viUKx4Xf0rndcV0n z%elks?(E*ZK$I`p%-q@8Gv|DB=FIHO-p=HKY15{)9Xxo@`CU*@K(@ehr%s*fKp}v3 zkXz( z@IrQWwz>f5ElDuJNC5X79=0)_8)Ri=qf9~!kZDZu%n> zS>P0J8uB6$s zXFK(SfZO+y>7^SR&tB*TBLV2yZr!@wRsPJAxlaDXg;P%1?t^=2bis@C+W1mc-q6rM zb#--43f#DHgKQz&*JVkWHgXu422Jpc0TR+sPMHMc0WRnImGc);vVaUpJY&d^A;$Vg zj~)#q---ZfJRnH`IM3x!THX%}Y51W-hiJiq1x^Yewy>)s4=^z($AuxlK`>AZfXl)S z*?2aT36O>}DnDABU_5@$m@y-;;c!=dC0Dz)##k5S^`{$X_`rN)eHafS0?h&p9=C1= zbB{Bm@$3mvpyZ7**LyIOjRz4D=<(Q^##6TM5MXvqE{_->Nsv9CjPcz2rk>RSa-*-jRSDNg!(^EG;+Z{m2i0UIX0peVDPb~RNe z)B`c)<>f|K_j7;1cL+T8)U#AtGM0X*+fO~Z#OKm$e`nFqVS{Ps_FdGcZ$G;FNN<`j zav)WI{2}G!4Wpu0$Etd}zS&NVB1YJP=WG}b1K|lJR7Nkqn@f9EB$5E4%Epzbe9g96 zm9p#WF~J1ubwGMr8quvg`Mt+3)0nYEiiDD>BdGT4P3j(uhv7^@6o4@>bkB;odrME? z7{K6Ow}~HsF9F$UooHk2cI5>JzPqH#ZlxHHaW0E8#N3)mw7+%v6e8J_EahBIeW9>V~5H2W#Ke*Ub=cTG=o z>XuBMLe0(1bb9r%glRBYKzX=+ytiu<2^AIiomhv53dpFgu6BYZPmvs$P4M&p<=0;jOeEW39H3qNZ=p_1HRA5q5*yTJBC$$ zmPIeMzv*^UD8qwuP`gF~&^xUBS&OK>78@?exJDv+6`3eh9xO(oeS{J-9DjxOQ zI;PRn1NzaKbH61#`_8<1^g(5XA|M%X6n}f-{`QipSU`;DI1bEQxmrz5Gh^2V;qL4$ zNezLF*!VXAUcfjU8yY%be3Z}^KPGss7Hev1Xwsxf#(SOw+)PU&8+47W5OtvUKi{+| z^ir7N^&$kwX^`_e%F5hjcoG1^zTCQ%cI?cfJYafBV(i%VRqP@v9``!+wv=xq01@9U z05TC?;IWSbjj#Z5Zo51Txd*WC+v83-h_Hp#Iv~t==AP$uco!m03 zyMVI-1T2;39+y2I#&FY~peed@ncr)#mkve(!X9Ks1sr4Z&Q93lG+X!%0eM!>`)cx# z0X@Y>U~*5Mx2M;yU!N42+`dUR^wD(zVEV zy0PgLTI!=8j(Wk000@FmT>3$%jv#0GLEuKTu1^r-0V@Ldw3qWb_#{{=heOQi)2CAu z&}A_hZo23?d%=nTDab^GejJ`kxEZe-YhyeRC!%A~6NG&U(7zSn(;hvQXZAaH z?sPU(%Epzn)oiN`H5KAnZl7gJ_~~M^2n)O=78J?s3*uQE$)yr0C*VQHLjvf3j+7CQ z>_$kcWa&t`2jGB&Pi@0IYjeVz3?9w`Q436^yYh!yQ6f?TSV5UaF$8p(QIcRqfK8)P zLH-SdT?O*9_;Ov!v?amT6C?M4R3qv(B98(3q3VM!+nN9`x4RcTAEeD7`dAUb%;Pd0 zcBCRW`RSs!rR!$vErEu>$&)83FE3A}g@uK5he?AljPJ`-R5F#-w$!CV&Hu+fJ-`@(Py8V9vD87U4>Vx;g00000NkvXX Hu0mjfRY5if literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..753fee7feef931958b1f50e0573646c13577f548 GIT binary patch literal 1175 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/fan.png b/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/fan.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc239d6cfd67eb190f9f2f0f4f6d7faef71c2cb GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9F5M?jcysy3fA0|Vnq zPZ!6KiaBp@@AYDK6mfVcxaO)zQtDGKO_uxr8EY60Iu)#4lOp`5lJTosSi8dJ&KQfM z^YpKZ+&<%J#CgY3$4QbQjbR330$T$bL#QF&#CpOsfW^2~le|K#(M3Z6ON%3316$FCP-R_Qz|cmHE) zizb^#(f=<2V#n3(U*Gt%@BM7{0t1IhKele3XHoD!39I#(4nh}+$ZC+dxGr6#d}jar z-CG#G*8GuBOjG@Dyv|&G<@|=)Wldjo|MD0ds=LIT6CV^19o1k_@Ys6)KFv+1YyR9> u%DUqD8QoxPp+UKtTBgkV#f|^3@XZ6pB!j1`pUXO@geCyfsj~zC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/meta.json new file mode 100644 index 0000000000..ef0b880049 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/meta.json @@ -0,0 +1,163 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4, + "delays": [ + [ + 4, + 0.1, + 3, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 4, + 0.1, + 3, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 4, + 0.1, + 3, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 4, + 0.1, + 3, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "fan", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..083570790a89471004b962cf846ada6f2e5dbc96 GIT binary patch literal 2013 zcmYLK2~^VA8vnat=0Z-EX%^-(qR*w$u}#Gd&8VQvnzDozH|$03QzH1Z%(Bs}498S# zT&P!Og*r~SC2pu;Zkd`wj*91@pr9b4{2xs9-gnRazWe*mxBTvM&b^H}>aV}vbUgq7 z`T+-hk1H)#HP=Cu+SCF61pw4;MEdw(0(^YTuf`C{iVUnRP$xEiCJ#x zjD@wr$+jwEfm;g`3fu+bYU5$Kwti?m%!xp>&4jmOqn&2Rm-a2*TUv`d^c;RW-Q65d z9Ah$v81SALgp@Z!(S>NZsYl<9d>c^b<;IA_7f5e2U)XoH@LC@1KX-3Ahku_*C_uR; zT?_lUr<`}2+2Z{yv&=Cp^xTf39a$ZB4#~y~n7ern>_gS;5$U9p-sXW^y`jh~^M6@e z<)i{S@h31hZ^J9>Y$1JBu*3!EsKV$^tC*msj@K!sMj17*RVXPj%7{iQD8-r0H~##w zeeZ@(T4(gTRy=B6eAMA4L0%4IHGb5b_6Q)vRdpEde5HT(Y@$mfwDz-FdXdX9`TTua-uy0GFOUpW4dhZpecllf3O>Br%fY(!-2KSQ|H{WAL(n zg7R7*7f}Ab0H_+p^|S{{kIvPDr(*%Y(NZwa;It-!IJ7aT{b0ehg!pO%Qc!e)P7GI%oHW;DVq0J2c!-xPqN7q~O@4eFJ-|m!^2x%oiQq7jq{#!n zO39)2u&`-IA0v8=3hm^xWf7sHB?1G-2|@pV2G5feSBB0f((bT_K;tzhOT;Kx(ndZl zlNBI&8oIk{&S*m$Kv#`gtp)L!*_EyD;)TEF z3GbR?Nrhq?h1vW7YcG{RU7ivp4JWK9Zt5~CEm#z6`|8GvU>ns~YGI+cW?9s_mPw{b z!n140SsAtBxTV4Y1<^3JiYWVu4LhKrNDzFsxm8_~v~oBOO=bO&=^^f*V0p^3M)>CA z>2s?CW`@!7gaw-&G7&!?k)U&3ToL@((D0NXM8I()^S$t3648}7>m&ZEQ~Hi9A=2CD(0@F&@j>TPlamee8xZELQE2gW_6XI{oz79DEX^XUH*>Az z{bd@xO2k(o7kSAr>=kK^rtZuwmG}R>rt*2)-6FfFbiihe>extlyr#zQ1+N)29OVxt z%Sw*aA#nS*_{~AX$xYWKu;NFvP&nrey@e>(=sZQVo*so^NIN>+ma}6U*3_l~EtGDW zuSEMHIyc-?&iv^B^$n$1a*K}Grlfvpb=PuOpki^vK!yG<5w3D3i&7~TP3>`n0cXW5 ziW8PM)s^^O`&-Q6X2n&}6uPIf=bNLQE%DQv?5f0*<`5aexWXGxUyc}aJFi#v+5oaa zw)A-f4x*{G4&HQO?n*^&K8K?#6Fm-2xzgNG8Kdyl{qWb@C#CAM(4wjX6{n#3X8>s(e$H<$*d1l3K)ZuBGNibs)~u|batPkW@_<4h92alma374|^d zbFgiy|4Aw3VdTBCHbI0(2JKD${6SX2nD#Nn!h1sV#<}hk49{c(Cgnr7`XcV6jE-;i z$sN0qgB>RBIS-&PviIGD=JBjBPrEMdg{B2Z&pkUPdpeJ78S)gNx(O@eSzjCcPh*Zr zY92U|U%PG6KjiWTaPLJm5S`6kVj-GF<}P%={lv+J)gN>}AZv-TN5wcDyp9F7!DK_e zvxd6$=Hkq&GSNAWP70^v`%b>sefqRq2-VJ8<+ZD1w7b! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/snix.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..fb11ce6be8fcf06c7d50d9c4a38af76d1b1d2a7a GIT binary patch literal 1990 zcmV;%2RZnOP)EX>4Tx04R}tkv&MmKpe$iTT4YM4lO96lA$`;MMWG-6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0p4bnDMn8WP*hV- zC*ndbzbXV?;l~(47{#E-3@w>i%))hi-NVDzyC~0cKlkV8mkS01JOXiyX}U?gK|H%@ zYMl3p!>laI#OK75I$ez!^A?Vi={4RWnCejA&$t3O8MTL z!!qYB&Puh;+V|uy3>MUt4A*InAb}+$k%9mTbyQG=i72fqDF)KCA9wK&+x`@}Byv^2 z$gzML6o|GT{11M2YZRxaoTOkJ@V{8r$2bt!1zHWu`aZU-)(PNy2CmeOzt#liK1pwM zw8#-Kunk;XcQk1axZDATo-|PxZOKQ|TPy?3B3KRljmtqx}suUBsby}xY6w*4V2Ybe|zna}0*^ul5@t%g=nfJbV@0*!j=>W{7 zhQ`PNo{J<&YRLGNO2sgKlhwtiPMvZ*!1VMq#>U1B8UP+Vc;Kk7Xf#^4PbZ?Ps%iT{ ziy3h2u${Q+%gSLlV%OI}yyD^mU_lnHI6x$y5DpL_c70irU_2goHBdYrH)uCJK<=~a zQv?rK0+7vS4Q&Ix5o#CKinML%;WCC#4&mat_fc3YLRD2{vstR$2)R$+mzO?0aR3Pv z0G1vuYrq&jIb>)b=#60F#?6<51ld_80kgppU`YGKjhnR1i?AR!st>E3S&a|}JM-*} z>w_LXIfRMZw`lO>dor11Ymj>SMk+qW7{V)HW@(^9B6^IRoB)=qW}HCs>h zZLwI4>W;2X^n}7ff<4`N8H*eD4H;ktg1#JF0RR9WUO5i{`1{{5-gv!C?I(xY@hq@{ z@RM$8fB)%M7(F{;AR$q~zxz=H-+iJ5feoIdy%P|)OCT5s80^;S35`viy>JGnFPssU z=DWcc>32N`=n2nmWpI=M&;JT;>tGelPj~IZzyAUNc-kGJb|ZxZ&jLX*Ait^_GLHqK zrKQDv2DJ7aGqsz80W=2#23zFJ6ItB2Pd}+tN>c)4rb#B~b-gU$+6T1u9YfQzs>a@W z`VTD!Vgtb9m){BpflYZ96aYx2QigJ1HOmpM09e`j2>=kTcB6c#MD6wJ3k;lyVDs?? zwOJ5E%EV`391R@-0K7HyHs&&Oc;~&H06xBfd(SsAa|J-XbzOA5>xEtC^=Y3KSG0zdottEBT1q{k&W_ItuP^n+Z{kcz+aTF%c2W(4gM-4};E=x9F?f8bR4M|_0v18; zw}|qEs|03eXB~AqIXQ``sVT%_F%0xZkXe{_RR*JHM{0$&A{0fz`1m-kU%&3?{$w&) zw*+4K-v@AI07*By*V6fX-jo9#t(Womj}2ED(9zXd>j{NTIe^EPN~I!(1j%4*kXF|; zN(Ki9EdjUkMF&q#|Ch?mGZpUX6)*t>%}2Ujlvx_yG7M=ySk60pRu|==ENo1AG8{0DJ&=g!`GG zBuU8Sa!4c+P!vU@B}w9X04Y)=Ny6CJn86pKdHvze0993?sw#QPV$gdncD^|A$L9ba z03QH<72uXcB4MicOG>4ZXP>w;K$d05vW#3VXR7yF?0j+JPu;_Y*MD+*eJ8))gu9obO%$%?K6Bf0pU0Au1&(a}#K2W^7RKnU77VlEn?3PH>+{9F z+KetrnKjoF6{dQv{NVPBcji7r)r^k`0@|k&RW)Xxy_Ek?$IY6tEa1n_*W#iz+W%JA zxvTBjxvh+;th_6}G&|b2pYg3$(Z(?6$lB$rOq}j4nA(u{ryoQrFddK)WWW(vC{hPj zE(|_?@$Q0Hv1rCCjed#$xu+cUbXp(GZq?Nn_G#Jd&E>Kuo_~J!|_`{geOz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/broken.png index 72f841391955d1b654effcbdc952afe12e0e7b54..835f27942a2521d188268e04e20060b6aa14d678 100644 GIT binary patch literal 2168 zcmV-;2#5EHP)zb?)&a}=iKw1 zd+#(q81H-coqNvr=l6Z*JLg>28V}xUJ^pZ}x7M`H;u?I$J$xr7S`SPWeAN4Ejiw#P ztcvONEwj+QosTtXMjk?D-}qhw$OmV7*=H(^&M%vF=IilChT5O~dC6X-v8v+Gi|f7j zIfndQjte>WcJG_Zn>OY~oLK4w$0?OmdK!vD=|h3G5W=VU@oxmK;@wnga|1fdIq0iH2GUQ?1&*`iVTdf=Z!IY|H`+WV0(h& zgQ)=Im+f)T7do*Wbly`TYTX$cG{J?-M1 zle_!R_S-LC_ne&1y_t$HKYrGnKK_gSOr_ve7?;Wy<;?E6;fgls#}|TL1K7d(1E=7$ z=b0(|(@L8eXfSDTBMg4F@Hs9g+EfaG)doVSO8$^Q0xSyyuK|!aCYA>CeqGd2qKWa# z5M+Qmbv(1-iD+kY_wIV{*C~vSzInuZ|MN3nm@Q9j&cFZm=kNJ>k?KzvuRu_W2o82aDaE_0Uo7vgf+z7Y=V8WdnH}ZCp1=+$RUXzCa zMI-}uPi72&x6ifD*?UrX+@E}5!WxapD^m~D2Do{vQ&5~a06=)$>9-^GAp}?;YjQ1Q z_~peiJ5 z++3sqmA`f|E0W5lQm+9RGjc(LIEV5G1LgxJMckJw1K&&#N@dXFgKJzodYghx@fj-9m}bY z@5HMwzhdSuT(F;^G~(Z7K*$3cKzSxLCOQCAMg%Fb5$1fw`L1 zAVH5?W#=c%)Vpt6Be)sgoG-FNTMc>*fZbpuEtaDMJpTN?{k9~QY_NqVKunyZB%}k`$2tK1rk)g>KOt7M!^6~tWc804VZwuaMT>J)gc&? zvJe8281UAyV|I!m4!rK)EB@@%DbpmN6ud2C9KZ~~SwPMbe1>ojN+f~?@Xg({JOGc- z7;fBa_6}0vG6A5HU;+(5W4Oi&!D|4V2;u4)p%C9xPtHi4~jd+qWdv%H~6o zw6TumAqf6LJFzK{eX#G45vo9K0D3mIDZzHBFGYmFmnBfzYS^WflW2^uQn-~^7@<#j zYF&4`olqITeFs-FIA2+>%K|QIHAZ#i)IinBx6YSFkhCjMuxl!x2ovs$8ZyVYGVr&Q zSM;L>u;+wE_m&0+=kmEpbq=5>05=4h-2KtQCqsVi>hn-kYQ&(OViX>g zgEnapH^IiJ&F%bYMGlHe>7%oZGk5+idl{iFd|O>|6V_#g=B*UntsFZwfm{uQ3gx!HawpufTN>C#} z3{p|~|A45t&+~jnQ-dVC$r}#1+N4tqho(wlI)HtLl5!Q+=?+Geovma7lw)WC*&90; z0dks`l*3GrS^MTn;k@qvz0000Oy;wI>(IFfd3n2$lr-1^-6_4618qCQVcnuV;Ac>Eak-;XidU zH(!ea53BaoPr_gSEx)@>L-0l3CSg-G**ML>9V`Ybm;Q>GQ+%SF`K}QsUwoJ59;X|o zt?XhSr!R19-k`TSMzr>QOK(Xkdrnjp%OS=Eeh#0Q8=RZ?W#|18nHFNzOXN~&ba~O1FvRsTAO&qPBELP(Q&fw0x@GXI3&y2Z8sx4Bv zl6@lOTqm$NUr;RNui|T4@b!yN;?@adJRVgNs3;`-)=ae~7AV;y-<75io!lJYD@*UDi1z GGywpsNTK5Z diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/deny-unshaded.png index 7f630c601cba622915de1d62c21077cb2638dc95..b2e5c5c7a9bbd22b74e7c901b7a73b537921fd59 100644 GIT binary patch literal 1280 zcmV+b1^@bqP)EX>4Tx04R}tkv&MmKpe$iQ;Q-M2Q!F>WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Wm&FYB(nr@rv zL|n?{SEb%pgfIpXVFYAm8Oh9I7QW-_9s$1IMR}J0xj)B%TCf-pkceZi@^ICeN!G7x&`{zyx!XTIDG)J)YbA0aBv7r zlqh@M=iPnXz5RQp-QN#rG;*RHr$`^1{z*hZRCwC$+doVbVHn5p=jc(0 z4e=nl*JwgvfeuWDfze$TCKsKZ88jMmBXM%j!Oeuk#Awoy!Gth$AuJ@4E;Q~K+@@B2LWzD*DT0000007#7!^@X~1==FW0^2EM~h`xBa z@#|^r?)Bwc51jYUJ|y))Bj>ADzkhbTj}`gy>f>bFm_ z`|7d0wUTe@`gQBj)2%~KoAuY-emA{a$ZGyb?EbgouC(>Rj-F_=0;1%btN@$We?H^k ztatoOWd&w1pL4*_p99Xy(%L?J$nz6F2N;*Jd``kck`Dj?0000000000NLj&M@AkBA z*GHqi#R#K#0jhIdpC8YA3{KW;>g3v{POh~+SCXPHW4VTmcRW^unRc?{N>X>ss!Ih{%C9%8RnFs$Uy7uT=hJFfO^>MOj!q z&_>xtS=!7`e!>gxdRS^vOL|Hs>WQsD+xdOkoRgPIXB%qGo0pktqJ2(lffx6JF5HK0 z=l6ME-8-5#-{Qj6R|~vAn@c4r`U69gygAv14+xg)_XnnjW3#;MaA84a|UM;4oG~5dIT7g;%Jd=Z9JHJ~cYAx_u zDk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}z2D=BmY47;JkTA#G@7=q1SC-2Z2XUT0whttKb9)Ss;w%aB3;quU z48i^tLLk8ckH}&M2EKzJ%(!D>_FJIfNlzEYkO=p;Q*R43EAY6yo%-j$xcQ4kj$(5r zP4`njzI@ZS4b6R#M?5*4Cj8Vq$mEjuo&B0lhiU!3dl9cWEIRxvRXt9va6DPfYm!rL z@nEMY!*R(MV%e^I=hrGc)qd%<{NTLu^9g$&Z#m3(el3H={bonzS>a8e=2+USXOaGK zvtft+3}qI@6Dpv~hZeVpss%en2( zzesNQS>Gzk@Vxp#)`4gLMSYpu6Z!;N99*6-f0ijf;+V8D3+O2ZPgg&ebxsLQ0FlL% AtpET3 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/eject-unshaded.png index bb21e6a5c5b10132f14a3cb1157348b383011ea1..47b68325efc10b5f718ab587083ddfe72125130c 100644 GIT binary patch literal 1830 zcmY+Cc{tnY7RP^TiBcs+qxQXwR&}aFFO_Jb5h^mMUDe)2&=4)D9F9T3;l@e0#MtZcF#upyno)Y*eGH~Q5$;=Lstr0* zP!RnXo%%hP?lWN;Xob!5H@IXg&aqTO6&5wT2~PSD)y00Z`h=WIHdfBec64&I9&jg0 zJylLdIy>&r2MNW4x3g!SeEWh;l&egr+C+p-t_L(R1Mb-=fg=>6V~;(biabhN;~2`( zm~Lt1(tapCJNT)NMoB@`lpS_eZS}uii*JU!Pf#dNjy%%zu1s-VMRwR2j@+{CKk?zx z?^DezqFZDuW5NT{O=$&BYaso+TJD;#x+c?#y8YX`chB#sjwxnXjNvOA+^-%)H5$9R z8fg1Pn0b)Vg?aYd^bC<%2h`0rFI3wOcY>s(M&W>@xhu=T6Pwnjto1<`PCekAKKyCt zKzsh$T_YznM?u*|J|LYQe)B-`qeh2+1iw|*SyHm?aH^z$LU({M@BH}54y{IOt)fxk zu?$~BodL!D*F($&p<@O>Va$D0OG;9{^w5g1%v#P^9u^atmsixU+2iUBTHFm~TTzPi zL?Qs`mqQwE`9VewCbb7W zY%h7;)I;iwa^oz5d`!0{E&Em3#!i@cSKkejCKHU+-l6kU7E?tGKFkR(b zk99%qp=}FA1NKIV(un?oVVJ{>7;0hk+$_8&(xTJf=6c-4Q&OYU^?3d?C1iP#9fryvRHCr9=0a^ajE~-xN!s0$l z&ZN~@fETs)j(1riBj};_Z-4E2rpLpHThrKpv}4$PXg!*y>SQUazM9d5$^@d;A7Mk= z=79b`6PYT#^&z;9`1kI6Fp3LAc^Zo=MMzA;9zsxDFZQ~;)D_B(BiHb&>ibg^!yt%1f_zsKulh0QtLSJH>H~9n>3BBNk ze`U+o!;1LV&=zEQuz%%x%k&~0wpwUrA}d$8 zpl3qj7HwZ>mjPStm5yuwdY`&e`J2N~%Q93&AaU_DgZY=;?_2*PHy`I2e1Ae?Sdi~T zqTX?}crL-kV9j8*y(~5S_xC@k1+_ao3>i4tXLu=ajV+!$9-_xaGVxHz?`giXuo4qLVoT`POc>i;Cd^ghmSFRdu$fxnr|!< zMGX23*sq=T?fjpjem7bB!7QfLf%3ZaA7Ikr9rGCnX;t7N@|f35=XOv~ zdTiNFqd}5r0XC**>d2}I@IX}8@ROf6QS`QL_&?&P3AXJt(Lir~rs!QQPl7b1K-u%H zV||RX$JeU!W5npwKWc&rW+glL-hGb9D~u;J=aKs+?M_3;nV^5WJmb z6xroU^mn_UKz%A_4f|dl2=|F=aLK&53nFo`bM)y^3E+u6%3j0nr~`|9F7-1gFsY%B zsM=X(CgmFl4Ufl^8?4Un)}MamKAz2Rg>cPZ639&&@3;))C`FTHkEA@Gw}E|yi3{bFB`utqWc z`mmJX-F-pONn{1`B?5dxT!Y;M-o1NwWw}go5a;P*`=(BvYOJILl>BG?^fQp+C<*cl{tp2R z_nP-c0>wBBJR*x382Ao?FyoGi*>8as*?PJ-hD5l(oqn*W*?`9-ll$xc|AnoaL^Ri| z^$51I{PDEq+7r*VnHJu=XKHfHY?`3S@zehxQ`GMtf1J)XS7|z&rdT(wGZ6LH-Oe=O_G95A{y$v} zUH}CTev~WD+9_;v;3?~olY4gmS?|Fy?X7s#_3ezRii!vJa(VH&aCsfF&JFB^Isohn zL#97z-b>5$9t8khVE)|VVBxx#z6R$k!xYT>t$K?3L>r{%H*Q%GeV`M_e(|!}eovVi zM^T^f3-c0dsPw^e2~7$>oge2FFPih1g}qTt_NGb96Pqq^tEk=B;CiSH x$Y8l>FLQ3E$YEv?UJiyX!_K%YA4i95`-LZGiR@U}egzo144$rjF6*2UngCx@!F&J! diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/meta.json index d0d4a1f0e9..b1083273c3 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/1516a728931b4985c1e86f0c5995a5aa1554a1ad. Modified by potato1234x (github) for SS14", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 @@ -9,48 +9,104 @@ "states": [ { "name": "normal-unshaded", + "directions": 4, "delays": [ [ - 2.5, 0.1, - 3.4, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, 0.1 ] ] }, { - "name": "broken" - }, - { - "name": "normal" - }, - { - "name": "deny-unshaded", + "name": "eject-unshaded", + "directions": 4, "delays": [ [ 0.1, 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, 0.1 ] ] }, { - "name": "eject-unshaded", + "name": "deny-unshaded", + "directions": 4, "delays": [ [ - 0.5, 0.1, - 1.0, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, 0.1, 0.1 ] ] }, { - "name": "off" + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 }, { - "name": "panel" + "name": "normal" } ] } diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/normal-unshaded.png index 1328a3b04147b4f3b087c1038b390f0e18fdd973..0abc407ddb114d907d4063e02498508d744ec177 100644 GIT binary patch delta 1328 zcmV-01<(4S1GWl~7k_{V1^@s6^xSN^0004lX+uL$Nkc;*aB^>EX>4Tx04R}tkv&Mm zKpe$iQ;Q-M2Q!F>WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7i=*ILaPVWX>fqw6tAnc` z2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Wm&FYB(nr@rvM1Ne$mC8V-bHzq|G7WMfLgE^5Riyt%rI@@4dU5N+u*!UEV8n!5}y-Knsh

J$6sp#bDyL)I$Goi7~BRft~;8t2VCv| z!%v26%B~coDHMyq`x$*x9vHd>`q#YP+WRA{=?~ubjvn97 z0yL!0^?jfBd7itZA^-pY00027aVGsoJvuAi_(tWWzak>4TL1OcDSocX_c!n5m8lC& zYkb%Ejyle>L^Ep6;!nQ;PcJG1fB$gb4rGd@41Y{(e0S>Lk$|ygU<%_eOmzWcf(IG! z^NXCkdo3S~FF*?8ySK`MAsJ!42B$3k!c4)#budyBt!ChTj;}{&MeTU|+VS@LzlVO> zo-WcFpZkEhzYmDi!Pw{UIgfArJ|LD4oTB)~OOVYPe4pb30000000000003fEaBIU} z)_;bVo%AghSjAgV-5C0MK38OM(&kW?4-R$tApF{ztX5<(%0YUsxBj0Iz zztmpi_?A}Q+>e6Nj19IdhD-^dw*MfNE=>Oo86NA z6BcCuX}j3g&dx;5&2V!H7C)G*`eiMczAq*LuJy8LQ`YNk?d(jP^#(RV8-HFl zy5Zs8l9$Yho!UEvA!D%l6VULorf2(EN4=oI4s2AjTatoXOJww2%=oh=z}QC-&iTbZ z5fNu&`CPMZ{-G>+N#E{Q_1mWx&hwWOKN`4A_>MjrJN0xf3s&c9{d4{}v73(}^);BX z;;6;rHejIq+3E$CdbN8~`B{_I%73tt%-ACI27qu9#CZ~L8g+xuA8eGh5;$xOjNX0r zH_5_ATx@ThnK<; delta 404 zcmdnSwUBv&c)bG$GXn#|rB_WhK#H+A$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBzG#3? zh-;@F#EbxddW?6XThlau7WF@@V)IlCr0 z%7-Jy>46Z_bahr~kC$KnCG<8|7=*K0b+8vJ-r#)Q!k+l_R-N904YrP{i)YW?xobZ6 zfg8r_6!txFa&XsBeRV-uOWsHN%iov{&o^H7dfwtL=WZYVo!fC|(^`*DXFng<;&}f& zYkk5S$#8-APi_ez0R~zcGerN?9k=>wd*R}D?t`4mcstlXzk6CP$TVGGN6P_K7CprR z&c@S|nf|0-?z;E=%tEerE*x+E)${2U{Q7U{!m7@_pLzHH`OVyOfMSXpe*d@J!Jt#e uKP@cb`~PASQ5}&riXbC?mOFaIA6eF3`A6~>?`~iyF?hQAxvXEX>4Tx04R}tkv&MmKpe$iQ;Q-M2Q!F>WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Wm&FYB(nr@rv zL|n?{SEb%pgfIpXVFYAm8Oh9I7QW-_9s$1IMR}J0xj)B%TCf-pkceZi@^ICeN!G7x&`{zyx!XTIDG)J)YbA0aBv7r zlqh@M=iPnXz5RQp-QN#rG;*RHr$`*?d8hQxW5$I6U;t)ZMkc}4?PbbI=-SltPU+VzOCsLh3*I}b2FL>sB>Xm1 z2A$OZtV1C0^V&X!$8ICCy@BfxrUC!}VgHh)!RxnwrZzCMlh(a{QaD8@5Y)Zb?sn(` z0Dymsi(~IE^!osSkGs3LI4eRb$yDADw-(dCQ2_V|=Ntf|a-7R4UPHqJF3yTrUU@%s zt<`7(02Rp80nqkkxDW$D`{|R zF;uT6cc1fictAKBr!sls+T^Ew(_%uX+T8*YsE*%AMoXeqpQ?}ea>NPb|Nk&pkVsk5nR->svAf->+ zC$zgArF=RLARLV&9F0>OkHq*%;Z$*LZY}l%g0>X4yB$LvA$0&!Nv2i;)v-@pTbqt#2&n_OI4kP5rrKxh5UC_16bM30 z2ud5gcd(C8Ac&-xM61zMN@b;1RbWvCP`@eTI9GOUi%jhaWVP4sc7`f}nY{p00BANg zG;)I3iCP9Q?VjE=;)L#z0OWzk)i>?7{+W@92Nlzv)f@dLz%BiT{LJiGeetq~)Vj~~ zHv!}HlQGTO;rLqMr3nMT0L-`;N`mIk>RVXdUN-$rzoqKe0qvIjffk9thq$ zQ{Mzk(oe=TYsV!0rrIs_QFXRAQ2utST~_PY+D1JGb_!RT?asH(As9pju25$zbU)EQdH~D`@BzVqYfb38z2v$ z{f*f#?<$bS#T={n7r?jZmG002ovPDHLkV1lG%q1ONa literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik70(?STW0@Gv88dAbV0jh6;K0BzotwFajY(Kk#8^ow*gatC)Tuy)@ityS zDF&XBAiv=M2*4n8|J*sCIA?)JWHAE+-w_aIoT|+y4HRthba4!^@P9kWo3BBEht>5B z`;Py$y7HY%R}?-!#Hr|OwP(|dNk*rq+*-9gn)h9GQ@P!Iua#3bI98W2ZM$T}a)9vy z6B923ALkLSO`I}PXAEbs=uT;|e&~N diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/soda.rsi/panel.png index 9e3049e07d7a844331a3a4f1d3b659746f2c4727..0dc976477696ff5a476643660ecb1f93016278cf 100644 GIT binary patch delta 666 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..f005de716f50df44d3f411bb414ae618d732924a GIT binary patch literal 1944 zcmYLJ3p~?nAOFu~#yQ${%0a|(sT@LwB(%APT;^6-)`U2EiCl^bbIaK4mPk~S#1SUE zlIwPkGxJJDF*?J9OeSP0yWnhkKcDyae15;@d48Yo@AJDpPqv41{Q8OC7vMVXLL)&C9#{oFIh)d2NO zJ0zCuw4>;F%ySi30U>zMIC55T_MIDRrVDM*++6*Z>nL78JOw&*FB#|~5T9Nq&9S@?@)h(|u{{?+>(fh5-Z0NqR2qCw+YfsVR&0axlIf6_Xfm9Y|_LaugE(zBi zJui{MOxU@2HYp`aDr7A5^3hkV2Sj*6)Qkw3ase-SY3Tieyk%MW1{>%YD`_5Bv{voQGyTzck4A zTIjnKqTvjz33(i|^+Sh0)XjBjLC>443H=L*^i>9l1%9KF^K+!CUzi~IsFq1>3+y^5 z8MQs>IgP|62FT8d12SvI@)*BJr|ftpZ&lxY3sWYtNhoOH#y(v)ziy$jN_c;o!MQM`__Sk-gal9JtZe`$kL zt3zcw8jW_oQ$s}<1m(@!8ukju3In>th$c}}qvrSS?8-MG!yIYr1aJxx$k5H^fe=Ab zf06UE`n{=R*aPiI4Xs?Di92_29Rlk_YJi_ZBFM5qV|2Uu-t~JVsJQn4UTdVxI|F+-K!T%8N5~j0o7<34!Pyk?A z9bC_o+5FfJX3yR$liBb))GQL#n!_|QbGHm{C{u_(gF&FYtJ$S30)piq=UB$){Iev4WOl5)qkP}jVJ{#LO+P( zG+!+O;*j#zoSOpmnfvWq^Xbcs{PIR$+zB>nU(^5726~_H9RCPz$VbyC$McRh#pU*H z-?P!K%||nFQQ1!q54gbO$LWW;Mj{>3tfA}h>c^GUV&FTzFd?2k@wK4S^v~1Q@=SWo zJi9nL$ztlVvN2Pz86vX025QL98jml(Sy$MzDb*DVbpt{=3G7a8nh zx}9KwqWSF((eA(?%)2#l>sV4Aip<_lh2<+f+nnQ1K?wxUl3dg}AD9$(Q=hxc^N}D> zZ9~@RjgOmif>`d45m$7dNux71yZN!K<+qrq(I@525Vp!@x8NaCZp~AIr(7?Z(-6_|@wlIvvF{C7j(-?Jg_I(S%@UaNA3 zwfX?~em|)hIGf-Cumo|Ut6RVLzy|5zn@YLHk(5gKnlwPw;VXY@urPmjCH#UUEoTRJ Jd$Mg{+CQSAs*L~u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/meta.json new file mode 100644 index 0000000000..6467c18580 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/meta.json @@ -0,0 +1,87 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..394a9f792c94b47993920f654789859b4e000527 GIT binary patch literal 1161 zcmV;41a|w0P)EX>4Tx04R}tkv&MmKpe$iQ;Q-M2Q!F>WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Wm&FYB(nr@rv zL|n?{SEb%pgfIpXVFYAm8Oh9I7QW-_9s$1IMR}J0xj)B%TCf-pkceZi@^ICeN!G7x&`{zyx!XTIDG)J)YbA0aBv7r zlqh@M=iPnXz5RQp-QN#rG;*RHr$`FcgM=5?M2J z>my_*(+9|wtuUI!4?xXDU!dq7pi=?SyMdsEfDS?4po1aqMYm4Pp1C+3QpL1PSr<#P zMV}7{V8Iuj%gYb@<~Hr5DO+Vjjm zwsR&8dYJ~90UNiQHOJ&bQ>?$wxuxtY`MG(Tjg@$Lt$iBNd|)XR9D?QQkNsn)GI{3) z{xO8(I5OWi2D#5dhn@jdF|;X)#EB!jRQed*B4r2bU9t4x>JWGu;djZwyw{1jtl bm;>_EX>4Tx04R}tkv&MmKpe$iQ;Q-M2Q!F>WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Wm&FYB(nr@rv zL|n?{SEb%pgfIpXVFYAm8Oh9I7QW-_9s$1IMR}J0xj)B%TCf-pkceZi@^ICeN!G7x&`{zyx!XTIDG)J)YbA0aBv7r zlqh@M=iPnXz5RQp-QN#rG;*RHr$`>l(dIiYSoeEKLwoiO=pA>gdhfa~5Be7^Y-yRY(z73=#b9o9lXtJ(a^ z{Qdzrv-`Cgu$9Z;S)&1Zz8KqhzZb0X1m60@2xv8%;0y<#?;l7pUdv@c%Vigg;;m1u z2WYu0w7VT>cRQfvvcmPLodYJLv6OPE=YWlDg}226QW*@P2cQR_2kf>7==mb(`C_^c zL}cvWW$XkuN`Po=?+-uq!^7A+LAd!>E`!BYPs>4Ac}}mYs<&XgFTM{%grS5Ga9x)v zFF@rxKSoP!uU@-{RWfKcy1tV zqg&pG_5N?1pX2x*py!KFsaKcYz3yFsGaMx50ir`Pwg))F0koQf#3!lpiM5h=N`9qY zU3&W4<(vq`oXFyWy7GKt^F?~SukTPZ}=X00000NkvXXu0mjf`1wl% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/soda2.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..4a1a54be1056b966c3e682efc1028d841f5aebeb GIT binary patch literal 623 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|S$y zr;B4q#hkaZ?7a^=NF0-QT=-9u32M1T)q5yXBgCSg5x*bRMHHxkE6?^|+()Yi*LTjlHzRoyODa=c+xhp$4Gd$Q zmfd+K_dG!_D$C*5nx@Hz^CB{(x!1onkj!=6AXaDni!mfYCn~-1XpQ=|%kl=2x=hbD z#ovg1UsTO_wK?Tf+sX{V4Oc&Q`iQM#xqMNnVO70vlc?$Um%>pj0S`}ya4X!FatQe0 z`&zc+P{tOH1ykeqevq_b6*|RgGv(B~Put64o@^0c@IhbS-;F)bWoAS7>(dUb>lOF2 zugLPazOB42>)OZN`--=GU;jQt%^`i`<}|h0^Ull5{NMf7fv0iz?C9KFcBccE9&Oyc zVv%TC$x`m$j|IyYFI{w9QorF?MVanH2jOGf3U_i#?ZW;B+)dBfqsXgqJB{7R;qj$i zJF=8lu6XOfaiJ3tXo3vSIv5PxSsE;r7?8sAv1UR_!hxMyB1}K~^Ofr&ZCJnX^DV3r zKGYB|Cdm{h{>yK@fY_f+CZZc;I<3D<3)gE6aEMGeIydI&M}OIjue%P`9@SL|5L?fF zE5yO5^mbA4yn;hlm^FeoXU{V|@VZUm(R9}|MuYaf4f#`-ukWs(x&16K1u=NK`njxg HN@xNAH0ub7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8745e4f4315da4b26da8a4e51bc21059f19455 GIT binary patch literal 2450 zcmV;D32pX?P))1P%okm_#lZCDU->J7J@bn!)QifGsF1P4>)-{-@a#^ zS$EyF_W8MY)DLFPIs5Fh_x{#id#$y9ZmY|H)$3oZ$h48sldh|CrOSiCgS+PxtuHUA zeYjpaGi25q6u`norOI?^X;NV8_<4ViwD#AZbK@-URNo$dMS7|Kv>V^>Kyn3ep9l0E zFCTZx-X_hGkc1`q_PBn0kM@I;HUv!#ATs!v z6PFcflE*h(Ws8uPTHx&sD~H!<^*++4Ty@Bf{cu37%M<|rSXRiPN&f2FA9^8-MSs&E z5)X;Iu#9Y0@}$KmXDrrY2~z+U-&pS2-16$Z|9{OD0R#bol$7BULfgmB#`V^tWq9UZ zBY%C_wYv6~dpEj?gS+e7r&R#SwGZn(o(7QRLxy@Gs|%!Wx_ZNTER6&f_x`MwsUbBE zc>ctI%Y}_=qkmW2M+c6$xgWfxTJx+3kxUy>a+p{M3V_IOKQ`iCZCT)M>t5jg8<i84QNAqBm~Qnrvcxa@7O)pxWw2oqc;`XF%6j_L4cFz_qftC$P*r4)#JVy zI$D)JTvDH_gd#EvD8~ZI2e^f&dg(jLVHRk2T54%q;p7QEhj-IDnF@WUV9rsl4T~AWJmCnBd4xiWkKfx4$x1zBT+~O_! z3_ut?PKL4dz$u>&(s+izaNXjn!h;Yl89k5&ko;obmo=mSKh9&~o1fm~+)(Xz+zx~g z)PT>|bgOP~>tkIt&r(40xe;7A_p85xB;Avt^BOQTlZOBs^vhjn-)#F(SKT9rDLue`u0Ly-f2b6kd|hEiXfy3 z@*Nq<>GK5xA(|0_Jn+Z(6?fPD^WBoa=D5Kzy-%U~=>2s|m-@y`r;Nd(kOq!=noy$+ zjYfjUueMch;`r0|YpJa!54QzL@3V^2#-fB@f)i=n5CUA)HS&~}tS=}C3IK%K-ORF< zwe%$4fh_e1Ek;b_bc33}K#D9sL34FlKC_|+^MDfF@perOlzU-kDZurNuo}45o$2@)0 z6dND`GF{5zCU-H&!wcnFk`*K{KbE1+`>N^Owpc{z8`Mie3&9is^*%L*_h{Kz;q{A| zvC3Ook{2Kf`vNl11iGhqfF?eamox@xc(>VYaz}sr+bmxd0LE(>Yw2P$p`2l9n}ndH z7X=Zfp^*6b2>r)Dt#N~A{~d5=j}Q1X2*JN=U1*kVYJhJr8@uSy5D7AH5MCo>wfaFE zq{-_Ld8DoA=yn%eRUrQP&hBaf9o2=B>U_lZM5+K9nYK3atyad~Ged6gq5W>Qkjn^i zkc~(i7I`*AG^CvspkX>uaK$NA0BC?_3n(PU838L~F0vn}!73Zqxp6zn{ioG-rgcDO z4WJbsZ9b3)V?(j+v^=ot!gHCWhc;C>G6_H6>#+Fo;m$`J<~Um}FT)N)rgY2)+S_!O_uTXM}pzt#_Y&cg)|@p(CpYIGW)G zCHSE%s?TZ%)sO275r@HDJIr!}0-$J%qCjktVc%Y!6~JD6%kb?ro1n9vaHLoF@1(J*^o z7-et(m+iZDWFG<+dG7-I!;QEZ;GRfx(;*?$3E-J0pYr6B0D=WV+!a}2vCP*D5Gl>I z%J5f`=YbHo?LD-=MhJBR;2CH#1jzZlH8QupamNLynM~}$RAXM zIB;Z|4omeTTi|X&1Smlrq8VwRq3JL;f)oMz3Y8y3$=;XavJuF#G!MjwD9_uF5tOig z38opn*_aG*a3KJ^U3uy?Bf+DG57wnqB*<4_37REtmvMjYOSNl654#YE9+{qLP z5}-O{19)U7!(j`vtpV~qz{yja!2w(>r~-hb5H@lfkQUxHlW-c+>f#2Q$mg020SJj9 z1l&u>-m0KZk{u=Ee~zFL#E0<1kFIHP-=Dbda2=mWZ;1E(ohuvu0kkZW#{?F5TX7AM z2Qqm96f|?yhk^W+cC%-L0F^)DT%Bgln+a07*qoM6N<$f?;}xOaK4? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..3744436645fba29699ab7bcd0f6f907fb06c4072 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!Wi-X*q7}lMWc?smOq&xaLGB9lH z=l+w(3gl}A_=LE=UDY|q-0uTJ!o_%(ch2#*EJ7}XPiO^eQS(*UM^{n2R=+L{yz@+w-mQ*_{xUckTM>E9#n`-PywWTz;<4TPc=fABy^6c5oIf8D zvp8B@-!z?Qyl4wAO zc5)K(_4m`S@4UR$D*0SGgCPd2Rljhu|F4*d{@-7^vz|*|-G8K(cdpJRV3;v@y85}S Ib4q9e0JbBzr~m)} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..e86cd1c5670e49eb941a086af88405da0a0258d5 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^4M4nrgBeJE_L*`XNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%Hwf?vaece0bB?*+2Zn@q@7`TmE>j%D`DS+f-bU9I$Eq{ey1i-dm^yW8 zuzLW%rqRkO>_%)r2R1cVu?b~ExUF}uOwEuNxbM03Jg9P;@ ztNqsdzxHfyJX?DIdb=Rhs>L?~-)QhLxf|+#`1WsM{%4zwax8jZpMMRipZd#GG1!*l z%Ga+^*HiZ=zOz3O@|Vbbi8gz#loB= zY~4WFrUM5q)y(I8f7!e@V9wm>rcp_83Ax*bP0l+XkK DbV?8C literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/meta.json new file mode 100644 index 0000000000..95be94ea05 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/meta.json @@ -0,0 +1,83 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken at commit https://github.com/Baystation12/Baystation12/commit/c39dcc148c04065ebac05f63bf3a556e8f21cac4", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "directions": 4, + "delays": [ + [ + 0.4, + 0.4 + ], + [ + 0.4, + 0.4 + ], + [ + 0.4, + 0.4 + ], + [ + 0.4, + 0.4 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..62ce64eb0c985c9f4e989b0945bb37b244a2404d GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e1o(uwzFpNh$K3A&L&Cdv@2)JDDGuU%Gdq57qw9)e)tPJE-n4hDyrmfI z9^f8l!mnur)U@Wk=>{MrP!i-9{2vuCJW!661j=z1ctjR6Fz_7#VaBQ2e9}O{EuJop zArbCxr{3mkGT?Ezz4D4>!vFu+plh5f8Y$%ocNt_3xOr z#c{cB8T-D+TOX9{%Q(M;n{C&##=I4W_m(gQo^!duvQF6IXAA&h@N%(de}BF|;I(Y8%X98;vTqoH?q~3H^>bP0l+XkK+B%eh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..862d17f646bb836c278676579ff4877cf3305d58 GIT binary patch literal 1458 zcmV;j1x@;iP)EoeMK_r!kp(2{3Z@!oLvTxm; zo&EED?~&i(?f;#f`DS)!|GW+`VDF(5i%*U@Y?{Ivh=ItZKOlRsqBiq&jLpzCv)d)9KsB;-VX*0V+YR zPAKzgds|wi$!V$!P7RQLX;=GDA-HHt%rs~Ycz$Yo{r7Di`XWtx8{TU5-tS+{$M~i* ze;a!;3ZPn>gs!Qu6~G4U)2D9#nWW^c^x0()as2jJ6yXc|1~L_#4QLy>4C@Fo0R%BW zKlUOE*9>gP;2m2B_+83R41^>F(Lw zh{IsclyANbtS1OdlORoQdYpt}N~`%XKxQso`6Y`V{q_jJL|DEJtOno`#w~+7lP0EP zmO;dmM~{=lZE%_ZG2n7}ZOF?5SAnA8+zZSOUu=9m3jN@ASJ5;M&OVnf=XH zwm|;~1ZzOi;OBrP9Qou0)LwVMVoxVLn|THM7v{6{&X;Ro?Dag{>-?yx?a)u>8j(8l z?GDxi$aaxg1Tqgw8kslY$CD>=4S3h)LJ%#3x8|0<@LVI9rh?ApI_g}oVl)65>Vo%A zcJxV4FIzDhU^>(=&G>qqA=-LYR)7YmtAJ!RsPyfIgIgMmk4{fRyF)YwkVhRaO z?dR@i0u9LATE)vl_tqyr*b}5f1pKndJTk~Z6;Lm;|MmsBwG_|XTaSDfoTtJFROL~c z*#+=9{^CFzn{A)(fT=qVGS`-vQa3%Oe6`I(hK5rE`s+3w0yG=KkcaS8WTu2Fe1$0! zwCPQ8BIJuurgh*KwV5B8rXH&0!Q0^&n6xIwEJ&3Rs@fw)Zk@0DW8F<50n;v61(3>) zLy^%JtRg$s55N<6+!PWpjgA<{i%|eC?@x%Xv5SIA|MGpuIu;413B=yjOWy>vioR$L za9vQ?T;^2wfv!CWH!c^vCqWZYN~gNXG10V*Lm!VzC_20Z;Cis&OI!+*HkpJTLZ21D z-oCyj`;$CKPzRG5uB&iU8S*e*t6Ap(Rse$s55di+|9K6f2*wGvxq$l^$iw*0XRYO| z05WHzVLQUm!M7zQg(};yhn5pO%b|8`xHnS>C19V89sTMUC zq}H?`0Tik3F1o3OAQnKGn;#SHS!l5an519y>~BL#K?G|6cTZU4Ymn5AmX{->qE+*N z6jDv}(f~vm>%Me6Em;Po|05^^+*qWh=-duNeLHMIy9z-cQ^o@WRsg+QcR^LT<0k^9 z%~6@cuTw%3u$%# M07*qoM6N<$f>Yn3MF0Q* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/sodasoviet.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..c8122097f818e72e2640a3e4f55a950ee7a04c73 GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vnj zPZ!6KiaBp*`Fk@tN*t3vctAt(M4uZ++eisuqZ)eXFe(pDvm9;OE;jyEkWv97$wU;NxZ} zj9}=#_(tZgFriLgM|*mk%?LfiDmc1=J%g<+rRc}lIsG4ODr89zQ0}n?rW-L z-lW(7^tT07fL7@D$ ziSRkr0ILf3bD73-zw=5y=h0>9SbC5D^`7W0Tw+F(o?UZtnBXC5U^j8Y$$2cSyIRFR zh++3SG*oO@&nyip+j{ZBJ8eDlKbtDJX3Uz`Xv~p#K%YCGaed#(ZmmO2@nYeO)*F|s zJ^a7=U-tOlu!)hm@k%pVu(PF_#?C i=eB2ckom;4k1=$6)A0kM^3lK)z~JfX=d#Wzp$Py@+1>mA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..c9fff1d29aeab15c1c0496c079b35c708f44bde1 GIT binary patch literal 2890 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 SDc86S9DqR`EGx}@@BIgC@5SE$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/meta.json new file mode 100644 index 0000000000..0227985bb8 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/meta.json @@ -0,0 +1,109 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8 + ] + ] + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..677ccd0cfe775655d3c79cad535de4a22e5a9bdc GIT binary patch literal 1891 zcmV-p2b}ncP)EX>4Tx04R}tkv&MmKpe$iTT4YM4ptEn$xt1{E-K*F8LZy^HWH_j7-aUO8_tz#|YxnWme>8^p7l zrp9@nIK)b#Ongo}snZ3CAGt0${KmOxvzKRv^h|1=I7BQIJ6P&qR?-#X8RD?4sFd%` zIxKVE;;d9^taVTR!eCxqNpqd%2;x{m0!avvP(v9Nn26A-l42l5`!N^)uPFL?vwO- zTMHinecQmrbz776fXf|V=t&cG(UyEPy@dksen#Jv1Nv`)o;9bp);>-jfDCoDd;=UD z0^>!>UUzwScV}<^o@w>>1L?4G*2UoXssI2024YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~SJ6&*B+&}E?j00m!3L_t(|+U=cBXdG1>$G>mg z)L43m5J*y5lNOg&D<(mj+K?Vx2pDZG1`j1gkV4y3L~2)hC;<^m55d)nhiD@ycqkQW zv~?>=X{uxmBo(ri1gbfNY{I53qM_YtvQ6?l=nLa!H?x!Zm&|-W5N3BWJD>Mve!t(F z9o{4WA%qY@2qAN>}>(`({tyAx_mv7gK0RWIv4kRy$lCLh~$D?O( z&`blp?hooUU~SF*{t(K}jA7&VrHQvD03cfSX?66^!*|p+dpG0R|6UFNfDoe2stEDA zKcK(KJm!!(6u@}H!m6Qb-vB`L)^{5KpfrdVx8KCi>eo`rfw7DD?ermZnm+{I_6PMh zD0(o5^0N<6{!=Q0NdUl>hL=)*U=j}p%TpQL+BAfBN1wtw0A8~?0=@3n9RrT_%Z-KZ z?1LR*-0B+ab$_ss9cu@gr3N7Y<5owY*ZsOW;TPQ-RHP)L^gsbu-|@C-KPC-?;oq2z$Pq0M^a|5JJB2I9idwdjPQYcKfxPWyhZb zaNg<&^txX+1MbZtHX8u$%;4Lpzc87~VDgt!;m{Muei&EjnEe?mBhc%9TLxh(@w#6( z1JuB?ehn(rPxgB4(&`BGx?eW~x*s zaum(ai>lU`)e-1*zy4)t^WZ}ZuRjOcMiD-_2|d>*G~4`o^&%kW3cai~gkSyjy|Ts4 zefh;7H1ff|UE-XRjrW6JSe>z2d7%yVvtQ`#$Vex0$(OSqKluZ8q;t01>H58z`~kh4 zxK#@L;tv=(lRNul)6PEGQimFre6G8|f#DCnA zZ@x;ui}cAyzo4HGLI@$Ni*T2$wt9YixJy>kznB2SjS!X~mLS600lXbS2qAg0%jI($4Pq?+2Tw(0#$Kldz;;9ErwdN5oG5qO^<2 z#!7Ye)iN$SBHDBn@uoyVM7`EVL%wvR--gsv@72QyPR&U6qTlcsuv=Ui zQ&FJi#XEVArVziKxb4@S55MSAY|GP^ob)eZh5Ln>MyQBb>I;*dL6FbyR1mu5H-wza zJWqdqbRW`F6I0b>QzP=?5e!cUGBaj6;B`MI=XxF4lPICz#S#SE7<01(taLw15K9pK dgb?Bq{{RQEt9_bvkxKvo002ovPDHLkV1i1dnMeQt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/solsnack.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..e214035f5b6a1974de0f71dabe02477e6fab88ad GIT binary patch literal 2232 zcmV;p2uJscP)EX>4Tx04R}tkv&MmKpe$iTT4YM4ptEn$xt1{E-K*F8LZy^HWH_j7-aUO8_tz#|YxnWme>8^p7l zrp9@nIK)b#Ongo}snZ3CAGt0${KmOxvzKRv^h|1=I7BQIJ6P&qR?-#X8RD?4sFd%` zIxKVE;;d9^taVTR!eCxqNpqd%2;x{m0!avvP(v9Nn26A-l42l5`!N^)uPFL?vwO- zTMHinecQmrbz776fXf|V=t&cG(UyEPy@dksen#Jv1Nv`)o;9bp);>-jfDCoDd;=UD z0^>!>UUzwScV}<^o@w>>1L?4G*2UoXssI2024YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~SJ6&*7awD1A|00y*4L_t(|+U;6RY!gQm{_G@+ z9otEXZIU7YQcb;eW{ml2?yqQ@W zG^nlT+a*{)(JNou^z^Hy{Mu5TojbR26`ma$HPpXa^6gmTwC;d)2dr@_nFJ5*4RRF} zHkbsfC12A4snHtdXb->QT{)9;wVBsf5pbrqfa1hrd<&NY)dwzA3a6p@e|A@5OC|aSv@6O$DenK+FCriU2zCB1Uuoaw`1152&5+f06ScpkiZ=LjSc|7Yj3;oB;>08_{?H3?Vp7TKY+H->&ABh&jt447K)cHhNsi z=8W*Ht;ORS0+J-jMM)|JF_DFs$YL?*N6na|)C4S9l>>}Wr{i5dA@E-;Uc~$Bwz{+w zV^cs3@HaWR&jKsH9A*=so+S7pAb^_#ghc^CUn7J?xe7#00~&&I8TwYY2LQ0u?}o5g zV|flZcKAq9TZ_ll0keWz`2oPJb0ZqEk5qj^%{HYv1b~pwkC4yLeYDv6KeWA5lgDL4 zBqxod5r8e1S9p22u;FnMGRKAZEdbbnn=$QdO%RZi#tj>*^-TZOYh~M|c;)1mO@eW! zdOhy&w(C;9rsHGzc>pyXm96Qo4-Y6MFL7*9dq)?cE(bwk1gY*=+IMijGVN&@ZwCJKb7V23MUj!axY!$3 zt^BSJ4-~achX9=m`mbKYzJvR9#ayMvv!yV((yKkX3?_OJUD&qi5TFf+B&QL1Hqu6u zSUCvl2?4U?Wv|2u#L#rJsM$6Z0<;t2&TT4(=uL)3`*YiV@4y9BA0DefJ;u{=wGhB%Pmo^Ju*MSwGCik@oL~j9#%Fp?EBCAu^rFyI zAw&xxN=RMDP3`=caRM!m$R`72l9hz^F5Ac^x*#U*UB}_Na;nJq=B>XgziJRI zk9C6U$|)s3a1R0E1lD+=FO9iW0YYC|rIZyRP)=S>8aJGb?UlffjJUK*fTu}-v`bKw zvTEdozO+gn;hPOZyO~j7z3Uw;U@lbv02B_mErmaM|6Hm7?_gnB-MG&JTGJdE3EB}> z5p6h;%TANrW`Q&3&)Ue|J6j6Zx3nQXwnynpAn9omRD7NkAKRmnL-V!t1LOmhGw09R zOz#OslG6Y@C0Bj%F(@%ljJK*5ke#kAkLbg$S7iM;Y>H|bPdkAvldW(-IeGN|tP?77 zK*;CE!+eisuqZ)eXFe(pDvm9;OE;jyEkWv97$wU;NxZ} zj9}=#_(tZgFriLgM|*mk%?LfiDmc1=J%g<+rRc}lIsG4ODr89zQ0}n?rW-L z-lW(7^tT07fL7@D$ ziSRkr0ILf3bD73-zw=5y=h0>9SbC5D^`7W0Tw+F(o?UZtnBXC5U^j8Y$$2cSyIRFR zh++3SG*oO@&nyip+j{ZBJ8eDlKbtDJX3Uz`Xv~p#K%YCGaed#(ZmmO2@nYeO)*F|s zJ^a7=U-tOlu!)hm@k%pVu(PF_#?C i=eB2ckom;4k1=$6)A0kM^3lK)z~JfX=d#Wzp$Py@+1>mA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/broken.png index 32fdbb98f307e24f17e0e55da64a5524a4098101..753f96ecb456b4978d0671dcc5ed5dadd8c3da18 100644 GIT binary patch literal 2283 zcmVJNRCt`lTV04%RTSP1HV=WR;|M(%4wgmGt*FSC8{Cwrh|&@w zK|_Kb<|Qg$12K9FE$l%E3Lk_-@TN$Z56K1R#VE-Xr2IkAH)kfz=)q*{eEXj7%)0yT zpLKqs5AK|E_Srvct-bbIYp;D~q4D6O(UH5p@-_F4n3I3cnHYR^_ADMVlQ(D0C%5Mo z7zIM(15>x>OnY=B_znoY_l@rr002f@fHAjx=Z!mN+meOBI$Q5qVyb}55MYXB?B7QZ z>iB54bX=bvD)$Nio#1z7`M8}qcF1xv4CX`9E(Wauj1Q0o3P3V0?^#EVyZ4_PQ96Pe zKtO$s5CQ?_V{iwx{di`;2Y2>efEJGLP5_>_38qt%;1z&WHy0j+$-rkrv~ki4frFnElZ6fgm{U-TpTFUoUJ2tEP1iOH^i214-lVZL8DRDQtzy%Vf+&PKS~t`0nRvI*^F6YGwX6o7=3HZ{SAV)i3- zwD{@7kM{cA@uTLIwJ#5plj(imeq(9jBgE^-L3dF0qdK1DJhUdZ`IeZ7@v(iL0yb zFqkNlTHr%a0ANP$>L3s~qjZIU6+#{tG=+1|zgFBIKRj+WzJ1oZKLE^OhPQ9uUI>BZ z(p%u_dIuNLC4fkfi4puJ#5>MB1u+w09)b*oq9K4;_;MJ+wd<#IA

=Tp_k~N3Y`A(iz502D1?vam$ugk5?U8rDi8u(A&_~= zWGB~(x<-&H|MR+E%&kxVD(=@`cr|Gd-DoicwE$oP$n2uL%;y3DN}rmL2O@XNE(5Gz z8w;%K#{^&ReZj2H$`3zu#F!KF^`spL-G`tOfZY}5*%)8Sn{{vxW(#is8<9rc^z@Y{%{6nii1gfN zz}*$%dFjRUc3PzYHloYcbIPwvL zX#!X+IaM(f9?*bnX2Cpj^e}{cKRG%(a7qJPAXTyI+Lw^748oAJOZb)>@&PFtq8fmP zj0X8^jh!%r&=43$T7PNuY#U>0WrSQ%BcSSx1j#&HrF`c8pq2)>*Otht^hAmYe%{Tv zxNXY-ZCZhB@>g57*z1byH*?{FY4HVO73UdsVx~Bl6fH|If}Ead235wdiliIlSv^lx zI+=xzoe9X?fcAR;Ee)}61Ngp|3(uuHgroq9^mN9!EDI4L*IVc~stnLa>ca;go!VuW z6hJSNC_8P7a5!~J!*2=dLNcEk)Adk2#ZoGl5;I1{Jiz1gUQHpi1A7n`vQ8PVlN3Nl zs6LS*Mq5V<_EomePT(*^LX{BF%(w)#1lMI1w!wtm5sKie3>|Ef(m>S`@SfGjke|_? z?2ef8zx{5;#>Pw)pzW^v$NS@Zz70s>WH&7^ofq(&)w^|k=lC{qeB@zM6|1whtz!J) zbN@6Q=_R8&9F=DQDahy#ZL6w3fVMKiEaO#*JVt`<(q6y^Fxt-6s@(aZtZFKZfDPcT za3Iqp#thMV#^{g~0Eh=6Om~Igo*}d87 z;V$Ithi07MVGilhe3YdUz(8J53=o3cId*4fYk7e;^0ujcfTUBq{(+W2(Y!%MYhQ0g-Pa!D) z4D7D`&{yLjqU(TOfVO~}EO$Bh&MP!$5o$Lmr3qt%Way+BUKWyh8wVUaR5=bfn6;Iz zkV0@lTHG@U4b)4362%}P)oQ}(rw|eXX(El2;#4YzQfGq_u3eDjP2>T5n|yW9jcWA>WN2*qaK2Yyu5 zGxb2#*UYG^1sbR_LR#h}kxkkG_k1BX`%(y<>(li!LhMvSV3iY~vXEnh1W}w$Df&|z z!PJ^_nQu}UvM+72qcI~WJM;;m%728^MJy}C_ga+tNGhaya=@}~sLZ(1xcU08GG-|O z#AaF=O70z+TmsyN?@8=4%4%aJ4Unqm4k-8JO=X3K_W3!aCRRO(uA~9Jbw_69Y}Nll zs1Lffm{wK&54Fk~5UXQtfN2h)KAW%us!-VckNB_0{}&YqBq{2p4!HmT002ovPDHLk FV1f;!HYorA literal 765 zcmVPx%w@E}nR9J<@RxOO;P!Rr>u!u|e3AAoSLxMcS8Vmx*O4Q}#TFjZXC)c8}$jyn% zy3IO74Q2(EBpWstJXG>pnfvRCk#O1y06&Z{*nHvsx^m_Xopa;u zf~dmExRwCNuv`_x&WYF_eX)#{D(5`M z{Fx%98XfI7+H`0M{Q0S#MEC{Z#}m-Hi^JbKo)ZR7M^bm`^z{F(@hI3ywFLllfJ3{G zgC9mv?|?Z)(l>M;3-+{{$e4;+x2Jtac)9VgtJm>z;~{Vzqr8?t;5uiX`eB4xw`WDd zYcw(6ePF)(0AP-o_=ZB|hf!jPjL&CN%x6<0iTP{_uULXtEG6VGBES*24g%M~`0dmS zUZV*B*wyQza`K+!E{=c><2OH1I-gCoa^$^9#z>$89DtZP&4Non-ct>jU>ro$LRc&j zxK6Cx!YlILE0!`zSfxN02}*|wwFXQuMnENj#S#HdBYO4z4uC~UC1MdRErH}ez^c5~ z?V%$W@fuC|ug@tGHZ`D4LA#JkT9D_TE|rAMgp^?X7XWbthyV>10?+a4^*MPad5+a$ zDcZ^`LLOFKQE}r$l&-8cwk|?Wf~SCtbFVuV!-|lZ0w7+evOJN(?iEWY9y=v)9Wf17 z1PHp78vy#-bwX7AixQ-LAd`S@nY2ZJyH1E)w2+(;x^1UAKmsqm&TZR@ptcBk=xmA! zI1L_7HfuH*2a&D?NBd23N#LEL>QSMs0ea@u-QTX0LgWi7t>%-@C{;7OdoC_QX|t8u vjSQ*PZ?hF=M!*EFu;x04tXUxu`0w}!d)a;XFD#)I00000NkvXXu0mjfk}X~B diff --git a/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/deny-unshaded.png index 66e29f2bf019fda6d4b17ae1248855f0433c2012..bc889ec638b7be0921419d2d2e697011025fb80c 100644 GIT binary patch literal 1369 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 R|HJ?Q002ovPDHLkV1n|%V_yIO diff --git a/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/meta.json index 8c67a03d35..057b1e8e94 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/meta.json @@ -1,54 +1,109 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from baystation at https://github.com/Baystation12/Baystation12/commit/f200ae08d71ecbc91412ee650a334981892f5177", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "normal-unshaded" + "name": "normal-unshaded", + "directions": 4 }, { - "name": "broken" - }, - { - "name": "deny-unshaded", + "name": "eject-unshaded", + "directions": 4, "delays": [ [ 0.1, 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, 0.1 ] ] }, { - "name": "off" - }, - { - "name": "screen", + "name": "deny-unshaded", + "directions": 4, "delays": [ [ - 3, + 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": "panel" + "name": "off", + "directions": 4 }, { - "name": "eject-unshaded", + "name": "broken", + "directions": 4 + }, + { + "name": "screen", + "directions": 4, "delays": [ [ - 0.1, - 0.1, - 0.8, - 0.1, + 3, + 0.1 + ], + [ + 3, + 0.1 + ], + [ + 3, + 0.1 + ], + [ + 3, 0.1 ] ] + }, + { + "name": "panel", + "directions": 4 } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/normal-unshaded.png index 027d2fe00987e2eb1f1114a5615248905cc8f7c1..b7e0751dddf2bdf0580f768f08c509b838e2e9fc 100644 GIT binary patch literal 1067 zcmV+`1l0S9P)EX>4Tx04R}tkv&MmKpe$iTT4YM4ptEn$xt1{E-K*F8LZy^HWH_j7-aUO8_tz#|YxnWme>8^p7l zrp9@nIK)b#Ongo}snZ3CAGt0${KmOxvzKRv^h|1=I7BQIJ6P&qR?-#X8RD?4sFd%` zIxKVE;;d9^taVTR!eCxqNpqd%2;x{m0!avvP(v9Nn26A-l42l5`!N^)uPFL?vwO- zTMHinecQmrbz776fXf|V=t&cG(UyEPy@dksen#Jv1Nv`)o;9bp);>-jfDCoDd;=UD z0^>!>UUzwScV}<^o@w>>1L?4G*2UoXssI2024YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~SJ6(k2cgozCR00JjTL_t(|+U=RKP69y?hGz*0 z#Mqn(9EBv%`2*n%EqMhJyqeL$Glyba7oc?)KQ@ zxV`xj0+-y)%+CJ1vo`=JfaQEc$30<*+dqu20Cn86PyREIawq|m07?L{p`;wNR=(|` zqx_6c{}DXnX=ufWU33t!zbOgp9EJ&Eo5X3i#b+K7`~2gT1S}u45b@>x5#DaE;V#kg zU#dVD{M12f>Y(M71oIRi%{(7G|1BpWX$r{t4u0f*0szbgPy+z4D$ooJIey6p?<+ZD6!4b>2S={&%$uhGNeS}cy%b@V0)!+So!O4pUIFg7nnVSJt_E^d z;MKsaDj*>)0a5<50n~8h_E^bw06uPXD&QHddjNoQHoJ^n0sIgo9){$Tq0tJkD$rY3 z1z5?>C3O!_ejS!~etGaoLrDR`q3Bht4oTkImC7J>NQe|6c7)=vvsWDyIr38 zbjOiVaT@sSe|&hN`z)_&GqTCh_4oI_#F5pN&42e`<_Xx>1sl%W+6Mb;QzZ^v{t1F0 z2!bF8f*=UOFj$bAgFOEq10jcf?`DJt&K*S0N8b=WSffB%m^LEhe l3Qqgl)~R4KL>vUMfp6qm;h#GLSXcl6002ovPDHLkV1k39*YW@W literal 425 zcmV;a0apHrP)O)-r7~tfV#&mRu(XvJ8JfiE#sHF; z962}XO`KS$5;;;7JF;W0dXwWtyug=22vS57;o!4D?OX^^KKn$ZoJk>sd{0j0)7?ocF{4OT`|+5=X0-+Y zfZ1dU005iS8p1e|MV32wuIsv$Zz*T;X7^JY*9my%_t&?THg>|A1Bx8)e32|G{U%@s zD3CEMvfK&dsO&59Hdu2&6H#-5f;9(_h#L7mM@$?rs!S^XDh-1wzKvW@15Sk!XEg;F z`Y+J!pG~Iaxd7igqZ;Tu&00000NkvXXu0mjf?KiY= diff --git a/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/off.png index 069d91a373781e7e564735bd0502f0430113d7c7..3feefb11bf03338fd16df202be6e41ce9f4dff0f 100644 GIT binary patch literal 1684 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 literal 322 zcmV-I0lof-P)Px#{7FPXR9J=WmAwkWFcd~Vr4CgKq7{4#!9m2at3z>hXr1~7u6-8u4GPY6@ht=$ z92-F>wuK^b@CRLbmqbN!wuCR-!%fHq6bi+^GMadNH1RlV==J&buzRkL5i6`w z7F|3)vA4Ze+bryYFoDrH@ z4FIOYK>i_@% diff --git a/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/screen.png b/Resources/Textures/Structures/Machines/VendingMachines/theater.rsi/screen.png index a0bf454c8d4e6f0160715df06dd83326077b59ab..30c120bce78969ab7b4c903bfbb7df806c4bf354 100644 GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9F5M?jcysy3fA0|V21 zPZ!6KiaBp@Zp;#OlyG<$n3SCSL3Ytp1+(yjhpulB6m05P`+$3iV2-NCfkVgGKZvsU zCMPegWO3cFaYM&1{XYhJ=Ci9+joWw6SsxiQ!SmUhbLaB5bp^0BNHU}`%wS9aG0Y?% zy#03V{o(n?Qwu-VoP7M3`}Wg|{qNQP&EFe;{Q0?8?Te4UPh4xQQ1^53`S?@ku4+%7 ze8H=y{>MM($UD0_d+r}fY1r}V(!Zsr4?k&-6Fm0#_!Iu;=^}|n4tG8&uK%;4`uo9x zH-Zc0?A8Cje5`)BP*2crFY_yHd)YmerZVsE?1=qlzc1U2)3VO5uIk&Pp9OpN6|a3G zUwi8X$7IG=C(mo!tK0v-8)W;l^6B#@_ItKRKT9xjh>6^ICZ%Q0pSYwy5otzFe*fmo z*~Km8{-W?{|MB(8XP%z&*Uoh|c3Sgu>kj2dHQADi*Z$l(eVzUAPv32ysvUfsYzne1 ze{KxhUMIl!_YgQ zX^^fN5$xc~n()LZ|DXJYw*xR=UFE-iN?pUPgy{g zSi_7rsk;}%-ET`eH2rOpnDigFJ>O&v`Y!xFe8=KY(qVh|HKGZ7p1!gD`B?XP(!2Xj z|9)<(J9K#M(^=mA_nYeln~@?39$SNnQP1F&#C=91j?oR6ei=Mn{an^LB{Ts5MFU3f literal 538 zcmV+#0_FXQP)Px$)Ja4^RA_BiKqf0v6Z! z0QV4@M^GQ(4#CFa3cVss7$dIP%Vvwa{TdzDWHSH$yE_3427|$1__sWW20!fLIXs@= zl?$NHUdhJru)lfD>-R}`PZ@ONFUb74SF*9&Y~fpu%w@{xm28BowbJ}T0m9=c{_a~2 zcAG5#XcHlsKU}S&-xZ2b6b*XiNFSPc02p-p03s3GYDH+rtnmC){A4r+5Q*Tmnwj(8 zbpS7(2$l-~K&R2p)d`fJiYKP?833T})-vZ8I)K}rW}b?tI8V6kY38Z;=cj>^96|>S z4|}-PN*q)1x)>hz@LJ6{rs7p1bO1esTdiCQJM zgUt69HVrS2g)@&u8xHNpDjOjk`R^_Po;-OP0MU{NmW$kvM7|+%CZjQ?^VzSD#MA-+ zm+PO~f6(p6eE~kdq#q(JdmCI`bP027|$1 cF#IWg0QdgrV9%erHUIzs07*qoM6N<$f-+w5t^fc4 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..c20faa89db2e13763e8b8e254fa3ee962d3efa2b GIT binary patch literal 2841 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..34d6c07accd12d34db2ee66157a235a93a8413bf GIT binary patch literal 2577 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..906425c3d18e866900d4825457073d3cc26997f3 GIT binary patch literal 1481 zcmV;)1vdJLP)EX>4Tx04R}tkv&MmKpe$iTT4YM4ptEn$xt1{E-K*F8LZy^HWH_j7-aUO8_tz#|YxnWme>8^p7l zrp9@nIK)b#Ongo}snZ3CAGt0${KmOxvzKRv^h|1=I7BQIJ6P&qR?-#X8RD?4sFd%` zIxKVE;;d9^taVTR!eCxqNpqd%2;x{m0!avvP(v9Nn26A-l42l5`!N^)uPFL?vwO- zTMHinecQmrbz776fXf|V=t&cG(UyEPy@dksen#Jv1Nv`)o;9bp);>-jfDCoDd;=UD z0^>!>UUzwScV}<^o@w>>1L?4G*2UoXssI2024YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~SJ6)OZK6~uS|00YHIL_t(|+U?y@Xj@er$MN4? zN4iXln+RRihAGO{r=btR0)kIP9~{CQLO>Yk(idT)J~c4LD0YK^tl*28PYS_;P!wcB z2P&2d!jMQyhGMMCTGSL@9}(UMO+slKo~o10gm?^$mus>->Lzk@#5TsuM@*@><*XAg9pIeTDkUK8cA z3s=>D;i~$}WtGhAr$4{cuNTw0R8J+_Ie%xE(@K(b_wKiqWu|-Yt>13__~v;p)!Reb zJ^z6@Ag0sj{8V~LlhfUW?_M3-XodS;`Q|NMf9+(s2VDQk+cW;PzCV@K38hMzST5V; zYj~*I&%2f%cm`~A5|SjPN*U#PN22I~PUjbjmRwx1cM3&I*zLhFyFEBoC|aUicEyez zzhcLZuPaMNIR?9sAASz_-F}fIJ+fBzxgML5r1!UC3~tl>!0!PY9s}212VYF<(#enQ z(CC1dKb6&q&Gf)_&u{1#vGOF8IARN%>5VSrhyEUrzpVcJ<+W?xxp_^v-!`n4K>=1P0hfnmjB)$BuK9lscq#N?I=l?^kg?nX+`d0xi=L2ZI zy}eVBZr5UJ&H)Ftf26Sb$A>F1|An9(?eb$k_jNuqculjJs4C||e$4}5tM-J~>HTeH zhXZ%yc|Vr7kF<-#duBV9?eU<^?!>)+wEWlpD5JNc{efqIB>kq9_kwoxymoygNm2K} zYw^`o*aL8Ixic4aelyz-0000000000fT+cE`dl;j?_&Ogi*r+@wLhuldPgElPn9yt zWy5XfQ2u>O6MYR2X>z)|+CHXi@7Sg*Fge{_>&6K3L#V3)5pX>p000000000000000 z0000$!=y@?`_|KwAH8aKjT{}f^ACGX{>JPKTM0jvUaBm&{G%U8(wjx8vM0oH*)Bho zUJ80*h3ol&|GeAR@Q|NK?yfBV;tjq2u-8#@J-@1><96Q6X3T7+kwXCaOv0_3k8Q$k z{rep4cUXt^Ew*aic$TCK2jH+?{M6+Sx#{ii(7r{*duE*;0-M@?hd+GU4*&oF00000 z003ZHV|ilp^24l=Z{$-c+95yi{($n@`0{%9%J+lT$k*G*cF(VCVOG!@c|VcdUH4NX z$gh10a*sd*^FyubZR1IBTeQECT6tA-R9GF|$_Ic|&CP6oyl2*hA)vL}&#Gp(+m9-E jqF!|QTm=CD05|;y+8-J&`Q+mZ00000NkvXXu0mjfhh)qi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/meta.json new file mode 100644 index 0000000000..24c7cd05f4 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/meta.json @@ -0,0 +1,91 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..46fe98a85d10aaab6ce6184f7cc7b70e8118415f GIT binary patch literal 1125 zcmV-r1e*JaP)EX>4Tx04R}tkv&MmKpe$iTT4YM4ptEn$xt1{E-K*F8LZy^HWH_j7-aUO8_tz#|YxnWme>8^p7l zrp9@nIK)b#Ongo}snZ3CAGt0${KmOxvzKRv^h|1=I7BQIJ6P&qR?-#X8RD?4sFd%` zIxKVE;;d9^taVTR!eCxqNpqd%2;x{m0!avvP(v9Nn26A-l42l5`!N^)uPFL?vwO- zTMHinecQmrbz776fXf|V=t&cG(UyEPy@dksen#Jv1Nv`)o;9bp);>-jfDCoDd;=UD z0^>!>UUzwScV}<^o@w>>1L?4G*2UoXssI2024YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~SJ6)OZK6~uS|00Lo2L_t(|+U?puXcJK!2k`HO zlA#)GC#lvOTuMQ3b2xO(W)W%;QiOt<(5X_V1WE}(TjN|ktWSuo4@4yfxz**yLZ35d-v`K_W&XyBBDN}oVPQZ6Yb^= zjN5IjP(*h8wvz6p4siAR2yofFvnkJFc+9gH9xD`)GGi;d@UHB_YsRXH$j;A?_`d4L zdbf7KfSq9t060GWTpbfs_F0d!K3|G*&q*?FEG!v_1Y7lIYqjsHbr5{{5Y%MU5+2=~ z4Ik{yh7SOYnz88-Y)+40(-MRAyfY)fmk+tIuyk&gzI^E9*GzTVYd8X&PJ$;Fi{EB6E(;$>v1+^H-i_bE3-8d_s=q6WN@o zW^7BQX0~K%#uC$7IR~U=IMKN|;D>w#09-kZy~ni-0K96_9MH&x@BU@#0H+OF>wr~1 z*5}sbZZx3iFJpMocZHCM?ELzq45<@RZuV$sdmW%B;nkC;@BBg$DF{jsl z6H<-_6uoCl;mYRzm$!Hd01uwyUFEg64+TU2Z#By1tFYHfVIm?TA|fIpA|fIpB70i# z9lzUhsJEbDazmDDZMT!192zai7_i$3hR=Uk9T)xTYXEqh!wa)!oynI?bIj-L)8Xbw&rMZLzYD(BO;kjJ_4Q1 rp&uqeA|j&h(##d3E_NpoQ6KvU4a7cyARL1<00000NkvXXu0mjfaJc>f literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..b5de5eb5f43bb6b7e0f8f5bad66d8a98cc13964c GIT binary patch literal 2315 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/uniform.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..f71c43d8ce8a62b86d3585eb1aff8e41ce35b009 GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V1$ zPZ!6KiaBp*`DO?^O0?a-&=C0X)k%ko9JU;+txACc%9p&iPJJ??w@D$cJ4k=hmV?f^ zhm?dS#63PMwmNJHhvSB~jxHP>B0WJp=8rumhzK346W;E-D|=BI+vJ+hbIPW@NxPq3 zSGGC+PePv{!!rp+I3>n-@uA_w|3COzoesA1xvym4vfIDqfpoXKVZQE+^%v|GeCIiZ!63y*S?N!_O;* zJ7sxpEc#)wEauS1#mNL^*$d$+n$2NyT*8JoX9F8Nb?`Tdn`9C03D zAHN*X%VBx6X|492(w|C2{&5W|0YAKV?p^Sq`q1}@6&~}uOl{lE82c~Pu2|=jyyB0; zHgWUnRD(Use4J`4^y}8dO%;k-=<87Wl<${cjQgh)hi##4>KQx!>)ALy^mNkR!nr_k z{(eIRx9O)B91SqPzi(R2kF5`^9%g4dtbAE`Yh91nqKrkGezMkutP5%2%xHdQ?^rHn z?GwGV^1hbMLSF{npFV2J)h>KjC39?rSF{{Deeb{fmOkIx+qO%mUzxxE?uQmJ#`5&{ zC%dyMM8a%XZ}Glc;Od|uBD6AuYg%gQoyG6{rf^qGtL{7K?7mCMW?>9N>;Kv5AOH6T zG2Ruqb8wFUV{s3I!Ep`-B&vNX!}6w(|BHL4Hk|mm*~4#{)VE5m7gwCpc8jd@W&SPo zeJ4vmg_i!+IQ{QpQ@8~eybE0$%^+%gIe5#~wz%Xc-*k1J<(ZYN^Jdta<>&8r(Wx;` zd7DX};LZQHS%c4;E{Ht4cJ@r^ZLz;2?y`2wO|1%J+VgMm1I+`PW<>{79YRm8j7~6R o-DALXKt`G2j3EZ~jj4|5;;$D>qKAU60@E~ur>mdKI;Vst0Q%Kak^lez literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/broken.png index 783cf8af957fefd7facb59a49b0866082881263c..3a2fbee2dd70f51ed865b70aec74c4e8f5c9fc94 100644 GIT binary patch delta 734 zcmV<40wMk31n>nRiBL{Q4GJ0x0000DNk~Le0000$0000$2m=5B0G+pi?2#cLe=Sf< zR7Eo)B42B3StckuPI{`gwpezftE#`t#=h?E?&IFoM_x2=lC+no*F_>U0001q;;~%- z000kkQchF<|NsC0|NsC0|NsC0{{Yn7n4tgw010qNS#tmY4#WTe4#WYKD-Ig~00J>d zL_t(oN9~r;dV?Sgg-KD7b?f^-f9}qSQDYY?+M8YU?E9uY!k++9NRKyl0+1F-TD!Fa z=DxRE5=mn2S%65+9faH2wrhhFko!E8Qbgty+5yNrNw3P?I)*btVE)Je0?gcY0P^SH z0l~37ki1P0w2ARr3m|nI{klxS7(%T8S19a%8UO+k z82GXbEPHbg_Z=aFS_{#_tIz7QGTeag&3Jr6-UL*^Z;z2%NR zfDeHBr-1Nf#A{-A8%1WqHu}d8O(^iRDLxMNQ>EXEkPrg6P0HXNr2(HR`u5u?1f*Iv zn+u}nTsnT*$Aj;oJLNBKE*}qh@BJX6K$|je_)}Vl(F_6(AN?1 z-N|Or4nP#3gFtr$UdZ{{R2~`}gm^e*7q#WLYxNysoLdqq|XAS-EnGby9-nnzTNkmX=miQ!ATfQ99A0 zroKc&Lql6zTT)W8tSY~_&#a}rR##V7LPBEe)~(yOZ(qNDeNt+4cvL`QO4Po6`<5?X zzG%^+6)RRaIXPvu>w3*S9$l&IKI=%}qLV?3Ph7u#eb1gft5&UAym;~a`SbPl_51t# z)6&v_j(;3`-Wy0clmz(&1HC{AU^rC0(FJH0XMsm#F#`kNVGw3Kp1&dmD0t7)#WBRf z|LUdNL5B&`S;*T<5gpzxSSbso~?r zQ+W~1pJFHTn={<*pZhK6#G(TExAy!qGNpDbxpIoTXK$BR@cFj&^D`1INVr^ys*bzF rC&>G((y#gP`4>g$rViiv9Rh2Z1-G5zXZd;%P diff --git a/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/deny-unshaded.png index 75081085a9a1b140397020ead57d7ba9fc471361..066f7787bc140be4bc0f388f19b6b7696eb97d2a 100644 GIT binary patch delta 635 zcmcc3)W@pW8Q|y6%O%Cdz`(%k>ERLtq!WO+frA-H9%h=;F;P*WUN^ue#PyeBw`IcN z@0&IU&c5RwXL3i!Xyq-%NHvW{E4xSaGYckdnQh>mq+{P$W(3r^Ab+zMkm4^1@(cct z0vN8`nXwQk#aZAHS8ibg z%zoB`=^h8#=ijWII9nLx2)JvI7z&Q=SN7W2T(c4J*uKJf^3K~=7M`5tUOjWyNzo<$ zZi}v|+%Y{%*s$5He~+?)@Bf-`$M$-)S;v1rn11vB zlB|0-k55@Pn@`Ywm+8q$g&Fy=oXhuUUi_JTZ;H+57d&5NC%mfMe`fzK*N`*6nSMXJ zKe?+i{z8L5fRh6!qbkc35F^lWbJ+rg{r56vW-Mfie6GvvaMVfs>E;C&gYG5?Zpkv! z5o3&XzrK}8?em#i8yHtf+jYAJ9?&!V-BVR5cqc`1{du1|Y7QShD_u}y&^xh}v*B}H zoo?LMCi#YEt``>ts~t$xy%-3JnNtUwro20*)IG~WHo6oT=M0{%elF{r5}E*8 C&K%hQ delta 326 zcmeBUz0IW98Q|y6%O%Cdz`(%k>ERLtq#b}*frA-HPId0vHc?TbULwFJ#P#&Ceed4A zJILVc+_>}uLqhD#egB^*02NL4?uZ9c93?@1!T%wE;a>CJNT3*Jfk$L90|Vb-5N14{ zzaj-FxWm)MF~r0B?WBW3hZF>y9T)uhFF$+D#**BNk`Ep%d>>%dc+zgwLcbz$9X$?S z)p<7pnCko7w|Y*g2=SZJU~gQ}G9id7VroTF-^M9I8?_kkDcok96Z|OAm_4CS=mF0g zmhaYVW{rPsnP>ZT_ci)1cRl~$>G9=4{qKN8fsuwi&n5Hbm-!0&KgK8itKYErNb~Bw zflPB8ojcv1x^PBh864S|u-fwV*GZ@UPCmG7>+$FRE@{i~6pH(ZU-`u{OU6KP;f@b$ QfWBbxboFyt=akR{0Fr5kaR2}S diff --git a/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..dd792204937723f4f0adf071ab9749758e5ad381 GIT binary patch literal 796 zcmeAS@N?(olHy`uVBq!ia0vp^4M4nrgBeJE_L*`XNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%mkaO-akWf1960;V%3F%=aVC*!8jV(V1(UWU>DV`x83C2t;H$F$Qd}iL ze!>4?fML@a9gyLi1s;*b3=DinK$vl=HlH*D15=@=i(^Pd+}j!4Ma>30tc^8M_x~RX z-EjKIu}M5050>RyUpA;bcJqXQfb$Ls4hIG%fd&Q^g#a#|<~1qv*0Z>!GQHlT&$x=8 z_rdBH6Q46Bx6D1Dc%D_O?R~|Qrx8*Uw!ND1{4eK*uiZ1AfBGQ&!YhHx{8#<{_ROw) zkvmgruK$Z*;&6E2&w1qYpN|vH7u&6Ww|^_s^my(&>)VvxmAgoV*#Baynfm?7Y?h9* zs(KMmXR~gTOJQAIv%0}jpuwS>=~iaSIWLEwiiXR9Zm{Q^vzu$D!_%y%zVV_8|9(1p z%!#gl^rS!f^3($^^+EOTnWh1q|H8}R{rmX$pMUC|;>x(r^f~*em%~n}S@F7?U-o_b zUwwkLL;3H2xl=pW#WFeluG$tq-(X&zwY;{0hOz$6*$i`aGdG`_RL$A)P}BeK?A@F# zg+9_en*S3TkC_&T1k{-Xzf*SzK0W#Poj`?_=i#>=EV$#TaM#H8(dk*&*NQvt3}?Nh zzCmZ_YoV6+UrsshT;EXk*=y%|2WD`fGBAR}_W{eS-_>nO&)YY@-~R18Po>_L%r`n~ z|Ju4w<8J;LDRn!0+V>cV+Z!7mN_jZ9w%8Y>-TM5eK}X=3fwl0_#!oW5fA^l4bGlig z@!P+B=YIdo6u7*iNHpW!d&w~Q<8Kx89i8j-jh=r}h-}cj?G&uXKZ(^38mAEJJrAtm zOnmV9$G%wUF!vLa8)B8CTu&q?-0Zp@aQpLWR=t?UNQXD~Ij`4bP0l+XkKvi@83 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/meta.json index b34b3c2a11..0201682c86 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/meta.json @@ -1,38 +1,87 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from /tg/station at commit 6665eec76c98a4f3f89bebcd10b34b47dcc0b8ae, off.png taken from /tg/station commit ede31369cfa5ea1bed9262b5ef4bbef85f60fe26 and edited by @Flareguy", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "broken" - }, - { - "name": "panel" + "name": "normal-unshaded", + "directions": 4 }, { - "name": "deny-unshaded", + "name": "eject-unshaded", + "directions": 4, "delays": [ [ 0.1, - 0.1 + 0.1, + 0.1, + 0.1, + 0.6 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.6 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.6 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.6 ] ] }, { - "name": "normal-unshaded", + "name": "deny-unshaded", + "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 ] ] }, { - "name": "off" + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/normal-unshaded.png index c94e7ba2664e7d3152591a1e14402a647fddb728..b5cd555038e7aa5016441e3f098467ffa10ab6d3 100644 GIT binary patch delta 365 zcmdnUG@W^ZIF|zlGXn#|-0h8TCMqh_%LVv^xVp!gG+NoMyrpQFa5!-Gok%r}f=OGF zbnF|;jDSi#cg6<;DXx+rzu^Bcz_96z&Uv6HXMsm#F#`kN5fEmas?8@26nx|9;usR) z{&p%iU$X*_!}7Hj@9H0Jy=1XKETwLnj*V~-#~ugAiXY8)wCXE#_O>7FPtHh)N@rjY z;ylY_qr|{-q|c18F~(!=&T`Hp4^^~wJz#3QwM@!ug8USz=UhK#JWt>2rgh`T?W{T0 z%#Tics@!_!|D-9+Pqd}Fe%7Sw{m1fkA1d!!z&%56M*zbY*OaRrO$t&@g{u#!Iv;49 zY;gQcqw|ywhb_m%C(YoBP`Pk}Y1THE!W9}E*TVbc?+D~3aNmng&u0u22vADbOE+%p zQJnBBQ8&w0bX9Hn@s{UNGp4YfR*tUAJl!N)a!{UQPd(#XuAYOrd|C^DK4bP0 Hl+XkKBzBZy delta 262 zcmbQvypd^wIF|wkGXn#|ROh~J6BQNeMFV_7Tu&d{_wL<0=f?GWlLvy0iDO->FVdQ I&MBb@0HA;8vp9sma%CNUf|12BdG z{^0-`au%xra}Ln`wH%=PlR0ps0~NUfz*%X`%H6Yaxdp)5tRf(0l>kIae;1j#x=6iE z(wGG}Nz$x5Rgbg)_L6j@1wfnER2V~18L%@^j+E;W91P=PfraY!D}b!kX|BV8Mh|5H z=w4TwSu98TRR`B{pz~mU3x78cRA=UagY88p)&eZp?|!WT1CT*vY3x|_HFxv{d;y|= z37FQSJ}fFn%YfL&`}TuEfBuee10b#m$bb-1a}v?$8RgqZ6rX^#0OXJqJ#3GAtZcf8@fM&u0KUo2JM6T9 zCxC3Y2;j6_s;yTeY%oGd$h-m`oTNSCTE(aolD>ox(@Ov^+>HI>Z?vmbj0zzc1OAeD z94tElbU0U{z3f_A!KxG!#7G#=8Q65Sy%w%jj*1D$y#?@=>_J+z(M}iyqzv8S4t>kL z7HqW-khD!h7}M7Z&_S&4O4==`)faFX@cH}z94^=X^72b_00000NkvXXu0mjf_n0N( delta 216 zcmZ3(`i@btGr-TCmrII^fq{Y7)59eQNGpIa2Q!d#S<-cEqM|~*M1W6-tD&J`T3VXE zzCKW*zrTOiu3gu!Uk9>hef8u3QXC~ge!>4CfZ<;A-bkPrXMsm#F#`kNVGw3Kp1&dm zDCq6!;uvD#|Mrq2-vI>X2mj3VIwe#tmfV*5UsU1UweO2zz_FUs54yw{_A*CV zH|tfoU)|2*(6FSVfbWe*)3*R_gJ;o9pX(SxYvTLI|XPigQu&X%Q~loCIDj! BO&$OM diff --git a/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/wallmed.rsi/panel.png index 851c8b78938473b8edf3a8f1c699cdee4499a722..f67e50ee909889a557b34c4112889dc6e5fb6545 100644 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|S$~ zr;B4q#hkaZ*LvFoinPVopWr{ZM6CHx(x%)EYolCT1OfwQJGvaq`p9n(wT(|B>BfqK z35F4WG?F&Vbh(i5VX;O>$K!p<%FJxXVM%8j(4_KOMa^GdTX=_LHg&wLdqmVv+Oj-}TtU z^V?Iy3zETycxD+||LqAV5Ib=5&hd;_9EQO*>*O|PU)r+R%V<_t>~iD%p6jd+l-?5) zI>+R+W0u{GU{p(B_Ak$4U1HxCxBicK?)pxygxfl~{Xf45UwR@w+v@SB%S$_03>kT5 z9ZXk!vUF?h>Z*B(8=rK}U|{p*^kI^4-5a#sRKa^2^WVE2oCz1^2w&lfemg0*45*`O zuT+ihomhVr*9*_z8?Ec8W4YJ;pr!o78u`|#6D0(X2#6jCjM8=8P+!a!lvI6;>1s;*b3=DjSL74G){)!Z!V7aG@V@QO1vIOhm1d*PmKm#tfgBoBCk4Zwy zB^O3P!HNF^)FfVH`X%isvF(3&cDA|7%x0b$3rqqNZZgGL=-&Uuc4pfaQ?|=bm=?vp zd-dv9ypt2tDQDJhas6ev91S|`7xm-zG$c!0xN@as6UgvM4ULQplQX2kKiasN0-eC% M>FVdQ&MBb@0Pn>~bN~PV diff --git a/Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef463bc354f04e42ade644ea6aa31f094382e10 GIT binary patch literal 2510 zcmV;<2{HDGP)JGfxsip>3l@X(P!Wn|$9!OU(g3 zat9df+O=!rassnU^s~8l-eLZ;r4jIw#}*p}qy?|LLnz>AWWVQvVdrPo zhw}Ho_)zq{`hEltB7#N%0wiqTy3L%kH9&+daa#$xd!Rgz0yJ!U8nDISL4*dfel({^ ztvi(f03=`>2kbz#DtOd6f#sn&fDFBW9CP}Ga&7Bm*}iS3 zGz|Q~TRF{j%-}NNlrZJWI1%?aWb`en6xc^SWY{0q)fPavbk^5%j@Na%kU&_`d2_ir!p;e~K<+lx&Hy-$aFAN7Z&@yEUL!FL^o1O$I#zX8%E#a5TnkqI$W0XCM-ZI?MqimhB! zL2p0T2@pzv3aAJG*S18Hs9*&&yzzj1Gw~jgC=Z|;07nl!U4H+1uQ@-ezAnDE^}1`M ztE)@CSl&@KNh0zp0M0}D#nxVJNGKHWzx*C{6_C-^))psC4w1PP01|*-_r4dYK#U4L z#zVg!mcM`NGS>zT8f1e1?CqWAKZ1w+H36Xt;4nx)@)PDttODHy3Mw&kq|ir@kShle zhx+#~o+uKK5cePc$DFh8pLO0yk&oUjn;Y;vj{=y)5WriFL*&$xPKg7%@980OS?Nvp zh}-XyXZ|=SHy+hwjsVVAjlLwVtD+oW1DSqU^Z2shflogv_RG@-HON<=?>3`>Iq&Ms zl>_kd!?isGziXa%B6tLE9S>t0Duw>?b~hU1!Kk* zvwlziIyvLiljX~O--9F%QgKw%iO( zGo#-s$Lly0RKYx;+j$KtAa+Mx!v=!4>k3r>o|!-AWpi#%eq2bKE#{sF2u1-9V8&%&Ak&kwgHT>;Oo3geE~l=aNt$2)3^4$iOeT@*Jt}86jgYKF|E`*z~bE z;+`!j^*ae@?CzFED-cb@q)C$$8Ez8r!+9ma0|n~^%=MB)Y*_bv^b?sh<$5{JvwkN5 z$oL?^1rm`4%D6^JPQ0E-Ks*DK%3CrNcpbK;VkGS@X8 zT8dj>D_5@UXFsRQ^1xLO%j|Cu^rkM6W#20Y=*>nL)$*h>>Mv^u?m|Z> z>neI*(Z{|Q0jLO-`fON+?B$0*6RnZ7N9aqww*r#(=k-o-$o^j?Nc(C;`&m^5xC{{X zc6cq36ucd5)fE8vY?)WH@2Aym`=Ynbv9k`a;_-U$rl32woE;e*W~8vTp?7 z2=?IUY^6KG8oDlX9tDWt^%DH?XJ3`8?%V_r+5vvm0p$I>#RW~OR+i7l8CeJ-fRe*e zO2&H?AT?J&OmL(Ct-c}=y}r4+MG}GtU`r?UYpsBgOq>PQr3uzP5%evjI|LC>Wc`&s zTVI6BLEOt-+fd+H{i>@KkmeiI=nF3b=DqcoG(|^9OMeYw1FNrCg4U?UC_o^1*kFn6 z1Cud*_UQ=0Nl+&rJpuq`{k@9Pw}HC1M00?aTQ#>^i zfLbbm1jCPC4jnXkz%+#NEo+}ZBZvSn4FmS)urLTkXa{Qn65P@;#ss3 z1WoWY8Ug{-Jx=Bu1=!Qzyzm|cFty|?Fv+kEz7|~|w&585?DvwIi~@i?70#1*s)1_x z;Z4B7bI132)z#n>^}m=2^1UMo<^wNJc#i^r&-h*@)hfYNXWDy5hz>Fd_`kmusI~on Y0gQez3F@SOwg3PC07*qoM6N<$g6c!6bN~PV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9329bd55cb54b3da0ae9e9943b5996c67531d4 GIT binary patch literal 1622 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 QIsgCw07*qoM6N<$g26K~7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/weeb.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..9d15cc4785f757081aa3b451b87b17c8c91ce60e GIT binary patch literal 2247 zcmV;&2srnNP)EX>4Tx04R}tkv&MmKpe$iTT4YM4ptEn$xt1{E-K*F8LZy^HWH_j7-aUO8_tz#|YxnWme>8^p7l zrp9@nIK)b#Ongo}snZ3CAGt0${KmOxvzKRv^h|1=I7BQIJ6P&qR?-#X8RD?4sFd%` zIxKVE;;d9^taVTR!eCxqNpqd%2;x{m0!avvP(v9Nn26A-l42l5`!N^)uPFL?vwO- zTMHinecQmrbz776fXf|V=t&cG(UyEPy@dksen#Jv1Nv`)o;9bp);>-jfDCoDd;=UD z0^>!>UUzwScV}<^o@w>>1L?4G*2UoXssI2024YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~SJ77h|SbRU-h00zTJL_t(|+U;6jXcR{n|Cyu& z@8C=&sd-7X+-cKt@$jHqs+W2_5lau{Xdn;42-;_DX#xc?Y{Qj8OVUc)2L-X9_mp}N zgg}cJ(`ll!qfKwKv5LiNs!2wL1yx~2%wDzpgYH-G0j-gPT!-ACwFH@GiXz1UX7cOIyk;~E0OHY@c1^cijewI;JAUllGH2SQkxUjJeEOk%2k;OOkH&EF z<4-V>$(kBZhlA5mqtRtXSLd%I5)3o%jprtvBY+r5kMwwMvTRh0NT9AbLcIf%J@E42#skPR9rk2_yO$+6kdhNGJz!9ndj2g_g_jm$jc%XN1}az5UK4 zYEvH}VABB|gHz}*v?UsQFt&7_i2#-p=)MAWm%-ff9Z@|Cz z1sx9nTefb;k=|Zx*}5HDwr#vU#L^7%Y7DVoWzF&hDz{61e9 zzrNI_;{hOXU@yilUP9u)UT$Ba2rwG|&1ZS-+PL5%G0&PA%;Z}lVCAkKD|h`^E|qlr zhFdqV;nocu4?r`Xc7hB95aV|r4V59_>il(d?n@yO4C@Z!2v-PL-}hb^?X@UgfIT8%JLjW;cgF3|sq@e6Y^SeTo^ z*`XmU%*{waz~)UY`0dW3W;}5Q0G;uN>Kk-zBC~)c0?>LN+x`L``g}m^?KK`nDg=tU zcaQY;0szhq4M{=3;n%-kSqIdajX?Kh;K#|? z)s|W6?ixSy>rZ9x66n)?C9l{=!0}@jwIt|<%;cLQ0DDe2leoHqT-} zjb~!`%dfS;|EL`sOTZsKU}Fgwp7;`xU>Fl_98hgiRh0{SRaJqE^U)V_fS03dMI!$L z2z~d}tRYcLaDc2>c9R2;;XB7H0qXi_J;1%stk#A?Ay2Ba`FvieI$Uk}PZU{tgs#<_ z6*qXLC(%6tBJybx)x}D_&@4debY>-Mx|Y}9-;Z=UEv>{&`ZCIJqpzcBQ1+$;w@#5k zo|nfv_oW_H99ymGvpAi)#nuayd;H{q<$_0W&%}YHLq`nfyYbfMhbM`z{dCMMS=E4oIKAgqr4^ zhy=s9`)3i6U|74ZY2JzSY5h+SS(_VJec9DTS`uvc-_w=L$#uK`9sqp}j_@M;2Y5u@ zW%X;Nizg1awj9t^g2|aELhtIJtIKYZAl;XuC>n32OGOZ1ERWL)%G%yS_eDF{N*7NY zVB9KW^f(IvGD3ib04rTQaR6(#NIV+DwdFv?5n!c@R0s5ad%rC1h!V8Gj=?ESK_~S< z9+AEjMbUUGU5L(}8oRKO5?3`smQkgfgur0D@Yt6BL~n< zK2dZ&X0YVfEz}cPv zGXx~BtT}l9o8y+cc;W!!Xgu9obO%$%?K6Bf0pU0Au1&(a}#K2W^7RKnU77VlEn?3PH>+{9F z+KetrnKjoF6{dQv{NVPBcji7r)r^k`0@|k&RW)Xxy_Ek?$IY6tEa1n_*W#iz+W%JA zxvTBjxvh+;th_6}G&|b2pYg3$(Z(?6$lB$rOq}j4nA(u{ryoQrFddK)WWW(vC{hPj zE(|_?@$Q0Hv1rCCjed#$xu+cUbXp(GZq?Nn_G#Jd&E>Kuo_~J!|_`{geOz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/youtool.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/youtool.rsi/broken.png index 18322391cce6bafb407d609bdd1816a58d679ae8..f4bf0a392921824db239359edab9d18a2d528e7a 100644 GIT binary patch literal 3056 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 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/youtool.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/youtool.rsi/deny-unshaded.png index 9819fb38674bce15068cd73d840a658fd014b7eb..9ee002be458b9f5a89e936a292d0a932e88e6900 100644 GIT binary patch literal 1718 zcmZuw3s4g17RE9)6WP@j*C%24EWMhK^^tK~G{F=fsU*5emLQTzf>}PmaxKj*Qq)X3-F9pMtJ|2y-|H)p;x=lsRt=pdlJ zxjp~@0HTlqks7So3OyaoTQWj$1^~1QhzLYD3W3;7&Pc}-PbC8Y4yAde{>Z2Qw(Lnf zT4H0eqok9!ql4hbz^V=FyJfIk{4Ap00=%NLvRKcii0lp9%j!O38Hbru54{PxJK)lJ z#>IEv^5FGS)R6JzqMjt(0jt5_OTh;amN8LRrG+g6`g6|1sq9{?eCA&Uv)l@gm&9u} z*KA?eztuDIERVQQsMl)lXczeaB3ov7Z@?a%%&6%8tv%l<3V98p0@1Qa;Q9tZ9nL`S z@vC*d_b6|d$NQhud8a0ZjJq}s;)!W=uGU~)SwcE#dQT1A;^D*7B&jv|(RKs)d>PcI zj8z}*0FV$?Lw#_|;CJ6pa!BI0t6IN>V+OwJ>V~>T)GcN*vgFkDbxBnW9ZuzDG`w`% z(AG>vC+SE~0AO?L*6a+Fft>(= z_5)PFp{R4?Vj(=lg777OWisdTcV;$Y&EJf(EA|JRL4K$OM<*klDr~Kqol@B$2DhOw zr-0NNV6tBL$q>FvNa>a4<||*=CclI1j1I1aX`k4Os5?vOPJ%WH#=5JO_Gs6h_2Wuq zY}YRci8^7DCw~QI*lMi&_xy%@DdFs6OwD1}pbGfpV+l0r6Aq8|!aRl;(Z z&s+sJu`n&AOFw8qku1i{_u12}De+|`f1Cb&SDKF^dW zFXX}-7e0*K%9TPK=tp98UCRV7s9x*U%nwaF$!{?qVW^j!1gI;`ijgSNPr>icdEwPJ z$XPIX=!cvSyL6#P!T8;wWT_Bo?$K`lRGaJWOq z$a9x5zD6>CkgPzCwvD`9MUJb$0LG%cPHQ?Nxw+Rf(CByL*tl}V4V`p>IPA7~2;`5n z(+IPN5^2D5if2C^X2#v@?_C=oF8Y{YSx!l~b8uh8_Ug{;VLQ7UdtpRW)y&YVZz><6b#lSpY9!ye2M(}mjcnGsMM6&Xoe7By`= zYcG8BR>)fWo<3qcs;15t!HB8O^;Pll=?`el@W*CrJSn^WzFQS)jFi@+{+h4arC8yo zzyF>-z5De9cS?$oGmhX3?SDP5o|lV$mowmDbsZGN9VK6OV=0qM>W)64N^)_Zmlmh- z{s51qNQ# z`|!Op)kKd+CV?9P&F*_9L6w)%MZ|Aa$~dhO$yq<GrmQke{W9QfZYpF>=^=m z+U>tF-`6OU?(1>af7980VS}0?H71WR+raAi(R)}Ys!`BumLafn+hHNgFqF1U2kdaK zE0V&|tn;nS)IW83N-ldgMuq^Dv9nhnt?bPcW64V&36n7&Yv^3lC#5hy#cWnY2-cex zW$s8f3kZPxn$V1>$Da5!S<7T7y-)N%VHDb5-oTkt zUCrOf&&=))TJt2vlW{$||D^pNXUM=y!h+~e`W2HvC*eXm#6uSNYEiM}uEs^Z1D;FX TaSCnSx1~k}q66-Jjl1|4gDn~q literal 795 zcmV+$1LXXPP)Lr8zyak01(L+)Z^p*rBnLYH9 z6bvEUUV=suxrY5)x?xi&*2*l6hUQ%S&TaE_8||LC?ZxwfbI&#zfyEXz~%P15_mJ8>5~Y&^L;~cmIMpAGd$N1eN$eA ze*Pr_@BDx#&XQn0bL)-(5~0g$Wyx^sLnmedSWZqd=cfZ^r8{6}_eJMs;k`5?ypUXw z2&V_ZlA(2U6B3hUFz@}soL>l6Dc#|!KTnttdam#*;JrgZ^BQ)C6S!LoSmGG&Jf14= zdWXSXUvX~kiLOs;z63l*05RB2PQbGsKpei2k<`awC;IPACj%2=J_!rZeq@Q&O||b? z-8Tg6yVO@r%{Xjxkmbc!0K+76mW?s4h+fWD=S8d&bsan$EPf5uiEX>4Tx04R}tkv&Mm zKpe$iQ;Q-M1&fG?WT;MdQ4z;d#UfZJZG~1HOfLO`CJjl7i=*ILaPVWX>fqw6tAnc` z2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Kg)$ED_s%9Cfcz;aH=2pe-R|GJIAq)T# zGxbDzF$2%>bq^n3?;bkx9)Hhls^u2g@DIN`^{2LmXCAjq-)8%L?Z$&T6H`TKD8H4Cb|! zG}md4B90{_kbi^-88wtqfrSXI8Yw1Hv>)^Ek2wA$xny#c!N{?IDpW|0AN&t~cWV}= zr`)7q3<$i~_QyETy$dw!w*7r<+szZe{|sDdZGW`^%zctxZ)@Qrpnn^ z3_t0TAvuztrcfvV?`QN)IbiS>=v{MrYwhFo0mx8S%YQe(!67hFr0jK%clUJm_V1Zi ze?N4!a;MiZ{saI300v@9M??Vs0RI60puMM)00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF;2w9u^fR#PJX=0008LNklMC=kW2OS&) zmrUBJlYfgtYl}`oA#1obF3lohvEV2av|1M(#3e(eL#J2=Z9~$bgVYAGI^?WB*#DHdx&&8@5L}~xQmriS0h;; z|MU1>J7Bu|*>G?8bkF)OA}@Q5fW|9z{>2;l@ZgEu^_ga3<9q6Wsf&{Do^bN^v};@C zUDq_NhcyC|9N+Ufz_|{#t@5r}wsLm4*;y{S_gPt#Rju__P-}2f<13H91hU;}*mO+C zrhjvK=4Vu`*A&do>Lb6SG0E{g&4B!jYB+*5du*?{%c@IiCp)W;s!M9e?+8qCd^Ji# zdR=gw%c!SOUJxcNzVRqxGtDbN?D;>w zE#K0-1VxhnpeM%*V(PFD!Z<%UKP>-9o|KQ`?H1!K?fC-$00000000000001R;Lhe4 z^Iu!YXuVggrnLjcA%E^{=Fa96+%efaDEYV#K-`@ld;V$e0P;tFyvmSQ83F(R`11#k Wvn&BUgdOLRo?|ZsHW8iyU}j9q8v>u$Mpj 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 delta 232 zcmZo*`^u=;8Q|y6%O%Cdz`(%k>ERLtq!mDzgAGU)S5;me*gVIBTDNbqT6-rtdQ4}Ih=yGA6``38W&cceH-1Wx6dM?rI22&SGENS~FNVjy=k+vx-*;JhQ&$#3)8jj9+g?}b*y2?*4-5qFzwyz@9NAtx5T0+GAY?__GE~+Rd;o9tx{1MAn~Xw;JZ~zR7FdSs9z?pXo7-bOzgn%c1JE;g zp7+c|AOOC&TCLy`g`E*vg2`k8!*m)N*50oV+1i?PzYyhff9|&sOLx>885uFhM ziqwP%0r)ru5tZQ%#t@ttK$hhMPQpUKcrCd0i(~rny>`3pd3!PeVCVLFJ#xUqbP9X? z`VbB0bFy-yk?pJ1YQD1|Gz0YI{ow!~UZdC{>;o>9BDS&Hk=5_##|%I<%;n(mxcWhm z`ELb9ag_?wIA#XGn@zFoZnsOyG9Hh~9viS&ECSw#olfWU#c|#RZZ(@t5~Sbnn}flC z`0T(Db=`MCkgyE1*^Jm6$1(o_xflS`j)AfMrBccEQwX%9fJ6qM!BNg8JXetcXamNj Y9|80Cs(CLv=l}o!07*qoM6N<$g6bFx`Tzg` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/barbershop.rsi/dyedispenser-broken.png b/Resources/Textures/Structures/Specific/barbershop.rsi/dyedispenser-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b1937b7fa6dc4cd23a5263e5ab01c026eba0ce GIT binary patch literal 971 zcmV;+12p`JP)G;d|FW}!5pf5HssU)(`+e9Z4Kyd$VGZt;jNf8$rjA(h^dSpE2 zBTy=o@OV8DZ34I34V6lDC_h^6aX40hRAUWYC-wq0Yy<^vGJ_}Zx0yD07U*B%+HxoNIMan z_zJP#hkQ*9yY{_YnxU*X+@(yO25g5?BVflHgj50));vHSwS^368I<{Da9XSgu+MnU z??-KAIeG^MxqMq=Ib3!tjOo7A2#_!`Fqs#SBiFF4Ex1Kz;2a);RFexI80_x)(L3^! zwYyxt;qwd(tZiRSL*?ZZ2*}RVBO~O)@>o0ExCrN@Wk0Y+K~h@*YH5LM%JR-}R`O)WW0C&9VbUHX34vdeF<6iSE?!XZqK0JhnRZ;?k0})apfLI}-%`(=^;}$?>MP}d7 z(7?^SqoX5SiFd8-Tonk}r;<*Xhs~JMR-hxwX0IunCXN(v)UQ;k@dxSLfjU1sK-&NS002ovPDHLkV1j2)wmAR* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/barbershop.rsi/dyedispenser-off.png b/Resources/Textures/Structures/Specific/barbershop.rsi/dyedispenser-off.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5f77f3d3b715b731622501b32e5026340c0c52 GIT binary patch literal 647 zcmV;20(kw2P)VU!P02w9O|J1bT$-T#nBsl;CO7e;sjvYTn zk;PV)Rt!CpdU47Vi~?RBUWU(KKBMsQ0aDZw#WF~~}ZGid8*l4bbSE7utwKYPh={^B+A8~_5dW-en86ci-M;`i_0gY|%DPhV%e zY6&_3WKedzA)LQ_=O>0p`Hu+xLw<(HU=KKd>eQ(Wm6EJL))$6$A{~bf+`Jy)(xdmbZoo8^=ILfg9hBX6^02}2F00EHYAOLG2!T2!Xd)J+TL4bk5?Aui! z&Bk#0g(J{%!sZg?083kAhU16NVigAgP@@GGpePYOe*6H#GEyx-HiKjbym|Kxh_5lw h65wVU!P02w9O|J1bT$-T#nBsl;CO7e;sjvYTn zk;PV)Rt!CpdU47Vi~?RBUWU(KKBMsQ0aDZw#WF~~}ZGid8*l4bbSE7utwKYPh={^B+A8~_5dW-en86ci-M;`i_0gY|%DPhV%e zY6&_3WYDY2<#4`V;bVqPc8?JJLvjq8mQ8^3#l*xIDkWKgtS=1hL^zhXT=1j>iIdO3 zaDF`s|K7cO4CDf$9PsrAx`+x2@56@=DEyQgsSG#wZ)SM1@&Ut}FH~><*FOOi{@aIl z5F8;$oFjud8neOl;^)l3G(ZIhFns)o!hQ0V4aET;(d4Nf0*ud4E5^(JIZ*g7Uc5lz zQ#}M;enRD6Mbq}=$rBVl)kEOk8&v+Ur$|wt#=vm@{(TgAs)xYYhe#Y?v*P~GpD6M- zZrorX7Z7v+D1|re6-5$R2GoV5ZO<|cJ?+nbLrc&141@qd2c)G(QCt^Lf_J9g}VhXhC* z77ClIcQQDZIx>9f-p9aK>cp_Gdq0B{kk2E)hSzMOLjYts2*6rMFg^_Uwz@Mg084D1 zRu3S}#^49!^9V2y1VlN&($<*a_~Ely#X$hnXu$<2N`#LeKfthzR11*JAlU(L-hBh& kYYemmI30kiD@APp07JdrP{wo>AOHXW07*qoM6N<$f}H3T&Hw-a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/barbershop.rsi/meta.json b/Resources/Textures/Structures/Specific/barbershop.rsi/meta.json new file mode 100644 index 0000000000..1226428bcf --- /dev/null +++ b/Resources/Textures/Structures/Specific/barbershop.rsi/meta.json @@ -0,0 +1,37 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from goonstation at https://github.com/goonstation/goonstation/blob/16f8a5c31a6cfc019a1549b0b97f18865002a44c/icons/obj/barber_shop.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "pole", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "barberchair" + }, + { + "name": "dyedispenser" + }, + { + "name": "dyedispenser-off" + }, + { + "name": "dyedispenser-broken" + }, + { + "name": "thesnip" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Specific/barbershop.rsi/pole.png b/Resources/Textures/Structures/Specific/barbershop.rsi/pole.png new file mode 100644 index 0000000000000000000000000000000000000000..963cb611fc4164e2779e8bbc4ab93825cc37ab01 GIT binary patch literal 751 zcmV@`sWu*J_70K{tCH_(fh;ODr6u+7gB0OWELyKajoVa=3T=Tf5QT-uP!w0myW&V!sfU4+ioxE;Pug&2Y`R2wZkj^aNm@l^$1k+ z)3lX&qt>GbJ%^=;`7??Kho#Ri;AJF3rH7VaY|78}far%u0oAa8IMBYcp?T})@8Ack z3+(q~3E-jtE~4D{GTOuc1kc;sM(@X70k#X^0FPRCrgjyoc~h`Gz;*##*nR}X1ClO) z3-JK)0Pz6v00r@Y$h;}U1ClO)gG4<5X$!WZdH>q!>Qmfb&EMVZ_+z6j4{U_Qnqxfo*_4ng`YApHUHLHYxd><@5pKF{I*tv><6nCubQsqmq{{GyQ*&gU^-F89Wg3U9ri=rQ6s zuB-0VEzE9v~h-;sJUr9uS!~1uGH4 zR&?B7@;H~TFW{*s>%2c8=ue1ri+}bhkTE~IKLAC1IhU{R7jOjKpJ0(!`U6agk^TVb h50L(Ve}mKu@B#gf2s@K+i}e5i002ovPDHLkV1iR{TB!g4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/barbershop.rsi/thesnip.png b/Resources/Textures/Structures/Specific/barbershop.rsi/thesnip.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3bb58b5eb29355a0d90d6c97536e6b55d9fc53 GIT binary patch literal 341 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 C$C`%# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/fitness.rsi/fitnessweight.png b/Resources/Textures/Structures/Specific/fitness.rsi/fitnessweight.png new file mode 100644 index 0000000000000000000000000000000000000000..d60d45cb896d0d5b387486a756609a90d7a11949 GIT binary patch literal 705 zcmV;y0zUnTP)U27ut_WoTjQs4(q{~Z-CgU%B z4&)dIbVVo&C=?0-$!cMf>$*gl44*?E}UZPf*2eiPb@#kHV(p3h+nziht1 z<903p_}KdpwC+!rrn4CzcN~Y@jZ5Etd?#Hf3s|q$bbRMHcwR1-l*{F|=2?IAd9)t^ z`$8a~(P((>cAG5Al4dW?cJ}q!b{v5S+qTJBJ3KB9rfGV$T8)~`W{L~w^?Hd)cXVU(qbT+{U%W;h`7Tk7`9O_Ppgly@!;fj4j81?|AHs8XrWfq(NY9p^^ef&Z0c z93Am0$JQmmU~1xAK&@wh2pK>=olb*z{|ibQC+3Dy4m6%Trsj*6!Sj4Rm&TzQf*kQ$ z4kQ7aF%hC0GO?=U$^uvc@#{hCm5pNrc~rrmmM_c|$;ZY^LR_;&=rKL6ab?9&DE nB7BTn4n&>tp9qU0lI71Yd@Ym&mPCtA00000NkvXXu0mjfDUd-_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/fitness.rsi/meta.json b/Resources/Textures/Structures/Specific/fitness.rsi/meta.json new file mode 100644 index 0000000000..a4b18d2d64 --- /dev/null +++ b/Resources/Textures/Structures/Specific/fitness.rsi/meta.json @@ -0,0 +1,147 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/78a56e1a22ba1d8d6023ed9bdae55a6de7fe8a39/icons/obj/fitness.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "punchingbag" + }, + { + "name": "punchingbag2", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "punchingbagwizard" + }, + { + "name": "punchingbagwizard2", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "punchingbagsyndie" + }, + { + "name": "punchingbagsyndie2", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "bopbag" + }, + { + "name": "bopbag2", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fitnesslifter" + }, + { + "name": "fitnesslifter2", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fitnessweight" + }, + { + "name": "fitnessweight-c" + }, + { + "name": "fitnessweight-w", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "punchingbagcaptain" + }, + { + "name": "punchingbagcaptain2", + "delays": [ + [ + 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/Structures/Specific/fitness.rsi/punchingbag.png b/Resources/Textures/Structures/Specific/fitness.rsi/punchingbag.png new file mode 100644 index 0000000000000000000000000000000000000000..048ac4ce74578a377eac2ea863fc3bebcbe47ace GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEP?J z#WAE}PIBS`h8eSF{bRql+<$(W%5|PD83$g6ZOjh)+JDN-^c81c5Y3S^`8CHR*@n|f zMY4{YnE%+!k$83b)4$}&*7YyBPAIC(bf3h$%>Tuo^($AMQqa}z4xQKDExkr<^MW}q z0wi|rOmL9-@a(O1+w?#A1#SmVhvy&2%6P`G!#Qq$(gHDws6c~P4T0=ERtZ-ancp?| z&)*;9%6pTKp|M>4zVQh|kH=G#MJI@|=HH(f_Bik^;}sSa%LUbkM2=l*n)83hllQh2 zJYmkp>;gqBE2m9<%21@cXchAcPB&SD2Yd_+*AipQTN!78!iK@q)z4*}Q$iB}bJlch literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/fitness.rsi/punchingbag2.png b/Resources/Textures/Structures/Specific/fitness.rsi/punchingbag2.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5efbfc8fc17da8e2af63f6e4aaa8f0701f57d6 GIT binary patch literal 953 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3HG1+{xJmq&N#aB8wRq_>O=u<5X=vX$A)7 zY)==*kcv5P=Ne{3qU*n(+T>n_ z2a5ZrGF+UO!+7!Er9V#}@B1)mzUqVj2P*EQt5=-z7u%qdS+xKI;uU=N~&p!V@+u8KqZS%<&zW!C`{86wW-uBiluI966Z+$M$ zzaJU%IVt`68s=GB8qfIct>4RfP(<~?uK5Qhzci__wBb>msFF}-$G`l0nzr?WFFD(G z9OLT$8L6D`?Xk{;ic|Wp1YLyg?~%J#FVJ?_@$JvYk0*cl`Xbt+mU%LR1ZTrUh8amL z5w^`Q-z2eAxH2WEFt{US!y>o zcjoM`9Gl*~C_S_7)KwVX4PTwvfB-8KL@2%WCZe&B9u{-dD^#wpa^CzvpuxW%wO*Q1VQ z;#Nkv+Y2limThF%WOkrf+DiMvi|m^_wwtAhX0S;3=U%|;?D#wX7;l^Jv^($^==l9B zwkvdh{b}OL`N1RbE2HmihqT@I><=W>*74o=$0(MqoNqOY864ILlUOHwZa8k~p$rUo zpop6Hfr$P5C2ejDKHC`9-~asHdiPb14?k@G@7o-0-?XRp{QmbjXBiD{GVQ4YGT($L zA9(!z&+l`2e>pyV11U0PKj6X8!vZ2+F(;USgLd&R28pZe2QvOMNW7J2SiD^ULIqP)&cOD~na0 zhl?AmCbOWN=ujBCxgc{^Gee%~OE7!VX>o?>X|=R>z?--47+&(fVQAUDfWe37FT;X& z+F)@Xo|j+;r5gKy)zHiVFwh*B&ai0B7KU&`JBFRxwlm!1l4EEN@nLxM=qbr&ksSpw zO7RRDT&EaZLQEKL+%N-*yd}#Vk{xjG(R3hYV9-`z16n*0EcR9`pW*6}Ur-fpv~|GV z*N`lDV79#=Y37ma0B6z1a7UbE6#>)YP&rVpxOhjCwhq7s zZry*xz%M3AmR_==;Ma%mKo%=pOifXa;qix0;PQaxQ2+yc!eR`3f1w;E1V4qcH}64v60nK-2ou5XmcBbr@kP=`5Q=8KCl!v)c6mU(~|R{tpj}Q zG8ts0r5JRzFy#dJpE2Bf@R+s^pf(`M0o@a(FqRhN{Kq8^@;yim%^X0;5u{p9mIKJO jh^h{tCKz?VfI9#HjsU{aO;hj900000NkvXXu0mjfuT}}X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagcaptain2.png b/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagcaptain2.png new file mode 100644 index 0000000000000000000000000000000000000000..efdf7c12b6d282e0bbef0d5c161e62dca04d634b GIT binary patch literal 1763 zcmb7FYdF;V7XDBFX9m?sC1G+*9Jx$2*gLt-MHDtO#a3H2xo;*-TS>@m3@OTOqsWLv zE}02?W^~4F3XK$#OD;ohVN4F%G;D^k$KL0BIp5BQwcdBF-?P?wp0(cR`6ZnuoPuxH z+ztQ$+|j|#RgPYAqbkDW{@d^st{jwt9Xvt+K)GehAlWEo1OULY9qsTxhSTTrNr4C4 zRry5no_>Q)n3z)nQp{w@5)>jYh`ujnrvRn#gd zh+TMpWtnahF&W3@audSm#bOUU;QV355BRL*4<<-cm)^d^dnY&k3Mr@gShV4d9X*9q zXIng+MqcZN{X6>R@rISt)w;}Cl zOZ8|&ucJ#glq~c?p5z~5eTj__pStBEx&NGlv-c#!>{c3V^_wvE9qhUp=|bm+Uv7IR z&!?R}Y-Y=~82D>=FR;_onyyTN+TInK)X~Hk-<^BR9w1(bpk;v z#<5IQRYl4*5xZm>Bh(U#Dvpdqox2mGKWJr41`~bq`{D!nZ?>VRX>*~O{x7<+=Lc`w zJU&QTx49X&#^6`*r!TUDUNbC8k5G7nzpq}XdUtM->?=krF9s9!QXYI_KP)(`N4c1j z+thjhqjmiwQ%Urg!-BwPC+;0ur#JP*TxzOv8P@tn8al~U*^diA4zm{4pSqmSAr+5Ru4)c{WDkt$62_=TTk>b17~ zexfEP=B-L9a(RHU|!p3R$JH zwai8fnZ{i8jbT=uw09FkQE-0eQ10$oJ>XDJZMN!Y;gfN5@wW2lLUE|n!rcmUz1b8) zC>7^)Ut8UwVeATv3ja2cT&vvlsEtLc2U{`4kSxwsl31haM;sTX&0x5l6RQ?S7CwB+ zIZA4TQN2N46~t=*Fute_^ocZp#95HH_7`6Rsv234XH%l5k`lP_5v(>t5Qg7#H*Ozz z_`xUVHoy0-2JUUhr6nyDiISyHI&&9pTJ&^wZ%qmwCU#RX#g0PU3)1ODd*G$~4>iA? zwZuAzHK~>GpE^y}@f+RzbWY{oX3v>BbO3%ajpZf= zpP&bqmR#=P+y9Oo1b`ofnq=aDpuQIzH%Y97wFiSma`}d0X9ZkL-19l>SL^#k4qmIj$gAx2^X!CihVa}nC5d_>Gxhh`|>m=vK}$9T;fx8Mh1OuxPXVk{uFUP)LXQEK1H{*ugbil(t3me(gk@R5e~z53yn z(2ncc5P|S9_U`SMX;giRKX_h_XrU9#Tr}Zqu{dia!s^ag@6YRQ=JgmFxTQu(e<;pZ zK5yYLDRUG1h3GKsYuIZ6C@JoBjY7kQGZVr0lH0$rxaLv|ze ze~_X{Ilaxu(#CX?-Tt8ShRtRn+ol898!NyDQUs;Qo|rB2KSE3l0MwbgfMyBA>m>%* zxgw_wb%bxdN94a2 N;Al^Mr{sgrbSyuo6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagsyndie.png b/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagsyndie.png new file mode 100644 index 0000000000000000000000000000000000000000..86339ad36be7c892cf155e8a009945c8ffdb5f26 GIT binary patch literal 611 zcmV-p0-XJcP)&cOD~na0 zhl?AmCbOWN=ujBCxc~(A?Ar&XU7VcgFuzBx62Ip5# z87@LoKZv~-DtGJNUD`ST1bBJ*7;Xczq3YS=45~mAZW~)NJUe-k9HYo{KwO9q!@KFN z46hg<1(EgbgABga)eMgwJ*AHWKmb+>!q`G&nnRKUJ^}MP2!IM5Nwf+VRuI9|(8K{C z@b2S#xaH5G%@PnFgh6to0;W%QZgcxL?7O}?t1^eKla(@TW9aR_WI8L&dCc7#F-dv zG6Dd=#Mj3=MCb83V;Vwq>({r*Z92C))h8?+08F2*7>HwMY6$=aNMCQy(5&*A3P!@= zIQZ|@496M%)}?DsuI6t11!F(L?dUwNulC&ygrUKP4K^XUYmOsC)_?zTt>K1Wea%=} zvzR*?y9yV*{;A0!XBjDmOWG|vn^O96a>iYe8B02KTB0sjQ%6UXtlwJG9n|07swwpL zcs04#r9>|{G?YCqK_ZbK44K9n7IaNEAsKk6Kw~oY?1+5j>WsgS*oE6;=rBdJbSw=H z%^5F!#0L?t+ttFxD7GcZ5mEcM7FX5;7o#c$4 zv(f0QG18j`SAtxF*@(O3$-|DW7nd~g?%h@qRNTY%PuqFaxfr_&w8X#7#c>O`hR zz1mLuT6537;}f~%fTH>YZjj#rek~e8;lst=O>X_TyT#{WzLT-E9PyT{2`&RgEJfx6l50;%I+k`5j3J65Ig5Ko2c=WnG$UN@IkMCGusV`Syf{~Q zjbS^zE2!q9N8(7|p!0aCt0FFI3{9Pu3eRYVb4?D8@VVd2`cCq`2O?&2j`@9-EOw0~ zXNxA)ftmNv!tZ;ueuOGD%57B~mqHj<-%;7$CdFE^zi}MU%W<4tv4RAPJL$u=A5bJJ z+DZIPX&yd6e6F{RG}0!<2}bo=kn;(ovNmizVgyXXB#nqTL;&st6u<#26xgBy;c0vH z1U@w2=VQ}gfhNQn7#c}3L!^mq==F*_i#~j$|>WWT;^6IDWUhXP@dJIACZ_GJ#+HD6$ zVh~oDdJmptB2x089+R@~2>CkdeCrhlA4{{Y_JW;m^1>3+a0o)FJok**6!iI>uyp6y z*1a=3Ae%$zNM{UVo38#@jOE2HeMKN54BFFLe=}`-_=cNlc;*j8aAcup4-iXY-gHV3 zW*7574$rDcKnqIH4KGM}s>9sw;ug?zF>sa8=cc!UpH7#&(nu`Ol{Ui4ofQvik`Z|u0Y@#@zvsVay z>6(m|yuwB5y3Sicea-@5;Y6I3K0PT}T3tCi@mz==^;nfIOORqAPtI6DSX>ajh^lMI(0Y`XrI%JiQ0`=Ec7I6^2Kj2Gn}edVvn zej$7-NxQXuK+e?lxDsr5_hC7CcUfD!|KV09pPw22n7;Y&5jw7etZZydY*$~fX<_;8 zh3Z)dTC0K{zizIpKK3e$V<+t4xTZA4&mJ`yYsf8J38-`=3on{q?dz#8G9zQkZLNt9 zeE4a#=U646{R#vA3G%7f>x*Yu?&LCA%+b^ET<5sdDe}@GqNU~dv~sa#$TUO$HI=*6 zkr6c&y=H!Wto(sS-N~_n5T=bS%$-nzLD>TC_U4a{wJWBwsb zGw{mv!~YZkTz8`@nz+FL;8WHBR`-?ApQl(a=zdke_duXG*9)KhUrzL!BLDyZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagwizard.png b/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagwizard.png new file mode 100644 index 0000000000000000000000000000000000000000..0b6d9dca71359a7d30b690b73e4b33ea214987e6 GIT binary patch literal 691 zcmV;k0!;mhP)7L^dN{(G$_@B2f>R<5ONTz;K7R?r1d7^B~ZNxd(gJAf|%GCTDD1=rY(tyV&cri zR;w*K+e}38J?zYU-^aYq{B0RlAw^O0v{hBrpm&Z{0Te^J0qE)%R{mqZBmh4f(!O2@ zZh)1H^g?h0bnb1(m5XQd%jI5<1SkmCd|Uwiz8m=lrxSH{`?C28lbO|=@m%`jUHErj z0oD1-SMl+SjQ;Drr2&XfCookVXGcKIv$hTxN&JF$05|&%V=5YFHNpTEL1IxDY8n^E z8B+nM`_Mt|xpVu+EOz@v3bRQKp3}$iHWU;K5GRYa*0*CUG=X!P8(qpe zyfJC8$idPa!OnUoF|@;x8%7v*45}KWbOdwhHK=qSAr%p^0P{2NAQ5BoDT=rOtaW8@ z)dui-+O{OVWo-&om3*t$1<>u<%3A+~Og16H{sC3;Cv2|Hq0N%OfF_Ft@ID!4yO1#* zV`Ga{xb;KHa*S)QAX#>a1?cEHg{Ome;jofRXmlf**$4#>5SE(ZYB?$P8P3h8So3C{{j9w Zz*ph$+=*;p(C7dF002ovPDHLkV1ny%Ga3K@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagwizard2.png b/Resources/Textures/Structures/Specific/fitness.rsi/punchingbagwizard2.png new file mode 100644 index 0000000000000000000000000000000000000000..11a00d2d55f69de9a8f5f28f7065a844ded79081 GIT binary patch literal 1915 zcmb7FX;2f^7ETCFAS4h4pJ5RLh{#p}%Wg=*B8DO$sDvFEW7#4on-;UM6oCq&FF=$f zXjw$rgn%p(wiFbU@DKxn2vU$zb~Hdj5*pghd%xezckcJich9|Z=FGWsGd$d!;ZQXw z004mFPdj=_IanGrIk0s7`XRDaO7hXCePRFrMb2ITa}5>M0RV_G-Vt~1df{?WM5M}j zmA+k4r-d2kj^i0IQ@wkKprq9OJl4ee84Z7k2uj__{<1zmxtPhm2lR$!5;022c;PVki1NlF zicx-?)G4|#N8k^iFnvBxv5s|=l_^R;*!<&M=Gbg~Mh(}`lyjjb@Rv8TwLu+p;NlY= zr}vI(%A?>Rz5r+4vT5Odp=u}|AXEmGH7za9`yfp9Ro6sMqo!*I0lfAG7zIHEw}x4! z_E^P>nm4Up+?@0TI~F{+dO4Ie5AZiC{Mj`^tdLt!7cXeHim?cf`bEK+O5*p)kIP`b z21#bnuwvFRoZtDN1!%fOu~ToIJbE`_HdejeFI~_^? z8a=;CYDi8mnOTP{H((Fu+fH0%|0lo?2IBMKVHL(C?1))Mu)lS7acF15T|5EV-}kIg zZbK%H4a2=+#VO%hS!HmB>6P2M8je>-afSAXf(V_LSCoFU-!b1@0?0W)LSWg&FuiyG zYS7L#W%&Ay(|9pd)C9Cs_?zv~@bA?GdgbNofNi<>D<5eyGK+7H#q1x9r=wE2 zR}B&k`peN(acVA=;@@MQ)=4Hum03#9x%QzO)tx-D%TBJ@w0%T@m@s9odH(`Jv9WG2 zGyCJjb$D*P$S$BUhGWs8zZxWjhT2gFDJoudocXU=UG#DLgd>^$jS~gh*oELZvLX3k zthbL!i%&~v+jZ!z?C(N^boFI^5ZNas!}82eZjV_74+;VrCo&(6wd_3Jpya}k=s5{B zzua$Nx0;E0fz)&RqewB3H2x_qWMJE*Y4vQ|0Yf5|_-;paz%cLEd+6hev@x(+$uO_l z5CdPhngIr**)L3Ghm0XLe=@cWFWuB30*Dkgh)7OOv3k#G zrV?Qjr)DSgm&{J9V(&9ou|CY{=obCtr1T@4=*ktE*c$h_fp+uSw-+gFTB}{x#bA60 z?7c3I?0_IrC@0VH)YZy{xSq6nGqzVz>iNwkpz(#xX4VV+=*&+`RpDfGQ^ z%X?Azs?G%U;Q#s#9q^JWxQR8m(vVhf(K&)F#iXC*ff>jY*4}}my+cu;V-XnV)f$SP+My0-B=hrNL4EU=ftg7eG;Id)#72BQW>G+Zt-8Xg7vT%h+pbn7P96 zU8Z}M9@xryqZUn85~bCj>Qo@jNr3A(sTD<8Gr#Qq>XzG!LGG6C#B&Kyaou|3eix!? zXJyI0nCy} zTE6whLg{iG+1{lAReNprEq-EAC>sWfoqbu6(v&jFm+$w+8gA`dlO=+n&39;e>Lr4+++H4W&MK4PetWQ<{BTpxaY_lHhRYUNNa)r)^Xf+#E(rG0S5#%aHQ#%^H zT4h{Ce+i1R#qyR&%yWBMuyM2-jOh6r(m7r`fQ5}h5Is^EO$L~Lz|fE@hp{kja{4EU z)Y=7vG*ka)Zz-YDcBI*2(Eq#5)^~@gWB2oY>nN`F%T-pS3e#y&XtPY2 Date: Tue, 25 Jun 2024 15:54:47 -0400 Subject: [PATCH 47/68] Update Patrons.yml (#488) # Description We are not wizden we should not accept their patron list --- # Changelog :cl: - remove: Removed Wizden patrons --- Resources/Credits/Patrons.yml | 60 ++--------------------------------- 1 file changed, 2 insertions(+), 58 deletions(-) diff --git a/Resources/Credits/Patrons.yml b/Resources/Credits/Patrons.yml index ff98e134ce..e6be63f677 100644 --- a/Resources/Credits/Patrons.yml +++ b/Resources/Credits/Patrons.yml @@ -1,58 +1,2 @@ -- Name: "weirdrock" - Tier: Captain -- Name: "Drifter Drifter" - Tier: Captain -- Name: "Bikowu" - Tier: Assistant -- Name: "Hasan al-Binabi" - Tier: Central Commander -- Name: "lleft The Dragon" - Tier: Central Commander -- Name: "Pandaconda" - Tier: Assistant -- Name: "Lazhannya" - Tier: Captain -- Name: "Bonktrauma" - Tier: Captain -- Name: "Haltell" - Tier: Captain -- Name: "Delta.Pizza" - Tier: Captain -- Name: "steph kaus" - Tier: Captain -- Name: "HyperionGM" - Tier: Central Commander -- Name: "MikeAndIkes" - Tier: Assistant -- Name: "Ashley" - Tier: Central Commander -- Name: "mura" - Tier: Captain -- Name: "Adeinitas" - Tier: Captain -- Name: "Shock" - Tier: Captain -- Name: "Dead Rabbit" - Tier: Captain -- Name: "T-Dog" - Tier: Captain -- Name: "oBerry" - Tier: Central Commander -- Name: "Wakefield" - Tier: Captain -- Name: "Hûvy" - Tier: Assistant -- Name: "TheGungeonologist" - Tier: Central Commander -- Name: "Ethan" - Tier: Captain -- Name: "TeeJay Neuroth" - Tier: Captain -- Name: "Neptunia_Counseling" - Tier: Central Commander -- Name: "rosysyntax" - Tier: Assistant -- Name: "Kurzaen" - Tier: Captain -- Name: "tokie" - Tier: Central Commander +#- Name: "nameinquotes" +# Tier: teirnotinquotes From 8fb17aebd4db83371750c74ab05017d514bb3862 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Tue, 25 Jun 2024 19:55:09 +0000 Subject: [PATCH 48/68] Automatic Changelog Update (#488) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3e7799a745..818073783c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4225,3 +4225,9 @@ Entries: message: Added categories for traits id: 6127 time: '2024-06-20T23:39:31.0000000+00:00' +- author: LovelyLophi + changes: + - type: Remove + message: Removed Wizden patrons + id: 6128 + time: '2024-06-25T19:54:47.0000000+00:00' From e53f65c484e38e4cffffa35c5522e92756375558 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 25 Jun 2024 16:19:10 -0400 Subject: [PATCH 49/68] Birbs Have Wings Too (#477) # Description During PR #464, somehow Moth's got back their ability to move with their wings whenever the gravity gets shut off. Well, I'm here to correct the injustice by also putting it on Harpies. In fact, Harpies have a much bigger claim to it, their wings are absolutely massive compared to Moths. # Changelog :cl: - add: Harpies remembered that just like moths; they also have wings, and can zoom whenever the gravity turns off. Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml index 0ddce8b0e6..e51ae91d12 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml @@ -121,6 +121,7 @@ - type: MovementSpeedModifier baseWalkSpeed: 2.5 baseSprintSpeed: 5.0 + weightlessAcceleration: 2.5 - type: Inventory speciesId: harpy templateId: digitigrade From 13319c28799f28ea60f36cf5e9f19b4d987c3038 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Tue, 25 Jun 2024 20:19:34 +0000 Subject: [PATCH 50/68] Automatic Changelog Update (#477) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 818073783c..ba0f93aada 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4231,3 +4231,11 @@ Entries: message: Removed Wizden patrons id: 6128 time: '2024-06-25T19:54:47.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: >- + Harpies remembered that just like moths; they also have wings, and can + zoom whenever the gravity turns off. + id: 6129 + time: '2024-06-25T20:19:11.0000000+00:00' From 1132b058ff4c03b4e741da720484a18c8487579d Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Tue, 25 Jun 2024 13:47:09 -0700 Subject: [PATCH 51/68] Fewer Mid-Round Events (#486) # Description Ports and improves https://github.com/Simple-Station/Parkstation-Friendly-Chainsaw/pull/59 Slows rounds down so the station doesn't always have to evacuate in a blaze and can instead leave complete. Also makes Survival not stupidly destructive and gives a chance for the shift to last a decent time. Allows servers to configure the times themselves if they want to, so defaults don't matter too much. --- # Changelog :cl: - tweak: Mid-round events will occur much less often --- .../BasicStationEventSchedulerSystem.cs | 7 +++-- .../RampingStationEventSchedulerSystem.cs | 4 +-- Content.Shared/CCVar/CCVars.cs | 31 +++++++++++++++++-- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs index 36d30f50ee..0243a00c9a 100644 --- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs @@ -4,7 +4,9 @@ using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; using Content.Shared.Administration; +using Content.Shared.CCVar; using JetBrains.Annotations; +using Robust.Shared.Configuration; using Robust.Shared.Random; using Robust.Shared.Toolshed; using Robust.Shared.Utility; @@ -20,6 +22,7 @@ public sealed class BasicStationEventSchedulerSystem : GameRuleSystem private void ResetTimer(BasicStationEventSchedulerComponent component) { - // 5 - 25 minutes. TG does 3-10 but that's pretty frequent - component.TimeUntilNextEvent = _random.Next(300, 1500); + component.TimeUntilNextEvent = _random.Next(_config.GetCVar(CCVars.GameEventsBasicMinimumTime), + _config.GetCVar(CCVars.GameEventsBasicMaximumTime)); } } diff --git a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs index ef3b5cf18a..53a98e8b76 100644 --- a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs @@ -70,7 +70,7 @@ private void PickNextEventTime(EntityUid uid, RampingStationEventSchedulerCompon { var mod = GetChaosModifier(uid, component); - // 4-12 minutes baseline. Will get faster over time as the chaos mod increases. - component.TimeUntilNextEvent = _random.NextFloat(240f / mod, 720f / mod); + component.TimeUntilNextEvent = _random.NextFloat(_cfg.GetCVar(CCVars.GameEventsRampingMinimumTime) / mod, + _cfg.GetCVar(CCVars.GameEventsRampingMaximumTime)) / mod; } } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index ab36977efb..7d7f3c7044 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -112,14 +112,14 @@ public static readonly CVarDef /// Close to how long you expect a round to last, so you'll probably have to tweak this on downstreams. ///

+S)RV`JY z=}FPVrtLS_s+W~cp{NIP4>*qrtT(P4e+o|Xg%JA7O%z9G-CrA_X$8zhW^Fg27Tl`< zr}gxbumKh=_=Yh{zv2KOZ2QFXjVe^2L0B zOum>8kjeA&0kV01K0r3l&j-lni}?VVd@&y&ljr9HWb^!d01=T)e`-E}h=|CZPbDeo Ur`stKBLDyZ07*qoM6N<$g8z5&kpKVy diff --git a/Resources/Textures/Structures/Machines/VendingMachines/cigs.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/cigs.rsi/eject-unshaded.png index 505d5f3861a8e3e4594bef233a91bf9f3f89efea..5479f208ea09578b31bf013b4ff6cfd41550c8b6 100644 GIT binary patch literal 870 zcmeAS@N?(olHy`uVBq!ia0vp^4M4nrgBeJE_L*`XNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%4-D`LaSbSJVOUW3Nu~VeI&H;r|2gJ<#X+2#PF#KW?%kE;GI{}NQ>RW1 zb`N+nJ6>2+WaTYI_c)VJn(lLKtvD9AE0mkuJf&Kk&asR~xzWn*j*bz~)D`cIHvlQ= zk|4j}|2P4Ix(T-_P#I@|M`SSr1K$x4W}K?cC(XdXRPO2G7*Y}Uc4l|pVh0}Alfq?_ z^X_Gy`d^=scs$i-$CXzZY;G@Yvs6x-tFRX=vCw@rb0Gt(hC^cw3s>(KlSvj!mQOsQ zXxpp8_i}4Rbxka&JPnT8ZoL;opRn4MafB8?_d3!z;j*!q~OwJ zk4F>cxe2v{t-ao~?%I+71^LFi`%rk&PH%vs|OM63;Z$m;g(`<05uiGOWP=Q`Av&f?QwF!M22 zidjo>3}f1n%XTuQV{|*DTn7cPUWOD}j5xk`9$2jq&y^j(cVu_+9CalV-BM`X&7B?de1RQ=>V6>5{?I L)z4*}Q$iB}7?*<} literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^2|(uTwH z)BV>cd*1q6IC*B^vp*a6`B~hqopE7(*S`OI-t~st^<<~NTVNh%AAQd9Zqf7ouhN%C zNi5yA)@#Nsv+s+qgzeh@>F~OJMo+$%GBzF6y?V&w;G=0OnMOClRtser-I%6w*8JSn zJN+j2E#Au}_jKy>FMISPOs4Jh&zb!TUc4&L7wSLmSz+XNX!6GQzgySXUH@!cK5OOr zXK{|=bC;#}bpDq+|KfFG`3k2ORdvr~KWzJ^RxY?Jpiuk5*FO_QA1cj1sQ0{o4ae_& z?|t?EYd-Nk^7PLcZi5U#tt{4E^XxY%&G|0ziIE{SIAf#1u_avBa;tqOh5Y@K`(Vz} z?_Vn(KHjaqf4Kjt=Q^5H2Oxw8WZ*862w$JPnEe-ee15NPT#r)}BQ0>1RkNQAndAjk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0p1o(uw1{Ah1EGYb>Qhsxtwqm*e9CN?oAkIxEuD*Ns?#gl*y@0fpw-l#N zof_;O@Md=WCr$S`wpJVq+!e}AZk|#tPUl$0qugj^2Q+Nj%5zQ^Er*oL zr&u$7o+#XRT&IFd@mZ^}yjUaebGAnBCwC5L7WxJz{7AHWJ?+F#E;EbIiLbY*tW(j@ zcFtThr(&<&<=QmIP${iDKZ} zS*C&D2G-omNlFh&F3j6^WZi2JzxH}Eh(CXyi`YWe!wK{D=j@4NX_Yg4Yvk9ypGCyL dQscreUiF&9O|RCtZU=gu!PC{xWt~$(697nj#wh>* literal 352 zcmV-m0iXVfP))FfcImuKSMH4i=&e)PIX`&_!W}MVmjv z`EkCy44t;i;r#N$kt8{mi5NwS*YBawtAwwk(6g4@L!lWMAU-GLd!ijMF|dt6@%lZ6 ziGghl3=9kmViVgLRtaBc5S!S}z`(%3U|)8IVb+p+4EAMb;CkM@d-wm!a+&|IsK5mX zM!~)NkKm3#=EE$9@nM$3_(DQL1bxrIKtv+c3rHh55nkFbi}BsNcmJR5)MJ>x`Yqms zNH7GH6y-=xgqIkI4*{AbLSoYZ%@U!IkPxFzC1sd`4i$OTkQ yEbrdELrJjz))q1_FfcHPq%Isyl%rr2-~<2~$D|;2i$h5O00000TP`=S!?Y{Vy}1LrGi zgnoCu?S|$44Ku(~P{QpnI5!P-C5fawF#QM2K$JWRqd{bv0*g7D;d1^`GBkWm3D^4$ zZ9uK}Q@B1DI1Dn;bgh}#;lUxOs;%ZOOCjJuXa#;|XA%pL12fw}C{FMY3y=k)lb@lY zERR@7-zC88$Wve-GRk^jBH+Tw8hHBNN9@FmA6&I(VP^0Zv9MD=R(%ylhwc%J*AX|{ z+KKqc(h;j*NWkjaIHvU6z0?eq0Eb$LFS?yr7h;ZUm+bc>ek=R~=zR z1}KALt((?>47ZD01cM=Y8L($XP(}ve64=w(t$8ixMNn1-e9v1XcJAdWXsm0n^!}z_hiR7ZY}is*+MfV=Ki-9rsc0^ZHfGaX}F z1v~v4P64xL^{n3nIOU&719%T8=+eo192U*L-g0cz4zCxE4q$XPx9 zMwSRt|GfQ>B7!1k_4u2Cop%En4^z}Xy(jN)jS!y#tPO)JUzpl?GIPO7$nFPM22_6g z9WIZgr^3k8C{&hK5KFG_lw8~815w& zQ&6eAc20w6;%m7GV(@BbPE3KA5kV)WfL>ojz(qh&;ZnHlpUrV>3Ml>RJrJ>iF9RmO zKzUg%v1zF}j;{iGkHS3QBH+xq7I^cbi&&b1>d~+RdLk&|pIZbmcnYW90}wGGf=*5W z+eOgo_k32!?uXEhP_#`6CpSbyd@~WC-djt{_JBLE`vK#cH$S3m2lRZ4>_IXSkX@4n zA>T3-Ca1vc=0?~dgMPed=GD%0DCDmkpUqJ80 ma!=YvmeEHT67au&EASUE@GpseS}L*t0000- literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij)0(?STJC>l2`Gu<(S=nf7Pna-aT8abEFi$%r3m_#?666>BA3I<;E3Eel zsD`t^BeIx*f$uN~Gak=hkpdLlK?(UlER1>yhy`%jly!G4P`M+J_i}nvHkE{jV4jLT0sOrNTG9%@%i?GU+6P43SnKYI< zWb+=Ip>cslUni?Ebp3{zytkD1G;lMmtIOrMw9D;=;K#U_Lve>xFHDMI51Qnypt_T9 ziAs65klwnk#NeB`==qu|c>eLwl0l)an21 z9*AuG$n1JVUqDAENl{Rz$MK^wBWLw*F|nW>oGQkNW%qxZ?lyRmdar-x_WrrN&6Y|G zX9O7&`ZyShT^MF4GnKH;lg-@vV%MkL5={p)1TS3uderZqV4cIxhKu=!uYLQd820^E z!c@%~LAAvp4661vW?fGXskZI2SNQi!@W++hrCyfF+Z&A-^FFCpyU*CKn^?V8cw&a! zWB;`Vl1sH4CY2XXK3{SpdI3xF#a|L7lgwpwnd($d|JZz`Z~4>byOMWAYl(Gdu9c5s z`Sa&bTZK@m_X?kXe->PSss8Ji{??8QN)4;_Yb#z3jOW=tZ;e}A&O~_!r4kRI@VB}< zdJQTI3#R91T$)m2A?p?rtQxBK;F(o>we`y>weuV9GMflwr)AxW^3S*U9uh9q`LxxD z(K`LN#1V!S+$Dh*8B#aj3~)*|URuIBp~XpYeafOOlj?H+l_tG>qcW9q$NtmWbD#XY z$~voY;(KO|%BWvwf9NZ-nrK%Z@?bpc!qR{qj0a={8J=}87#t5~n0xNR)mlTzkX7p# ztmbWERX7nMT3}|$zCZZ2&%t1a^Y1j(w%wZWs(t-J8G(<}9%weyd9Y8eOV8XWZfo&X z=DUc)$^XA^F{M1rUeRY6nq&O^-Hzo9QAVA!kMWuNF8H*0?)Mc@EWZDCd5bpYw_Mw9 vwyKXk&S7oxwgcQNT48YtcFYFx5Au_;j_v!ibIMgbP0l+XkKDQ6zi literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}_dQ)4Ln2y} z6C_v{Cy4Yk1v)4P$Q=2(-=gEQy<(})mJKl;9!(35nlK-H$N0asMdcrNch?{FV~QcX zjS1fy{xcdLV(}x89_fB0n!C7p*@``5+GoGgN%}@GZ|EW3gzZhei>z@0Z zuNG%<%(1NDI#>3o{;0z}#3`FInMT*%9O|%&zm~m+uzkj7JSW z^4Ao&^K>waeXMJ@e)RUWc~42{fywRtlK1x29lr7Zv0?Hb^RO)GerXP%o7$%~ec3E} omhsRcCFXE;phpb2+H@Eg_U-db=eh5H0O(Z)Pgg&ebxsLQ02W7hnE(I) diff --git a/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/broken.png index a7608d24c1002fd1bed5523a1104e20389142c65..0b413ac46dafd4dc78d8aa60cb44811bb47cde8f 100644 GIT binary patch delta 1245 zcmV<31S0#~1M3MPiBL{Q4GJ0x0000DNk~Le0000$0000$2m=5B0G+pi?2#cLe>qT0 zR7GuWP%9$H0002Nti$sF000woQchF<|NsC0|NsC0|NsC0|NsC0{{XUm+z0>w010qNS#tmY z4#WTe4#WYKD-Ig~00bOKL_t(oe@CU3jkc>Q41~c}MXI~C@BgrOW)dwR-FvNbr}d{v z_y~cD;Vp$217&CXHJFPUU~!j(`{;fHgj={t$AwpCQ!x&MYZ3>S^$=Rs|KLVf4^rCMlfISyx?L5 z>!oY}ef)9-ygmY8>;V=YmQ;Kjk|oHZ_EvTjvKrgb_lur<{roKzl`*wFDdr!*14Ed%eAtfMtQ}^9m4$*dgpN zdw^oYvd}ERJhL&%BQN&u&;tZ|C<_epO!JX}ZS3|QfUUm^e}IGXusQ=yVDS!6E}}!{ zV)wXsX0S~2f`v>CI`fCxRFavppb(dNLJk0=X-+Zja$!LQ-gN;8f*V1+i!sep5&+jk z7vE#J4CU3(O1YU4*qGT(LeEwM0$|t$U`GKwYxWTW%tru%0|B(t$s*!2(94bxNpmf6 z`Ld)ye2Qs&e*-`tTdJ2|i%0-7Q2R3jvFYY*`7HSe<{fS#lxL9vYCyaLctdL|`3<0N z!W?`uAk_lorL~oLtOI6SWIzDtCq{0}EYO!4unUA(Yzg2HxH_3Y2wW31*Fwmy6@0{| zss^Z>6%nrQ0D2jNP%b2z1>m0@LRxqdkkALPJ)a8vf8v*!9Y71m1|K^yV=JYH0JT4Y z44{7_oJ>tw%GwBKW`Lz^(Rv&>fQ8|ga|r-2GFRgIq7$7cwp@wKfN(MX0x&^MN0q@e zIf0d8jLelpXML^x#Q!pM0wxZR-roThu%mqiV0*b)VBW~uNDhVIh6Gt1;5AT%yZuw} z+e}#vGfDvHXAKDG)KH7<6N4zT9)Lz>t>vy$W_7^7>izx?ujiB_M}E?*00000NkvXX Hu0mjfNv|PS delta 456 zcmaFOd52lCGr-TCmrII^fq{Y7)59eQNGpIa2Q!d#S<-cEqM|~*cYsfbtCJbq+$Byu z6Lk_(%1L)JGOGFz_7)VaDV6 zD^h@>Up-wMLoEDDCv{J1R^V~Xme*8N=(_dw|Nau;17RF;u5<28=6PIkyES^c%+u!u z_7zk9+Jzk29Aa57vQ(^X@ki?gqF!I8$8)GlJv80(h(? zOuG=({g%b5@toxv^^W=nw!I>IO&8daU%c!3i(TlNiow_u)O@X$4Oy(Nvr(Dk5{?Ue{lS=UUO#8L#y@L4qK*qYyRRA zQZr-OATd=Ta$<#({|s|Z*Ifcd8q(Z;++A)O{~va`89e(OE_CdK{VguJF0U7p7U{%n bdjG$j!L-p!^N$rU2pBwF{an^LB{Ts5e#Ny{ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/coffee-hellfire.png b/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/coffee-hellfire.png new file mode 100644 index 0000000000000000000000000000000000000000..bbca7da7b69ee0a0c20a295a24cac0a1f3a98102 GIT binary patch literal 1709 zcmV;e22%NnP)Qb!K~FgtVZCS$Uc{`I3>Xid+(ULj_L76(A_>R_1(U2JF`7dhSvXPz#UZWJiyMoIBdeC*^??jzYfXK8nh4BvCUQ%!55jPfa}`$YddIk z=6f9_F6Xm|VQZUqZ$DytO#zdf&y9aPL$tD}oVT?#=W7<@`k8XJdtCPOu~!6`H)F(U z?~BU$3v+9cPR&T^CoGd7jrSEaDUuQeFb(Hp<@8)5(wXU~-0yc9xNK=R9_=9N(w+uB zTwaSH2zjJ=^e-H4#0*o{gK5!TSyb)O7TbOoL_O8Qes~|wx4$~p9gNTp^FBG{GQS5r z@YojB`4PHFHs_^L5#z!&A$A`3&9uEkR`Q=a^kA%iI6u1os1j72+kaF$$@WUS`8=;x zsR97&Yg=jlK2i>k)1n^r@x5eqQbDW<>ORpHPW^oGmiOp0zv2m;R3p98vqMMK;YNoe z1y1t)(k=)#@y2^r9;W~xXT^EJQ^z6LD1DCGg=>R84h3AFg+aG`{qORN>1K;QIYs!I zI+g<#`T#*~{7wO;eW|i>-X>NKrXDA~uBE-3P;g z2)0T5iHo3AP=ljEsxAow)F(I5$c~%(_(<>@37TL1oiZclpx9SaEQA!iKKYS1f1&^w z1qvOza*E=Hgm~pdlyJ30v}9N(J&ytQ-IIkI-s`C9Y3SC7-40E z;XKZR+$0dL&1db8zP`oHWi1%;*Y2^n7 z<#!5j=km9-dCwDSAK_D<+^&rP*brRHd-P4X`16Q9um1%=03)!FU|$+i6d*nZp=ka@ z0oVXG0x%6J5~c`6@H+*N}qoh-COUzP04wO z^QW7=_Rky|+<9Ju@T=ecrZE0Q0b~?F1dwppO+Nml+Ae?hb+EsWo__uSefilL`lWSA zx6eBQir`O;0Eo~G9)lcWObmb&KLF&|pF4huPM^Fx7=?cZ7J;LHL%Illug9PZAT~0oa=2n_OCuU=7NPU-E#zCPzWT2tnt6a@(%a z^_2H;`JOIExEq4qi!wA-n~bL>wepofz0&*rUPjsx-{g|!+R0LHmLw2=^PC) zydyw5g`~*R97R&$uG#<^a(GvW@V?Fn%|+AWW|VMtc4{L>fXjKL%w$BE_vplF7%5X5 zZ4Hq5`4fL{Rp&TIxccUTZl}`GqF6$;L*`awb5*8xrcJ|&^!flIodsT9=zfpmf&;7b zVcmdCoVFX(nK=0qWvLG+3yJjsfUF4scD=fZ+8-X%VXvJI+o=&Z5s0up3!(h$1Ij{j zeZV{7!+Q|^a6Xb8wWO&zb1O49k$#2@$xi_z4Q+FtkyIam@b9-iplBot&~vKM8%0s2 z!6>RepbYre2h6T@izJMwD5^f7ETrZItn~q6^oyp8RVg4vtRDQl{q`nG6gevL- z%7S-#yo&mOGLR`dTxESgQSizR7nz^08s6Uns;&0 z!9#xDOjqYsAK=OlR)tu7fGs=A$g@5GiBNYgusqb{v))#qkY{~>**_O4P=%<$0E~w1 zB8!k`etzht0RHeOU_@Y?%*U%^NB-RvJ+5}c<~;B(PA$Oj6dzbo00000NkvXXu0mjf D%`PfO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/deny-unshaded.png index 826a5517e3cb53863d6a1a0a42ea4c47a0982357..e16f8bea12e2d7972b609fa80537cad29425c982 100644 GIT binary patch literal 717 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3-o1GtKD$QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`bpw1tTqEr?x|6N@rik4ay}d(P78#XrhaCb zKK)o~?6jrt@*-aEd9W+y^}DvMdK~LcG0t26x#{cHcW)zJH#H=!{Xg+R+3u@%d9&w= z>TF<$Z@*S0&a>hA&jZt}s_nin;S8$F*6;h?fBxH}37;-Dc3oiH=@G!bMephP*AFzn z_6V$KaZqK^QVjUHo$24h)t^JR3)$*(6y5czxxUur{P78)U{&^lQ>0HWo*lST&~}%k z@6Q>HUQlN`PAHBF4wLV6`SIt5V_Q|5YS@iGC0z?%32ykQ*YJ$t_s7;h7R(>g&-2{) zqoDCM#eUy}d?t-4Y{9j=B{lD}D(KHY&^0BW=^4|FmMQOL8TuGIe%d{0=7|kh&tzRw z_hP}C2-)CgpPkt+EXY1nQzvjI{7SsKH?;Z%KIr^O}@0(#WuhIR$v*&y@ zOlI}(c={AT-r;OKb+hUB^q`-4rcR$D7+lYP);wFx^!wvXn|Y3r2kjheIZs}eWcVhR zF|S0yW`QmD$z;YWiLQ|uEYCY1{NsG!Ub|g(%5tU+ho#O>|34+2Wq+G`XY&2|gPHeF)c*goJcM;2Ln(tPR{(p!VjyFy>#1eiUKc-~@#XKn zy{m5BdziHS@5P{N$=!yx7DwLxx@F50(__b2Dvq;&Ol4pYN&EDlxv2QRkqhH1hAfc< wd<)z_jQWrE3|_CcJFYNfyl2SB&`?y%u-xPI^*3D!pFz4jUHx3vIVCg!0LkrVumAu6 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/eject-unshaded.png index 8b66206bd759e319980d0a927b1df9547b8673aa..283918001c0b624cb14512398fb9a423be642b2e 100644 GIT binary patch literal 1629 zcmZuxe>Br;82^3^Gi<0NAwxyUUBU@5^DAUVxI)ZoZrxJoPBmAy;Z&|VjB<5_x!p>B z*G0-@=0>_HKk{R)A2m%|SzDx8oBg=+$L&=2zURE}=Xu`qywCYOpZ7V>Phq$KxbAvg z007`Yfqvm?)cx zJUJ`|ZFhmVEC2G^zx%Mo#l@R9eUozNcvt+UN4YU97OT6vTO<+<4-bd9>y1>Ilfq$6 z*46=d=jsV7A0L>#jXDt^aky8n29vaKT!iX>7r?{t@ahm)YG4cr01(|P8!Wa*m;rzm zCCJY^l8hIY!%tt^Zs=b-G7+_uQKC{soIdEwJha)aa-JY^%czOdVPbt^NX@9}hj(bN zqcLgQknU>@E%aRTN=io4;>cF#iJU=~5bjQBScmz1OSF$ zy*e{xPqP9#SQU5h`r~1&_wHrsHL0V+u(6j!mga&4`)8y|(Iu=xYff#oA}n(cf3(e- ztIzhlMQJonG}#i}$;_EbLJ$m-lqz)#mm*4s83W@ zwEUXkWm=~q6mH(ADd$p;a>!S6KGQunf6d@De?)Y)vK_wn-_Q6u!P5FvPeI0x){IRA zp{E5jzt!!Fh(K^U6DP#$Jf1Z4|4JDr?PH~Plgwsn@gAY?wMbF7e_b-8dD??A%93bS%+# zi%@R`jwBVD?GNV;wrHUe=olwUddz-vv`haUf%W4;KF1kI@pF|3=% z1w_KNcN?advwd#SNx(C{aotYfjl>1on)_uJ6w%UZCx%qgQB}l2S#vhK_4xND@IVH9 z@9!1&)F?AT;UqV^l)k9qvp|6b9Zzap$<7SC+`soQaqEy z3)Yw3b%A2XO8XzyJy>-GU0pdz%oJo~6{4$=#;(8IG{-VD+eI^$c^H{9a<9M&T7l9? zF4#tBV#(qk+njNOCc!bX_H3~>Qo-bL)_&Pj{ZGJYxI)}vbe6w-9}>=WDBsPMDvdz# zB8tPW$Pwu~`;4&X)4WvX8$X~aOh!j`a^A4>Ai1polosvJmpF(GP8z;@P%N9YA8%w2 zE;L+~H({cUM&y4`E2Rc1%%UQDyj*ymMwJF=J1Kj#?AZaw=y5N9{#LqpgB531d_POvHJ|0$ zbKYR&>02TzI*JWFW{4I4WvkIE{aCnX$d+OEq}^~n>6*+Ij7-2MHgjzV|Etl&Ti_796a z4q9d}cXILwa9n;#V7}vArIHB^e3BwH?14s>DVI+!@@|2*l$8Xh`TyxVo%DlPr`GUK28cK^LfKS@V2 zE?U2?>La4xY@s{Je1K&+xrWYiHR@@LbcH zKS@`t`%ihk@&5Wc`|Cd=|5ZH=-t~g*)OIET&0US3)`ENk25S!dV`zOon@?{JlZYQ9 z*Yya-x;mNGe^XzT>=B-|fB$X1v+IBVG7oB4wW{d(*EQE_s)Bz$e);{vpIx7S`aZp0 z`}Zyr*K&r|?3DV3(%Jp`w(}>so?mv-T-sv^9?N*NfR^RyavMmMeLi~p^|zF4?f9BK zC#AFl$`ODbg?Q(vZ>vQLui`E}_QKJ$4MO0!gKQMvB{bRJbrR$=) R{i80(22WQ%mvv4FO#nd_;adz{J2 zTZ%yC4-1`afD~UzkYDhBWWeBh;LZu43}=ByWHC^|5fEmas?8_Oz`%6e)5S5QBJS_rG-RN)DAXssehE=WCv4WdEC1BkPg!Wt-nI7M}wwJ`WZ#ZJ(`E zX6DbKUsKJ$XYD!5dW#F%%UOZW;%BdV+H)XQazU&g_Zs6{Bj{7joUm`=~%|FC;ec%JBv4Ayz?Uh=b>{hX!y>D3=A z(HX6rGa8`i0u$@szmbPJ&E|4%T>qX`*Wt_ey$LLz{_PXr!f^5a_a;FJ_oWBy|DPzd zSBUsl(H71H5Y}GR8mSWs9(fj+Y zMR%3~{RKx4Rxus_{d=M@IJN9xJ!ISx;CSqu798I6{+tomKQfm48@dfDC~PVjHGi7t&_%5MJ?g>k(IrlL}lvLTzR(Vak~B z{rz4~Ee6(io6e*NHBN7=x9SUFm=WEmnZvT;pY79}z60K7srS}1W;Sg8$!$}gwP9_8 z(Se&XjEviuf(;mjL8$S*+J{>qZ|m+Zc~Y6pC=v6D|MQ-9hWa|C{Jm@+c!HQGKYe?h z;lOo;^RvSpGB<466OnLG>5&6Z)V}3=n0|0RnEhYV{dD;iAI3Vj%+D*IN^7y~6QA_I z(c$#=DcoCZ?G+n}HADkWbDw1SkRN#IY{+TvliCg2IWuc?^;>2!RsPxbe7V*GdCRDI zvL{&CChH%H{l9N{sUOFQ;yYH$S(bb^KfiuEo11ZDLhOEql;4jywN6a^0Ziu%p00i_ I>zopr0It@Ik^lez literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ1Wy;okcv6U2@)68>%6ned6GW7 zySw{;__Wi1^!XnB@#m@k(Rfing10fyfGdNSVOMyt*?n~_GoW1zp00i_>zopr0Ac|( AM*si- diff --git a/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/off.png index 8e7814af604a0e677ffe6002bc3a8e3573b86680..d314913811bd9223cce2856b5cee2ba11f0f7808 100644 GIT binary patch delta 873 zcmV-v1D5=T1NsIbiBL{Q4GJ0x0000DNk~Le0000$0000$2m=5B0G+pi?2#cLe=tx? zR7FiX3vF&tj+7SJ%S%d1Of{fX38+*6^eVtc z#@*2ci~`V*2VmJe)&*tMfA~2-;@!VAJ_g{V;Q>v_C7Gd+TnX?OGJyL5FyucCF2QU8 z(lIlAxG#<||605Rvjs>N^KSs_`UzlNX%%4GO2AID*Ioj)jpmyS-U0Xw(pP@cG`9h8 zWbzplTQT26hxDGx6kG=Wal8YVTfz(A${@xNcHCeHco&a5{WN>gf4alXpb_CAMw$=6 zj(H%*ay@wZcmPZcg;BRnS_B01*(u zQWpT&X~ld3wt5NNe{67`y{s}wGYt@HfI3BhKB^30PgB$Rrj2I^>zM&mAS-XG!OgR9 z)Bp=O3Vi|8puke%Qr1EOD1goO02D}T(+=qZ5QZRz1wD)xzzDdIUuGw(9y^$BQvyJ^ z>eKC945G)${oWI#h$#oUoIO00000NkvXXu0mjfN|0+9 delta 369 zcmeyx*2b*Z8Q|y6%O%Cdz`(%k>ERLtq!mDzgBeJ=Ea^HnQBk4ZKENl$)ya%)?h>b- zi8>p0L}@EC6jq3ZCkP6Qisa@67%M61=;-uK5xaTXXX@0czE<4%X}Q7f0cxsxX?em? zNrFJL63s4yED$}% zyfx!FW(9YDNA4=eW{2;*rCS@0Nj%{_oto~bbZB2A=d?HM2j#dMv^V({G1iOB`F>B9 zQ-oE>sk!^Pf>hKav4B6%s*bL8w`2IY;&D)4SzcT_2_i$nD&sEz_u*dkE+w22WQ%mvv4FO#ob5kKzCT diff --git a/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/panel.png index 1d9416bb74c09b131253dd2ed72f23b32734900e..33fb7adec2cda053f136a3b13b608e59362c5dcc 100644 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E2l#}z=H>+mi;DEH3o3LeTs)?cpO!my>QrrIhG6%AzA0i?mdg}!$O6^s zSx%}4QoJQWe!>5d0E6udr8b}hXMsm#F#`kN5fEmas?8@26x`wI;usR){&vDmzQYPU zERiy&e*V9I`^E%srqD*astHO8r&9JV(^RsxVUNdfdfK1W)J3m77~c;7G>1B z?QkKE`E5;scmY%P_I(FxS}}Xpv%6Ag&YBB->fubni&yr~V?4;2IOV|c?mU(y zd&C_M^Zn^(QQgpJAhXcyPDVLDlj71j$7RpJEve`9*jBuuA?WUYSG#1#Sw0H(ae^ma oTsruQWAhy4Gn?i(1UPEOE56!gCZk^)3iJbmr>mdKI;Vst0LX8KW&i*H literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}uRL8GLn2y} z6C_v{Cy4Yk1sZU<9n=7EHZUH+l3qxC61BIHSZ zUfhBDqBH4=Zi4xm{D(!@*xKgY>gNH0w>4*;+;H8;Y*$`?Fl*!F|I%%>(ykJ7{@kDN zmO(8@B)sm|>42Xv^||V|KlTPmohV~)T(I^`gV6gO8M&!!n=UaZE3$4lvUEjRPa_aK z{HLqELuS{FeQTv9*4XPa}E;eVPd$Y8)|6m9_tPCHG`+CpUXO@geCwyt#zpY diff --git a/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/screen.png b/Resources/Textures/Structures/Machines/VendingMachines/coffee.rsi/screen.png index cc64a9de577b86d5122620a3f13a1b14d16d567d..4e18d0b306ec2f7decdcdf4cac27bdfb66591106 100644 GIT binary patch literal 741 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSoCO|{#S9F5M?jcysy3fA0|V1^ zPZ!6KiaBp@Y|Iu;lxhDsKR|$M>FfmdzVl_WGnieq2bvX~$rKKEAlfT*S5YV3H{kq!R=6t%R9&gQiJ^scLy_PhF0yc(p zEJV0w!`gSJ)_*71$Xvm?C$&f9JsCdVje`oG9WE#{8ykxO@yL5k^li%grf{#~3OD0t6`Th)Vm~I%%aChxpi`xCh zmT@t${Sr2PyO#W2Z>^v7?^w~A(rMj)|GCxvHordKf8GAhzb}9Pe|-D-qaUk&Pi6K< zc0d2__*d(0(JcLSD3?iK$2mU0EfX}wvD291HJcN Ra|Whc22WQ%mvv4FO#lRJFM}3|Ln`LH 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 literal 588 zcmV-S0<-;zP)- z=|%;A;Ud4<$~lDp<|P3*nT(r~%*efRD6(s1{HAP9mW2!e%|!!t2P!;~Z@_Wp4RW_-rG|>_;l^$XvV1=?sekn$ z^v`QGez5k*$A%w$^_2!-{4iExytI7J{)(i09@3XzVZBgfi`7%@_=nM-NT=DtYLZ>v zrF`|31|WD(1wlT~R04GM+ettoTzNmpk;DWv2UUQaDS6`3DD6umH=E>#G->^jG4UH$gz_#l>lA+b`lW#eSq>7!1(Fx z#4rJ3C+KH#6#AF|u@kI&YJKHom|xEo7*qRi>|fx&LIyZcgH^}?2Wqei8Q?$-Rv`l% zsKF{^fCDvHg$!_@2CI+(4%A>3GQfcvtU?AjP=i%sZ-DZtu{o2}mZFo!oX?^t>Fw$V%xk4BLjEP3jafA8IMLvq^mx<4zlk1#y` zbSZYZ)Z~D~4u4v_Ur$h*q50EZas5?XCs)+Gw-MFQmYDi} z?sBHqz@Ha8jc-Yx;&OZ1&R}6G;`U@$!!{-ZC425G`?a`~KW%IG?h$SHut(5g^Gi$N z`P2g`Zq2-R&%GzgcHEyl^ zsJ4Y^`us!vw;R9SuHD4#7OnqmzS4)6|Cy6lu>AY=pLyX6_kz2BwmDSlR$RRPIy7pM zeobZN?>gTHK|uRJziGZe&HSZ`3cezl}iqMii=@1E4`!auZi-9hjZ$e_Y*< zuC=#c5@~tv#1QS0x>S?nd@F<34i9yk>DCAQB|!YCvI}m=DOiP@rW{m|>b3epzJy2Tu`ig>0KI@0T-Whr!b3g166*&K1_u@{0 i9kYOLILUPS6Z_u{>-&6fsBQ-4H3m;tKbLh*2~7Y)HN$cM literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^2|(9YdUwQW^%iE|L1Hqm6>y9&Y5#ZUw$VG&>Ap!!sY#I^JndH6SEsnX3U%L^{x2p zFAut=iCNE?z1J`5X2pV=`}-HQ9Xa%>_SM(t+vd6aRm)VCfAht`Y^7LjYm@609~a%; zI@9J~+jhL?&wPCT-Zyjey{G@2-0^zv?K`EvpKjW0_W8}1lDkszwv|`Kc^~{JTyy8? z$(7!#!&LVEzW7_z!0v92?A+}vef4o)T$x|kwy9No@77|hyda+Kpj@FW8OnR2t*%4r z0*8!$`F9QB1h1&CwZaEjkD0XT1*$3h{iP^$p!KM()t)nkpT(r}-|TUj+Fj{1EUc`F%!i<9kCJzrVq$V^N88}G7Ok!r9(#UuUNw~*C zc5dtU&xc>sv%laEVEfB>YJt6jNsSl?jug1Xu5piN^N;{`Q^P0mY}5J M>FVdQ&MBb@04=vU!2kdN diff --git a/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/meta.json index 3f7f1d8a0a..83bee56da6 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/1516a728931b4985c1e86f0c5995a5aa1554a1ad and modified by Swept", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 @@ -9,48 +9,82 @@ "states": [ { "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, "delays": [ [ - 2.5, 0.1, - 3.4, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, 0.1 ] ] }, - { - "name": "broken" - }, - { - "name": "normal" - }, { "name": "deny-unshaded", + "directions": 4, "delays": [ [ 0.1, 0.1, 0.1 - ] - ] - }, - { - "name": "eject-unshaded", - "delays": [ + ], + [ + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1 + ], [ - 0.5, 0.1, - 1.0, 0.1, 0.1 ] ] }, { - "name": "off" + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 }, { - "name": "panel" + "name": "normal" } ] } diff --git a/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/normal-unshaded.png index 96ee10550b6f0e9e2b078219e3107e7ff0f74232..2861c3d7beb08b3dc09c7a47f5548531b1f2a282 100644 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1k1^9%xzI*qsqVV^X$SXPMFZ6)VZ?+=i2A2!0&sf^(50@%wuHj6wlz5~iVR!Vp@DlaM@0)qt zKWyq1SR);=c!7P3K#ul}OF88ne>whsPGwx5|K_3Sx7z1k;yi||!3@h3gdey*u@QHz z$$8vl!KzoWD0Kl_(=7fa3KegPBN=$FEaLhw=TD5-f}S60p%V^mWqG+^7sK?+eg}Hl zKk>b&^k?dM%@pJ8&J^R|d12-PB?ouWTkE(#Bwt(b$JO!9t6!pvnkO<{5L;rWXUw=Q vWBzHT7YodM8}>f?v)7v=$LHYjCV_kD-krI1r&6B+Ly*DK)z4*}Q$iB}n2W#` literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^2|(NnNfi#OjlH{NaF4YUdj999-g+C2NV{mZX!GUj}1 zdh_mou{!(x%-44(|M>LTBKQ5@W#;n#yUbLsna?&cmR!2+|JOB-X7$={OT&@RRR|yuFb#Kq@T8V;?cS*|E_FW|G3^e##+hO&$j+f zn6b=f^T++|#s6+hud@BOLG0*dVf&!>^YUzJzjcIVP5oy1XU2ZXdYd_)k8gRyf2cl? zfzO^#+deMp-?LqKqKH@unyr|v&@XPkgUGn*R`eU|F5m|S6i#^AGSH=~> zZJ8X`Gv7MATC#A>Ym>L%Z`W^ROHt(UTq`rD)j&1!#{T>N<+2>aENuQ3ot2#-=I1}{ z+vi{NB^YB8F10OmFJ>=l^qt-ID{+7M|LP6~J)M0oKFm0*qhpqMqc!8LgWj5bFFwt< z>=Ti5c*|w}-_0N5*Id$n-e2_h&~ z%zq{)OgbSnr|y#tXZFqOANF6I^tO9)q0I)Vu!uR6zlQJTX8PH{aLj=rS)svD;D7{2 z0uPG;8S*i gmP{BJ7O)HcWtT3NH@_$*8wV2hboFyt=akR{0LsTt>Hq)$ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/off.png index acc26679bd365f1457b72da65e0cbd2adf2a3669..e8c9485dcc4008af539d1d8a60e080d1e63d9f44 100644 GIT binary patch delta 723 zcmV;^0xbRM1l;M1&0drDE zLIAGL9O(c600d`2O+f$vv5yPn%HV2a4w2F+IirdvZRsBIe>fn}cO#S4~(VFznD3J3%x z5CmZle%}EmSw*J?;YF$#a&B03$EoH5IcLqVs5yoBS|9pHoA5e2dbhoN^C-U`4W zxYYspyo3Ez-t7RW;%*0Agc$C3fJKO)l-mOBU|BvBr1txOS6?aT*b1<2Mdr5xA!Ft~ zb_6T$^OXX2!4yeT$*aAY@TL`%RVX6h{I&zfa0zU}3sk=rKJfg*CK7)N;vN*)Jp4W7 z@q9)>7p4f_?1C&0yx8+9_<$;?%^zsgQ&R^uTAu`#M}2?@hgG|F*ym!i9hPY|vJB)KKr5x6BtY9o>w3C=3J1QBe! z{u6Q|fvF0DP5YDFK!AVwT8641U{Y`7fq(_|Lt4R>(8hZK%K8F{i+?PTeUQ)T2(-C( z0$pfd03l zES=%FbQW;nrM;cm0eLT|b)6+hN~aG5Qo-qsfVY9n=lU28$Sgx!6$E-Sa)|?ht%?Hd z?fzXe5SXe)a4-}cI02G|ivo@Af`CRnHFcoTD!9w*^$iX2VW|{Q+eZKZ002ovPDHLk FV1nH!Gt~e9 literal 617 zcmV-v0+#)WP)@na!H8LX_ve2+QP?e*S$_dU;#g-^ZieYbP(`M&Qv_q|(0 zHZ*sPXXzU_JDd$!$7}_Fk+CUyNR<0Z)HZm{?eS6_w^c3Av@kbq8|x_Gr}!7}w*{b> z?oZ07x;4Z1YTpUO2q-?pt7Aq2-ZOW!w|P$CL?_>?yTQxOKrF7*<36uxEI`0SU*v_a zpUrR^u82B@ItoZV9cU-&*jSEmi?7bj+bdD~q;~;G9tmeCQvYI{_~NRRE>dMQJTXCA zD;u z0Ude)`GnHP;z(?DMdCz+)dAlEfaxnhoCpZa0WZKAAy5ZQk=FwPbpQqCbteSofD{%4 zpw9)EFG`^91eL%X;Kcc-SNlLsEPZJMb0DZMp>F}!r#9tRc7aN5LkqVzmkHO{ZxJBY z!+|dekYBRyXClb2yQ`-ucb#${hnlR*T&)0EG?bio6+pRIB)40`_uo)Glt^V;>F)0> z6rBp5o&{8P@)h@b9m?YN<$T+++9qN0I8_u^CkWQ|K=!f_Km>DW1TF$S>00000NkvXXu0mjf D8yXPM diff --git a/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/cola.rsi/panel.png index 9e3049e07d7a844331a3a4f1d3b659746f2c4727..4a1a54be1056b966c3e682efc1028d841f5aebeb 100644 GIT binary patch delta 613 zcmV-r0-F8w0q+DMiBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-jN{}e*z&% zL_t(|ob8%FOT$1I#vehU{wWC7u_A)d$%2ANaWNn+Vik8Qegg*`E4VuJE2z8p2Nw}4 zf`|wTZlX{J7r|5tYAuMwzJV64O&0IqlK1^hO+v0bzudid*QOQB5dmP12mo_L0GJ~J zz#QcQ#)e0o`^Q54xcF?hz+jXLf1vQ6CHvR8p5B;avIJ!UeumHQ$1pKnLZ;m29_L^# zT53T0tb&unZdhp>3$N`k8Er+d7JfVW0aRctT4#a9d?&WkA21m$0_L(`*j?{(djZvh zWXguAXc4g0@rg_pt_0K3B7mxYO@b9Q_vsT_1W@72R0|;68bDC^P3s+qf5K?A2%wc; zz3>@41ro{yJe11r^0#(eir zwD+&?R3<=Yv9o3-o1V`f9RIuRKn#Jqn_F#d2SUKo;<3A^q7`Ozr3?Gx5qG1dqSqNO zfW~-sE#W{D#tR_aZFN3YfBjJ1XKcJ74Jg}Y2SPyO(z>{6BdMtEKnT!@2mo_L0GJ~J zz#I_(=7<0=M+AU5A^^-00bq^@0CPkDnBys6WMII#Dii|wk8dM>Sv&>w4-TPv6T*OB z78wFw7y3@G5ElHhG!?KMi97U`S1yH6Kv`hLom}PdPaSCWy1{+LJ1rzo7Ow}|R6sIy z+j4WBaKh9BC{wd*o;AShh9KgXMP>mohrNJrm8Y+Zf0?(<00000NkvXXu0mjfcJK*z delta 231 zcmaFQ@`X{cGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBk~}VVS3kV@SoE^)WqR~Q%bNt7N~!R#gr6Z&Cw;NHD&_8oQ=9}JZ5%5KQncjy1EYtMNutNlr> z_!aT<|J>^GLaQbEh-toRxIh a85yn#X-C9Zhl>K;&fw|l=d#Wzp$Pyhx?0cx diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/broken.png index 0f9501592a8d662a6ef7438adea7bf7afb2ab31e..1f7d6214ca0137b0aa7a8dbe53fc4fd9ec3b1e3a 100644 GIT binary patch literal 2100 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 A_W%F@ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..bf94ebee5eb230cb8238c1ff72fa6fd8b49c6354 GIT binary patch literal 10244 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 F{{dC;ZxjFk literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/eject-unshaded.png index 73678935bc4e4b2e94b2dcbdc850f222b85f565c..89fa2934a6100f40facf0856b947d64a781e1b96 100644 GIT binary patch literal 2220 zcmZux2{hFE9{*34X^2Uaid>^nNN)7vN-;zBEK?-1W*sgyio z*#}XBT#+lXB+-nMbucl^^2WR8y?5R@eShcs`~H5PbH4lU`@4J5-cm+NQ3?P68EY#u z2a#;w;oXv=-C-gG3;>{{AXC$e)~2Q^p*OJsK_UJCppkhi)5xmRSm}+IV>G#fj)ZAZmzD(XVLZ@+EI#2iL@ske|gF8A1Zz}Gj*U)5Xi7K0*uM1zE&moQp zw2#-OalSObmzRu|K7-D;_UTejNCq}tFWDD%is&KV>?PL@qzt5|^=bLqKYBEGhQ2gC zGw+dwi9l|!=A6S1h~W@n_Z3R)T1*UUf({pK+%>J#pmwpkU}_#2o0;?X7}x^olhTH# z{Yo6yx{mm~7vody|q_j+A_Xu|}^g1qNbmPZfTv72>! zrsqyPu@9(${h3BL9CA z;^J`rED_biwIA>*)2rS8TQoNuL&bw=X@;RntdTPF40Jr1`?S^5w0AhR>=_HP;FZ+H zl`N|`%zWa9v5{)8BkGA;GR8=55EG09yl`q1i-v?&0sE>Dfl#IJ4A-W#O&?PuM9xQo|59|7 zI-BEnP!MYgztHHae`1f?a&35BPOSO^r@hCW=j&3kZOK!Oh+)bGU!Qs|Aeq5qpUauk z%*dj0$lp&azS11~-r|ElxxGbH{&+4sr?6WcAG-zu zh<&*g)K(mOuzRf;Z}g{bbE~i}EzSMO_Q{&y1{^!{4?*KGhNTzzjBt?A*26`6`aPmx z_%T!X|MdHBS?RZpi?v1m00TID`WOb1Ny(>J+sqmo6UB$X^HB<;xU(|v_>aSwbnW8D*f@SCGfLKVm9;PfV`#OK zt`haZZt4$pJGy(zS`YVq-ZS(FpFN&dX0PDZh_OLxIR^(?_YOBzG>y&cId~*1OmiM0 zvu@TQ4-Hb-n)^dA%-4}_k2^v}weqhyIUjHy0oMebvx^1%HpR~PEKAntch=4hiK)DF z{Ba`??TCZ|fr+=Rs#W-S(2pfpjwQ6Pf)<$p;WR#eM<@7)2@)aPKTt^On3szerV4aiue8l?xlMVatW)#l-L842cubFk6@f(oV;2 zFL%}w2mWoj?c4801Z9Sujjl03UGf$watoK1m8ih;q+(>JDBDP#j65iQ z#4GqF0cH7Z%i%7?kLp|Mbt))Jc)i|Is}rs-e^1 U*ze^*!X41s+}@0K{#xR{01RmzBme*a literal 1273 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU^(FF;uumf=j~j3Zy864W6vj< zOe=3)x*&6sn%V-!w_7@&%5L=3R%x2MElV+Qhu1-+gyQ)J3MQQr=vb+w;$-5>ax#3! zZw~2iCr&9EzTfk@`pnyN@7ays6*}SiZQoVr$;)kT-j~L^D9CE=xvfmK(Wmz}9J}SWNHn3k z{O+26Daktvlpp-=cfa@by{Es&{ww+Rbt|L1H!1pEj+)fh5Fh0mn(b-DlvQui;Z^x_ zk=z%FnzE`%OAb~2d$aL#?((!}Y(+eJr#LFMY=0O#-*bV3AZvylCy(a~&xGRa{nzXM zeK@(>)@GjZ>iM!&!8Osmix}?Qe_Y`8pXYyle`FKGSEefpTne*mQulwKUw!Y}jVnEO z;~ShCnBUgFP;b0xXz=ve(f-?Vn{C+ACmSpmSnyRPU^oBd11DHl%w*~EU$Z`M_5Ow% z`bS#C9(;MT=Wb-f`K`}q-=22Fj`Piak+=T}Eq`r0Uh~n4n}d@{W(|WY;}YRnIbrwj z#lGKqX`5l%;Y_)x+1gVNFoo>@KYyCOg6E_a^;UEHe*gPgyngNayz1QOy12?$*%H5; z9Wqv3U1jlzw}M4Rt!YWs!V-yGk}&kist zZdhpE>Ss3X>Td;y`Wl~w_xz^Vc~7~?owMfc3f7EDt1uVFS$zzZGMdxs8WIg!#d2A$ zJb26=P@eU&+uqvtwZ@6u0mht1M6?<-Mf~F~ z{F>n;_`u<}IBUSS7M@Neu7G4NQC0^R?}$$v0mWhtZW9f2UhUG(3H9K;gg#NynvrCnjk8F518WGTW6GM2hkmH64J4+X)UW#S|7rhx`*9 zLJAP;wj7bW=mc^?+SijDheV|Ah^*S?5_#`wa#D@X`K=k7e}yYAc6@EV{af|dsmlU> z*D$nensCf;GHfk+?D5uaBliSp_enrMOc0&n#N5nql7q|ZrtiWO7GBFr77w=xK--`` zOkr8sVY{dm$}Ddby+KKTQCI{z(oYqP_Uylg-JAf+^1)W#+C^vGiHE>?ez*+kpk^QhaND7BYdn z;g-*}_w(!>+$k)Dk3E2)4vc7#tb5DZjG92EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c> zkfC<6i;6hbDionYs1;guFuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JW zDYS_7;J6>}?mh0_0YbgZG^;BHXu55t5^*t;T@|}u5x@Y3(0_}F%q(M0l9K2+zV6}U z>s^#*bw2m!=vQ+V1AHQJj2Wg)yg@v(X&apPi9@U?tHkHT6DD1d_>t?1$8VeqE(<&} zWTsQ|#35p_(8fv|v!baHPZNh#O{aVz9Oq*k z=-veyHOKircAUlu;C}|L^p?L;2WCG>ueG%B5iqz7TwJ#_We>RA0Y;t-*_2($PgBU} zf%h}|rYtag3-qmdy*2l7`T(St3GBFVb| z000JJOGiWilK_(dllitH=l}o!32;bRa{vG?BLDy{BLR4&KXw2B00(qQO+^Rj1r8Gi z55{?HG5`Pp#z{m$RCwC$n!ip0K@i5jC4``f1sY#LEG#WBHg=Xif~6J$q4WW$FA9yN zk6?YZk$*=3JL^lNAkj#(Hiw*efA-kj>>Yl;W^$LinayPOTeum35JCtc!~#;vlcKLt zWIZq#%Vu7u?L#pM6EFhM6GFTcH31cshi;m9%wr?;0C;6Dyz1;KWG{E^O5Gwp&ESp*PY@7nlehA6ekDc6354L9;qXE~!R(%b>vyIUJO%dE6 z4S!hO>nYb|(twI(|K7Ee(ikn=RU6)+)eoOsxt?Xq#D0fa#c82}o$01vV34 zI;N3Rz{LrWbnWI8i1Y@n$BgMqQUoc26fMEPtp>!*2H1?bI+vj1uL42{A%qa}KluhE Wn$w%%VCHQA0000<*RA{ delta 939 zcmV;c162IU2fzoABYy*jNklvHcaf7-DQ4ob?b;vM+I&?_cV+2-cho~0+9IS(sS{)S1AWbvVwGI&(x-p}(toi4? zneP*meLwhk-#0rmZ{GW6-uHd84;Y4F7=~e@6$fVbj)D^*U4P$4Er-$v~CG zhxU?Zz*4M&Fn_AGy;Gi3rQ&o}mOQ)J-cB9QG=x#zpZX`pLXIcUV8d}Kx48*LmrLWmQ9WYZ+!+7l)mo>zlw?fD@4k@W= z+C6-1ve5wofB7jXORnA_m1Q>grL-CY)J*c_?~$^)zJDS7+gxQ0)z`>6(77s%5`j=0 z%0R44k)4$;4=V_xL?9H0G7u}%0i6N9qa{1Ca-NM#h}B?v04 z#sI;h41(%mXUBWMdtN3Vdl7@aF(udD(6;Vj zq6fTB1Amsk1@4y|gQ7lKn@D=RXUKKY7!dQUOM3vt&;^j-hRog}dEJrZ((VH$gJ_IV zOFF0nzSq}jce?VVPs--D7AfPB3XBG4qFWc#0aq$6L*wHBsoUJcd2q4fQutapB61m+ zU`0O#)B!@d=$Ha^pgPRAe$)YC8mp;HMcj3fH2yg7LIJGxmq+*8z2a zh=0V9(U=mMRUJp)V7Tm8?*MsNqVDo{!w^c0pQh9J$uJA31H@g>g#8t!9CcX0foQKc6+Iy4lwzDzOW1&&dEJNfzz+QDJs4tgz+Z&dkHUi3eFF}DsX-P z=Lc|pfUbVd58(U&&JUP?^8;*v^8+|PfF$z+I6r`47=~dOhOrv}_zMp5zjB5g*fIbB N002ovPDHLkV1kyP%vb;b diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/dinnerware.rsi/off.png index dc61f221c0e50f0937316e36b2cc9e007844175c..9463f7ce992ff70f28d001185bd0b8c2065dd959 100644 GIT binary patch literal 1458 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 F0RV%qPwM~x diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-close-off.png b/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-close-off.png new file mode 100644 index 0000000000000000000000000000000000000000..0eaaf7378ea240f59de53abd48ae7692e8f8d027 GIT binary patch literal 971 zcmV;+12p`JP)AHimqO}m`@v~<##i8Gr(?eM`@^RMs)MH%8u<3!rnx#hFRFX`^Z2a3 zO9-z3M94rwfQUWwR|E;YyGyJIUGR z8#g%Wb5sk+4_5}S%v*?q7=c@7Vz-V^0|d^yO2e16!kW!4VGwd-Tt`X+#z@cpqV}X_C*xo zoxgFbieVK^x9=1{+Gwo0Dcf%}KOi(OAVoh|`2kwc@fgVwA$* zj@VIR7wp*JX@M6aoETv-7N8-j1!%Ui+#*D^01Y_IP@?nTBxq6-)dET+iUnX6OS}@N z6KK|hPzkgGm?@_fz)U&G1lZa8RN))__QEyi&Cutg9~JHrkRqRgWCCD7>+7%BWmAz% z0Lif!Wu@O9T9OHXOm9iq)zv2^1<3@UOmA+viL(IiwK$a<2oUAZc6}rf;N!urI5LDf thz*#AVF}P=d_H&kZGM33$7#q9_yd-GF}64CsE_~v002ovPDHLkV1mih$^-xa literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-close.png b/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-close.png new file mode 100644 index 0000000000000000000000000000000000000000..26925d12932c7e9f38638f1d5796a69eead7b123 GIT binary patch literal 1564 zcmZ`(Yc!N=6#hQOxHLnoG%I9s%aL3b5-G~%h#297oY9O*VT8^k8n+M0y_p=7g%Q$S zHCisE&Y2mh<}3^MFgj-JoL3(J?oV9_@x?0(DgmiQ=#)JL|ynoNspyMtkoq*fai zvE!cIGNVao7W3Ncze!OqKG~?Ggdr%0;?i?oN^&xpy#9}#Se|%-^4j%uD}we?n|BYD z$?m`f1Lhg)s!mIVV@V={_r15Rqg>W^)J~HRsRb#JO7XjREq7-|)k2v2#R;+`JkOC7 z14P=G*h5EDQKVA30nZWd22sOR;=A}8VV0FWk1r@9n~4*o#}z|Hu!pM7>2aO7=38~(7M`;6e@%|&C=wx%sckYht?N_bXnbRDR&scFU0Y?StCqU=Ck ztpbwGZ7`tb=A;r=pJa!cnCzue=ivVF0v-3mW?S}cD9R&*CjH=GwRr2k&P($RK3xsW zNCv>sCk^4r1J*_wh;&9h!n$$qwO=scwR6S_xz)|t$!jj$?)CDPJzWmPx{qW zUy9_yvkNXh&lgQivLd}7)>iV;DOrD9d*FWWW((#+sS00?QqsK zRN?OqQv=?5pdg}9A8e8}4!5Q4OJ8a;j!6$tf{m(HFq%%phhN!JTmy)6b4g>$s zrSu;lEN=Cj*@AD7SR{FkbQiw@vLqgJV&Z}TsY*BQWgFE)wCI@L+#{M0N*cfBZA5&1%RtfW<}58!54d!yAP2JC<(4l`K5wv^ zdK;6ihcJ$=L;h7f@U8jtp42bpueMwIwyg2&i$;$pG8D-PjVMwTo2Jf-uOke?e3{n@ zxD(0NB^o;Q#?Ip=QDfaMKDx99<*5|kg$ssQhsv~^z?3k~6NQP~oT~R%E>W1?9lVRD#Ti=>O8gNP{3m@F-qsxtKHSf+8aL9N{+UV17;)72 zGDH&uvfjJG{U09(0d+;nTxV_{FmG(uwEK)#28k|=2HK0eyM@R?;p(T;K?l#+1QbLn zdDt!{ES7P@9$EK* Mmj}W9p({D_Um_Otm;e9( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-off.png b/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-off.png new file mode 100644 index 0000000000000000000000000000000000000000..5faefa4a5b660944544226e97607ea355f9095ae GIT binary patch literal 981 zcmV;`11kK9P)+j#Bq%y|EB`)hV@v$ki((0FkJO?quBn?1l6wv@9?zu|Y6>szvrh6z&&!9Y~16T&g?R{&|{!t+r zSO$1`@Z!p|Palt0em{D=d*z*@`5R|})cZIc#~uPr5On-8SQ<$T;*d1J?Hikwf}yBO zUf|#Re@9tu>_8pnIL+nH@=l|5O0tIDL>PkO+w z^Rv3b7{C9VR@YlMx9a<*Q6x|uAw?{PUeW-e0N4g8?;AmjuQ=6<;fA1_>RpZuNds)| zTz6+De;o&E&`NpW8xvRbI?XuvTSx|ynbQ$T1Ca7hpFOXiVNCkJL(g(NCx)*8^*kxo zrX0y!%mYFJDK|)Q@q3Ya-j6p;ig`eDItfiLB|ewQuv`N}VUihT)CM4Hre=X5krTJr z9xx_yWKJ5ua!Tt0`ZnNtY|;RnaWrPwi=n=z!P1CUgI!L8r4jE4bu|r^hHZc`O@ldz zH$?syCIh%NXPO2jg{EoHt>HA7og7hYhIYv)f?#a-CkAI&CJjIvj}rG@7nJVo#`U&a7Z|Ktf9B z=!&F{l1p*+5QyO?Dd~NhgPUpd98ea?QL4+Yn={9AWKSBPc`hJCD0h#nGKPTE1N;*w z80)#`1L*x!hB|pZKm!EVt_o2HdQ!U1P@fObV6h}Fy})9B3ipX52y)jB?A%}|6Kf$r z8~Bv<&;8}@H~3lN80_5O7_&p19N}O+zyebbkZgJNZ3I&fkU(F8+GVj6Qx6y;CLU1w zTf7vsfa>)_XbemSaBI$FfG!%5Zi{t6CkD{|^HfQuA>h`W$pBq6g7Lo?XtsFrfG!$Y z4EU@7%K+N^ymmP}i1PuZ^7DPS&pICX+6%$w_j1iV|QpMe10FV5cqLEyNio;>f$+x+&`sh>VmfrsTX>@^xHwE@+^ z)D<)VYa5?ozts$d!*@NMe)=+eCX9`i&M+U5M2wLDLK;ER07;w%C2W^A>H^a<3Qc(^ zJZAz}1lZ2LG_e1gr!lYyc)RfCQr_y9&93*E7gLwY)D}O01YEU`GjZ%C5Cs|?eGU4C ziw)wyNWg=;BTB$Ht4ms-KkL6^-L$p?+t5?nx~Xgc&M*odwXg&fGVYmEmji0!)6z$% zlqam}Za03ZI;Q@O8gTIEFl;ah$G`VgdjH;7_#7q01=L2IAQDT@NI;wc>;)2DCm}6# z!KqzbZfJB(v&$KSk${m(KOAnKs^_1uuF^;FOr@>rPN&cTK>zAs_!u zXw0G-K*Cp-9>aXO4lUSG@AF%;svH`eR{K1!ISW$IXOU)Jw>MFE(}3#0oN_5Byn1hU z-YH)%Q-wKL19$7MgRDQ-3!uO>W~`H%0AkbR1+EixyJZ4f1M&o$F&hbxbZJ?Dz74n< zYb1cyQPc$@$nE|6aRim4Zr9jflkoz+VYL}TPtY3Nfzhq;&<*}=9>L1o_e-uZFJKdZ z!b32r_0lrzwHp_15N3P2#yo&c0J=D6Uu-jVHwfoDRXtD24f+O~fIPWD8#o_`+!Pc9 za0|w{LCT|ia)F~OST=H|QIDFA%soMMB{A zDgzVns`Ogz`jmSFf4f27U=x6TK6HBk;jRw`!0T?%H`oMN2S+w;7y&kCgVIPk{Ye7n z48ceM9X#s6Ne(bhw@$`^?rcVy#Sx%VBHUJ1r9td3D`!OF{BQU zQv*qZ=w%==I!v=?O9a)!ev{ho1+m~L_m&49ouSpG^0<4Xf#Z38KmgbPV}j}!JTPQ& zZF9VW*aZn!#9du+X~XAMoV^5+pa&_bJo(^g*xUwK7lWhJmfkkU$8*MRBp`Y(AP#Y{ zdyFdM5^&W3{l*Edb=&&^RNfS!Hr@|N0~~nTFGy?yXVUeeMe6$jX&~|W?E7{a`&0NT z;bH{2dk1!GFfI}+F@RpcPg(umpY0VHJxZJec5E*=9wDLuzQ4tNfi_TA`XQ7D6a>I6M?pXqo!B0W>Hih-jZ6q|`SX-I zgS;sOTxS#nz%5561mOC&F=$wJ8nQv50a5=9j5YhBv#xHfZ~3D bx4QoUW=qW2eQXFx00000NkvXXu0mjfW<4RF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-plant.png b/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack-plant.png new file mode 100644 index 0000000000000000000000000000000000000000..57c3f4538286c28a1dbeac31dbf4cad8eaa0a2f8 GIT binary patch literal 1190 zcmV;X1X=ruP)h zot>F|@0*$TcJ{qKNWk0q(iu3wyM?(M;1DR+clsce3 zSek++puGMW_G{HpIlPz4smIU5Yr<$IdxrIhBw~~V5Ns5&0g^ZcLfNL(C@W0Ys5I4~ z@|+1^5uiK!u7U3_dXj-f!0Y)}Ep;njHk$6IpG~&3DK2~f7cgCYoQY#^fhf@E$a~N? zOl%MbN&@cQ8W9S{SzTHM^0oXN``X$L978U3`&!umoMBWvYGDbeWZX5UF9$Tnr^Szu z&y8#K-LCu;eN^vPu7HEzhv9%pIR3RS$~(75!|Nz1CZI9m6mhZjlmx^Xz;+n0YLxCV0eFAbfY{%CKF4X zb@Dj)EDCHxGIJ(ENr0^UP<9wf6H8)G)+PdFcN=X)-BwVy+aTa{`a}@o0Uj6OVWzEX>;|w2KoU4}AU<<-8uSgm z7YJOPAR%yj`GIkGk$ovneZoD0ztf;^un9mvAG$q&@YDwb;Po`<8*Bo!gCpzLi~yZ~ zgRYVE_a_OQe+Wtf=*OcRoa6xGbY%yt!1wzT3DAA1tG<`{ey{lfuJQtW%E8JHFa-*3 zO9GBzBZGB#oCZh|qMd=n=rGNmE)moZ-~aAfH=g(?lG#2TflS$$QdWN*LCv)sJ$vet;`Rw0Sa#W1&L$eOqwQISmy`Wz{TgY z@9Z@8r*J1>Vg$Ko2X=HgE)wfPfOf!7Svl`dH$_H{5+{Kj9qy*^7(t~x;>xZ77jU`) zbeABa(7oqm6sACUC07xDxC1ID7C^Cm_&r~m)}07*qoM6N<$ Ef-=|?y8r+H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack.png b/Resources/Textures/Structures/Machines/VendingMachines/dryingrack.rsi/drying_rack.png new file mode 100644 index 0000000000000000000000000000000000000000..8f571bcadf3ce8ae72f64ac752df003e99226d9b GIT binary patch literal 1026 zcmV+d1pWJoP)0kWzqzPC!dT3c4r- zP=pjGItplL0YykqMB*DFaUDt(BqHDw=x73Or8&)Qy!LoJ_GNSXn%&!7+cVE&kL{UT zaREHvetF^yurt}Z;0yt|HtyV;d$#}iqpF>i*atU8BX>BRHrEtT8C;`?XHZ_!0U`oYd*2#p zf47hfA_AUnKRNa6!~6ZY-}fJEocd;W^2%92YkiWA6AytlFzN6ySQ?r+NP;K<*DkL% z3i@VUvI2h3-=l2q+<`jyHMMNk9Dp8%;_Vrh0406*lCly|9dF;fcI%^CNo5bFUz;+q z_M;Z?*;>#cR?Di!m0X1l)Jiy7s6}?U#2k(3`kj#>fh!Q}`KYF}5dxkN|fBT-LSWXCB z0qS{DtV=nP*~9`?*Dt!`gTHgnd=paYBqas!Me2Dz-?V{uB(sSHkn(MJ;&U%0mdiw} zlwc@KGNVj30mNp^3!EkRthNhc3+NM4WR4PG>C$R|)&^3GjS?UkM}3BPGqfl-SQ@I` zU`;nz8tN0FT5hm3#02!o4W>YSAaY(X5a5;^gB#Qo8r+~;LN}Nk9LYEgt%+Vtf}zu& z5G2DgN&p=^YRr4jzzV1i9vqbbaY9M^K?0~zX=PpIwa6(iEn74{U}v)BEMOpqK0KZi z8HV7w$q}d{M~3Y1I8_i5qHEEE=rHwODiKr;?S|^_f?04>n&p9`Gt9d5J$8>IIL`A^ zhXZ1Q%`y1@xyM(x#4DI3NNC|pUD4E0aw{$#0wM4qC4EmmxE(f60m>pcN_FwNB|csv zdz657UVsn2*gc}k7y?=g;29?v>#6wx^nENs9nBBO0R+$86`~IGq;{W?oga_`i!E{K z4VHK*yhvy!LFwK>oFCwe#99c@1uSKG-e2l@1J4r(L7X4Z$LNqGu|pgku5AGpkVJ{a z(P7Pz*P=;~M2S@yB2v&wFn3$5g{cMf5hfN;dM#cGw1HaaLZ}ZI2yjb|fq)u~q#ld$ z{|c2x6#_JWo@&k@&kF%(83O@s$x(#>jQ^Ag4d0Gk9SjywqY;fet92A7A|N+DpSm69 wQE7|zLl7T|mWt0Wx_wc8fCd(aAT`?m2LqQ>$~0l=eEN{4w!9KsEI+N*!oyHfkQPGQR9e$4 zR6-SFj1WZ$CN>fh(@oY&0)No7v}raNG)vPonu;iWF>YxiA|Rx?pu9z*m0zXMfNz(j zks6xSuJ@aH-@WI~n|t5AZy$aM%)RsG&dfP;=FIsqdxIq4Zkaq(ER2*!P_7Kd-q8>0 zj>y|1vV6a)Fk`5FW2@}%?v+K4%ra#XR+p}YeRj2t9!l$1wbZ?_YR^t@+b-#i5sk5Y_|n>c26Rcy_+AFM#OEzZ zJnN<}Sz+qX@9L7&#eu_+bxE8^x-lAb@;b>-gY%#f1en;vox`$-pc^paMg1w zOsNOo)G=U6h-nf)ygO;z@7t0UJ*U?tt~~k%Ks=e%$d>go0Ahk|0PfG7)@kbSOmKg0 z>WJP6ZUs(|@Nqv0*aBtM-naUA=R)YY`Czx7fBaM(u)q6K(0P1MkwE*e_FIZQ#g<4C zK_A#|#}gfidm2cSK+d%u5_JF+j|L`#y(uy&+!h2^$6a+@XZ!2OqyqqmGZ=xfv<}Eq za(ujFv7iVuF~F`sN8;qb3>R1_GQw4Ytjntdun-(;UdI_**|DXevQ1jNVIbH7<5NGZX}`DhhU`0fFjlvC&VBab z=yC5DsSJP^-v9h&`E_ZxOq)K#)SW(c(v*+3EtBWJvO%VQ`Cjw>(xuBX_4vu^8E%QU zN@`NDbq0cZ$&EKRP7V9fgn=j!s{!WVAAq(Y;nnwsBmn68ahI(A=IW3MWJDUED-Mhg z9>zy?3nf1yB{sNCj}y%{QC!t-qg=mX`RD1fq|fI-Z+&0{RC^kPAUv zsJtt;6>bfm0lag?xm8$F3T!`d9|iC-U`OTT2s%Umt=3%`_`nbe;+K7KsqFsctLE7y zeDeuA;n~w?ni4Cqb?er|38ak=CKL;`zmxEPymLA%N$B2JC)jb9_Q@wdF)jQimjn=y zfZ}gnm-ipM$GjJ3-zgU_UNS3x%fy>x!MzL37ML^RBeM9hC**hEeNvwM%z48EtUhpT zYovYic!RD-S&}QJ96$3z>FGY}{m$(DrS=(&_||u#-*QO+-BB72$NG=R)Cr^H*k6xu zHU@|Oa6k%o&6DE1JB>6zXXD7*d}3f&I)I=q;5I;iS0&O7pKqNYuMhOazWLaKAIZND zeY+|FH8ooXB9syzkOq`JowN9Qn}DA<^4TDt8t-^0If~pab9B! z*a>8FhmGVVC_=sZF7W_}2NQ04XN%by)EBuV029Emg-M*5860~TMLr(9Ukl2$)%_o~ zJuxcyf0VHSD8hOK`F>Bb0)e`Q5LS5X*s(_27mIhxyXX7l+&O#vtZdyWE7yp8 z+WINF&6yy(&+u_R;rO6X%e~0BTtR{gq4kwt#kq@>+(RKabBgu{zDwL3Jg7Q5W5*##9-o zIzSRSJQxV(@c5I1;dhOI&QO-X2Is{f3BJL&?Nv$CbZDeX01$JDtAn^kie6cmub9Nc z&kV?WGe$}|U_yJH&~_4%zKM%B;|^8_fl$m3kt}?#6|nCJt}6lS+M-qW#rpx5Ss3)S z^|Qifgw`5?CX~-^U1WPi5{h}jh+EfIe~eTKFa)Uq>C#fc(NZi|9Tyjj0x@Wr*AB4X z*bq4ug7e}W(4Rhi05F8&ZheV#&$8|@7&1b^DmV)g&Ni4B7=t!8pxPU}+je>E0FFy3 z>vWiG_jvLNqdi(KkS{Tl7#2rk1|~J3fKFU!;wgG;57B4z7)iZ86T%Vi1^J|Zpr^}hC6THxkN1E6ofeiwm%@JV3?DzMOH9j;<}f9}9I+na0k;nA&K9g4 zP|O<>G!xxk8ai0@eOYo(S@KnQYZ zC53j2Olm4{9)h+zGN!_kfU#)l>4Xc$#KP2CgcezCj=BuMASjurbaRGo3JvKoPBL#Q z%m?)0CSgG|jyFqiZDyEJsVqu2lLP=(>}qXu%@8mN$w=4&^a7g!Yu`tVNK3WRGR%rZ z1}tB)%&h#lqsK!rwD$qxiBFxkM;-4I09kK@q(SEfz}TMCaS3!2vN8W4c%CxH(y?pL zZm%SyN&sT|JpltqtaUa0IeC3qA-XTrm>cXuUzp-`7`nYW4Gt_)sc}dlXmIn08i@=* zXbB%f*?>3<$d2`@lk@Exlyt!pLu%(bDt~ealupxAm_-0^4d<1 zNl9z4H zUKI7^8O(R9th5{54CuH3-D@3r*6%ne+{jfLGBbc&<*g6bIPodGX4vz*vX?dvV1539 z*j%$9RR=(H;7x@taMjhtyL*pU8z+bXWs1P zYAk@?DXw|^|0Hnr8Ew*+BJ~`&`qpMRACrKFbpSYbwt5N>)B&&x-HVF)9$vFg0c{Ps zH$xc-(h@?c(YHo?NMt~NrEf&=p$SS*0(8iUH@aKyYKW|vot35eWORAHh=)_Z}60fj@@{u+|*T?6cOSnpeF(` zkCKv6y)OgP2oqf5ee-aoGUkvC*Ah$vV{*RRDjEoYkQSK3-O^}o!qGgyx3UUQSqu5})^U(wU2`5Go&7+9Y zK#L9~j$8cUL|dVyYLECsbV;{Ce8{W=n3KbC!!)-R#m<)oL!wb4yE{c1`%4jk=RU?F z6U-T3u%``};PVWVE^{Oy^A*#8>P|VEF}$UC%3w499Hp zkxem$IX<_*o7<+=jGOjNJv1Z%?%+B?%R#S4P!!OS=d?>uP16AkNoCRK{6hykXU)!L z86Vem^cc(t*PBz*vcp+AqT72t^7?L{!%ews{0~;7*k;Mly@&t+002ovPDHLkV1mj} B_1ypf delta 815 zcmV+~1JL~27`Fx?iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPKe*)=A zL_t(|oV8X>XcIvg{cNhCh;316yO*R?OAbX!$yG0cf*!<6PeReslb{GW38Ga*yadF9 z2Psu5o&*sO{-hv6dyPS)2OC?O^pI4nKNSgDOx!o?mz~}0&i*8M5N38}GVjgzH`7TD zxO0AIjoN@q_qKP~#~cL!Q)drQf93Nh$GOE^l@5<}D9QF8IzeAPycF%PjXcdfTyb3I zDnJF0`w`&>p#(5mAtJB^&Jc+V7=T)AK&LG zrWsivXM^jc+~} z^b~Oaa-m@id4FW=zd)@~pr-)&R6n{)t{e1hX`)@ob?AiE`Zx+1Opjk;6fse7{J*CK z7~`k=>B+MV(K0e~W=4Pt3z`3Z;l{0n?<}rQb9(f7~m`nK(HTrA*dJF1M!n-Qg-AuKm?d5os6)If!YbYH@)* zTbwc@kN`Vy;^Py>$?UNJ$l0>?bBi*!zBMlZrhN3u=z| zSU?UwOAlmH~z!(eRD?E?@J7jVew3;{P+a3dQ>ahqJ zEsp^^%pfG;|JD3=%Y0icfD30cYa1hL33jspZpFCPgn%pO*6MwfXH-Z#ie+=1Tmcb) zxD!TmoxUdexD6Ad<{qKyfDDj> zz-tWyr{>egH1#W5c^$LA5!pean=L0EHTrWbR3T#WnTua32-x3ePS)u0i->N1^`ll% tilfvF*yp!r)$1Guq@Py&y(U_Ke{YLu-a73A4gdfE07*qo1w^hwV1lL>Y#{&u diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/deny-unshaded.png index 4bac2c91b1d4b0e9edfe6f53c77d04ddc473d1db..1de356b14570ec40aa6db2c01b610a20949e4759 100644 GIT binary patch literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I8A$FCoGuTf7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E1o(uw{&MX8zG?FZhJ-im9dpe6w#F3Zr{zwaI(6kO#XCAik!l)1h4*as zE&)EBLKyl6jkH}&M2EHR8%s5q>Pnv;&X@;kZV@O5Z+nL=(iw$^O zIs46G|NXBIpCq~=dG?jPXQk5KXHIT7)7s22_n_>x$_v(V+=H?%dy;>Gp~@13-${KFcPXXOVUtdITX<@G~Yv3z5x z!t;xbS@(WlpLL(Le9t7MGX6c29z`D2)|?j#VKjca=f}btsL|o%IOQ})T}@rhuSK7> z+$x+iT>=<(A}$LRxL5<%DND@T^=0p$fXm$>7v`Pw*Qqf1eWg1hKrZt2=kmQf!r1$t zz3=(`>#29@yVvsZTA!P1R5ZlHcV{&Hd^7oC=!JI=e*KBnS8{wizv#k2K9{EBKusO_ zLeJMUS;twj&wdaIwnU?&Nb+F#=kmJ`RNbHgPVh)vsbIDD8=Ib5g%il7z^MJR?ZNfC z;#qqn&VTwp_rZEZbVHpCRR&H0AfZ!VS)!L8pI2#m56HTI=I@XA$e%y|7CZi5b1`;< zBs8hu&v8Rp<|vcfz=X@->FVdQ I&MBb@0QVVwI{*Lx delta 307 zcmX@jc7jQ` zttCD&m3*2kc7cgWlzCT2nB{?RUWG-+8y4-Cvb8*ZCwnUM9?p&oAZfd>BAKZ|c!PWe z4^Q5eYrRjFS6&P|z_!O`Vg#et2+aFe)iYH|&a#R9m%S6UfO7p00i_>zopr09G1zp8x;= diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/eject-unshaded.png index 99c7cfeea1f83bd1b1f99458c4d4ff831add884a..65ba08ddf022453e1b31ccab3cc2a4fbbd432dea 100644 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3-o1GtKD$QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`EdzW)T&wCPtXjAE)`N#!qO7{CS~fc5 zt-f>TN@{*u?$oJMSKd;LRMPO=u z<5X=vX`rK|JzX3_GMwLDKP}W`Am9=hz}%&O=70Sf=3_k!+FB&}_4 z%%;G$fR%OCFTML)&Uv$iz4m=ON1ET{?YC{Rkj+Ci8om5x9 ze=fyQe&Ow-utQeY9k#!>vMjLRi@yErDOYbX@0+JBfA&4DVD-IyXPfft7-p}qnc5+n ze$}mOe8|=Z*3qyh;Zw(<>OZHf{F&tM7eBVCuX5sX;Bh$0wEXi+nSFforq!SM$)f;t z6bLRj)Oauc&~}@{dkPZRK+3Q|Zk{g>KhKSS{**a5nIQ=SYRS#`_22#HfhQ6TX?zv+ YtR@d#r+ogD3W^^FPgg&ebxsLQ00v9Q<^TWy delta 1245 zcmV<31S0$D1LO&i7k@wq1^@s6;vmS&VA}FvRq=>|#FRX_iBCv-7NsT^9A%YCTvV@|r4~U>t5FdnIOwH&aO)HhW zc`b=PB!f22>TavuyEAil$KAE_gUjA^XXn2=XJ*csxibPm5Pt+g5ClOG1VQ{)_{?5b zQ55x9Ta&3oN^`#KtMBUZ_Y?k>u`(TAzv$Axmz;YK6%R(Z%C%@~92De^s^1TuO@Wr~ zZd3j3yW36Q!45?AeLnt2ijnouSnxR7-hP43XPI!VZk~F6>+%{1eFNwZU5MC-G$Yu7nf`WL6rz8B ztNPq6U|CK(oX;6Q2{rw5-PmpTlkD%7S^Bb(rO#!6tkk&?uhqj>^?0g!iT=0APT4AE z`cr{SeQqag?Ek{i(9)vZJUyzc%N&s6L0S64!^6s}JAaFnquXYCO5Zjo93LO=i_hcthRbNA93lP<}y#*i}_hdm} z!DIdWO8KG**Jb+v5q%km=!>)f?kEVw59}IHKjDxag-lm{=49OJK!BME#{D>PW;};+ zAAoZ~&26)UCgav-{Zt2Y#yrD;6LoGxWHOG~SAP`md&kVAH~2T5HVVeV9~pdOsd#v_ zy$;g=g_q_Fy<+{DVSNs$*W#FrrJYx7DSKDIG{DKyGWCeDuNfF8pC~QSQ($O{^Fz^$ z1Hdr1g!+w-8Wdw3u2ET8sei}kyZ7{=l-~wc2LfC*sinJHSf6PCt>D8IK)7^9u<)&d z`G3Ca>VWGN9hUQQBTNG{wKh*U@`5$kpX`fjAQnbHY|R=P3{6RqvT8O@pb`nD0jdsv z7RnGEvOn3H^Nm*9i!cp}k^;994l~CAA~Ee$qb(Y68@7%EE*_d; z%j+Gf{Kb{dE4eddYM?`%v(S986{bPPe$$N}&4FurJlbA_X#k97jPOP$S~{GR>kG~V z0KPD^FBq%dqm8DGdXu#i{N62i4UUm8doE}4O1O-~v8iZ0Mho80TBMt|Ir{wF0)Nv0 z#uaaoFk1I1KF%a2VPj;4obOtb-84 z75}V*AOm;;rnlr>8;>nd)|MeRJXV7&c)}IELwnxS6E;D1TAI{{++S40wL!#-$eA;+ z87zFB4I*ANf~mXCPD>LFgKX~t1iBw-&mfAMSCkWkivWN>7d#b!WP;1L00000NkvXX Hu0mjf33^m1 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/meta.json index 35b29c7356..24c7cd05f4 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/meta.json @@ -1,52 +1,91 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/1516a728931b4985c1e86f0c5995a5aa1554a1ad and modified by Swept", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "broken" + "name": "normal-unshaded", + "directions": 4 }, { - "name": "deny-unshaded", + "name": "eject-unshaded", + "directions": 4, "delays": [ [ 0.1, + 0.4, 0.1 - ] - ] - }, - { - "name": "eject-unshaded", - "delays": [ + ], + [ + 0.1, + 0.4, + 0.1 + ], [ 0.1, 0.4, - 0.2, + 0.1 + ], + [ + 0.1, 0.4, 0.1 ] ] }, { - "name": "normal-unshaded", + "name": "deny-unshaded", + "directions": 4, "delays": [ [ - 2.5, - 0.05, - 3.4, - 0.05 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 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": "off" + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 }, { - "name": "panel" + "name": "panel", + "directions": 4 } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/engivend.rsi/normal-unshaded.png index d9f4a8ab47fd900a3bfeb468472138f3662c9e10..a15f723ec9ff59e69b6e8e574806985b3dcb76dc 100644 GIT binary patch literal 384 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 KMNUMnLSTYW4xAVO literal 584 zcmV-O0=NB%P)BdpaCeD_L~u1466e`ASFSW;rpvQWLqYp z>&fuu@^&!&_2q4bIScM$Rfp37^a7&}7~BqkB_M8bRWKi!jSC>F;S^IL&jF8LurS=b zc$+~^5|Rs$a|1Cs1EdCIIZQ3ctj90dfUMudIRFM8J^#<}=mp^-K~4fAdo!quLG*)Y zd;q5dKo)}xZkew@&;he5AL4hQBqL5aoDM+tm0R3DoCfS##Dv#!Q1GkkgVF?cM-mJH zN&v`WkOOw_yanX3ljZnwyu&MglERLtq#Zz*gAGWo$}GG$QBk~}X_KdmV@SoEw=;b+ zgdHW??k{Cr{OIKTU~b2#7oH29CPoAZFR>L_ZE{?S)o~Bo(m1c2=Jv1_TUM|0_i{G= zi)j+D*|OK;NYw-Zk? zstjiWnUJaak1Y)!A6g%K_bDhV^7i|!>%^7Ew5BH;8-yS<4VDvEmKnkZ}eSdw0{MVv|i;Z3s-q*Hq zeCX+9ony~G*TIx+0TgwG=|3>aN+!oZ9zwq@-j}Q1bsP_R8hsLY(KL+C$1o33CD>iMM^8yy-GgC&&8VKFJ|pSAp54ogekeW#jVJ6GNdV$jVmuZq2&xye7R(fC=_WCkw( z+umQFroMNWDZun)8BpNX4UaPyF0$=8^5PD6jgS9KscR|?V&+1Zjju!=@OB9@?CJXU zzkc(TP5c>KpFax|YcD-rWwzLt!LeHWY-tWlM60?EtBIMkWrEOy*3x~=2cC)E;KoQU f(8QCd|3E*${kH!4+_w$Dw9Me?>gTe~DWM4fobp__ delta 232 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..9386d30925dca78d8f5d221ca5740cee9486e168 GIT binary patch literal 11647 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 PIRjeix)+Mh-MsT3t&CRf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/meta.json new file mode 100644 index 0000000000..24c7cd05f4 --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/meta.json @@ -0,0 +1,91 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ], + [ + 0.1, + 0.4, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5dbcba22ae17c405c8d423427e337d03fbe97e GIT binary patch literal 1308 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/engivend_green.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9c62a5241e634eb82dc41ab554ea1588aef389 GIT binary patch literal 758 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 R=l}o!002ovPDHLkV1jeA{hI&) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/deny-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..4beea443bb926d73d34ddfb2fffe3e64f255bde2 GIT binary patch literal 870 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZZut<_w+fFYEG*m9-DPo2OJt$b3el)igPmWvXPKyI>h(2cA3WH9 zbX9Zr=5>7QniPI8K6>+D$qOabfBKqRI=(*GA^-lJ?Yn!7PJ7Rotk!1B*p<6XsL*h7 ztmy7|!2=9!7rHyn=p_41n)JeA-@Av8U&l^KFSYyr{6%=N7;}wMVUOf8-#v~tn=_^7 zeD8E#qp|wP^CQA)u@inweBE_Ce-5`Ew~cYivf$506q7byIOZk2dC^Kif8q8}-{m!m zk2jvG?A{!G6??Mrt|_R z!dc)ES# z56m6cr=&iW)LEny@mAAiQ3XTw#z`4bt78;3HfyF+;_K+_pE{0^G!X!-p4RyE(3OHR*yQ~h@mo2uGb^X;4acbxe7<<}0kV9V#% zzfZ5&o&9K^*WXiry%{(I)EI-j_ysTO+`Lkguf2;Y>bm|EhONK#6Z3mFrVAEcNjhT@ z8!PALawK^9?_2xoyx3X$Lf`%~e+;%@y^mLD$*4Vmg)Q-6wX z*i|=^<;IeKt5pu{css*MdqM4ABhG-`_2G=`nC`F_$U883fSij2BJ!jTpEPL`{>zLc z2xA`D_VV{^)9ow&H_p%Azx15?nZzopr0H8g10ssI2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/eject-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/eject-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4b8c488ac743f947339ad9e4e5388d38811d68 GIT binary patch literal 911 zcmeAS@N?(olHy`uVBq!ia0vp^4M4nrgAGU?nUwOEfq}6l)7d$|)7e>}peR2rGbfdS zL1SX=L|c!;4l+mMgS+KJSl=oiGND4l z$+4ol;{^{ev|Z@#IHQy7H)+xfi+%4NK7JiLCB4+{`|}s!#bV4gN`*a=%Y64Z+HB60 zp7Xuad5y;EBhQZrtHnXT%pn$`LYs%hx5AWK(-TSwC+0Fa>`K?7uk1L(r4U87HByV>YhRGoKbDPo& zpa^GyM`SSrgPt-7Ggd6MF9Qm)mw5WRvcF*E6P7T%9O>r+ZiGy&mN0qQJ5>*w9i z{6TF~gVcQ6O@B_FBDi2mk-Xq#dp_U#zNPmVKm9%*pU$$QqvJAPZklI#!=IKvzRMd< zPd(qhy7T1KSuokh>sYceeT~rW2c|mok=Y2NEj13~OIM&a`IQvaUb9ds)M^uOCg` zfrUQsT-aqdPjMZy&Z`PJ!NQ<@=h`Y7H=Va%%ItDvV>-iYn1N9GzyhGUf6>bPApQp1 zvdpJNPl^~(74clVQ2uR;Jwu*W391A`!h{^FiN*iSIvNyzvmMJd*))%p^AJdlr>mdK II;Vst0Eqp8m;e9( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/meta.json new file mode 100644 index 0000000000..5bf6de474a --- /dev/null +++ b/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/meta.json @@ -0,0 +1,165 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation at commit https://github.com/Baystation12/Baystation12/commit/bddd2b27f6103e46dadb6d251c7c1832e012a84d", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "normal-unshaded", + "directions": 4 + }, + { + "name": "eject-unshaded", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.8, + 0.1, + 0.1 + ] + ] + }, + { + "name": "deny-unshaded", + "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 + ] + ] + }, + { + "name": "off", + "directions": 4 + }, + { + "name": "broken", + "directions": 4 + }, + { + "name": "screen", + "directions": 4, + "delays": [ + [ + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 2, + 0.1, + 0.1, + 0.1, + 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": "panel", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/normal-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..3d28dddae28c1c94904cd7b800e7f98eb919726c GIT binary patch literal 755 zcmVEX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micF7%-$>e$W5_0PsmfK~#9!?b>w14Zb#1VVw;LPl9j&bA z+0ho30002cPu8T!-M9bR)NBz;0D~?zb@$Vy(s^CzE%X4gPTI1JB0m0t`jy~Q= z(xZLNqX|ILL+UdinR@^L000000000000000pe^&)JoI-Q^!+1s62R^6&KSBVnhv;U lsJ~@hocXD=G*>Q!?;F+~N3%!f)NTL(002ovPDHLkV1iLKPgwu} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..84269ea1c17b714d9cc61f399f45dd36a9ddc179 GIT binary patch literal 1614 zcmV-U2C?~xP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|1??c>kfC<6i;6hbDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_7;J6>}?mh0_0YbgZG^;BHXu55t z5^*t;T@|}u5x@Y3(2I!7EMrcRlIS?T?&0I>U6f~aKKJM7S92Bvd?Im-8KzCVK|Hf* z8=UuvL#!yP#OK5lCS8#Dk?V@bZ=4G*3p_Jqrc?98A!4!6#!4HrqNx#26Ngnzr+gvf zvC4UivsSLM<~{ifgE@U=nd>yikia6AAVGwJDoQBBMwC{a6bmWZk9Y8ox_*gV3b{&P z#tGnm2Cnp$zfuQgKS{5( zwD1uyxD8xfw=`uBxZD9oo($QPUCB>V$mfCgGy0}1FnkO2t$DpQ_i_3Fq^Yaq4RCM> zL<*F>-r?On?Y;ebrrF;QZ-sKD$0EtQ00006VoOIv0FwZd0F(K)BIp1B010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=micF7%-$>e$W5_1WQRoK~#9!?OIQ06ImSoW>c_D zGPTt}sGHK(ZhMMRO9*tau(a&5ix(G93!a2s$-#r0ReGFbakmOydeck6Q*l{V6vR@9 zD25Vj47+T%-8h}NHEnfT6Kj>EvxjVEvzkBe&Adr$^F9cjOy7Ion{R&ey_fm@1eAc! z=hI*TVzHP&(yqV1-xB`$`T6(wo60qoB#9|G?RaBjV@&x+M@LJZ{|F5ZE&vyx!BN%( zwMvS z$T0E6AID8i{M$3%F%e+k$Wh}006=q#gNktL^($RGvm$&paLiQyndm)ZCTIrdzW)K! zzuc)xPJ$DsP67aC!x8w00@TNK5#Z{0{;qe6t)|DC4M&(9*K{9nIut^8pAS#cFL&-f z;6sUkq^#)2bBl2t?)6fA-&GM%d~rs;6Gy;{jsSp{Oe5e$M*vV1qW;;w5uKlv31<67 zfXEb?05+!!4|6X3c3VY@!3Zd<0%vclNaqg1<|OZ5;QxHUfuAR*Oq=7w3j8Gn$Ys`G zbGn#Bz_X$;Ns-H};mh_M03hQ|0st28ufx;TX?RZM_?xWqfI4ReceLxwmLy_e@-y<3v29iH zMBR6SgByp?F{@Sl3~n5_xUOg^5oALmi>YyCV1-WZ%hej+60&V0+#W(%54&`Q_)my z`P%I!SoRUH;$mnX0ZaHxJOT|5B1O#93y{_X)Qg*V8KlYYOOm92Sis15q-}Y2m!nVy%gPcC z*d1UN0RVZv-e^5QJ@~l^asjviTmUWr7k~>;8TouYJ&g9NB{$K_iq_#X8UTo&1c)b) z{x>K1Dl%p2g@_|?QnNW-)Z75@@gKk9_oq(<(-AalCNTk`^CASy_Qc>c11-H0O%*{Q33%~{7tAJ_P zqwl({E&pdsD?s^r0h@mDR-yOPHaJrr zy$0y!^sTD(3)OxHPzjJozbXIEeZZARMMcf3b>W|s6bj8Ik`7?#(R_Z+)^! z$kR!ay?x@A>VP$2hs2~l_biJ!lehcxy7Fh0cGGWe+di|>&h~e0`nS#oOC^Rgf{Y1$ z91O)S3^SCO{@5kf=g%)KD$G()_@UL%_5XzZqP1)98fDof*1CT9QnG$4&wZ91M}>di zUMnGSO8IA4x5yVaPqridTzxGOcf^7ku4!;PYSsN&+L+G1!)M9t30+RvQ#d3de;hg% z^!dEML-7=jh}=I8MT~tdcVa4q+}PXKKHM0nBE-3LcZU$;lz;15ii{qVf1G~&u2}7L z;k{u>PMr-~rn!q6{G^JHR)ZaW_Go&WPvT4VnzgNl` z&$qSSIlTCy@LC&&^kvJ|&V3sD+?aKBm+sYY#*jUg#jmqx&svsw=305wN+-AXJRg3u zYE(}@`0L)XV!zO%!ngME#ovnweQFiOwcydpud54nby-7JS2%eyUUgx?2&n@yf(*|( z7z~aFGx%n_c=69t(ygnEp?5_NBZsytYmCo1FVdQ&MBb@ E0BsNo!~g&Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/screen.png b/Resources/Textures/Structures/Machines/VendingMachines/fitness.rsi/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..ca53e57d5c12032eeaca2d1261baf9cb84634c67 GIT binary patch literal 1548 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%U;1OBOz`%C|gc+x5^GP!> zuv^&N9FT-h7?YQ7FmVFK@>ayz1P3o(rp<#j|DP=jWUK zzq`9U{9XO8FE4ZcojiHcU}@pq+qZ8Ye)#a=)Z6`ieQoRG_n+Ix9~^c3`TawT6`!7* zbUMDL{(s$!rk|^4+q1nm{`30Vj&I+;tIxD&%cyyie}CWEIEK&Gi!NWje3Lujk5qqu zf4k)XBK@^IbIJRAdr$5Y-@SYH;iE^7>No)H*;{l!wZY8HY+BtN zd#(e2#0p-mo&NLL`l5d|A$6wz&6rB=YTlU7lJStCC%XHi%#-rtK1XXlul{^|#UG3R zyH4~R*O6YZw2a~U-jfFZmmLW?V}Ae7?78pHHwdUP2y6>r$omy9Jw0{b&u9LJ`4|qd zkc-5)4y0dCH?ME~eE!_IX|wik-J1HBdlPem0b|34rA!<8uDhH6e|P5o?c2Yf9yRp$ z^HZC@lkN=$O{^7y2sr4Q$>h@F4$&uY86KNU|u{}g|6i>8wLL7u2Rg5cyP;!=0F{s5Q$E|>m* zZtjkyo0Fi}saO$22f;2vQ`5{^uLq;^sROFci3ODSplXUlXF*q`IWL6iVFu!qeb!Yd?OG zLK?u$clH36W}6W>#LX|9fXUk!k_yH5_JE}3vf}Ci9DHvAXg-!&3vlthJs{eR*c%=< z-F3l38-^bMq_oZyQNaV#n1h35P{`Ofdt=~fI4c=HD=KZJ2t_i;r7l#ElTnidO(QU%gWaa zB>1rbA?DpxO0V-J`SS#D?#8(0WhuTr4ABpc+RG}7El*7El*ty1#d;LBn#L4#> zaD8*>w&UpwB*e)t7(nsrKYjhb-u?l%xcS}$30$8X zXdj>l5Y+%~zPAVX^xbNML)`q*33z^+LsGH$!5)y*TwYu~fP)`Q0FB2|a{(@Xum|jP z+UyOFn;%TT-MwtxbMPz80}@Hi17h&)b~yir#3ViIQW);RR@w4+F?zAo7ik{CAs*P0NM{l(cLw;O4JPK$EjFI#=&uRw)Hs{K9{Oh^$aAkl<$wNTSz7?d6r!VrXcS;4clJ zgS7S@`*zeZJSmXkFAcc*c*J00002^8=_w&5w+L4#S0W@k0g#ixB3cn~Uyi{FZcy znyfPx8Ct41>J$mcm5jdoSuj~W-a(i^0qUI-xfd9Bgm@z=dCPxx+@MTL33|FiH zxJS2YSgtY$1z#dy-X9j-p;ZazSmv9g;!6ZXokYjd1|^9CN`7nvG;eQKzAxh(%U%!# zKV$&Dxqh&pdcTiz0;r>anjbQty7lF3I;7c^;auh7xrKAL74N0yhn@{~Mp!vPi*P+3 zR|`1!ku@NV+>4rX(ON*s_YBaLdqK_1MJ~Q)Ky~__dhP|~<)Y0B<{}s0F~G?^`&j>d z@}g7tbf-0*%;X{`|1ScvIk>*M)V>}^#>L6072Mq5;yVUlzuX~w-iL61pU=tnB7kx? z23d`>b1Qg`gD;CA{H5c*tCF9|$(INK!zBiQ;SvMDaESq6xWoW3Tw(wiE-?TM*EcR` VuB7JbTVenJ002ovPDHLkV1mPwJyHMw literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-2.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e5affd170d80ae7285c63ba58252392db7d6c95a GIT binary patch literal 705 zcmV;y0zUnTP)48%<Ktr7(hROQveLN55Z>i}EP8XcW*CT@OH5%3@P2n`0fXmT_o3BI<( z;JGplpdMYTVcE(U9DI#{-`HEw?5yTMA0 zDkq$X_VZb_K!V?308JUR8!ICB;)-%HYig6=*A1XIsrT->=WiG(Q6R;y8?ait4s);M zbVpXt#gG+`0x7;Rz~o+d+zQ=Ugj>-QSPq}Eor{wEp9pyGKu>p<^Zht6o;LP_cymLF zZw#QqP+|POkKlGOlH}JTfU_H8a`Egch+mW7>t=|4xtMqJWHTlC8UgTJY5+W!8UW9w n2EcQv0q|UE06do(0MGRWP{pRw!4SAs00000NkvXXu0mjf7Q{q8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-3-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-3-off.png new file mode 100644 index 0000000000000000000000000000000000000000..27296a3e5a1117f835618bbbe1e6a307ef3c45d7 GIT binary patch literal 758 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V0v zPZ!6KiaBp*8hRgg5IG*d+S!|1%QZlggR5zBwBU3rZHpaTdU`$*QC5;*9cHGoG#U%r1W4R$ZT=zjw>`?0>cI-#xYBn%2$BaQY})!_y?@ z14SDd6L#KU*btNB@Z;#GU(2k6XL{QYL{xh9D9&+pdmwSGTm+r4h{gVT9V?D=Q0Zq?4eRd;0l_a**Z53;h* zbbI}~H^0P6I%nx$XFMx?aaGaT^%qOKKs>|BWveb;7Bk&{nn8B9O!Enr`P+{iC^{zz0jFs<|)9+s!;Jj@8$BYT3CrtP++zeC>Xtq?-lXy$d`-tW*BX6AYO7 z_Q1n~|1P{X>f5+|_cOj-D?NeX;jlbxx>)eq?Sg&DOe*e-rtwA#jDD)-xm;Rvs$k8` zOMTtR^VRoEpQZoT{Kb~SXDqshtnBmj3=W2$V^lxxzViALi)HpZzkZI>s!M3-yA!-J zTyNGRcD4|!{FTq+LLBv~)?@$$xS3tvRld#QdYw0^Al9yX&1tot^@0YI{8R7xPKuar zzU|J7XKkAM3>aRgx<8&T8>na#^L+Lbc0q@o(#>nmzLhnGcqTg i7i7SmXc!{a<@4_6KFzJOg%6mJ89ZJ6T-G@yGywoS09$PU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-3.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-3.png new file mode 100644 index 0000000000000000000000000000000000000000..05c766a42a8b4c82bd4c72a07d38cb8bab80901d GIT binary patch literal 787 zcmV+u1MK{XP)3mWg08N z#wMLau+c+s!7d?XiZp>V+K3@&kwQ=~*NA_b=%E(rti(nHi*?^zb~Cp#x68Tv-V`$* zB(s?%^UHnv-kZ0RbMRcj0C=uo06bSP0G=xt0M8W+faeMZ=s(=r+DjJa+Lgc5{qhaF zcW$QgC;jWOzxjML zb8vcp9-NZqTO%OW!1>%O-Vg4IZx}#Di1IDVHQO~kB`!(x4Fhgmy8_S``uRq=N25N^ zX@E4}FyQCC2l;h(_9~Vy@29{8{Ao==LehN0fH;Nf+BjHH7Tw-7I3>-uMnIN#&tDAYUCjL9UGNP9E}VQ< zqpj!8`te^EFM&(ae8YgUo;$m@zVi%RlIELz!0T-_+Hx)H(J=-#N%PGT=2t@7(7?00dz)JH!SO{A;Aw3FziNlLc3cNpiX)J<4H>KLj>3+$$c8> z6lSd^fYzWFno;sul0P&8IxEMRoT$GqPfm=tzJ9!)jC!ak#WxHfr#5e|ru{Y=6TxXs zpgIbq`Gx_V*&pgfq{*&~)>@o9N@(q>q9)BZ{x=x+sB(fu)aRGg0vG%N18B>jg0Xge zsqvni)~wpvT<~)P=w?r@AGQUWajtx<;PEw;^BrXzA}IcL(H6ex(KcpBbWR<0whmkR4%?e zN{VwX_~B)UzH#ikRnnO*`5^+}xq<=kT)_Z%u3!K>S1iyK40XlB(t;`!igaD8uh_piLK`wD|= zjxxlwRJ;rDJpM!TrI2a7VZxrM#Ci?G=A`|8%qxHftv{~*v2gDd=BfLtIKC*n&|+={ ziPmw5mR7ypxb0&AGgsi}`dH>mQL9WFn&wBbpSYf|@v5#@U6Sm9;_!F6n~TrHGp|2C z_w0u~!X;g^=36jVyjz#I=+4JKKl`ih@8R5+^>5-t}xak3jaj zCD}%=KD=Qn>72Fx8spdEYf0BC{>sjs{zxiz`HG)evIWl-sI#z-KY0hVzzX*<27Gj zt$j%h=i?@RH9K@WmKziZHr1|SsTS8h9H_c*F3RC-_&Z*)skV`C*RZPnIK?wVs#;s6 zdQ-uf-m|R@`DIHwXUR)1P_Eu2FmIY`@ShtEFRyt&yg6Ak-7w{3q{-2AwheDu-_~sX z@#bVwWX``ci#-2*=XvpIONzhPZaw|=Y@eRBY1$bx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-4.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/chem-4.png new file mode 100644 index 0000000000000000000000000000000000000000..929907ef5ce342f24dc5529d40ee38304869197d GIT binary patch literal 832 zcmV-G1Hb%nfowp~Gy1i$xC2qc12fTeGTgo+6 zf6Hr8gR2@HW3VP}zF7xk@=UM4vo*Rcar1`^uyM#yMlSf_NDQ9qPy^_Uu4-6TnS+BL zBB1C6a&GC`C9yD71JE2m`8&zQFEn6r>U%8@9yABdwOsOjT>M-E$o;5K?#*JM;s>B= zuG`x!mCu~~;s`jug^BU%`|`y2vBu8l+ez6&O)kD+fXcmY54DNlqpk(qe8T{hdv#W2 zG}qkpS~AL7z|A*)8>}n$bd9nWxZn>NK<9CE8dFE^>7rcR*twOw|9Y`73S9701IQWW zk}c6m58d53CkkBgQv(+JA4Tr9tUi&YxhPnA6u9C`17z-rc4@x;+|woR^7e2py5#?h zfS*TYo>=A&_T~Fe68&()6<-=ai%(?n#|~WtC#DKRm;5vWI8S3_F1}t%^f4Fw@HkBW z7A~A+Ka0yUUGhT&z;guy;JJbU@La(Fc&=aoJXbIPo+}st&-DiqMP)g0Mg&R#0000< KMNUMnLSTZ`0)(#s literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-1-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-1-off.png new file mode 100644 index 0000000000000000000000000000000000000000..4409660a221544a7e3b235c0617fdd8b82c8dde6 GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|VoI zPZ!6KiaBp*+It@k5INc}adaUgw~`*K=$(>s0eA83byni(=H}wZA6+=R@GgsPN`Ono zLP;0)x3!Co?EB(BX?k^gb-nZDeFtn$o;-OvH;(1$490*yNd^>Z!r#J*s&7|2q+7X` zJQn$T?yXlx^TZ4Ka~k%}&D}1$zh3EHgmZoo!(Yjycs{vKkx<3FdoN614U>b~)UGb$oNd9~F%e*8<$Y~HnHpDM$tjh+Qn z3E7)pTIn?HTD$$Cz?_2D)oeVISk%v!e&1{Uhr#^LFEjQhy!SX`Dm80ovp9>d>B>+R zd3Dq+QsqmoP)pG>DTntjRvp{q#miUgePE4j>b(ok98FKfc_-^l>S*PbIEdMv3am(auw_e4)`xSZqbFjiv`P6coy?d_x>hH-if3(f|V%>3j z1J2rXhMo1Ll?OkCPg!*1=>O`#p!-&izc?-yi>t2IT$#_=P&9|J)TUf~;?*fvwzD`` grZG%OW<#g$hs!AK5q6080LDLqr>mdKI;Vst0LG^8G5`Po literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-1.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-1.png new file mode 100644 index 0000000000000000000000000000000000000000..84ba74ff81a20d65c4da4ada3e2bc36f22125a5d GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vnr zPZ!6KiaBp*ZuB}FAktR9aL0}pN`=AZ2OX`-1Y}&kaLTZJM6aH^3 zE&4W7h1-vnt(oWVw~HYi&7BM1&uMu3Y}L(ud-f(5ma)xU%`>Ov+IAiV_tP_W?>D*a zckRf*b81e9*S@!9&)E{?{5@ZwJK)zjwmJNB%~Ld!1fuR69Y`1A;@rN^j?JCjDLycK z$5&IJ)qYKjnYB-QFFUNX;&xR{6`T5Bo%daq0xrduh3(YEck4byyuTYcIc`o3T>H0sUNF~= zFKf3tUh#?KN_ru#rf_6$cu4Uj;U`!An>LhPii*B_I`;nS$}+B`m*$_W*S(j^`s?nt zb@GyQzb*H-@$0nhGipM5Y)s?cL(F>;^trH;;I`P zi(w)RY?#1iq8Q?jpb;VrMhE2%X@FMfkL$bP-e;iYDDQjy_TB6C8i(Pq0Wcgk0EWW` zz;M_A7!Df%!(js^zw95M{G_auuK;NUI z^&JKbTml~K?aFQA_73r-XSv_%S$4ZhsP#Q%K>DUW+F4E8ZQJ?0><|S}>U%PvIw4#i zIxp$9K}D4M4g-P|A(c?;2fhuCixG7ZRITr+2)h39uNVOqR6?yEI0GJ^-bXu0wFXe@ z2R5LSEI=o!^tlMmHe}Z`a)u=kv#qyY7nD%zI}B*G+c?T3(b{Us5)R+sP(4|P_?iT6dn3p1YtOH4G?Q|Vbd~93<`bDfd767vO?>Ih!NyUQt5LB zxHSsLR15jZ0!sb48Bi+~L*JK0jG!k(q3;q9E7RgmjOAK@cF;j#Yy_S~wIp6z4IrTl?2I(V2X=?{zKx22y1t#=85kMay${OZg zJ2V$-edGde{iXqpx%XK7KpEkXL;?%xDfrDrQ~FH<8gtLdXF_`;JIQZG_BzZ(Q~JsP za({Pak>ypCLeW9%bJ?W6tOV&t$C`Uk+?po!B?4eM$^a*uVXwuxHBIVE1i*5{09cL~ p0Lu{rU^!v{EJqB0<%j{WoIjNYOu7pREcXBa002ovPDHLkV1fj$Bme*a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-3-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-3-off.png new file mode 100644 index 0000000000000000000000000000000000000000..22ac52faba5a0ed0fb2dee875dbc082d4df1b8b7 GIT binary patch literal 741 zcmV9KC0C`tzxw(sp?YrmU-fzfVocMj`FYjK?=XrRJ z7y!=^1K>Gg06a$wfaiz-@EkE9`R2*<7k?_%N~QqeWr*I+`#BqfDMLSV20UooQSIf= z->5F$M0Y#@PHgLI284!y&CQ3Z?d~67{>F*w9}TPVahq`K&y)eR4|`Xg7!8nA0{UK@l%IQ69n+74J0ZvATp*xK00OBwpIB?iw)HGuZ$ zil$|e7##YN0nsNC`}*m^ z+T5F@u~5hDjTM;YVp;mJ0rA}Hw4B|MbvkdR&c(9yl>y|wjlY~(pi~TSeT`nGzN`f4 z#m1UDD@n~V^(6z~Im&>b-D2O1OKO&>FBt&O5d+{kVgNix41ni|0q`6#0G=ZTz;pfr X*qEy#PC@Se00000NkvXXu0mjffe<3Nsg9jxSwNeo3Nks}-d+Mc^UNmpwF5Ap>&F;>;JE6AtJ4Q3w)Hgw$k9>O>UY%G>b%9&m-cYpuf@l0!mU46 z2Fz?eA5N~{jE~)3TvQjtflK|d4A@8rzZy8N==Z>dOMT6NJWa?Z-1?dUvsbTRx6{U4 zeF=Ntf2h|qjuJH^+f9&LUo+rcuZOiq%W-{G!%2kDMWSW|)L;{Cea!%BF40IAa~dB% z{~AuJb`9XxH)cSR9qbuTd|!PC7jWxK6C6E2O@~%k1g*AA4agmgUv@8;XLtirBw14E;p*2A<@_dtA`jP>rgX9>EwCfTS6rdQi zYm+4lIQ3IAVCB|);ooJ75q+RM=epL{44^mDe*4U)HoC9_-Q9g#SQ^a!p9S3dngJxf zz4H|-kDpmvmCX-gt-ijbK3KPz{$6fQ%Bv|dn#zLo*>5Td)@u)Zb_ z1~J1idI7h7Y(P|dyPbV&wKqx)vzV(-!&Hl9>Bj~{wHGuS&hE&zn)fGGD{qXoSeCvr zfZVt7lQRyKiUCfp(aY4Al_34GvF6T7QnO5b$pCncG9XxQu>78&&8${s%0000j^La>hBTO|2~WN9KC&^P|ji5il0r4 zt7rE=e35Yf{=08g0rzW;e6wbcSFC^Cl3VWHRv!aa!EvYHK#g?ht=pykdQ<o z=CH~2EWd7(%$cpi4DYSZ8TT$*KT*?bUxGu3VAa0|TGzkztzWlM^*TcqQ0V77uG5ZZ z_8-hR@ol5+pV;QDPW@XMocBwd)N8u(=Ymwgdi#%`S6A%h_;w`CPulO|%Wroc?~!1X zPzb(KbC5wtZx8RYM{hnZemwtOXHyLGik}Mw1+KhI5vcmJW&>Yl$1MAD!5*PdL7#5< zD3-#O)XXhI^Tsw5k zcPeYVerMyOUDp_57JExg^Zd2o!E25VtHyH=XU*O^m*>H{+eiQV2YpoLJs_Rhvv*_v z>^}lpbt@QO)b0C!bY_bUv++ab2QF;CyC$EX^5+D{frrb#uAKN|@1KXU%IzO^d=LD{ z%3SeoDqDL(qs+rM@4_p2pRHsC1;V`Qv~2HNE7p80)c*eH?CqUhQl{}g%ud)jg@h~e zCf>h(wMplP6Uzg4j@4JE*r}P%wR>xs#b|opyy1D=|KB^e+?gF(x{zn;*Hn(vN7ww= z$5{7n>+F?hPuzO@ed5j;qVpvi-aUTJ#L==a23 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-4.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/drink-4.png new file mode 100644 index 0000000000000000000000000000000000000000..844039637b9c96d8599ad1d4b2fd9a85440339ad GIT binary patch literal 856 zcmV-e1E>6nP)41ne`2KaZbK6?5$pFc5B2exgY zU4NKSaWiS~0}*hr{SDdTnaB&Sm(PmrkKcbVHgp_~mIamK<_8RzsNBG2YsG87SzE(g z<%-yEv|eL)!#&rq%HDC6;^qeoAmEe(mTgjT;fZ_l{3Y*uQ4}JDNcUCfT$vL|H2oq{p@|oYf}+YDQAg*s?K@$xGY9M87jri4;VnjMQ;7M*n9lr z=b!G0f?5N(`JoZu*E+UBkH0P4MiS!Y_gw^|#8m{7;)fPN8ex%Wv_%C-7M#`fuSi?O=&F^bAxcA{#rSIQS+4 zqE3)=wC2{X#{;MA_=t31^Z|dVHKZJ`PY5=)Eys_j=LTYHnyaAfXP+x=O zGbcYX0%-WzzE_I$vy<17z+MKdqn*HKN(w_BmSW{(ls3^8*IR+?#pu zSlOtoC^6`7I5=D z17z-Pwsw`}Ua!g+$3$fmVY!$V-!nkwUb9|JY(}<0Acl9#qoJA=NCnho~xU)6LNHRb;Z=2ud{lBv&+}?lJUHKhxvs_=wKVG<=rD4vI z1_6ElHD9MTR48ocym}}qp0k7f3iF8oeg?}|KqG7!o~&SRnA68-YG%3Y0a!;M^C7vr zcOuTsJnR(DDe+6Gy#1SaVqg8cB~$kaT`-rB(bhFlWu5kGF=xiP9Ca(MY&_a_n?AOWNjv;9}ta88ha%u!t*A_pETd?%s^@gae z;>ID}albs7vg{^4{lb*}cRQolR`JXGxaa+v%W`GK-WeO?9xVKCc3{!Bq+73R{Qu@N y>69n`%DU(s&+q*3Fi3RPykA}zApr`OIpTaR-y~11JTw;={0yG1elF{r5}E)j%dMpV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/empty.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..61660ac22974823044a1e8c950e53c188224c126 GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R5a zr;B4q#hkY@5B4515OGOYwYtfy>%jSCgHU?j6en(vFAkjE+%hXzpLn?SF{>$l``A5-%g!)8Il(YNnc1O_hr!Z_0m8Xte*5steNq4F_Pi+C`*6qq-z)#7+I*SH zFu~YB;mB#>>{?X?d5POCQHg8Uvpivb#h9{!y+P(H!-U0h3`JL%9sJHWh_%ZEf4C6N z@O1TaS?83{1OQxlyy*Y{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-1-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-1-off.png new file mode 100644 index 0000000000000000000000000000000000000000..db83adbad36eedc77f2e35333d951ca837d2ad28 GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|VnJ zPZ!6KiaBp*+Ik-j5NV6I7iiIFm5O7@LFCmKz&?XUQ1^v(UnY<2aZUsDOElz_|1 zc^Rr_&z9$%lRQ`1_C@)r-O1a<{&|;cHI6ei6zMRaPz_(YKc8M*S|DN~rBK&xIN$Eg z4+{y-`aIS-F4{FNg`fVEmayen{Pkl{`5&|Qfr5=MUz5EQ(%U3=grfqE}-fnLVxXM1Q zy1v(Afnw2*wVY0tQ++2$=j{(=n3C*!;d?`@;9JIhc{y8L59Ql3oYLfNcz3Z>_q1Me z!H=~}U1eK#I?rbBz4&bQlTXpCPxg9t{uDD^$>dj`$$IA9d#m{AnLXRok31}Ax^ZT& z-LxI0s~T>{M=;ujrdYA;A_R6 zzN#73kr{fEvNuKK%w002el-(YfAJY3_GiLcwv)u)PXD0J7?9~RqpmA&lK**E&;4sz zG9M?Oy*p(~@TGiFhNmiwUkdN8ReC$+OEjy4r5MmVjOf(;wQrPJqz>`01EZS3)78&q Iol`;+0KkyvX8-^I literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-1.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4914d8278c0bb606641fc80455dcae18ee4563ae GIT binary patch literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vn_ zPZ!6KiaBp*>iZuK5IM@v>2aYsp-{qT8%v{`0>`|T^#RU@+!YRf(Vozt#=*kLXUW0F zI_-do#GMCr5-)%K+Q0sLS9SfO=<84C?YsOr@BXezjpIBGMQ0dLsD>x!&V78j@xpnZ1J^z?+r`J-{k{CIZNcG{?{1+S~w zCcI#J^5EKco*i%b>$e@gKldNkj)y>Q#-$dgLu=z-n(e5oeHy1Km2~~rJjP7-@Amf^ zwuWwNJFzyOd*LSi7`?xyN{wwN7Uug3oYKr~x>N8vnrVSdcGE)cZLV9`TdFo(6ydCW z%^2Xfknu~;x?G*xR~}s0&hkVy<5P?qK;vfUG@$$~=M}@X~aqak8EG$qI>b8~d@#iSb2baG8lXf{Sved!J-k4GGSzOrJ zRm@MW{5MyS%kh)5o>85dp*JbaWY>JjB~$+SFq!EkE%Db;5wR6IZ>_iRJ=}IWMUlnYCNb)7P`sn_MLK@tOZ|!4xPN07cDe*!A8%l3eWn8q}ItAvm{HD?>AG|PxBkAcKlRio)mSXLtDCLCg-6-Q`3fPFQRx) zhuwPcz?;RyN-({3+q@OM7Uh$=^#udgPm=ML5>e%{`01{g0NGy+^0U zynEedS70J&{{K3I)ywI}J=2OfKiJF&NK53b`xv+JQ``@w+>g$J6YT5{KI=<=)0I pZ#S<$YVw&~(}^W+AyNH{ZQJ$i53(0DOM$74!PC{xWt~$(697q6Dpvpi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-2.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-2.png new file mode 100644 index 0000000000000000000000000000000000000000..fec9938613fa5c5c76acf7a992706a358367445c GIT binary patch literal 686 zcmV;f0#W^mP)_CH^saUva>rI z<~RH8o42!*G{bR;0dQPm034SX0LLW;z;THIa9m=5|6p?MYu@uZ>S`dDd&J)7m8K{< zV}oBY0zO=w;{Wx%+P|2Z2Ddo*ngIlVIypky@R;fZIZT@U_n=Cu`x75A)*)`bW&iD!bVux;LA)9j;p2tv_{uxST@oI2VWwf+KDhLw3S3{gt?Pke2IWcmE>5|pn9T! zlV39eHd6}?KbNVEuouL^*9<6)Jrh&h_e23VziI?TIV+>K7SliKiUKaa_S+x~t5y`) z;A;`^>F-aZPO_2D$!RR6hlldJiMg8JZb Uh&v)FUjP6A07*qoM6N<$f?v-szW@LL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-3-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/food-3-off.png new file mode 100644 index 0000000000000000000000000000000000000000..b1280d3c1a7674d719c976231a878c353031fd33 GIT binary patch literal 832 zcmV-G1Hb%CvP$Mo5&{)KDQU3et#caK3>hyDU;zW@ipF@4)QNF7q4Se)G-j zuma6x41ne`20(Ke1E9H#0nl8=0B9~_fd6FY{=yT`I$N&N?jn!@EyJ)}v z4r})+JDV>==ap=J$bf;nLx2eY( zB$9uj0W}XYOh|D~fhzbW3657}Gi$tTw$29UEa@bYDSrI>yo+Wghisz`x7EZ7TdZ^h z4+Gi!fC0|tCfu(d2H@f?)Q*mjIzC44&Nh|~syJ~n_`@78*cQKsR%{OI#395;1wUW_ z0dJRf`SC&ZGcQwx0un!5ptyy?uPz&tz^7gxH;0|*vJQ%p3Vvt^c;Hc|D8v|$%NK6c z30z_0wRoM~6#UL2lFc_sP;`TfN;W@WfT)d)s8YcEa z^byCrdy)K1m3$Kc&|Jm6nP)F4<0-Or0BsvKoMz9o`evn2T$Tbp=hyCtcN6sV*RSri`39~iU-qEoOklUZgx$R z&Fsu!=7D5(XP5a+o_*(?*+~eR%NPL7WekAkG6q0%83UlXi~-PG#sK@tncMd((dgce z8YmQgVd3uV4iTME!S{@S(QkSDS^LS4Kb|`e*^CI|}#mh~A2^vt9%#*?gA)Rd;I+$M*3eof`n+?2}_B76O%Q zzRLhVNl2t*^V^yRk3N6KOG-#IMvEs8;KRmy>DR z`mnkt_UWtO`&tN5Ck9zETD2ljA(8xT4R~r*6Hz@O1vv$(;F~1aTydoT5HCNk|KKGh z9jj*#KQ0wF@pdqV(fl&XU-AgE#Y*D|36gBS!+_IcV+b#$s~wq0;PuK1elIPec;_l2 zbMts}=@?4PajX9zzlT+sU5F-_QhXDjkT)4rH(=T4~a`!|W*4Mwl*^7v;Z!*V$ z%vK09wN6k6MM(wUH3aJ5x_F3f)lO{TMxDU^f$HbeEJR5*-y}iN4R$Npe1`#|Ha7f9 z1>bCmL36bW_<~2+* zR&$7};yWVX-IXLV<3oYHkzHnO&!pxn#~-IWudCp5187_%Xk!B{bvdA z$*HK_Q(#=Qt<&tzC~Gc}{Gt@+HC`?kz`;hU0g8$QeIvVL1qH#z-&rS<1+;&#)G z7_i_4`wYKkoa1sol*=2SBeL;Z;YRNxDSIB6_cm1AbFhqm^4Or5i9gq|39{;xi?{>!~G9mcos6#CBG*NAz|d`;13(@#ETjth4` z+;iE~a_E$vlCgQjYN18(+ZS$BzcAmv)#KzdYaWI2#v_r+W(V}+ixd@BGFx7IvGV=* z{rwssIf*-WT@=I~f3LoHq?I|uIb=%8=Uldshfn|hy`|zYrNCp#go-AwECVjKrdnqK zP5mEc%u)}Z==s~_tPK?wO1;bQTSut>!GnM|m%lgV8!Oy4X4uQL{P$;<$rmGxtX>H2 z{`s6Fo%ifa zf3{;{^UV9s`nT7Jux03W`RTV;{WzhrNm`mCH+Nx8KGWURl5buF&M`V3 z9M$rDq3rB)YKmFfZ&>foW05SVs%g8wK5gIUY>lZ-AEtBm^eC0aBxMWz2-{Y$+^AD% z_5zK{gXKDnT06`%xeVE!tl~DG#q#TBmF&*5RyX%QcH8t*i?d7a!dg&3bZF(ogvNac z_2jV&_hw$<_S{V8ZjWN~{Ywo8YY%@_JAPKe=*M#@19Qu4NzLzH?WB_VHeY-6t0>w( zNNj&9%aXq4h_d6)lcyAJ-8Gk|E|@vvZqDMrzMjSxAGY%8yj_z%^G~sIgVx6UxZVF_ z|NZ%wdwuhBex0}*InJAY@G-CYe@-N9lYpvLX8ZAFdZMhLm|nq_p0+8%V|nY_QyFV2 z4|K&pdZ9J@{g3<$XHqK{GQKo%={mOLbMY ry%+MA>0pQ1t`jqsg(Nvm2=rmqJv>9{rmJUXQd?rio5dl>V*WXzxI1iUUquA-}cY%Y{j4dJ#^0U z{mtFqKYy}4UwN+hp6H=RL2L)GU={PIci-ISo_n;0t;0pkuxS5wha)Lx9xU%|*p;8S z=G^~B$L00oynY`R)}ME{Zq1bM(v1-(pSJk8?M85qAUne#cM-hGKa&vRMv?5UrM&HjsM-4xZB7k}8`2w2HZ z?kjnwF{(As`9m4Y+xEUvv9F7Md8@FYqN8h4&c0&} z7BycF=OhWKcv+};d6e|)&A08jdH?;!?H70_8a1ysR1o!h_vwl7>1|h*)e8PzcP6xL zXXVE5`#eCM>3u?5LjT&|^E2u6n%477rmSO%WKAre2dnz6jV)6=>?(ogpKFNGGMqT+ z>~+b4J%2Rr*T?-h_aMV|}_( zt+RmYz9o0BZdkoWZ}xiQhHDSZjg$E2y5DhQo#?W?oOOO>(8^pjZ97NulSqUCpN5KX2tbv-{*tMW{gi<=Uq#4$%{YE zdd!QraPyB@92M7}x<0tGa?jq0rJFWZ*ECACN{K0FAQ8UW!^10Y;# z0E9~ofN-e+5H2-f`pwB{byVIfrGBa1>7xEn%VqszIQW_X2v@=Y6E99t^ECnS9g8+X zu0+kZCZO{19&TF)hu{ze-`WOLg5|5{qn)R#OKQF~0ge1NU=}7(@U;y{JD~VG47a@v z4@Z@KJU>1Ggj&%qVfP>adxUqN zg0F1=giD_VAY2gxTugE-BM!bM0K#Q8z|7ID8_RXhLBZDq%==)`8QL_NbF6YFsrZ_J zSv!qmS%a2I0VUs>fZFZN+WoRQ$Ep`Z!A}@4uDz^>q>Hu%)cm;#$Z}L>&Q-m*Tq*@r z{KS8Qa4cI2IQS6*jyJc^_!(qUdvT3x(J<47fTwAGLP!KxY7#G7Q7IzQ2oH zBo}{T!1t#Q1RuJ5A{*CY$cl-J9~xky(G0d_(5PARBDKiLkF)_UYA-HZzs$i84RF!# zrfGVd&&i)8fO0lwR=>=}*M}jqqNu&NrkR|4O#p;T4S;Z|0T3=V0K%mPK)BQZ2$vcF a;rauoX-Q72SjM^l0000ZR}V8Lws3D{vs7`rANZMU`E+TJJbUb1#;xBIQHch~Q0XCPc^ z0E9~ofN-e+5H2+U!led4xYPjmhtkP;*IHc){ZZqwiQ2*5RMLOO1Ya`%!Zlz3rI$%@ z^ECtf8=^L$w8YI1%z(nxrM<526k$Rf{J&LkIKd%&=bNxJWj88r(y`9lq$x}g!-{`O|<>oUb~9(Y8pXHNcr0oCif z#NBtt4m&7r{>UDX^Fv0H|@Laj**4Gz-l&7P_AlCBXuIC_4@%sjR-M4|>&NOFaPA%FjpG@&>11L4B zy|o1%Rjn*a)_*OUHR8nx$_Q;Vbaar12hoPh_Y+yfJn{C);--i;Y{T{gwn$q+3# zYR@k>(OAUZ<{Q-w8Qa)ju)lC2Z002ovPDHLk FV1i&B67~Q9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-2-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-2-off.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9301b63c06c6180b85bbd09e78d583c0a57964 GIT binary patch literal 749 zcmVXg7_bJP(1W1^x{$I zA5-um>@x5q>>zmXDhjjbfuKyL#)_jOq*=E51^iU)YzUcu~8?28{lhI$cu;pCC z`?v3awJYF~Y<_7ENOqvHhCwhu?{o>?;Q<2i+LCAhH@`9iK6rt6{&(3O3b4g^_Br^b z2h2{`-Z&Yf#&Tw!>hI@QH>pLL;^r4dJMn(uXdGqcs2NRaQMNewIRieAeL>4_I9-b} z#m&zcAY+l^JW|0o3nI{5r3TO%-J)r^NDL0X$$+yyn0JM?N)+RN&LkJ#WI)j*IaW95 zJXyfWFEn8NmIMFL#qQ4b!oSNDgWwc%UUBks2Hbnnj#q*qeAFw7NwHr)?UWuAH$P{< zU=(2m^VC(j8>~yxJ-;Yx*w%QNkj|Ues^Q!oX0d&0_MxVf?Fd7KvX8K+w zKh1y_&)%@D#t^I7+KgxCRPfEs5IxEG-L29zQzhSI05q2|0Gi7f0L^6#faWp=Kyw)b fpt+0z&|H53)2_A>wxxd800000NkvXXu0mjfHe_Hh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-2.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-2.png new file mode 100644 index 0000000000000000000000000000000000000000..05eb40cc810e89553fe13ed2f55b696572332cd0 GIT binary patch literal 772 zcmV+f1N;1mP)Bt7Z=H-P;gOjPzx0@6me*9Q(7UID%7U6X&@rhrQmtrgPghC_3rH5``+-r zKO`@GO}^jV|Gw{gd6xn#mly!cB?iE9i2<-&VgM|c7y!#91`Pf&{pgwNoH&;Fp+<8B zv$wDB%llwV@FfGHCM#oeYOJqM!h|^aAp~sC3#ajT<^fQg0GD+0V|#!)fQchmTW_PWJ%X+GZ_(apYc+tIpO^tpzx?o? zN7U;T0yAEH4!-n&;fce`J8Il4j|S$c{+8Y?s#?@3ZhmA5Y&3u2L*Zv&j+#-w7Ill0 zA2Q%oVHGHc-#A!{I>pTo7@*@O$N$I#Uv7xNa>W`z_vo^wWtJEm{8$5MO`b(IWr@MT z-_-ze4moKrSCWe_Js@f_Pxl97rp*FQexw1#ii1wQfm@f(XI_^n2Ei$2T5(+hu z6{sqXr7_6>0000uAoSRc=A+w^XNfQ$W_S2 ziy-8W2?!$e67VEc5IlGlg_?^83xZldYD`H<*nB5S%{uP{V>i1^QnNF2n0X*OliB3` z?LPa?WcN)Nn#&jf&1DRL<}wCAa~T7mxr_nOT*iQdZ`N*PoYZo1>X*tj8=KEJLO~yl z3ckqzzdtZRJd-CNl8I!;}=D)gXa@;wGndRZ}`)2*_8#I=v$q9vQ}n*qgd z1hzcmqOZIPzQ=%B7a>uS&G#5!)%(0HB_gnXd>{7Dorf&R=KD^8ZncH-?;cOWPJ{I$ z;;y)AzQ=$f10y*cE=JgDL@$Yw%{Obnv=77w`@C%|gpsz+;LWSoz|slGl4!o~eSqr# zl1pf|nkeswV1M04i}k|-4Uo;BngQ?a7TXSQyL${AmU#7L@XZ=9J`k}7yzM6!5KB~e zzg<7g=U-)~#OI<&$>#e;Yui7uH|QgsU}@K9^RKqZ7o)#(QM6?8JqCOpG}y{B?0?u^ zWZRRxe{e2}lx)7s01-uwqeunc6hxr8CK^CBx_Q%bo)|LtCIb%JF>8f(nkdHqTuE7c zlL3B%m*h2 zM+Q(W9&D$`Co+ni$=-E1YfP&6+yF|AE!L(WM_b9TYc8tfk1`;A=@$z5b>YwBG#9hE zo6fM<@lUGw+yJ^??)5)HmZ;2?T3#8wSIHk`z>`NWrB!2ymC3F+<6|oL=3$67B7S$L z=^#@j-(&zZmoWgE%NPL7WekAkG6q0%83UlXi~-PGe*h%4^mwBzGsge`002ovPDHLk FV1nf*gwOy0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-3.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-3.png new file mode 100644 index 0000000000000000000000000000000000000000..20ecf0f0877bd85f0d086e63f95c000042688793 GIT binary patch literal 854 zcmV-c1F8IpP)aS4U`1BD7A zt%w(I9`qszLZJth;ze?*P!Pp};7_5J9*THq(L?=dmC)3d+O)O_M1*=NxXw4hG@IQf zvDuk9%)F4D=_L7{&AZ>s?tBeFa~T7mxr_nOT*d%sE@J>RmoWgE%NS7pNALYdj@5R! z=9i|@^BB5zu_@@2QNcGE;5TTuj_`JTrPDS3VR#S=i;FmL_L9((lF9cNK0Q ze6t2r4(yxVz})%_ire2)P)W;0G?DTmMR(+ElwD-zG~*mo1rsy|9L-($eH^#UTS z?RoMwu%|MLmFj^*v1>^--}Apgd}Pkou_fJ!_OjU3)&doLmjSnaxA3AQ&6}X%6qDe@ z*zUfpf?qNq)Bn_=T08`oz==Vu=*{!4AE}C8GJtCFU~h`tkx^`GbkgCh3aR3A11L38 zthFFVDJzU#Yilm5s!B`R}SZOPJN zq>^9CfXgQarB!2yl^VU`RF0|Oo6Qg%MBI04shp{jZ!!Ry%NPL7WekAkG6q0%83UlX gi~-PG#sFxpzx`h0(A@3(hyVZp07*qoM6N<$f)^T{D*ylh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-4-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-4-off.png new file mode 100644 index 0000000000000000000000000000000000000000..789b278a0b6a627581133bd20d52c6bcb6ce7ffb GIT binary patch literal 943 zcmV;g15o^lP)B6Z`cbmv0Qg)hib zq2Nvs^2Y=O5rPoVjZi^x;Z_uD5ELv3YPHrhrRihxXxg#FjQ8ANY&z5Qk=#3rdq2p` z$%Q$;$v5}hnK=nUacKjfxU>OKT-pFAE^Po5mo@;3OB=BD%lMVJ6YG!cdQfh~!qkh& zu1=qfAACInyavsl1-{R&o#652{3`OsIm~_f0IN_ybo9K?lak4I89>v^>;Wq4%PbDz zSaB7L3(HujS{yD~viY7fAoDZCwkD51R%1Xk#$(Y}-VeUZfW0n4q9mK|GQcd@e4p(L z!JPk9j|YcP=?(KZT&_T*Wb-{sV12oa+@B3T2`fbwhb$QE1WM~RiUO~`AAFYq83snA zKAZ`$)rdY!#n~)mNH$-u0bYYi*K5G` zfsj?>dpi<9Pv0Vs*9ymZ{VmRAc`b^RY`$lH5(&+Y}(nZ{#LsAV)U;TMN1~% zWx)4Z5isiUmzi$1J<8*)wJ1`u`Ar6hXmadFe(-fe1d6Mr0o0>wcUrcSLk7R40jC27 zrqG_+$svQkqX9Rs-FE0++^#4G<$C=5;l8eB?ZykFoqg?T`7aYpHn`HA{{|!2M=KLOBNe?2* z-D)lHgWqJp*dey)RF;rTcmA22YB6!~l7nz`$NRD${DuLE>$e>0#Yb{wh!VB9t-&GA zNU&JlF}O-oF+0Mn<{gqoWRIZIfSoZUEKAG~34@N7IpDQ!V<*Z_I#^ zGn+^!Q^McJsTL;^SDkvZ))<4|%?kB%71D-s1C9NAntoX#R zvwh4DzHW%nhU!8#cq`LSzMcV4T-pFAE^Po5mo@;3OB(>ir44}M(gr|r{RNPCSixIe R0#yJ2002ovPDHLkV1lVRz2pD@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-4.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgecontents.rsi/slime-4.png new file mode 100644 index 0000000000000000000000000000000000000000..dd526f98103ded438f6c3116fe5ec0d05561bee8 GIT binary patch literal 969 zcmV;)12+7LP)t&L4Kpw*&M2X8&`(Gc(_2KyoPqAi0zQkX*_DNG@dnB$qM(l1mw|^h-_SLqjXr zyXHaqzz~|RoJ~vh$=JbHGr(%6FQ=7_fypu!|9TgM?zw?4Eln619mTGSb6ihKB;RBJ zonF2iAQJ5(u?Jdz5WSxVpgV>zMc}+8nr}G+>N-4R>tS)D;}mcpwx9Qvw}WpoV7-eF zFNx-x4DfZ2u`y8Wg6~aBEH1CYuxkg4bH`@DQ=<8nB@pciL*KdpABm?&CYa++astDV zSwuKqeLMIj1L_DEnll#X?*r(EC=$?-1^yDvS8IUPPM`6Sje)d7DEvFm;%|;^s5(-F z`}KDKXC8P;B;WcuARid-?S`J2jl#U0n3yCrIiHT1&bJ6pg}E9ans5Ca@I4#IJjUV& zgFnbNoy9{G%=zkz=BqVe<&Ny&0vo5jTd+H?oyFn75>|hG??16xC9^?cLw>{i_Z+8jmYS1 z2SkasxwL|k_+n%yKRyG_?{5;;jiD@m+XZ9gK0ElTAwoB_E<}TuGVSE6834(p41nZP r20(Ht10cDS0gznE07x!n03_Exl;cB>mA)J)00000NkvXXu0mjf+1tw3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..79c103b4729b5cbe1d0c65aa9c5c7fea299a24f9 GIT binary patch literal 2125 zcmV-T2(tHyP)w%0LKzBt=D1j5I;|p|c=GUBsx?LfyiFxiQ&~Ol0}o`MjNb zzkA>B`zC$of%(4Qd+$BZdCxuP-22{pwe9WgbLJLCMn+6)YpWrqr>BiXeSN*D1Y!G9 zGPL+D{#mhNh3V+%Fb57C@CuhLTjs7^U0q3{!NI{O39gU{OiWC;>yaZzGMQ`EtT7iZ zTrk@F&HznKO|DXBXJ-+?xpU_n2^!?#^5x4;xFn@=Y>RT%gIp@B$!{gmLLe1`aQ33K zG-RVJR2FVZBWUqk`7j0wqJpWOz;l+t)hI6|m(OVcE&j{^a6dGZq%o3m5OZZh_Ow(^ zi{BXl@q#$)>FM#3N?!6=2q+uGP?Ei`$!|GaFe9^qY*6VC6a#oD7sDO+Z^Mcp zlY|(b7peqbP!g9ywfQXsV;oK)uPg-_%Q87Fgya9_x3F+*))Yf5qs9^z$6NlTk{ab{ z^1BeAd(quuDD@JRDlVbPZ%K@-h--|9mShacghHTCPEKZu z$v7T4?DqpL=zf4Uzm*M9;pSb1l1kLw*XFKB zOjB2{n*DqGy>dw&bHSA28vI2eF!S4RMo({TlYdF4Nx^yX8zuNpo z2H3glT_-pOSUfC)ve!m`a`)`Xcix}xk@M%r+;#QpW_SO^r~BRSyqQ_G`E6*Kw|n0* zO=~w4k#FgG!tC1lrYWr3=smwSGvoc1Fhav$H+s#vRhwzF=XiVTk}Ki zcL;6%q7aCEj$)jB<<;$8ToR#Mf?N{O>M`;ds?A^YEwH3zRaS@(5(2%EH&4&QlaFmS z6Bqw;%}^Ole$NBK_4MYP^>qokr_;2&V4mrI&U|&~%k0_O4ejm^&rmkp7w-)Xe$N04 z-JX*8=DVZrPeKx=US5koTM`4xSzk+`(zYCvwfXJr>}-uJSiE?#J1>A_gm^?8;+}JD z?7oKE%_PUp&d|`1yXU$c;ucd?w8yj2(NT{tM78;&Yl28h;Yv+-fFXp8-_+t}xu_<; zXMmQLmN{Aq;73NDdzIRKl^-gQ4UUu-Xz(Xjg~JVn(E2iAh1ok?naSIn(B{t!5L!Qk zTv3sTZAGJQY-uXb3$*yX0}`pj3JZy6nVcw-a$;_)#qSJ&%*(`s%!}{w(}SOTjmtfp zAlpc+>w4ZzTc>Zu3W>olMCFeqs4FY8pZb7_mgwv$aVDdF9Lth#hA5^X%W*3xNY0AN+)suBgSItq9@IC5qeR0MF7$ppmp@saY3g zu+5TNFG*LFSzn9a3jt{+`^uPSdG-`78D?0585V@Hr_c`d_OI&5+qUdpi{FI+;|p#P zeqtiYG@UFYdx5dYaw?3Z1-YTZ;D8&-nAYTX2Eew_N1q(b##tGAsEBWRC`8^NFTa+XyP`V`k@EljU2^j;&<(LO(@H+$0`f@cj%&IZL z+=#?bl$WR=3mjbA!%MRFwfVD&5NBOb1QQP+l~hO$*M%k7D|{Z?i-${NViL~IwE3L@ z!daITD6NQROgbdbb2-MOY%gbLGA_0Fz5g*n#N3I`cnxP@sd_2bl)a$IZ{-&kfd7oZ z9h7pe6jn(aPEXlhliy0~%l~;@$+glpQt_}?s?Gl|`wCtj#@4+A00000NkvXXu0mjf Dye}OQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-deny.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-deny.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3ed702229effd2c6e31810d0d6d9a9a2b591bd GIT binary patch literal 2946 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-off.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-off.png new file mode 100644 index 0000000000000000000000000000000000000000..3eda6154dca2ae23899254ed89cc1b9a0ae913c0 GIT binary patch literal 1431 zcmV;I1!($-P)i4UwtJ-K}WTdW+utfN$zrSDg_4Ne>*J?Gjva+J2`C0*h<3vaS zlN2DykJJ&DwgS`<7p(xqpF|Sk$5Q-gb8}N4P(lhR#Fpf@L!i66TR(>-MUo#aE-ofq zF{G@mt?5#duR{P{07XcNBtOmpy}iAvbMTz%?CQ$Y!S>dc+Fp8_xCx(2Q?eTx8cN)> z6u;0Uceb`-sr3MFh2-HkC;%GGBZ%Y0$7@a1h2~*#n}p^U<^gcQ(-*rkS%8wD zB)`xQXa){}1zHgXdH4+q$diOf%*5sr-_3{Sw`YRpiM&auC<)Ck)B})-kzIFpcb#=` z9rcj3ik3Y5!b9M<<3Ff@uCiL*T6dOz?)|S?C0Y4}CP7FV9HsiQ?CdWzzfcdrbM~UP z{KAtU;J%woyB?Zf_(Z7hr%GJbKCN0y-vC4N6ABnOaV!^fo*iGfJd#@e_55#ZKN9?e z0_Nv=SNUXWYD$*`ag{ca;A;gGu^yN8-F|(2JwBG?M>{(^9sI)J;9wn-1k9JQM)%)~ zXL|lTJUpz|(?&-}ojbYM-IjAadm(JzuW&~}~N8TF>!Pg3~#U9Pb zkV*3ng17a>q9otx0eEyku-o$Sb-w8-wMAc@7cOUN8;T$KVhH&xw2sDUJ64yMRv)CpmWQ8obAS6HX#hy$1m~Gj_wkvB|!Hh+SB){=>_~3$X zUXAH!o(~$R&$L_+njb-H`#)ARc>C}qv{fpVVjyXc=GZR5z%Xa$gGC$s(ONyZH!R+N z`1&i!Pk6xZCkL$S_T;MQkle|%5}l)Oj!>F)XwCkPV_95+uN9zU@1Qi-%}M*{5XZEy zZVrN<<6mjOB4h;!t<4it?e8dQesV>KRWP+r+fMjR=lI$_KSo`f71B0FB=`vh@Cv5( z(Gj+loB5;-Rv=d-E1)mi4NCL10^U4*Xsy7tk4=Y4_bIi%wdaMS&PI8|Y6X6SV2+QE zD`~#d1Gx6<^}3pzoK(%q4Ruqm%~AZ(V=IdXgyKij)6?+}UV&>LGW+shl~uSEaBRjP zXG`&84@hn-s(1|!+P{9~T4p%fUxvH}!Sws8G2u^?d-e6-97@B59#Mj%^v4GbQ<20qFGJANL!yk2pd_ z?5RPhLt7rCQvw|c)BJI;kOHWTv{3T^GCEY-lHeg|)7E<>@x`9GaZ z692LaIgc;5-?%U6=;i0<_hkQ%xqrkx^7eA`)h&BI8~;G(I%J~0Hugl(h2meNY3BQWmr9m&Z-hR7s*Mg2eow5#}*SZyJ z%t_2#yJPQe;q|5K*Is`;qjk^cy-XSP*^imCw%&Sh=e4+gVOixoj_FN1yp!g?d0RiL zN=#&G{rckxpR2WRRPMj~`R~48+l0iGT@7mHZC2?26T+A@KUe+Q?z?%16qs)oz3bcI z?9ru=D3Lag)%97mwZoyzy&+mhuN}2(zL~f9;iuTH2Z3$DBCb35U7xD66lCp-jPv%1 z5j!|HA#m}*Bjz*i%sp|5)%CeLi_a}hv5DVg{J8ULe%ge1Op6RC`8R=~@@dK8jJSX8 zM|i*Qom%+)Qe1Rpe%cSUPtH%&tryfQ-tKgK=kl~tQseOh(@ocERZ?q}MCRHHI2dmV z$a_*JZ)@LoG5gNv{pevy$CCm->n7lO9{gm;9?we)mP-(Y%dofeDSl M)78&qol`;+0J7sLumAu6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-panel.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..907ada864fba34c7ecb15cc830f3d2bcb0558823 GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|S$^ zr;B4q#hkaZ6n&TiC652+F`JW@bK^#zN2#*+CX308Y`u{y_`0Olq`ef;?s>%1175yOhgP*XI}7 zZr40zI^-X|LjL}u!ph#=i_Nun1olTfG+EL9$GYT^S^R0C1&&KTKkF1cwyx46_{H^| z;yX@;YbBUSY3|?r`rP#YINS>MhM%}_=aD}@et+sOJdyNLEpot5wzjkCj znQ|#q@yO|#NTzR`zM|D#NBmzu+pc3 z4!qkwYv!7(=T`q=WejoJJ0J_D`-f^lf3;ez%$P)!{pBY4*R(c%JLO zaNqaX%tKYJ_3 z{8$~e`j*u--P&HI=vzEJd-jsUzyB$yl;62q{HJK=9g!KzOb28H8J=}87`U@ESSm4` z5oAp0<6tOuVIWf~S#?2-UimJCADPj-ul%Mzu;80@c3Cse31j(lhK;HyX4r^3FZ5~st4Gwe)#jCf3Camn((Y0Hv1i>J(-#>;_z+%ZO8XF z)nXRj3W`7f*=pbW{w-WxC;Vd>Q|z*elaIfi`q+Eow0oXUx8yInvOQ{TlFX-b*SQpa zyH~R_KU@4z#4BLtx*tbY==WZfNYvNRs(*2R!6u)4C*Ov7EA{@deNuS+$A$6KK2FgU z^L#Hv_^->}D=sqA{tMTF)MY;I&87F3DRD5RI9~h7%#?BcPSouyehM$6gN2R%E`F(y z{MlW@s@|dD>})SCFY5&|@8uU2mQS`SyZEz~>B>aoQ&-=bhKWzFE|)sO7Ar3`+o;6) zlgcOdaEI@Ee0OV0F5PWa@BZ5N#jh2=W=_g}6JJuN(QxL%-~T+a|B^y1E!5~oc^B6BPX({JBf2k-obn4jvYJHa!K_^k*D6w z4=%Dr?a%J4SL8Y~v!?iYd;EmQOb&hA43>HfPj)a+%4xVE{%TjQA2f_PH8eNfpnk_NuLH68X9L z8UyFMU3{UTybq1If|q9YrvAImbmUFe)?e2JB^h-OF3W67U%Of%w626zrvLc8x{kgB zLJ`mFRULX(z5H8ue|FsZ>xchv-^?+yl0UmjAr+|X1eeXxhXn^-mN`E1WsVfua9 zoAwjdV%d(b{zUFRu=~U5rHVtkW^=XFltSzsDaNzS%r~LV)(P6aDKLB0IJi zKW^?g<1fpod08YhVXnQV!s$)-_L(U4a^6a~(V0JEvz*S<{BNcbeQq6PR;I+ywtlm%D!y9S}U&cwZoqp-Vr}?-*H-2^QMXUe(WhXtic=8_&1I90d Mr>mdKI;Vst09D-RLjV8( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-top.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-top.png new file mode 100644 index 0000000000000000000000000000000000000000..dba2c6a901753889ab0e12f2c968084535808fe9 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TRs zr;B4q#hkZOtofP^1YFdE^c*@}9G#tyr&_46FIu>8!E+9kXa!e6dFeeS#_Nw{^V{&& zHOp`^SPC%|sW3e8U^p?6VS+NFf;*E#A4>zt5=ZhfZkK6xB^Bq+QY(r5-lV+p^J3PB z9jtHHR!+9E_i_jg^*(XNfJaaF!-?y%0#+Gmn{}+`ZkFs9t9ZJaQPDYVOQuxMV~LU# zXX`w#F`ch5eUPK@<^FH=tFaH}%3o=yoEJDP^$Pcmc_9_gj5tp3j~n?GQF(=o-@{|&P^Fz^^W MUHx3vIVCg!06`yvzyJUM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-vend.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedark.rsi/fridge_dark-vend.png new file mode 100644 index 0000000000000000000000000000000000000000..62eb44a95dc48dcd36a1e2965f4b39b2653c2621 GIT binary patch literal 2621 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-broken.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..7295f0f4fd7c125e4be26a7b35f746c5ced70e66 GIT binary patch literal 2138 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-panel.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..aa50a1978db9ae750907e881335fd6d95e319cac GIT binary patch literal 631 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|S$$ zr;B4q#hkaZY&{M;NVMHw)T~faP*8mBXy}Vq34sC&Sy&xITm)PWo;>PmuI{>8Ly3!Z zp-{I{)TWNz-HX?8xw6!2Sa|K>R@-Kp74&}6!{76sPWtlr-s{ORK}ESNg%J!LhnXB? z#26lJU=V0$ZLrW`IFiVyz{kx{IE8D5gxvP#YwzUVs4kdM^=T@XMqJd4nREVa&Z|vl zwpyVce_Es>=3ddQYdS0m9(;Tmm$P2DFYIK7g_>z3t zQd=rF?w{7WU6wTwWcgGt&cbrnm@AXd?`OvDVz6ia@P+M*|Ns8?@2X#2M)$)TbZm6y z+?p2Iz;(%ut$F6Z1Mw=SYUVM$YugiY$9qZc0iHcaL_}^r|Jyln#n~?F`@$c7eQDac z%q)6eaQ*&StZv(<@;Q9dWKWDJ-XR>h^~ltCQ`R|GMFJU2988N6nHJ^GocL>@THl}i z?+oRdFTXjyWw=xK+08N_Hsoh0(-WadyQeH+-u`~6>;LnQPvn2mp71s+?5xzjH_kR~ zZ%*wCp1Ysl;8e~1;|pSvgwFe}c=TFw4o^vWztMg#hgF+jfBv+ik#Cxqb)C)c!l%_t veQT1R)<>>gTe~DWM4fh6NM3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-sidepanel.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-sidepanel.png new file mode 100644 index 0000000000000000000000000000000000000000..802fedbec3e1f993a0d659e165f537a3345b7056 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vo2 zPZ!6KiaBqm8G0XfkZ6lPxN*U|uI9ID97=O_x@Pa-$h+kFt3Ky{!;X&G0Rk@-rg+Wm z`XTQUp81#cl=RLb-^t#Wo=tlATW-RWzMAiH{`+o3w-$sjv@B*)kP&5gxPpPhoz=lY zi{Vfpqd*^51DR4moEfokfA{sYN&NQ-(%rRjTi@a;X7lgcwNEh4|JlhTVfRyx{o(Q7 z?Kke+E3*6l^<(G3-`Wv}Z>6gKIOqSDvt-@v3h6$f`H$JG&zkKj=RYAF|I?4rs(@WeVYDH(q!6CwKHrL=XZXP{@{4;=R~HST5+`tcXpq+#p?Pj z{T;)$nTEOS$7^R-PA>m9r$Oa+;Qd)QXK35xii^zMe<9F9>%{lj->2FuACR#;@8`F? z*#EEGx3aS4)wb`I*0p8t-nF3T&rZGv6DR+V&72Zm{BPUy*dteOeAeqaH=k>PWL)Jd zBkr4zKkVt=A!Xe6s%g`wySyBz}xhvnlxtK*J^mHUqAh--ELm4sYx9*@3|JVc3217cU<`ML~wx-Zy@WXpS?_rG_>9Z zD_@Z~$h&Lq3#a*C6IRr0T<=(J60_s-!k4pwW;~N~zV@28P@&b>#z}~0;`>;}l6%kg pUgKSMSyDFWRl!fM-0n+1>ub})znF?9Jp#rzgQu&X%Q~loCIBtO>_Gqk literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-top.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-top.png new file mode 100644 index 0000000000000000000000000000000000000000..468f253660bb0aa5d46fdeec188dbd0bd7106a38 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TR? zr;B4q#hkZO47m}P!sW3e8U^p?6VS+NFf;*E#A4`J_CxfLB1IZE(sua$DHtJe*D>6{T zV^T^>!;f?2VhM+Q11{^B?E5^ICFS*&EjKOW^&O)Gl;ZOn-Yznf_J4HEcC+vz)`g$0 zGR#&@Ho2Qtapzsw^jUZL??nk1#q(xFZ}|JY?&DXnmUH3E|9G{3uYb;c`RJLKNyW?Z zx!X>JGtXk1`uFh5j;l2{UltXY?Y~)?bui#(mc!lS@9Wp=$KGpF{QOe-16%9Q*~*`m S#ZLr=AcLo?pUXO@geCwTSdHcY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-vend.png b/Resources/Textures/Structures/Machines/VendingMachines/fridgedrink.rsi/fridge_drinks-vend.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5fd3177e54e74a7957bda828606da791269aa3 GIT binary patch literal 2691 zcmZ`*eIS!-8-F%Ctr_9a(Oa0(q7stw)!F1DU->AN%Ok%zJAy5xvu+qvb;T=Rh2g@ z0|21v>f(3|oJrugw|*V?d_@Uc1}8+kiys~UHoQ^{NdE2(TL3_LzpLY+;}?pjODK#E3xKyF>+d2Krys*p0*@!Qh-sQE?Wy^i$-KaZH?=JgC`P3fSJJk2w zZg{<0bkO5`G{xi1YZ1z~EXhZHXk{F0e_BXLW?cwRIy=&X=Zz$?q*q3UQsQ{?XL-eV zVNVnPpm4gwvTBz`K+0m=K=HNXCr;#_5HXn~!OX$(tHRq=szCfx`p$V$hA>CCQzI%1 zVpgyTz(*+At&X2oKW&2Ks&c1n`yU2&p#v7vQ@=qAyYE`0P#9{7JI9*F3APKVlg3)Q z-voV?qR+F5+9V^uAs!8C`d2|mm2k7CzGXkKfP zeC?_c1Z&p5^oYC6a4` zD}|Z+#-=mr@!dzWuErHmqhL%Itv|Z4@{6I|^ubw-ivQegQO!JF2<`AHdW^DXLdQAx z)r?Y`mIC3Iy{)Y{Iaf9H6_NqK2(+TijU+iiwkkX|Y=Cy==sp=D;7)ku}X+%)8fST zfg$zkB;A!m;$?#CbWy$C9;%#_h{;)>AxCK2n%#Tufa|YwzA*}N#2Q#6i ztlTgwR>d_9K#L)HU-`b^O2g~#+;%t>l-2_T@2Kv}iTbw}2jPITX@KRHLd=q#KMY8_i&LcHuF?dMfJhD

public static readonly CVarDef - EventsRampingAverageEndTime = CVarDef.Create("events.ramping_average_end_time", 40f, CVar.ARCHIVE | CVar.SERVERONLY); + EventsRampingAverageEndTime = CVarDef.Create("events.ramping_average_end_time", 120f, CVar.ARCHIVE | CVar.SERVERONLY); /// /// Average ending chaos modifier for the ramping event scheduler. /// Max chaos chosen for a round will deviate from this /// public static readonly CVarDef - EventsRampingAverageChaos = CVarDef.Create("events.ramping_average_chaos", 6f, CVar.ARCHIVE | CVar.SERVERONLY); + EventsRampingAverageChaos = CVarDef.Create("events.ramping_average_chaos", 4f, CVar.ARCHIVE | CVar.SERVERONLY); /* * Game @@ -173,6 +173,33 @@ public static readonly CVarDef public static readonly CVarDef GameLobbyEnableWin = CVarDef.Create("game.enablewin", true, CVar.ARCHIVE); + /// + /// Minimum time between Basic station events in seconds + /// + public static readonly CVarDef // 15 Minutes + GameEventsBasicMinimumTime = CVarDef.Create("game.events_basic_minimum_time", 900, CVar.SERVERONLY); + + /// + /// Maximum time between Basic station events in seconds + /// + public static readonly CVarDef // 35 Minutes + GameEventsBasicMaximumTime = CVarDef.Create("game.events_basic_maximum_time", 2100, CVar.SERVERONLY); + + /// + /// Minimum time between Ramping station events in seconds + /// + public static readonly CVarDef // 20 Minutes + GameEventsRampingMinimumTime = CVarDef.Create("game.events_ramping_minimum_time", 1200, CVar.SERVERONLY); + + /// + /// Maximum time between Ramping station events in seconds + /// + public static readonly CVarDef // 45 Minutes + GameEventsRampingMaximumTime = CVarDef.Create("game.events_ramping_maximum_time", 2700, CVar.SERVERONLY); + + /// + /// + /// /// Controls the maximum number of character slots a player is allowed to have. /// From 3eb60a4f94f78cc79faded095c0f3239a613819b Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Tue, 25 Jun 2024 20:47:34 +0000 Subject: [PATCH 52/68] Automatic Changelog Update (#486) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ba0f93aada..4196918ca7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4239,3 +4239,9 @@ Entries: zoom whenever the gravity turns off. id: 6129 time: '2024-06-25T20:19:11.0000000+00:00' +- author: DEATHB4DEFEAT + changes: + - type: Tweak + message: Mid-round events will occur much less often + id: 6130 + time: '2024-06-25T20:47:09.0000000+00:00' From afff07816ec32ac465b77bb37f61ab8c793c81ed Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 26 Jun 2024 19:00:18 -0400 Subject: [PATCH 53/68] More updates --- .../Abilities/MetapsionicPowerSystem.cs | 7 ++-- .../Abilities/PyrokinesisPowerSystem.cs | 32 +++++++++---------- .../Structures/GlimmerStructuresSystem.cs | 8 +++++ .../nyanotrasen/psionics/psychic-feedback.ftl | 1 + .../Entities/Mobs/NPCs/glimmer_creatures.yml | 4 +++ 5 files changed, 31 insertions(+), 21 deletions(-) diff --git a/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs b/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs index d74f5efa43..8c72a02737 100644 --- a/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs @@ -125,9 +125,7 @@ private void OnFocusedPowerUsed(FocusedMetapsionicPowerActionEvent args) _popups.PopupEntity(Loc.GetString("focused-metapsionic-pulse-begin", ("entity", args.Target)), args.Performer, PopupType.Medium); _audioSystem.PlayPvs(component.SoundUse, args.Performer, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); - _psionics.LogPowerUsed(args.Performer, "focused metapsionic pulse", psionic, - (int) MathF.Round(3 * psionic.Amplification - psionic.Dampening), - (int) MathF.Round(6 * psionic.Amplification - psionic.Dampening)); + _psionics.LogPowerUsed(args.Performer, "focused metapsionic pulse", psionic, 3, 6); args.Handled = true; UpdateActions(args.Performer, component); @@ -137,7 +135,8 @@ private void OnDoAfter(EntityUid uid, MetapsionicPowerComponent component, Focus { component.DoAfter = null; - if (args.Target == null) return; + if (args.Target == null || args.Cancelled) + return; if (TryComp(args.Target, out var swapped)) { diff --git a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs index 05c1e6ff46..c69e05af45 100644 --- a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Actions; using Content.Shared.Psionics.Abilities; +using Content.Shared.Psionics.Glimmer; using Content.Server.Atmos.Components; using Content.Server.Weapons.Ranged.Systems; using Robust.Server.GameObjects; @@ -15,7 +16,7 @@ public sealed class PyrokinesisPowerSystem : EntitySystem [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly GunSystem _gunSystem = default!; - [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; public override void Initialize() { base.Initialize(); @@ -51,29 +52,26 @@ private void OnShutdown(EntityUid uid, PyrokinesisPowerComponent component, Comp private void OnPowerUsed(PyrokinesisPowerActionEvent args) { - if (!TryComp(args.Performer, out var psionic)) - return; - - if (!HasComp(args.Performer)) + if (!HasComp(args.Performer) + && TryComp(args.Performer, out var psionic)) { - var xformQuery = GetEntityQuery(); - var xform = xformQuery.GetComponent(args.Performer); - - var mapPos = xform.Coordinates.ToMap(EntityManager, _xform); - var spawnCoords = _mapManager.TryFindGridAt(mapPos, out var gridUid, out _) - ? xform.Coordinates.WithEntityId(gridUid, EntityManager) - : new(_mapManager.GetMapEntityId(mapPos.MapId), mapPos.Position); + var spawnCoords = Transform(args.Performer).Coordinates; var ent = Spawn("ProjectileAnomalyFireball", spawnCoords); if (TryComp(ent, out var fireball)) { - fireball.MaxIntensity = (int) MathF.Round(20 * psionic.Amplification - 10 * psionic.Dampening); + fireball.MaxIntensity = (int) MathF.Round(5 * psionic.Amplification); + fireball.IntensitySlope = (int) MathF.Round(1 * psionic.Amplification); + fireball.TotalIntensity = (int) MathF.Round(10 * psionic.Amplification); + + if (_glimmerSystem.Glimmer >= 500) + fireball.CanCreateVacuum = true; + else fireball.CanCreateVacuum = false; - if (psionic.Amplification > 5 && EnsureComp(ent, out var ignite)) - { - ignite.FireStacks = 0.2f * psionic.Amplification - 0.1f * psionic.Dampening; - } + if (psionic.Amplification > 5) + if (EnsureComp(ent, out var ignite)) + ignite.FireStacks = 0.2f * psionic.Amplification; } var direction = args.Target.ToMapPos(EntityManager, _xform) - spawnCoords.ToMapPos(EntityManager, _xform); diff --git a/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs b/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs index 75125569cb..5d16c4e5e4 100644 --- a/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs +++ b/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Anomaly.Components; +using Content.Shared.Mobs; using Content.Shared.Psionics.Glimmer; namespace Content.Server.Psionics.Glimmer @@ -22,6 +23,7 @@ public override void Initialize() SubscribeLocalEvent(OnAnomalyPulse); SubscribeLocalEvent(OnAnomalySupercritical); + SubscribeLocalEvent(OnMobStateChanged); } private void OnAnomalyVesselPowerChanged(EntityUid uid, AnomalyVesselComponent component, ref PowerChangedEvent args) @@ -53,6 +55,12 @@ private void OnAnomalySupercritical(EntityUid uid, GlimmerSourceComponent compon _glimmerSystem.Glimmer += 100; } + private void OnMobStateChanged(EntityUid uid, GlimmerSourceComponent component, ref MobStateChangedEvent args) + { + if (args.NewMobState != MobState.Alive) + component.Active = false; + } + public override void Update(float frameTime) { base.Update(frameTime); diff --git a/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl index 446573b7a9..2add055f7b 100644 --- a/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl +++ b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl @@ -25,6 +25,7 @@ oracle-feedback = WHY DO YOU BOTHER ME SEEKER? HAVE I NOT MADE MY DESIRES CLEAR? orecrab-feedback = Heralds of the Lord of Earth, summoned to this realm from Grome's kingdom reagent-slime-feedback = Heralds of the Lord of Water, summoned to this realm from Straasha's kingdom. flesh-golem-feedback = Abominations pulled from dead realms, twisted amalgamations of those fallen to the influence of primordial Chaos +glimmer-mite-feedback = A semi-corporeal parasite native to the dreamlight, its presence here brings forth the screams of dead stars. # Anomaly Feedback Messages anomaly-pyroclastic-feedback = A small mirror to the plane of Gehenna, truth lies within the Secret of Fire diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/glimmer_creatures.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/glimmer_creatures.yml index e3eb9cd6de..1f1000f04a 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/glimmer_creatures.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/glimmer_creatures.yml @@ -24,6 +24,10 @@ Quantity: 15 - type: PotentialPsionic - type: Psionic + removable: false + amplification: 1 + psychicFeedback: + - "glimmer-mite-feedback" - type: GlimmerSource - type: AmbientSound range: 6 From d9d74ded88a7565d55cd436cad8890740831e25a Mon Sep 17 00:00:00 2001 From: fox Date: Thu, 27 Jun 2024 12:45:11 +0300 Subject: [PATCH 54/68] Minor improvements --- Content.Shared/Language/ObfuscationMethods.cs | 14 +++++++++++-- .../Entities/Objects/Devices/translators.yml | 20 +++++++++---------- Resources/Prototypes/Language/languages.yml | 6 +++--- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/Content.Shared/Language/ObfuscationMethods.cs b/Content.Shared/Language/ObfuscationMethods.cs index 7bd2a17542..51230c4797 100644 --- a/Content.Shared/Language/ObfuscationMethods.cs +++ b/Content.Shared/Language/ObfuscationMethods.cs @@ -6,8 +6,18 @@ namespace Content.Shared.Language; [ImplicitDataDefinitionForInheritors] public abstract partial class ObfuscationMethod { - public static readonly ObfuscationMethod Default = new ReplacementObfuscation(); + /// + /// The fallback obfuscation method, replaces the message with the string "<?>". + /// + public static readonly ObfuscationMethod Default = new ReplacementObfuscation + { + Replacement = new List { "" } + }; + /// + /// Obfuscates the provided message and writes the result into the provided StringBuilder. + /// Implementations should use the context's pseudo-random number generator and provide stable obfuscations. + /// internal abstract void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context); /// @@ -36,7 +46,7 @@ public partial class ReplacementObfuscation : ObfuscationMethod internal override void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context) { - var idx = context.PseudoRandomNumber(0, 0, Replacement.Count - 1); + var idx = context.PseudoRandomNumber(message.GetHashCode(), 0, Replacement.Count - 1); builder.Append(Replacement[idx]); } } diff --git a/Resources/Prototypes/Entities/Objects/Devices/translators.yml b/Resources/Prototypes/Entities/Objects/Devices/translators.yml index 18f2dead68..664626ea4b 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/translators.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/translators.yml @@ -1,7 +1,7 @@ - type: entity abstract: true id: TranslatorUnpowered - parent: [ BaseItem ] + parent: BaseItem name: translator description: Translates speech. components: @@ -36,7 +36,7 @@ - type: entity abstract: true id: TranslatorEmpty - parent: [ Translator ] + parent: Translator suffix: Empty components: - type: ItemSlots @@ -49,7 +49,7 @@ id: CanilunztTranslator parent: [ TranslatorEmpty ] name: Canilunzt translator - description: Translates speech between Canilunzt and Galactic Common. + description: Translates speech between Canilunzt and Galactic Common, allowing your local yeepers to communicate with the locals and vice versa! components: - type: HandheldTranslator spoken: @@ -66,7 +66,7 @@ id: BubblishTranslator parent: [ TranslatorEmpty ] name: Bubblish translator - description: Translates speech between Bubblish and Galactic Common. + description: Translates speech between Bubblish and Galactic Common, helping communicate with slimes and slime people. components: - type: HandheldTranslator spoken: @@ -83,7 +83,7 @@ id: NekomimeticTranslator parent: [ TranslatorEmpty ] name: Nekomimetic translator - description: Translates speech between Nekomimetic and Galactic Common. Why would you want that? + description: Translates speech between Nekomimetic and Galactic Common, enabling you to communicate with your pet cats. components: - type: HandheldTranslator spoken: @@ -100,7 +100,7 @@ id: DraconicTranslator parent: [ TranslatorEmpty ] name: Draconic translator - description: Translates speech between Draconic and Galactic Common. + description: Translates speech between Draconic and Galactic Common, making it easier to understand your local Uniathi. components: - type: HandheldTranslator spoken: @@ -134,7 +134,7 @@ id: RootSpeakTranslator parent: [ TranslatorEmpty ] name: RootSpeak translator - description: Translates speech between RootSpeak and Galactic Common. Like a true plant? + description: Translates speech between RootSpeak and Galactic Common. You may now speak for the trees. components: - type: HandheldTranslator spoken: @@ -151,7 +151,7 @@ id: MofficTranslator parent: [ TranslatorEmpty ] name: Moffic translator - description: Translates speech between Moffic and Galactic Common. Like a true moth... or bug? + description: Translates speech between Moffic and Galactic Common, helping you understand the buzzes of your pet mothroach! components: - type: HandheldTranslator spoken: @@ -168,7 +168,7 @@ id: XenoTranslator parent: [ TranslatorEmpty ] name: Xeno translator - description: Translates speech between Xeno and Galactic Common. Not sure if that will help. + description: Translates speech between Xeno and Galactic Common. This will probably not help you survive an encounter, though. components: - type: HandheldTranslator spoken: @@ -184,7 +184,7 @@ id: AnimalTranslator parent: [ TranslatorEmpty ] name: Animal translator - description: Translates all the cutes noises that animals make into a more understandable form! + description: Translates all the cutes noises that most animals make into a more understandable form! components: - type: HandheldTranslator understood: diff --git a/Resources/Prototypes/Language/languages.yml b/Resources/Prototypes/Language/languages.yml index fabcaad08e..1a874612c2 100644 --- a/Resources/Prototypes/Language/languages.yml +++ b/Resources/Prototypes/Language/languages.yml @@ -1,11 +1,11 @@ # The universal language, assumed if the entity has a UniversalLanguageSpeakerComponent. -# Do not use otherwise. Try to use the respective component instead of this language. +# Do not use otherwise. Making an entity explicitly understand/speak this language will NOT have the desired effect. - type: language id: Universal obfuscation: - !type:ReplacementObfuscation # Should never be used anyway + !type:ReplacementObfuscation replacement: - - "*incomprehensible*" + - "*incomprehensible*" # Never actually used # The common galactic tongue. - type: language From 3971ec31a4e45aae79904ed8c13772ebd3be8105 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 27 Jun 2024 09:28:03 -0400 Subject: [PATCH 55/68] Fix Shuttle FTL (#490) --- Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs | 4 ++-- Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs b/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs index 035823af43..fed2a9f171 100644 --- a/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs +++ b/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs @@ -66,11 +66,11 @@ public BaseShuttleControl(float minRange, float maxRange, float range) : base(mi protected void DrawData(DrawingHandleScreen handle, string text) { - var coordsDimensions = handle.GetDimensions(Font, text, UIScale); + var coordsDimensions = handle.GetDimensions(Font, text, 1f); const float coordsMargins = 5f; handle.DrawString(Font, - new Vector2(coordsMargins, Height) - new Vector2(0f, coordsDimensions.Y + coordsMargins), + new Vector2(coordsMargins, PixelHeight) - new Vector2(0f, coordsDimensions.Y + coordsMargins), text, Color.FromSrgb(IFFComponent.SelfColor)); } diff --git a/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs b/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs index 2ce1906d3d..2f35a8dffd 100644 --- a/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs +++ b/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs @@ -116,7 +116,7 @@ protected override void KeyBindUp(GUIBoundKeyEventArgs args) var mapTransform = Matrix3.CreateInverseTransform(Offset, Angle.Zero); - if (beaconsOnly && TryGetBeacon(_beacons, mapTransform, args.RelativePosition, PixelRect, out var foundBeacon, out _)) + if (beaconsOnly && TryGetBeacon(_beacons, mapTransform, args.RelativePixelPosition, PixelRect, out var foundBeacon, out _)) { RequestBeaconFTL?.Invoke(foundBeacon.Entity, _ftlAngle); } @@ -206,7 +206,8 @@ private void DrawParallax(DrawingHandleScreen handle) private List GetViewportMapObjects(Matrix3 matty, List mapObjects) { var results = new List(); - var viewBox = SizeBox.Scale(1.2f); + var enlargement = new Vector2i((int) (16 * UIScale), (int) (16 * UIScale)); + var viewBox = new UIBox2i(Vector2i.Zero - enlargement, PixelSize + enlargement); foreach (var mapObj in mapObjects) { @@ -398,8 +399,8 @@ protected override void Draw(DrawingHandleScreen handle) foreach (var (gridUiPos, iffText) in sendStrings) { - var textWidth = handle.GetDimensions(_font, iffText, UIScale); - handle.DrawString(_font, gridUiPos + textWidth with { X = -textWidth.X / 2f }, iffText, adjustedColor); + var textWidth = handle.GetDimensions(_font, iffText, 1f); + handle.DrawString(_font, gridUiPos + textWidth with { X = -textWidth.X / 2f, Y = textWidth.Y * UIScale }, iffText, adjustedColor); } } @@ -587,7 +588,7 @@ private bool TryGetBeacon(IEnumerable mapObjects, Matrix3 mapTransfo var distance = (localPos - mousePos).Length(); - if (distance > BeaconSnapRange || + if (distance > BeaconSnapRange * UIScale || distance > nearestValue) { continue; From efeb93b74e188c5a79b8ebf53e7e1cf2e1fcb073 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 27 Jun 2024 13:46:50 -0400 Subject: [PATCH 56/68] Port Height Sliders (#458) --- .../Humanoid/HumanoidAppearanceSystem.cs | 12 + .../Preferences/UI/HumanoidProfileEditor.xaml | 16 + .../UI/HumanoidProfileEditor.xaml.cs | 148 ++ .../Tests/Preferences/ServerDbSqliteTests.cs | 2 + .../20240127102028_Height.Designer.cs | 1372 +++++++++++++++++ .../Postgres/20240127102028_Height.cs | 40 + .../PostgresServerDbContextModelSnapshot.cs | 10 + .../Sqlite/20240127102028_Height.Designer.cs | 1304 ++++++++++++++++ .../Sqlite/20240127102028_Height.cs | 40 + .../SqliteServerDbContextModelSnapshot.cs | 10 + Content.Server.Database/Model.cs | 2 + Content.Server/Database/ServerDbBase.cs | 4 + .../Systems/HumanoidAppearanceSystem.cs | 2 + Content.Shared/CCVar/CCVars.cs | 12 + .../HeightAdjust/HeightAdjustSystem.cs | 80 + .../Humanoid/HumanoidAppearanceComponent.cs | 12 + .../Humanoid/Prototypes/SpeciesPrototype.cs | 48 + .../SharedHumanoidAppearanceSystem.cs | 63 + .../Preferences/HumanoidCharacterProfile.cs | 65 +- .../ui/humanoid-profile-editor.ftl | 3 + Resources/Prototypes/DeltaV/Species/harpy.yml | 6 + .../Entities/Mobs/Species/dwarf.yml | 4 - .../Nyanotrasen/Entities/Mobs/Species/Oni.yml | 2 +- .../Entities/Mobs/Species/felinid.yml | 1 + .../Prototypes/Nyanotrasen/Species/Oni.yml | 6 + .../Nyanotrasen/Species/felinid.yml | 6 + .../humanoidProfiles/felinid.yml | 6 + .../SimpleStation14/humanoidProfiles/oni.yml | 6 + Resources/Prototypes/Species/dwarf.yml | 6 + Resources/Prototypes/Species/reptilian.yml | 6 + 30 files changed, 3279 insertions(+), 15 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20240127102028_Height.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20240127102028_Height.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240127102028_Height.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240127102028_Height.cs create mode 100644 Content.Shared/HeightAdjust/HeightAdjustSystem.cs create mode 100644 Resources/Prototypes/SimpleStation14/humanoidProfiles/felinid.yml create mode 100644 Resources/Prototypes/SimpleStation14/humanoidProfiles/oni.yml diff --git a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs index 5bae35da5b..8087d1833e 100644 --- a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs +++ b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs @@ -1,3 +1,4 @@ +using System.Numerics; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; @@ -30,6 +31,15 @@ private void UpdateSprite(HumanoidAppearanceComponent component, SpriteComponent UpdateLayers(component, sprite); ApplyMarkingSet(component, sprite); + var speciesPrototype = _prototypeManager.Index(component.Species); + + var height = Math.Clamp(component.Height, speciesPrototype.MinHeight, speciesPrototype.MaxHeight); + var width = Math.Clamp(component.Width, speciesPrototype.MinWidth, speciesPrototype.MaxWidth); + component.Height = height; + component.Width = width; + + sprite.Scale = new Vector2(width, height); + sprite[sprite.LayerMapReserveBlank(HumanoidVisualLayers.Eyes)].Color = component.EyeColor; } @@ -194,6 +204,8 @@ public override void LoadProfile(EntityUid uid, HumanoidCharacterProfile profile humanoid.Species = profile.Species; humanoid.SkinColor = profile.Appearance.SkinColor; humanoid.EyeColor = profile.Appearance.EyeColor; + humanoid.Height = profile.Height; + humanoid.Width = profile.Width; UpdateSprite(humanoid, Comp(uid)); } diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml index 38d4a411ff..e34eb41ef9 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml @@ -108,6 +108,22 @@ [ViewVariables] public HumanoidCharacterProfile? LastProfileLoaded; + + /// + /// The height of this humanoid. + /// + [DataField, AutoNetworkedField] + public float Height = 1f; + + /// + /// The width of this humanoid. + /// + [DataField, AutoNetworkedField] + public float Width = 1f; } [DataDefinition] diff --git a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs index 8564ebe8e1..8268d0d7c7 100644 --- a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs +++ b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs @@ -126,6 +126,54 @@ public sealed partial class SpeciesPrototype : IPrototype /// [DataField] public string GuideBookIcon = "SpeciesInfoDefault"; + + /// + /// The minimum height for this species + /// + [DataField] + public float MinHeight = 0.75f; + + /// + /// The default height for this species + /// + [DataField] + public float DefaultHeight = 1f; + + /// + /// The maximum height for this species + /// + [DataField] + public float MaxHeight = 1.25f; + + /// + /// The minimum width for this species + /// + [DataField] + public float MinWidth = 0.7f; + + /// + /// The default width for this species + /// + [DataField] + public float DefaultWidth = 1f; + + /// + /// The maximum width for this species + /// + [DataField] + public float MaxWidth = 1.3f; + + /// + /// The average height in centimeters for this species, used to calculate player facing height values in UI elements + /// + [DataField] + public float AverageHeight = 176.1f; + + /// + /// The average shoulder-to-shoulder width in cm for this species, used to calculate player facing width values in UI elements + /// + [DataField] + public float AverageWidth = 40f; } public enum SpeciesNaming : byte diff --git a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs index 4974e283dd..6062bec8b0 100644 --- a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs +++ b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs @@ -1,8 +1,10 @@ using System.Linq; +using System.Numerics; using Content.Shared.Decals; using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; +using Content.Shared.HeightAdjust; using Robust.Shared.GameObjects.Components.Localization; using Robust.Shared.Network; using Robust.Shared.Prototypes; @@ -23,6 +25,7 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly MarkingManager _markingManager = default!; + [Dependency] private readonly HeightAdjustSystem _heightAdjust = default!; [ValidatePrototypeId] public const string DefaultSpecies = "Human"; @@ -248,6 +251,64 @@ public void SetSex(EntityUid uid, Sex sex, bool sync = true, HumanoidAppearanceC } } + /// + /// Set the height of a humanoid mob + /// + /// The humanoid mob's UID + /// The height to set the mob to + /// Whether to immediately synchronize this to the humanoid mob, or not + /// Humanoid component of the entity + public void SetHeight(EntityUid uid, float height, bool sync = true, HumanoidAppearanceComponent? humanoid = null) + { + if (!Resolve(uid, ref humanoid) || MathHelper.CloseTo(humanoid.Height, height, 0.001f)) + return; + + var species = _prototypeManager.Index(humanoid.Species); + humanoid.Height = Math.Clamp(height, species.MinHeight, species.MaxHeight); + + if (sync) + Dirty(humanoid); + } + + /// + /// Set the width of a humanoid mob + /// + /// The humanoid mob's UID + /// The width to set the mob to + /// Whether to immediately synchronize this to the humanoid mob, or not + /// Humanoid component of the entity + public void SetWidth(EntityUid uid, float width, bool sync = true, HumanoidAppearanceComponent? humanoid = null) + { + if (!Resolve(uid, ref humanoid) || MathHelper.CloseTo(humanoid.Width, width, 0.001f)) + return; + + var species = _prototypeManager.Index(humanoid.Species); + humanoid.Width = Math.Clamp(width, species.MinWidth, species.MaxWidth); + + if (sync) + Dirty(humanoid); + } + + /// + /// Set the scale of a humanoid mob + /// + /// The humanoid mob's UID + /// The scale to set the mob to + /// Whether to immediately synchronize this to the humanoid mob, or not + /// Humanoid component of the entity + public void SetScale(EntityUid uid, Vector2 scale, bool sync = true, HumanoidAppearanceComponent? humanoid = null) + { + if (!Resolve(uid, ref humanoid)) + return; + + var species = _prototypeManager.Index(humanoid.Species); + humanoid.Height = Math.Clamp(scale.Y, species.MinHeight, species.MaxHeight); + humanoid.Width = Math.Clamp(scale.X, species.MinWidth, species.MaxWidth); + + if (sync) + Dirty(humanoid); + } + /// /// Loads a humanoid character profile directly onto this humanoid mob. /// @@ -329,6 +390,8 @@ public virtual void LoadProfile(EntityUid uid, HumanoidCharacterProfile profile, humanoid.Age = profile.Age; + _heightAdjust.SetScale(uid, new Vector2(profile.Width, profile.Height)); + humanoid.LastProfileLoaded = profile; // DeltaV - let paradox anomaly be cloned Dirty(humanoid); diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index 8cf504582d..601a62da89 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -35,6 +35,8 @@ private HumanoidCharacterProfile( string name, string flavortext, string species, + float height, + float width, int age, Sex sex, Gender gender, @@ -51,6 +53,8 @@ private HumanoidCharacterProfile( Name = name; FlavorText = flavortext; Species = species; + Height = height; + Width = width; Age = age; Sex = sex; Gender = gender; @@ -72,7 +76,7 @@ private HumanoidCharacterProfile( List antagPreferences, List traitPreferences, List loadoutPreferences) - : this(other.Name, other.FlavorText, other.Species, other.Age, other.Sex, other.Gender, other.Appearance, + : this(other.Name, other.FlavorText, other.Species, other.Height, other.Width, other.Age, other.Sex, other.Gender, other.Appearance, other.Clothing, other.Backpack, other.SpawnPriority, jobPriorities, other.PreferenceUnavailable, antagPreferences, traitPreferences, loadoutPreferences) { @@ -90,6 +94,8 @@ public HumanoidCharacterProfile( string name, string flavortext, string species, + float height, + float width, int age, Sex sex, Gender gender, @@ -102,7 +108,7 @@ public HumanoidCharacterProfile( IReadOnlyList antagPreferences, IReadOnlyList traitPreferences, IReadOnlyList loadoutPreferences) - : this(name, flavortext, species, age, sex, gender, appearance, clothing, backpack, spawnPriority, + : this(name, flavortext, species, height, width, age, sex, gender, appearance, clothing, backpack, spawnPriority, new Dictionary(jobPriorities), preferenceUnavailable, new List(antagPreferences), new List(traitPreferences), new List(loadoutPreferences)) @@ -118,6 +124,8 @@ public HumanoidCharacterProfile() : this( "John Doe", "", SharedHumanoidAppearanceSystem.DefaultSpecies, + 1f, + 1f, 18, Sex.Male, Gender.Male, @@ -147,6 +155,8 @@ public static HumanoidCharacterProfile DefaultWithSpecies(string species = Share "John Doe", "", species, + 1f, + 1f, 18, Sex.Male, Gender.Male, @@ -186,10 +196,14 @@ public static HumanoidCharacterProfile RandomWithSpecies(string species = Shared var sex = Sex.Unsexed; var age = 18; + var height = 1f; + var width = 1f; if (prototypeManager.TryIndex(species, out var speciesPrototype)) { sex = random.Pick(speciesPrototype.Sexes); age = random.Next(speciesPrototype.MinAge, speciesPrototype.OldAge); // people don't look and keep making 119 year old characters with zero rp, cap it at middle aged + height = random.NextFloat(speciesPrototype.MinHeight, speciesPrototype.MaxHeight); + width = random.NextFloat(speciesPrototype.MinWidth, speciesPrototype.MaxWidth); } var gender = Gender.Epicene; @@ -206,7 +220,7 @@ public static HumanoidCharacterProfile RandomWithSpecies(string species = Shared var name = GetName(species, gender); - return new HumanoidCharacterProfile(name, "", species, age, sex, gender, + return new HumanoidCharacterProfile(name, "", species, height, width, age, sex, gender, HumanoidCharacterAppearance.Random(species, sex), ClothingPreference.Jumpsuit, BackpackPreference.Backpack, SpawnPriorityPreference.None, new Dictionary @@ -217,8 +231,15 @@ public static HumanoidCharacterProfile RandomWithSpecies(string species = Shared public string Name { get; private set; } public string FlavorText { get; private set; } + [DataField("species")] public string Species { get; private set; } + [DataField("height")] + public float Height { get; private set; } + + [DataField("width")] + public float Width { get; private set; } + [DataField("age")] public int Age { get; private set; } @@ -271,6 +292,15 @@ public HumanoidCharacterProfile WithSpecies(string species) return new(this) { Species = species }; } + public HumanoidCharacterProfile WithHeight(float height) + { + return new(this) { Height = height }; + } + + public HumanoidCharacterProfile WithWidth(float width) + { + return new(this) { Width = width }; + } public HumanoidCharacterProfile WithCharacterAppearance(HumanoidCharacterAppearance appearance) { @@ -396,6 +426,8 @@ public bool MemberwiseEquals(ICharacterProfile maybeOther) if (maybeOther is not HumanoidCharacterProfile other || Name != other.Name || Age != other.Age + || Height != other.Height + || Width != other.Width || Sex != other.Sex || Gender != other.Gender || PreferenceUnavailable != other.PreferenceUnavailable @@ -407,7 +439,6 @@ public bool MemberwiseEquals(ICharacterProfile maybeOther) || !_traitPreferences.SequenceEqual(other._traitPreferences) || !_loadoutPreferences.SequenceEqual(other._loadoutPreferences)) return false; - return Appearance.MemberwiseEquals(other.Appearance); } @@ -495,6 +526,14 @@ public void EnsureValid(IConfigurationManager configManager, IPrototypeManager p flavortext = FormattedMessage.RemoveMarkup(FlavorText); } + var height = Height; + if (speciesPrototype != null) + height = Math.Clamp(Height, speciesPrototype.MinHeight, speciesPrototype.MaxHeight); + + var width = Width; + if (speciesPrototype != null) + width = Math.Clamp(Width, speciesPrototype.MinWidth, speciesPrototype.MaxWidth); + var appearance = HumanoidCharacterAppearance.EnsureValid(Appearance, Species, Sex); var prefsUnavailableMode = PreferenceUnavailable switch @@ -584,6 +623,8 @@ public void EnsureValid(IConfigurationManager configManager, IPrototypeManager p Name = name; FlavorText = flavortext; Age = age; + Height = height; + Width = width; Sex = sex; Gender = gender; Appearance = appearance; @@ -643,12 +684,16 @@ public override int GetHashCode() Clothing, Backpack ), - SpawnPriority, - PreferenceUnavailable, - _jobPriorities, - _antagPreferences, - _traitPreferences, - _loadoutPreferences + HashCode.Combine( + SpawnPriority, + Height, + Width, + PreferenceUnavailable, + _jobPriorities, + _antagPreferences, + _traitPreferences, + _loadoutPreferences + ) ); } } diff --git a/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl b/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl index 9b8eb74d96..f0ea0a4a72 100644 --- a/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl +++ b/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl @@ -11,6 +11,9 @@ humanoid-profile-editor-sex-female-text = Female humanoid-profile-editor-sex-unsexed-text = None humanoid-profile-editor-age-label = Age: humanoid-profile-editor-skin-color-label = Skin color: +humanoid-profile-editor-height-label = Height: {$height}cm +humanoid-profile-editor-width-label = Width: {$width}cm +humanoid-profile-editor-weight-label = Weight: {$weight}kg humanoid-profile-editor-species-label = Species: humanoid-profile-editor-pronouns-label = Pronouns: humanoid-profile-editor-pronouns-male-text = He / Him diff --git a/Resources/Prototypes/DeltaV/Species/harpy.yml b/Resources/Prototypes/DeltaV/Species/harpy.yml index bcc4dd22c4..384b327ff2 100644 --- a/Resources/Prototypes/DeltaV/Species/harpy.yml +++ b/Resources/Prototypes/DeltaV/Species/harpy.yml @@ -7,6 +7,12 @@ markingLimits: MobHarpyMarkingLimits dollPrototype: MobHarpyDummy skinColoration: HumanToned + minHeight: 0.6 + defaultHeight: 0.8 + maxHeight: 1.1 + minWidth: 0.55 + defaultWidth: 0.8 + maxWidth: 1.15 - type: speciesBaseSprites id: MobHarpySprites diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index 7afc5cddd7..c539536018 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -21,7 +21,6 @@ - type: Sprite noRot: true drawdepth: Mobs - scale: 1, 0.8 - type: Body prototype: Dwarf requiredLegs: 2 @@ -64,6 +63,3 @@ parent: BaseSpeciesDummy id: MobDwarfDummy noSpawn: true - components: - - type: Sprite - scale: 1, 0.8 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml index 8a0e750abd..ab3f6f3d1c 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml @@ -26,7 +26,7 @@ fix1: shape: !type:PhysShapeCircle - radius: 0.42 + radius: 0.35 density: 220 restitution: 0.0 mask: diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml index 2184926b95..5bc02461ee 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml @@ -9,6 +9,7 @@ scale: 0.8, 0.8 - type: HumanoidAppearance species: Felinid + initial: Felinid - type: Fixtures fixtures: # TODO: This needs a second fixture just for mob collisions. fix1: diff --git a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml b/Resources/Prototypes/Nyanotrasen/Species/Oni.yml index 9cb184b8ef..ee8be0e589 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml +++ b/Resources/Prototypes/Nyanotrasen/Species/Oni.yml @@ -11,6 +11,12 @@ femaleFirstNames: names_oni_female lastNames: names_oni_location naming: LastNoFirst + minHeight: 0.9 + defaultHeight: 1.2 + maxHeight: 1.3 + minWidth: 0.85 + defaultWidth: 1.2 + maxWidth: 1.35 - type: markingPoints id: MobOniMarkingLimits diff --git a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Species/felinid.yml index 754a4ae906..4751d58174 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Species/felinid.yml @@ -7,6 +7,12 @@ markingLimits: MobFelinidMarkingLimits dollPrototype: MobFelinidDummy skinColoration: HumanToned + minHeight: 0.65 + defaultHeight: 0.8 + maxHeight: 1.1 + minWidth: 0.6 + defaultWidth: 0.8 + maxWidth: 1.15 - type: markingPoints id: MobFelinidMarkingLimits diff --git a/Resources/Prototypes/SimpleStation14/humanoidProfiles/felinid.yml b/Resources/Prototypes/SimpleStation14/humanoidProfiles/felinid.yml new file mode 100644 index 0000000000..33e6915a78 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/humanoidProfiles/felinid.yml @@ -0,0 +1,6 @@ +- type: humanoidProfile + id: Felinid + profile: + species: Felinid + height: 0.8 + width: 0.8 diff --git a/Resources/Prototypes/SimpleStation14/humanoidProfiles/oni.yml b/Resources/Prototypes/SimpleStation14/humanoidProfiles/oni.yml new file mode 100644 index 0000000000..1e2d8af1e3 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/humanoidProfiles/oni.yml @@ -0,0 +1,6 @@ +- type: humanoidProfile + id: Oni + profile: + species: Oni + height: 1.2 + width: 1.2 diff --git a/Resources/Prototypes/Species/dwarf.yml b/Resources/Prototypes/Species/dwarf.yml index 86743ca2d6..d32f1e6476 100644 --- a/Resources/Prototypes/Species/dwarf.yml +++ b/Resources/Prototypes/Species/dwarf.yml @@ -7,3 +7,9 @@ markingLimits: MobHumanMarkingLimits dollPrototype: MobDwarfDummy skinColoration: HumanToned + minHeight: 0.6 + defaultHeight: 0.8 + maxHeight: 0.8 + minWidth: 0.55 + defaultWidth: 0.8 + maxWidth: 0.85 diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index f5cf1fa6eb..752918e2f0 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -11,6 +11,12 @@ maleFirstNames: names_reptilian_male femaleFirstNames: names_reptilian_female naming: FirstDashFirst + minHeight: 0.7 + defaultHeight: 0.95 + maxHeight: 1.25 + minWidth: 0.65 + defaultWidth: 0.95 + maxWidth: 1.3 - type: speciesBaseSprites id: MobReptilianSprites From 45b5c92bfbab7279efa3ebaeaa2b0dd72fc3158b Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 27 Jun 2024 17:47:49 +0000 Subject: [PATCH 57/68] Automatic Changelog Update (#458) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4196918ca7..3aea1324fe 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4245,3 +4245,9 @@ Entries: message: Mid-round events will occur much less often id: 6130 time: '2024-06-25T20:47:09.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: 'Height and Width sliders have been added to character creation. ' + id: 6131 + time: '2024-06-27T17:46:51.0000000+00:00' From d0cb65af8f5d3ed6c8d97d3fd4bb920ca2fce2ea Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 27 Jun 2024 21:04:42 -0400 Subject: [PATCH 58/68] Partial Glimmer Refactor & Pyromancy Full Refactor --- .../ChangeGlimmerReactionEffect.cs | 2 +- .../Systems/RaiseGlimmerConditionSystem.cs | 5 +- .../Research/Oracle/OracleSystem.cs | 2 +- .../SophicScribe/SophicScribeSystem.cs | 8 +- .../StationEvents/Events/FreeProberRule.cs | 2 +- .../Events/GlimmerEventSystem.cs | 2 +- .../StationEvents/Events/NoosphericFryRule.cs | 4 +- .../Events/NoosphericStormRule.cs | 2 +- .../Psionics/Abilities/DispelPowerSystem.cs | 2 +- .../Abilities/PsionicAbilitiesSystem.cs | 4 +- .../Abilities/PyrokinesisPowerSystem.cs | 87 +++++++++++++++++-- .../Psionics/Glimmer/GlimmerCommands.cs | 4 +- .../Psionics/Glimmer/GlimmerReactiveSystem.cs | 18 ++-- .../Glimmer/PassiveGlimmerReductionSystem.cs | 43 +++------ .../Structures/GlimmerStructuresSystem.cs | 8 +- Content.Server/Psionics/PsionicsSystem.cs | 2 +- .../Psionics/Telepathy/TelepathyChatSystem.cs | 6 +- .../StationEvents/EventManagerSystem.cs | 4 +- .../Systems/ArtifactAnalyzerSystem.cs | 4 +- Content.Shared/CCVar/CCVars.cs | 8 +- .../Events/PyrokinesisPowerActionEvent.cs | 1 + .../Pyrokinesis/PyrokinesisPowerComponent.cs | 28 +++++- .../PyrokinesisPrechargeComponent.cs | 0 Content.Shared/Psionics/Events.cs | 18 ++++ .../Psionics/Glimmer/GlimmerSystem.cs | 77 ++++++++++++++-- .../Psionics/SharedPsionicAbilitiesSystem.cs | 8 +- .../customization/character-requirements.ftl | 2 +- .../en-US/nyanotrasen/abilities/psionic.ftl | 5 +- .../nyanotrasen/psionics/psychic-feedback.ftl | 4 + Resources/Locale/en-US/traits/traits.ftl | 12 +++ .../Prototypes/Nyanotrasen/Actions/types.yml | 16 +++- Resources/Prototypes/Traits/psionics.yml | 33 +++++++ 32 files changed, 317 insertions(+), 104 deletions(-) create mode 100644 Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPrechargeComponent.cs diff --git a/Content.Server/Nyanotrasen/Chemistry/ReactionEffects/ChangeGlimmerReactionEffect.cs b/Content.Server/Nyanotrasen/Chemistry/ReactionEffects/ChangeGlimmerReactionEffect.cs index 65aaf350cb..cd7010700a 100644 --- a/Content.Server/Nyanotrasen/Chemistry/ReactionEffects/ChangeGlimmerReactionEffect.cs +++ b/Content.Server/Nyanotrasen/Chemistry/ReactionEffects/ChangeGlimmerReactionEffect.cs @@ -21,6 +21,6 @@ public override void Effect(ReagentEffectArgs args) { var glimmersys = args.EntityManager.EntitySysManager.GetEntitySystem(); - glimmersys.Glimmer += Count; + glimmersys.DeltaGlimmerInput(Count); } } diff --git a/Content.Server/Nyanotrasen/Objectives/Systems/RaiseGlimmerConditionSystem.cs b/Content.Server/Nyanotrasen/Objectives/Systems/RaiseGlimmerConditionSystem.cs index d7aae44afa..5d2cd3fa63 100644 --- a/Content.Server/Nyanotrasen/Objectives/Systems/RaiseGlimmerConditionSystem.cs +++ b/Content.Server/Nyanotrasen/Objectives/Systems/RaiseGlimmerConditionSystem.cs @@ -6,8 +6,8 @@ namespace Content.Server.Objectives.Systems { public sealed class RaiseGlimmerConditionSystem : EntitySystem { - [Dependency] private readonly IEntitySystemManager _sysMan = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly GlimmerSystem _glimmer = default!; public override void Initialize() { base.Initialize(); @@ -32,8 +32,7 @@ private void OnGetProgress(EntityUid uid, RaiseGlimmerConditionComponent comp, r private float GetProgress(int target) { - var glimmer = _sysMan.GetEntitySystem().Glimmer; - var progress = Math.Min((float) glimmer / (float) target, 1f); + var progress = Math.Min((float) _glimmer.GlimmerOutput / (float) target, 1f); return progress; } } diff --git a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs b/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs index 3a0e912c08..c3eced61da 100644 --- a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs +++ b/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs @@ -166,7 +166,7 @@ private void DispenseLiquidReward(EntityUid uid, OracleComponent component) .Where(x => !x.Abstract) .Select(x => x.ID).ToList(); - var amount = 20 + _random.Next(1, 30) + _glimmerSystem.Glimmer / 10f; + var amount = 20 + _random.Next(1, 30) + _glimmerSystem.GlimmerOutput / 10f; amount = (float) Math.Round(amount); var sol = new Solution(); diff --git a/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs b/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs index b8cdcb56d4..b1a6c1e9de 100644 --- a/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs +++ b/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs @@ -23,7 +23,7 @@ public override void Update(float frameTime) { base.Update(frameTime); - if (_glimmerSystem.Glimmer == 0) + if (_glimmerSystem.GlimmerOutput == 0) return; // yes, return. Glimmer value is global. var curTime = _timing.CurTime; @@ -37,7 +37,7 @@ public override void Update(float frameTime) if (!TryComp(scribe, out var radio)) continue; - var message = Loc.GetString("glimmer-report", ("level", _glimmerSystem.Glimmer)); + var message = Loc.GetString("glimmer-report", ("level", (int) Math.Round(_glimmerSystem.GlimmerOutput))); var channel = _prototypeManager.Index("Science"); _radioSystem.SendRadioMessage(scribe, message, channel, scribe); @@ -61,7 +61,7 @@ private void OnInteractHand(EntityUid uid, SophicScribeComponent component, Inte component.StateTime = _timing.CurTime + component.StateCD; - _chat.TrySendInGameICMessage(uid, Loc.GetString("glimmer-report", ("level", _glimmerSystem.Glimmer)), InGameICChatType.Speak, true); + _chat.TrySendInGameICMessage(uid, Loc.GetString("glimmer-report", ("level", (int) Math.Round(_glimmerSystem.GlimmerOutput))), InGameICChatType.Speak, true); } private void OnGlimmerEventEnded(GlimmerEventEndedEvent args) @@ -78,7 +78,7 @@ private void OnGlimmerEventEnded(GlimmerEventEndedEvent args) speaker = swapped.OriginalEntity; } - var message = Loc.GetString(args.Message, ("decrease", args.GlimmerBurned), ("level", _glimmerSystem.Glimmer)); + var message = Loc.GetString(args.Message, ("decrease", args.GlimmerBurned), ("level", (int) Math.Round(_glimmerSystem.GlimmerOutput))); var channel = _prototypeManager.Index("Common"); _radioSystem.SendRadioMessage(speaker, message, channel, speaker); } diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/FreeProberRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/FreeProberRule.cs index 0aa8ecc47c..46dff726e5 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/FreeProberRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/FreeProberRule.cs @@ -36,7 +36,7 @@ protected override void Started(EntityUid uid, FreeProberRuleComponent component } } - if (PossibleSpawns.Count == 0 || _glimmerSystem.Glimmer >= 500 || _robustRandom.Prob(0.25f)) + if (PossibleSpawns.Count == 0 || _glimmerSystem.GlimmerOutput >= 500 || _robustRandom.Prob(0.25f)) { var queryBattery = EntityQueryEnumerator(); while (query.MoveNext(out var battery, out var _)) diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerEventSystem.cs b/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerEventSystem.cs index a3d36ae715..078826604e 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerEventSystem.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerEventSystem.cs @@ -13,7 +13,7 @@ protected override void Ended(EntityUid uid, GlimmerEventComponent component, Ga base.Ended(uid, component, gameRule, args); var glimmerBurned = RobustRandom.Next(component.GlimmerBurnLower, component.GlimmerBurnUpper); - _glimmerSystem.Glimmer -= glimmerBurned; + _glimmerSystem.DeltaGlimmerInput(-glimmerBurned); var reportEv = new GlimmerEventEndedEvent(component.SophicReport, glimmerBurned); RaiseLocalEvent(reportEv); diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs index 6a2c1c3ba7..cf7b8e6cc9 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs @@ -77,7 +77,7 @@ protected override void Started(EntityUid uid, NoosphericFryRuleComponent compon damage.DamageDict.Add("Heat", 2.5); damage.DamageDict.Add("Shock", 2.5); - if (_glimmerSystem.Glimmer > 500 && _glimmerSystem.Glimmer < 750) + if (_glimmerSystem.GlimmerOutput > 500 && _glimmerSystem.GlimmerOutput < 750) { damage *= 2; if (TryComp(pair.wearer, out var flammableComponent)) @@ -85,7 +85,7 @@ protected override void Started(EntityUid uid, NoosphericFryRuleComponent compon flammableComponent.FireStacks += 1; _flammableSystem.Ignite(pair.wearer, pair.wearer, flammableComponent); } - } else if (_glimmerSystem.Glimmer > 750) + } else if (_glimmerSystem.GlimmerOutput > 750) { damage *= 3; if (TryComp(pair.wearer, out var flammableComponent)) diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs index 8812ed1fe3..c26ab1481a 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs @@ -54,6 +54,6 @@ protected override void Started(EntityUid uid, NoosphericStormRuleComponent comp //var glimmerSeverityMod = 1 + (component.GlimmerSeverityCoefficient * (GetSeverityModifier() - 1f)); var glimmerAdded = (int) baseGlimmerAdd; // Math.Round(baseGlimmerAdd * glimmerSeverityMod); - _glimmerSystem.Glimmer += glimmerAdded; + _glimmerSystem.DeltaGlimmerInput(glimmerAdded); } } diff --git a/Content.Server/Psionics/Abilities/DispelPowerSystem.cs b/Content.Server/Psionics/Abilities/DispelPowerSystem.cs index 3489b15bcf..33c6b5dcae 100644 --- a/Content.Server/Psionics/Abilities/DispelPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/DispelPowerSystem.cs @@ -84,7 +84,7 @@ private void OnPowerUsed(DispelPowerActionEvent args) { args.Handled = true; _psionics.LogPowerUsed(args.Performer, "dispel", psionic, 1, 1, true); - _glimmerSystem.Glimmer -= _random.Next((int) Math.Round(2 * psionic.Dampening), (int) Math.Round(4 - psionic.Amplification)); + _glimmerSystem.DeltaGlimmerInput(-_random.NextFloat(2 * psionic.Dampening - psionic.Amplification, 4 * psionic.Dampening - psionic.Amplification)); } } diff --git a/Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs b/Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs index 480cf56100..9de4e412c8 100644 --- a/Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs +++ b/Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs @@ -58,7 +58,7 @@ public void AddRandomPsionicPower(EntityUid uid) EntityManager.AddComponent(uid, newComponent); - _glimmerSystem.Glimmer += _random.Next((int) MathF.Round(psionic.Amplification * psionic.Dampening * 1), (int) MathF.Round(psionic.Amplification * psionic.Dampening * 5)); + _glimmerSystem.DeltaGlimmerInput(_random.NextFloat(psionic.Amplification * psionic.Dampening, psionic.Amplification * psionic.Dampening * 5)); } public void RemovePsionics(EntityUid uid) @@ -96,7 +96,7 @@ public void RemovePsionics(EntityUid uid) _statusEffectsSystem.TryAddStatusEffect(uid, "Stutter", TimeSpan.FromMinutes(5), false, "StutteringAccent"); - _glimmerSystem.Glimmer += _random.Next((int) MathF.Round(psionic.Amplification * psionic.Dampening * -10), (int) MathF.Round(psionic.Amplification * psionic.Dampening * -5)); + _glimmerSystem.DeltaGlimmerOutput(-_random.NextFloat((int) MathF.Round(psionic.Amplification * psionic.Dampening * 5), (int) MathF.Round(psionic.Amplification * psionic.Dampening * 10))); RemComp(uid); RemComp(uid); } diff --git a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs index c69e05af45..0e7269c6b8 100644 --- a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Actions; +using Content.Shared.DoAfter; using Content.Shared.Psionics.Abilities; using Content.Shared.Psionics.Glimmer; using Content.Server.Atmos.Components; @@ -6,7 +7,13 @@ using Robust.Server.GameObjects; using Content.Shared.Actions.Events; using Content.Server.Explosion.Components; +using Robust.Server.Audio; using Robust.Shared.Map; +using Robust.Shared.Timing; +using Content.Shared.Popups; +using Content.Shared.Mobs; +using Linguini.Syntax.Ast; +using Content.Shared.Psionics.Events; namespace Content.Server.Psionics.Abilities { @@ -17,20 +24,26 @@ public sealed class PyrokinesisPowerSystem : EntitySystem [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly GunSystem _gunSystem = default!; [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly AudioSystem _audioSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnPowerUsed); + SubscribeLocalEvent(OnPrecharge); + SubscribeLocalEvent(OnDoAfter); } private void OnInit(EntityUid uid, PyrokinesisPowerComponent component, ComponentInit args) { - _actions.AddAction(uid, ref component.PyrokinesisActionEntity, component.PyrokinesisActionId); - _actions.TryGetActionData( component.PyrokinesisActionEntity, out var actionData); + _actions.AddAction(uid, ref component.PyrokinesisPrechargeActionEntity, component.PyrokinesisPrechargeActionId); + _actions.TryGetActionData( component.PyrokinesisPrechargeActionEntity, out var actionData); if (actionData is { UseDelay: not null }) - _actions.StartUseDelay(component.PyrokinesisActionEntity); + _actions.StartUseDelay(component.PyrokinesisPrechargeActionEntity); if (TryComp(uid, out var psionic)) { psionic.ActivePowers.Add(component); @@ -39,9 +52,46 @@ private void OnInit(EntityUid uid, PyrokinesisPowerComponent component, Componen } } + private void OnPrecharge(PyrokinesisPrechargeActionEvent args) + { + if (!HasComp(args.Performer) + && TryComp(args.Performer, out var psionic) + && TryComp(args.Performer, out var pyroComp)) + { + _actions.AddAction(args.Performer, ref pyroComp.PyrokinesisActionEntity, pyroComp.PyrokinesisActionId); + _actions.TryGetActionData(pyroComp.PyrokinesisActionEntity, out var actionData); + if (actionData is { UseDelay: not null }) + _actions.StartUseDelay(pyroComp.PyrokinesisActionEntity); + _actions.TryGetActionData(pyroComp.PyrokinesisPrechargeActionEntity, out var prechargeData); + if (prechargeData is { UseDelay: not null }) + _actions.StartUseDelay(pyroComp.PyrokinesisPrechargeActionEntity); + + if (_glimmerSystem.GlimmerOutput >= 100 * psionic.Dampening) + { + _popup.PopupEntity(Loc.GetString(pyroComp.PyrokinesisObviousPopup, ("entity", args.Performer)), args.Performer, PopupType.Medium); + _audioSystem.PlayPvs(pyroComp.SoundUse, args.Performer); + } + else + _popup.PopupEntity(Loc.GetString(pyroComp.PyrokinesisSubtlePopup), args.Performer, args.Performer, PopupType.Medium); + + pyroComp.FireballThrown = false; + + var ev = new PyrokinesisPrechargeDoAfterEvent(_gameTiming.CurTime); + var duration = TimeSpan.FromSeconds(pyroComp.ResetDuration.Seconds + psionic.Dampening); + + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.Performer, duration, ev, args.Performer, args.Performer, args.Performer) + { + BlockDuplicate = true, + Hidden = true, + }, out var doAfterId); + + pyroComp.ResetDoAfter = doAfterId; + } + } + private void OnShutdown(EntityUid uid, PyrokinesisPowerComponent component, ComponentShutdown args) { - _actions.RemoveAction(uid, component.PyrokinesisActionEntity); + _actions.RemoveAction(uid, component.PyrokinesisPrechargeActionEntity); if (TryComp(uid, out var psionic)) { psionic.ActivePowers.Remove(component); @@ -53,7 +103,8 @@ private void OnShutdown(EntityUid uid, PyrokinesisPowerComponent component, Comp private void OnPowerUsed(PyrokinesisPowerActionEvent args) { if (!HasComp(args.Performer) - && TryComp(args.Performer, out var psionic)) + && TryComp(args.Performer, out var psionic) + && TryComp(args.Performer, out var pyroComp)) { var spawnCoords = Transform(args.Performer).Coordinates; @@ -61,11 +112,11 @@ private void OnPowerUsed(PyrokinesisPowerActionEvent args) if (TryComp(ent, out var fireball)) { - fireball.MaxIntensity = (int) MathF.Round(5 * psionic.Amplification); + fireball.MaxIntensity = (int) MathF.Round(2 * psionic.Amplification); fireball.IntensitySlope = (int) MathF.Round(1 * psionic.Amplification); - fireball.TotalIntensity = (int) MathF.Round(10 * psionic.Amplification); + fireball.TotalIntensity = (int) MathF.Round(25 * psionic.Amplification); - if (_glimmerSystem.Glimmer >= 500) + if (_glimmerSystem.GlimmerOutput >= 500) fireball.CanCreateVacuum = true; else fireball.CanCreateVacuum = false; @@ -77,10 +128,28 @@ private void OnPowerUsed(PyrokinesisPowerActionEvent args) var direction = args.Target.ToMapPos(EntityManager, _xform) - spawnCoords.ToMapPos(EntityManager, _xform); _gunSystem.ShootProjectile(ent, direction, new System.Numerics.Vector2(0, 0), args.Performer, args.Performer, 20f); - + _actions.RemoveAction(args.Performer, pyroComp.PyrokinesisActionEntity); + _doAfterSystem.Cancel(pyroComp.ResetDoAfter); _psionics.LogPowerUsed(args.Performer, "pyrokinesis", psionic, 6, 8); + pyroComp.FireballThrown = true; args.Handled = true; } } + + private void OnDoAfter(EntityUid uid, PyrokinesisPowerComponent component, PyrokinesisPrechargeDoAfterEvent args) + { + if (!args.Cancelled && TryComp(uid, out var psionic)) + { + if (!component.FireballThrown) + { + _actions.TryGetActionData(component.PyrokinesisPrechargeActionEntity, out var actionData); + if (actionData is { UseDelay: not null }) + _actions.SetCooldown(component.PyrokinesisPrechargeActionEntity, TimeSpan.FromSeconds(15 - psionic.Dampening)); + + _popup.PopupEntity(Loc.GetString(component.PyrokinesisRefundCooldown), uid, uid, PopupType.Medium); + } + _actions.RemoveAction(uid, component.PyrokinesisActionEntity); + } + } } } diff --git a/Content.Server/Psionics/Glimmer/GlimmerCommands.cs b/Content.Server/Psionics/Glimmer/GlimmerCommands.cs index 744f4cdb9a..d17f1c0456 100644 --- a/Content.Server/Psionics/Glimmer/GlimmerCommands.cs +++ b/Content.Server/Psionics/Glimmer/GlimmerCommands.cs @@ -14,7 +14,7 @@ public sealed class GlimmerShowCommand : IConsoleCommand public async void Execute(IConsoleShell shell, string argStr, string[] args) { var entMan = IoCManager.Resolve(); - shell.WriteLine(entMan.EntitySysManager.GetEntitySystem().Glimmer.ToString()); + shell.WriteLine(entMan.EntitySysManager.GetEntitySystem().GlimmerOutput.ToString()); } } @@ -34,6 +34,6 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) return; var entMan = IoCManager.Resolve(); - entMan.EntitySysManager.GetEntitySystem().Glimmer = glimmerValue; + entMan.EntitySysManager.GetEntitySystem().SetGlimmerOutput(glimmerValue); } } diff --git a/Content.Server/Psionics/Glimmer/GlimmerReactiveSystem.cs b/Content.Server/Psionics/Glimmer/GlimmerReactiveSystem.cs index c0802c8b67..8503457488 100644 --- a/Content.Server/Psionics/Glimmer/GlimmerReactiveSystem.cs +++ b/Content.Server/Psionics/Glimmer/GlimmerReactiveSystem.cs @@ -176,7 +176,7 @@ private void AddShockVerb(EntityUid uid, SharedGlimmerReactiveComponent componen Act = () => { _sharedAudioSystem.PlayPvs(component.ShockNoises, args.User); - _electrocutionSystem.TryDoElectrocution(args.User, null, _glimmerSystem.Glimmer / 200, TimeSpan.FromSeconds((float) _glimmerSystem.Glimmer / 100), false); + _electrocutionSystem.TryDoElectrocution(args.User, null, (int) Math.Round(_glimmerSystem.GlimmerOutput / 200), TimeSpan.FromSeconds((float) _glimmerSystem.GlimmerOutput / 100), false); }, Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/Spare/poweronoff.svg.192dpi.png")), Text = Loc.GetString("power-switch-component-toggle-verb"), @@ -190,7 +190,7 @@ private void OnDamageChanged(EntityUid uid, SharedGlimmerReactiveComponent compo if (args.Origin == null) return; - if (!_random.Prob((float) _glimmerSystem.Glimmer / 1000)) + if (!_random.Prob(_glimmerSystem.GlimmerOutput / 1000)) return; var tier = _glimmerSystem.GetGlimmerTier(); @@ -207,13 +207,13 @@ private void OnDestroyed(EntityUid uid, SharedGlimmerReactiveComponent component if (tier < GlimmerTier.High) return; - var totalIntensity = (float) (_glimmerSystem.Glimmer * 2); - var slope = (float) (11 - _glimmerSystem.Glimmer / 100); + var totalIntensity = (float) (_glimmerSystem.GlimmerOutput * 2); + var slope = (float) (11 - _glimmerSystem.GlimmerOutput / 100); var maxIntensity = 20; - var removed = (float) _glimmerSystem.Glimmer * _random.NextFloat(0.1f, 0.15f); - _glimmerSystem.Glimmer -= (int) removed; - BeamRandomNearProber(uid, _glimmerSystem.Glimmer / 350, _glimmerSystem.Glimmer / 50); + var removed = (float) _glimmerSystem.GlimmerOutput * _random.NextFloat(0.1f, 0.15f); + _glimmerSystem.DeltaGlimmerOutput(-removed); + BeamRandomNearProber(uid, (int) Math.Round(_glimmerSystem.GlimmerOutput / 350), _glimmerSystem.GlimmerOutput / 50); _explosionSystem.QueueExplosion(uid, "Default", totalIntensity, slope, maxIntensity); } @@ -222,7 +222,7 @@ private void OnUnanchorAttempt(EntityUid uid, SharedGlimmerReactiveComponent com if (_glimmerSystem.GetGlimmerTier() >= GlimmerTier.Dangerous) { _sharedAudioSystem.PlayPvs(component.ShockNoises, args.User); - _electrocutionSystem.TryDoElectrocution(args.User, null, _glimmerSystem.Glimmer / 200, TimeSpan.FromSeconds((float) _glimmerSystem.Glimmer / 100), false); + _electrocutionSystem.TryDoElectrocution(args.User, null, (int) Math.Round(_glimmerSystem.GlimmerOutput / 200), TimeSpan.FromSeconds((float) _glimmerSystem.GlimmerOutput / 100), false); args.Cancel(); } } @@ -265,7 +265,7 @@ private void Beam(EntityUid prober, EntityUid target, GlimmerTier tier, bool obe if (!lxform.Coordinates.TryDistance(EntityManager, txform.Coordinates, out var distance)) return; - if (distance > (float) (_glimmerSystem.Glimmer / 100)) + if (distance > (float) (_glimmerSystem.GlimmerOutput / 100)) return; string beamproto; diff --git a/Content.Server/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs b/Content.Server/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs index 57c74398b0..a17a97410a 100644 --- a/Content.Server/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs +++ b/Content.Server/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs @@ -1,9 +1,7 @@ -using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Configuration; using Content.Shared.CCVar; using Content.Shared.Psionics.Glimmer; -using Content.Shared.GameTicking; namespace Content.Server.Psionics.Glimmer { @@ -13,7 +11,6 @@ namespace Content.Server.Psionics.Glimmer public sealed class PassiveGlimmerReductionSystem : EntitySystem { [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; - [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; @@ -21,58 +18,38 @@ public sealed class PassiveGlimmerReductionSystem : EntitySystem public List GlimmerValues = new(); public TimeSpan TargetUpdatePeriod = TimeSpan.FromSeconds(6); - - private int _updateIncrementor; public TimeSpan NextUpdateTime = default!; public TimeSpan LastUpdateTime = default!; - private float _glimmerLostPerSecond; + private float _glimmerLinearDecay; + private bool _enabled; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnRoundRestartCleanup); - _cfg.OnValueChanged(CCVars.GlimmerLostPerSecond, UpdatePassiveGlimmer, true); - } - - private void OnRoundRestartCleanup(RoundRestartCleanupEvent args) - { - GlimmerValues.Clear(); + _cfg.OnValueChanged(CCVars.GlimmerLinearDecayPerMinute, UpdatePassiveGlimmer, true); + _enabled = _cfg.GetCVar(CCVars.GlimmerEnabled); + _cfg.OnValueChanged(CCVars.GlimmerEnabled, value => _enabled = value, true); } public override void Update(float frameTime) { base.Update(frameTime); + if (!_enabled) + return; var curTime = _timing.CurTime; if (NextUpdateTime > curTime) return; + var glimmerDecay = _glimmerLinearDecay / (60 / TargetUpdatePeriod.Seconds); - var delta = curTime - LastUpdateTime; - var maxGlimmerLost = (int) Math.Round(delta.TotalSeconds * _glimmerLostPerSecond); - - // It used to be 75% to lose one glimmer per ten seconds, but now it's 50% per six seconds. - // The probability is exactly the same over the same span of time. (0.25 ^ 3 == 0.5 ^ 6) - // This math is just easier to do for pausing's sake. - var actualGlimmerLost = _random.Next(0, 1 + maxGlimmerLost); - - _glimmerSystem.Glimmer -= actualGlimmerLost; - - _updateIncrementor++; - - // Since we normally update every 6 seconds, this works out to a minute. - if (_updateIncrementor == 10) - { - GlimmerValues.Add(_glimmerSystem.Glimmer); - - _updateIncrementor = 0; - } + _glimmerSystem.DeltaGlimmerOutput(-glimmerDecay); NextUpdateTime = curTime + TargetUpdatePeriod; LastUpdateTime = curTime; } - private void UpdatePassiveGlimmer(float value) => _glimmerLostPerSecond = value; + private void UpdatePassiveGlimmer(float value) => _glimmerLinearDecay = value; } } diff --git a/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs b/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs index 5d16c4e5e4..5e0e3f04cf 100644 --- a/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs +++ b/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs @@ -47,12 +47,12 @@ private void OnAnomalyPulse(EntityUid uid, GlimmerSourceComponent component, ref // component. if (TryComp(uid, out var anomaly)) - _glimmerSystem.Glimmer += (int) (5f * anomaly.Severity); + _glimmerSystem.DeltaGlimmerInput(5f * anomaly.Severity); } private void OnAnomalySupercritical(EntityUid uid, GlimmerSourceComponent component, ref AnomalySupercriticalEvent args) { - _glimmerSystem.Glimmer += 100; + _glimmerSystem.DeltaGlimmerOutput(100); } private void OnMobStateChanged(EntityUid uid, GlimmerSourceComponent component, ref MobStateChangedEvent args) @@ -79,11 +79,11 @@ public override void Update(float frameTime) source.Accumulator -= source.SecondsPerGlimmer; if (source.AddToGlimmer) { - _glimmerSystem.Glimmer++; + _glimmerSystem.DeltaGlimmerInput(1); } else { - _glimmerSystem.Glimmer--; + _glimmerSystem.DeltaGlimmerInput(1); } } } diff --git a/Content.Server/Psionics/PsionicsSystem.cs b/Content.Server/Psionics/PsionicsSystem.cs index 04a7597c90..06250f77ba 100644 --- a/Content.Server/Psionics/PsionicsSystem.cs +++ b/Content.Server/Psionics/PsionicsSystem.cs @@ -141,7 +141,7 @@ public void RollPsionics(EntityUid uid, PotentialPsionicComponent component, boo } if (applyGlimmer) - chance += (float) _glimmerSystem.Glimmer / 1000; + chance += (float) _glimmerSystem.GlimmerOutput / 1000; chance *= multiplier; diff --git a/Content.Server/Psionics/Telepathy/TelepathyChatSystem.cs b/Content.Server/Psionics/Telepathy/TelepathyChatSystem.cs index 2c6b93e254..917511d147 100644 --- a/Content.Server/Psionics/Telepathy/TelepathyChatSystem.cs +++ b/Content.Server/Psionics/Telepathy/TelepathyChatSystem.cs @@ -100,11 +100,11 @@ public void SendTelepathicChat(EntityUid source, string message, bool hideChat) _chatManager.ChatMessageToMany(ChatChannel.Telepathic, message, adminMessageWrap, source, hideChat, true, admins, Color.PaleVioletRed); if (_random.Prob(0.1f)) - _glimmerSystem.Glimmer++; + _glimmerSystem.DeltaGlimmerInput(1); - if (_random.Prob(Math.Min(0.33f + (float) _glimmerSystem.Glimmer / 1500, 1))) + if (_random.Prob(Math.Min(0.33f + (float) _glimmerSystem.GlimmerOutput / 1500, 1))) { - float obfuscation = 0.25f + (float) _glimmerSystem.Glimmer / 2000; + float obfuscation = 0.25f + (float) _glimmerSystem.GlimmerOutput / 2000; var obfuscated = ObfuscateMessageReadability(message, obfuscation); _chatManager.ChatMessageToMany(ChatChannel.Telepathic, obfuscated, messageWrap, source, hideChat, false, GetDreamers(clients), Color.PaleVioletRed); } diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index 261e8ca46d..d33a373b37 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -191,8 +191,8 @@ private bool CanRun(EntityPrototype prototype, StationEventComponent stationEven // This could not be cleanly done anywhere else. if (_configurationManager.GetCVar(CCVars.GlimmerEnabled) && prototype.TryGetComponent(out var glimmerEvent) && - (_glimmerSystem.Glimmer < glimmerEvent.MinimumGlimmer || - _glimmerSystem.Glimmer > glimmerEvent.MaximumGlimmer)) + (_glimmerSystem.GlimmerOutput < glimmerEvent.MinimumGlimmer || + _glimmerSystem.GlimmerOutput > glimmerEvent.MaximumGlimmer)) { return false; } diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs index 27caebef80..de869ab7e8 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs @@ -366,13 +366,11 @@ private void OnExtractButton(EntityUid uid, AnalysisConsoleComponent component, _research.ModifyServerPoints(server.Value, pointValue, serverComponent); _artifact.AdjustConsumedPoints(artifact.Value, pointValue); - // Nyano - Summary - Begin modified code block: tie artifacts to glimmer. if (TryComp(component.AnalyzerEntity.Value, out var analyzer) && analyzer != null) { - _glimmerSystem.Glimmer += (int) pointValue / analyzer.ExtractRatio; + _glimmerSystem.DeltaGlimmerInput(pointValue / analyzer.ExtractRatio); } - // Nyano - End modified code block. _audio.PlayPvs(component.ExtractSound, component.AnalyzerEntity.Value, AudioParams.Default.WithVolume(2f)); diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 7d7f3c7044..926701400e 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2141,11 +2141,11 @@ public static readonly CVarDef CVarDef.Create("glimmer.enabled", true, CVar.REPLICATED); /// - /// Passive glimmer drain per second. - /// Note that this is randomized and this is an average value. + /// The rate at which glimmer linearly decays. Since glimmer increases (usually) follow a logistic curve, this means glimmer + /// becomes increasingly harder to raise after ~502 points. /// - public static readonly CVarDef GlimmerLostPerSecond = - CVarDef.Create("glimmer.passive_drain_per_second", 0.1f, CVar.SERVERONLY); + public static readonly CVarDef GlimmerLinearDecayPerMinute = + CVarDef.Create("glimmer.linear_decay_per_minute", 6f, CVar.SERVERONLY); /// /// Whether random rolls for psionics are allowed. diff --git a/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs b/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs index 4639aadd55..2493be58fa 100644 --- a/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs +++ b/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs @@ -1,4 +1,5 @@ namespace Content.Shared.Actions.Events; public sealed partial class PyrokinesisPowerActionEvent : WorldTargetActionEvent {} +public sealed partial class PyrokinesisPrechargeActionEvent : InstantActionEvent {} diff --git a/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs b/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs index 1f88741b9a..b95ead8ec1 100644 --- a/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs @@ -1,4 +1,5 @@ -using Content.Shared.Actions; +using Content.Shared.DoAfter; +using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; @@ -7,7 +8,13 @@ namespace Content.Shared.Psionics.Abilities [RegisterComponent] public sealed partial class PyrokinesisPowerComponent : Component { - public EntityTargetActionComponent? PyrokinesisPowerAction = null; + [DataField("pyrokinesisPrechargeActionId", + customTypeSerializer: typeof(PrototypeIdSerializer))] + public string? PyrokinesisPrechargeActionId = "ActionPrechargePyrokinesis"; + + [DataField("pyrokinesisPrechargeActionEntity")] + public EntityUid? PyrokinesisPrechargeActionEntity; + [DataField("pyrokinesisActionId", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? PyrokinesisActionId = "ActionPyrokinesis"; @@ -17,5 +24,22 @@ public sealed partial class PyrokinesisPowerComponent : Component [DataField("pyrokinesisFeedback")] public string PyrokinesisFeedback = "pyrokinesis-feedback"; + + [DataField] + public string PyrokinesisObviousPopup = "pyrokinesis-obvious"; + + [DataField] + public string PyrokinesisSubtlePopup = "pyrokinesis-subtle"; + + [DataField] + public string PyrokinesisRefundCooldown = "pyrokinesis-refund-cooldown"; + + public DoAfterId? ResetDoAfter; + public bool FireballThrown; + + [DataField] + public SoundSpecifier SoundUse = new SoundPathSpecifier("/Audio/Items/welder.ogg"); + [DataField] + public TimeSpan ResetDuration = TimeSpan.FromSeconds(7); } } diff --git a/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPrechargeComponent.cs b/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPrechargeComponent.cs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Content.Shared/Psionics/Events.cs b/Content.Shared/Psionics/Events.cs index 45a00b5f04..88cf17a4a2 100644 --- a/Content.Shared/Psionics/Events.cs +++ b/Content.Shared/Psionics/Events.cs @@ -57,6 +57,24 @@ public FocusedMetapsionicDoAfterEvent(TimeSpan startedAt) public override DoAfterEvent Clone() => this; } + [Serializable, NetSerializable] + public sealed partial class PyrokinesisPrechargeDoAfterEvent : DoAfterEvent + { + [DataField("startedAt", required: true)] + public TimeSpan StartedAt; + + private PyrokinesisPrechargeDoAfterEvent() + { + } + + public PyrokinesisPrechargeDoAfterEvent(TimeSpan startedAt) + { + StartedAt = startedAt; + } + + public override DoAfterEvent Clone() => this; + } + [Serializable, NetSerializable] public sealed partial class GlimmerWispDrainDoAfterEvent : SimpleDoAfterEvent { diff --git a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs index 8be02f936a..8d1393b884 100644 --- a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs +++ b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs @@ -11,11 +11,32 @@ namespace Content.Shared.Psionics.Glimmer public sealed class GlimmerSystem : EntitySystem { [Dependency] private readonly IConfigurationManager _cfg = default!; - private int _glimmer = 0; - public int Glimmer + private float _glimmerInput = 0; + /// + /// GlimmerInput represents the system-facing value of the station's glimmer, and is given by f(y) for this graph: https://www.desmos.com/calculator/posutiq38e + /// Where x = GlimmerOutput and y = GlimmerInput + /// + /// + /// This is private set for a good reason, if you're looking to change it, do so via DeltaGlimmerInput or SetGlimmerInput + /// + public float GlimmerInput + { + get { return _glimmerInput; } + private set { _glimmerInput = _enabled ? Math.Min(value, 0) : 0; } + } + private float _glimmerOutput = 0; + + /// + /// Glimmer Output represents the player-facing value of the station's glimmer, and is given by f(x) for this graph: https://www.desmos.com/calculator/posutiq38e + /// Where x = GlimmerInput and y = GlimmerOutput + /// + /// + /// This is private set for a good reason, if you're looking to change it, do so via DeltaGlimmerOutput or SetGlimmerOutput + /// + public float GlimmerOutput { - get { return _glimmer; } - set { _glimmer = _enabled ? Math.Clamp(value, 0, 1000) : 0; } + get { return _glimmerOutput; } + private set { _glimmerOutput = _enabled ? Math.Min(value, 0) : 0; } } private bool _enabled; public override void Initialize() @@ -28,17 +49,18 @@ public override void Initialize() private void Reset(RoundRestartCleanupEvent args) { - Glimmer = 0; + GlimmerInput = 0; + GlimmerOutput = 0; } /// /// Return an abstracted range of a glimmer count. /// /// What glimmer count to check. Uses the current glimmer by default. - public GlimmerTier GetGlimmerTier(int? glimmer = null) + public GlimmerTier GetGlimmerTier(float? glimmer = null) { if (glimmer == null) - glimmer = Glimmer; + glimmer = GlimmerOutput; return glimmer switch { @@ -50,6 +72,47 @@ public GlimmerTier GetGlimmerTier(int? glimmer = null) _ => GlimmerTier.Critical, }; } + + // Ignore the bracket warnings on these, Intellisense is wrong and doesn't understand polynomials. + /// + /// The primary intended accessors for + /// + /// + public void DeltaGlimmerInput(float delta) + { + if (_enabled && delta != 0) + { + GlimmerInput += delta; + GlimmerOutput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerInput))) - 1000; + } + } + + public void DeltaGlimmerOutput(float delta) + { + if (_enabled && delta != 0) + { + GlimmerOutput += delta; + GlimmerInput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput))) - 1000; + } + } + + public void SetGlimmerOutput(float set) + { + if (_enabled && set != 0) + { + GlimmerOutput = set; + GlimmerInput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput))) - 1000; + } + } + + public void SetGlimmerInput(float set) + { + if (_enabled && set != 0) + { + GlimmerInput = set; + GlimmerOutput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput))) - 1000; + } + } } [Serializable, NetSerializable] diff --git a/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs b/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs index cf3bafab5a..f905ec4dd4 100644 --- a/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs +++ b/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs @@ -91,10 +91,10 @@ public void LogPowerUsed(EntityUid uid, string power, PsionicComponent? psionic if (!overrideGlimmer) { if (psionic == null) - _glimmerSystem.Glimmer += _robustRandom.Next(minGlimmer, maxGlimmer); - else _glimmerSystem.Glimmer += _robustRandom.Next( - (int) Math.Round(minGlimmer * psionic.Amplification - psionic.Dampening), - (int) Math.Round(maxGlimmer * psionic.Amplification - psionic.Dampening)); + _glimmerSystem.DeltaGlimmerInput(_robustRandom.NextFloat(minGlimmer, maxGlimmer)); + else _glimmerSystem.DeltaGlimmerInput(_robustRandom.NextFloat( + minGlimmer * psionic.Amplification - psionic.Dampening, + maxGlimmer * psionic.Amplification - psionic.Dampening)); } } } diff --git a/Resources/Locale/en-US/customization/character-requirements.ftl b/Resources/Locale/en-US/customization/character-requirements.ftl index b073bdb773..e7bcf0669f 100644 --- a/Resources/Locale/en-US/customization/character-requirements.ftl +++ b/Resources/Locale/en-US/customization/character-requirements.ftl @@ -9,7 +9,7 @@ character-species-requirement = You must {$inverted -> character-trait-requirement = You must {$inverted -> [true] not have *[other] have -} the trait [color=lightblue]{$trait}[/color] +} the trait [color=lightblue]{$traits}[/color] character-backpack-type-requirement = You must {$inverted -> [true] not use *[other] use diff --git a/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl b/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl index 02800953b1..c3a9641768 100644 --- a/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl +++ b/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl @@ -63,7 +63,10 @@ action-name-noospheric-zap = Noospheric Zap action-description-noospheric-zap = Shocks the conciousness of the target and leaves them stunned and stuttering. action-name-pyrokinesis = Pyrokinesis -action-description-pyrokinesis = Hurl a small gateway to the plane of Gehenna at your target. +action-description-pyrokinesis = Hurl a fire bolt at your target + +action-name-precharge-pyrokinesis = Precharge Pyrokinesis +action-description-precharge-pyrokinesis = Draw forth the Secret of Fire, and prepare to launch a fire bolt action-name-psychokinesis = Psychokinesis action-description-psychokinesis = Bend the fabric of space to instantly move across it. diff --git a/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl index 2add055f7b..311d71d6ac 100644 --- a/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl +++ b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl @@ -44,6 +44,10 @@ focused-metapsionic-pulse-begin = The air around {CAPITALIZE($entity)} begins to psionic-regeneration-self-revive = {CAPITALIZE($entity)} begins to visibly regenerate mindbreaking-feedback = The light of life vanishes from {CAPITALIZE($entity)}'s eyes, leaving behind a husk pretending at sapience regenerative-stasis-begin = {CAPITALIZE($entity)} swoons for a moment, then begins visibly regenerating +pyrokinesis-obvious = A mote of flame dances around {CAPITALIZE($entity)}'s fingers +pyrokinesis-subtle = You draw upon the Secret of Fire. + Use this action again to throw a fire bolt. +pyrokinesis-refund-cooldown = You reclaim some of the energy spent drawing forth the Secret of Fire # Misc Psionic Messages telepathic-mute-message = You strain, but are unable to send your thoughts to the Noosphere diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index bfda7e48be..dc3d407e5e 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -36,3 +36,15 @@ trait-name-LatentPsychic = Latent Psychic trait-description-LatentPsychic = Your mind and soul are open to the noosphere, allowing for a limited use of Telepathy. Thus, you are eligible for potentially receiving psychic powers. It is possible that you may be hunted by otherworldly forces, so consider keeping your powers a secret. + +trait-name-PsionicInsulation = χ Waveform Misalignment +trait-description-PsionicInsulation = Through a quirk of fate, your brainwaves are permanently out of phase with the noösphere + You are immune to both positive and negative effects of nearly all psychic powers, + But you can never be a psionic yourself in this life. This trait is incompatible with + all other psychic traits. + +trait-name-NaturalTelepath = Natural Telepath +trait-description-NaturalTelepath = As a naturally occuring Telepath, you are capable of fluent telepathic communication, regardless of + whether or not you possess any notable psychic powers. This offers all of the same benefits and + drawbacks of Latent Psychic, except that you are guaranteed to start with full Telepathy. You may + still gain powers as normal for a Latent Psychic. diff --git a/Resources/Prototypes/Nyanotrasen/Actions/types.yml b/Resources/Prototypes/Nyanotrasen/Actions/types.yml index 55dd48e547..4ee617931d 100644 --- a/Resources/Prototypes/Nyanotrasen/Actions/types.yml +++ b/Resources/Prototypes/Nyanotrasen/Actions/types.yml @@ -96,12 +96,24 @@ components: - type: WorldTargetAction icon: Nyanotrasen/Interface/VerbIcons/pyrokinesis.png - useDelay: 50 - range: 6 + useDelay: 1 + range: 15 checkCanAccess: false + checkCanInteract: true itemIconStyle: BigAction event: !type:PyrokinesisPowerActionEvent +- type: entity + id: ActionPrechargePyrokinesis + name: action-name-precharge-pyrokinesis + description: action-description-precharge-pyrokinesis + noSpawn: true + components: + - type: InstantAction + icon: Nyanotrasen/Interface/VerbIcons/pyrokinesis.png + useDelay: 50 + event: !type:PyrokinesisPrechargeActionEvent + - type: entity id: ActionWideMetapsionic name: action-name-widemetapsionic diff --git a/Resources/Prototypes/Traits/psionics.yml b/Resources/Prototypes/Traits/psionics.yml index 01c8a5750e..277070617c 100644 --- a/Resources/Prototypes/Traits/psionics.yml +++ b/Resources/Prototypes/Traits/psionics.yml @@ -4,3 +4,36 @@ points: -1 components: - type: PotentialPsionic + requirements: + - !type:CharacterTraitRequirement + inverted: true + traits: + - PsionicInsulation + - NaturalTelepath + +- type: trait + id: PsionicInsulation + category: Psionic + points: -5 + components: + - type: PsionicInsulation + requirements: + - !type:CharacterTraitRequirement + inverted: true + traits: + - LatentPsychic + - NaturalTelepath + +- type: trait + id: NaturalTelepath + category: Psionic + points: -3 + components: + - type: PotentialPsionic + - type: Psionic + requirements: + - !type:CharacterTraitRequirement + inverted: true + traits: + - LatentPsychic + - PsionicInsulation From 1c4f9e6b5381723cbcf9e9d6569f4fcd93e2d050 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 27 Jun 2024 21:43:58 -0400 Subject: [PATCH 59/68] Update GlimmerSystem.cs --- Content.Shared/Psionics/Glimmer/GlimmerSystem.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs index 8d1393b884..45742d70b3 100644 --- a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs +++ b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs @@ -74,10 +74,6 @@ public GlimmerTier GetGlimmerTier(float? glimmer = null) } // Ignore the bracket warnings on these, Intellisense is wrong and doesn't understand polynomials. - /// - /// The primary intended accessors for - /// - /// public void DeltaGlimmerInput(float delta) { if (_enabled && delta != 0) From 84c154084ef7da470df8ca2423dfaef1a864e278 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 27 Jun 2024 21:46:26 -0400 Subject: [PATCH 60/68] Update GlimmerSystem.cs --- Content.Shared/Psionics/Glimmer/GlimmerSystem.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs index 45742d70b3..52e14a0747 100644 --- a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs +++ b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs @@ -73,13 +73,12 @@ public GlimmerTier GetGlimmerTier(float? glimmer = null) }; } - // Ignore the bracket warnings on these, Intellisense is wrong and doesn't understand polynomials. public void DeltaGlimmerInput(float delta) { if (_enabled && delta != 0) { GlimmerInput += delta; - GlimmerOutput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerInput))) - 1000; + GlimmerOutput = 2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerInput)) - 1000; } } @@ -88,7 +87,7 @@ public void DeltaGlimmerOutput(float delta) if (_enabled && delta != 0) { GlimmerOutput += delta; - GlimmerInput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput))) - 1000; + GlimmerInput = 2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput)) - 1000; } } @@ -97,7 +96,7 @@ public void SetGlimmerOutput(float set) if (_enabled && set != 0) { GlimmerOutput = set; - GlimmerInput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput))) - 1000; + GlimmerInput = 2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput)) - 1000; } } @@ -106,7 +105,7 @@ public void SetGlimmerInput(float set) if (_enabled && set != 0) { GlimmerInput = set; - GlimmerOutput = (2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput))) - 1000; + GlimmerOutput = 2000 / (1 + MathF.Pow(MathF.E, -.0022f * GlimmerOutput)) - 1000; } } } From c5b0e49b24f63c5a59fda414fc9aebfe19bf8bf9 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 27 Jun 2024 22:12:33 -0400 Subject: [PATCH 61/68] Got this backwards --- Content.Shared/Psionics/Glimmer/GlimmerSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs index 52e14a0747..9f924ad9a2 100644 --- a/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs +++ b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs @@ -22,7 +22,7 @@ public sealed class GlimmerSystem : EntitySystem public float GlimmerInput { get { return _glimmerInput; } - private set { _glimmerInput = _enabled ? Math.Min(value, 0) : 0; } + private set { _glimmerInput = _enabled ? Math.Max(value, 0) : 0; } } private float _glimmerOutput = 0; @@ -36,7 +36,7 @@ public float GlimmerInput public float GlimmerOutput { get { return _glimmerOutput; } - private set { _glimmerOutput = _enabled ? Math.Min(value, 0) : 0; } + private set { _glimmerOutput = _enabled ? Math.Max(value, 0) : 0; } } private bool _enabled; public override void Initialize() From 2ed8c5dac03b95f1b6c94c4647cd4011dad12325 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 28 Jun 2024 00:13:33 -0400 Subject: [PATCH 62/68] More glimmer updates --- .../GlimmerMonitor/GlimmerMonitorUiFragment.xaml | 1 + .../GlimmerMonitorUiFragment.xaml.cs | 16 ++++++++-------- .../Glimmer/PassiveGlimmerReductionSystem.cs | 2 ++ .../Structures/GlimmerStructuresSystem.cs | 6 ++++-- Content.Shared/Psionics/Glimmer/GlimmerSystem.cs | 3 ++- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml index 3044680e27..ade0720696 100644 --- a/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml +++ b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml @@ -3,6 +3,7 @@ public static readonly CVarDef MassContestsMaxPercentage = CVarDef.Create("contests.max_percentage", 0.25f, CVar.REPLICATED | CVar.SERVER); + // REGION: CPR System + /// + /// Controls whether the entire CPR system runs. When false, nobody can perform CPR. You should probably remove the trait too + /// if you are wishing to permanently disable the system on your server. + /// + public static readonly CVarDef DoCPRSystem = + CVarDef.Create("cpr.do_cpr_system", true, CVar.REPLICATED | CVar.SERVER); + + /// + /// Toggles whether or not CPR reduces rot timers(As an abstraction of delaying brain death, the IRL actual purpose of CPR) + /// + public static readonly CVarDef CPRReducesRot = + CVarDef.Create("cpr.reduces_rot", true, CVar.REPLICATED | CVar.SERVER); + + /// + /// Toggles whether or not CPR heals airloss, included for completeness sake. I'm not going to stop you if your intention is to make CPR do nothing. + /// I guess it might be funny to troll your players with? I won't judge. + /// + public static readonly CVarDef CPRHealsAirloss = + CVarDef.Create("cpr.heals_airloss", true, CVar.REPLICATED | CVar.SERVER); + + /// + /// Toggles whether or not CPR has a (small) chance to revive a dead person if they are otherwise healthy enough for a defib to work. + /// This isn't very realistic, but people who see CPR in movies and TV will expect CPR to work this way. + /// + public static readonly CVarDef CPRResuscitate = + CVarDef.Create("cpr.do_resuscitate", true, CVar.REPLICATED | CVar.SERVER); + + /// + /// By default, CPR reduces rot timers by an amount of seconds equal to the time spent performing CPR. This is an optional multiplier that can increase or decrease the amount + /// of rot reduction. Set it to 2 for if you want 3 seconds of CPR to reduce 6 seconds of rot. + /// + /// + /// If you're wondering why there isn't a CVar for setting the duration of the doafter, that's because it's not actually possible to have a timespan in cvar form + /// Curiously, it's also not possible for **shared** systems to set variable timespans. Which is where this system lives. + /// + public static readonly CVarDef CPRRotReductionMultiplier = + CVarDef.Create("cpr.rot_reduction_multiplier", 1f, CVar.REPLICATED | CVar.SERVER); + + /// + /// By default, CPR heals airloss by 1 point for every second spent performing CPR. Just like above, this directly multiplies the healing amount. + /// Set it to 2 to get 6 points of airloss healing for every 3 seconds of CPR. + /// + public static readonly CVarDef CPRAirlossReductionMultiplier = + CVarDef.Create("cpr.airloss_reduction_multiplier", 1f, CVar.REPLICATED | CVar.SERVER); } } diff --git a/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs b/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs new file mode 100644 index 0000000000..596fbc0c1d --- /dev/null +++ b/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs @@ -0,0 +1,32 @@ +using Robust.Shared.GameStates; +using Content.Shared.DoAfter; +using Robust.Shared.Audio; +using Robust.Shared.Serialization; + +namespace Content.Shared.Medical.CPR +{ + [RegisterComponent, NetworkedComponent] + public sealed partial class CPRTrainingComponent : Component + { + [DataField] + public SoundSpecifier? CPRSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_safety_on.ogg"); + + /// + /// How long the doafter for CPR takes + /// + [DataField] + public TimeSpan DoAfterDuration = TimeSpan.FromSeconds(3); + + [DataField] + public int AirlossHeal = 6; + + [DataField] + public float CrackRibsModifier = 1f; + } + + [Serializable, NetSerializable] + public sealed partial class CPRDoAfterEvent : SimpleDoAfterEvent + { + + } +} diff --git a/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs b/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs new file mode 100644 index 0000000000..904026b1dc --- /dev/null +++ b/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs @@ -0,0 +1,27 @@ +using Content.Shared.CCVar; +using Robust.Shared.Configuration; + +namespace Content.Shared.Medical.CPR +{ + public sealed partial class CPRSystem + { + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public bool DoCPRSystem { get; private set; } + public bool CPRHealsAirloss { get; private set; } + public bool CPRReducesRot { get; private set; } + public bool CPRResuscitate { get; private set; } + public float CPRRotReductionMultiplier { get; private set; } + public float CPRAirlossReductionMultiplier { get; private set; } + + private void InitializeCVars() + { + Subs.CVar(_cfg, CCVars.DoCPRSystem, value => DoCPRSystem = value, true); + Subs.CVar(_cfg, CCVars.CPRHealsAirloss, value => CPRHealsAirloss = value, true); + Subs.CVar(_cfg, CCVars.CPRReducesRot, value => CPRReducesRot = value, true); + Subs.CVar(_cfg, CCVars.CPRResuscitate, value => CPRResuscitate = value, true); + Subs.CVar(_cfg, CCVars.CPRRotReductionMultiplier, value => CPRRotReductionMultiplier = value, true); + Subs.CVar(_cfg, CCVars.CPRAirlossReductionMultiplier, value => CPRAirlossReductionMultiplier = value, true); + } + } +} diff --git a/Content.Shared/Medical/CPR/Systems/CPRSystem.cs b/Content.Shared/Medical/CPR/Systems/CPRSystem.cs new file mode 100644 index 0000000000..964913f4f7 --- /dev/null +++ b/Content.Shared/Medical/CPR/Systems/CPRSystem.cs @@ -0,0 +1,122 @@ +using Content.Shared.Popups; +using Content.Shared.Atmos.Rotting; +using Content.Shared.Damage; +using Content.Shared.DoAfter; +using Content.Shared.Inventory; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Verbs; +using Robust.Shared.Utility; +using Robust.Shared.Random; + +namespace Content.Shared.Medical.CPR +{ + public sealed partial class CPRSystem : EntitySystem + { + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly MobStateSystem _mobStateSystem = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly SharedRottingSystem _rottingSystem = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + public override void Initialize() + { + base.Initialize(); + InitializeCVars(); + SubscribeLocalEvent>(AddCPRVerb); + SubscribeLocalEvent(OnCPRDoAfter); + } + + private void AddCPRVerb(EntityUid uid, CPRTrainingComponent component, GetVerbsEvent args) + { + if (!DoCPRSystem || !args.CanInteract || !args.CanAccess + || !TryComp(args.Target, out var targetState) + || targetState.CurrentState == MobState.Alive) + return; + + InnateVerb verb = new() + { + Act = () => + { + StartCPR(uid, args.Target, targetState, component); + }, + Text = Loc.GetString("cpr-verb"), + Icon = new SpriteSpecifier.Rsi(new("Interface/Alerts/human_alive.rsi"), "health4"), + Priority = 2 + }; + args.Verbs.Add(verb); + } + + private void StartCPR(EntityUid performer, EntityUid target, MobStateComponent targetState, CPRTrainingComponent cprComponent) + { + if (HasComp(target)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-target-rotting", ("entity", target)), performer, performer); + return; + } + + if (_inventory.TryGetSlotEntity(target, "outerClothing", out var outer)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-must-remove", ("clothing", outer)), performer, performer, PopupType.MediumCaution); + return; + } + + if (_inventory.TryGetSlotEntity(target, "mask", out var mask)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-must-remove", ("clothing", mask)), performer, performer, PopupType.MediumCaution); + return; + } + + if (_inventory.TryGetSlotEntity(target, "mask", out var maskSelf)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-must-remove-own-mask", ("clothing", maskSelf)), performer, performer, PopupType.MediumCaution); + return; + } + + _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person", ("target", target)), target, performer, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person-patient", ("user", performer)), target, target, PopupType.Medium); + + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, performer, cprComponent.DoAfterDuration, new CPRDoAfterEvent(), target) + { + BreakOnTargetMove = true, + BreakOnUserMove = true, + NeedHand = true, + BlockDuplicate = true + }); + } + + private void OnCPRDoAfter(EntityUid performer, CPRTrainingComponent component, CPRDoAfterEvent args) + { + // There is PROBABLY a better way to do this, by all means let me know + DamageSpecifier healing = new() + { + DamageDict = new() + { + { "Airloss", -component.AirlossHeal * CPRAirlossReductionMultiplier} + } + }; + + if (args.Target == null) + return; + + if (CPRHealsAirloss) + _damageable.TryChangeDamage(args.Target, healing, true, origin: performer); + + if (CPRReducesRot) + _rottingSystem.ReduceAccumulator((EntityUid) args.Target, component.DoAfterDuration * CPRRotReductionMultiplier); + + if (CPRResuscitate && _robustRandom.Prob(0.01f) + && _mobThreshold.TryGetThresholdForState((EntityUid) args.Target, MobState.Dead, out var threshold) + && TryComp(args.Target, out var damageableComponent) + && TryComp(args.Target, out var state) + && damageableComponent.TotalDamage < threshold) + { + _mobStateSystem.ChangeMobState((EntityUid) args.Target, MobState.Critical, state, performer); + } + + } + } +} From 3cc05460e08200cef2cdd0d4c38eae4b17304264 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 24 Jun 2024 15:55:56 -0400 Subject: [PATCH 67/68] Finishing CPR --- Content.Server/Medical/DefibrillatorSystem.cs | 18 +++---- Content.Shared/CCVar/CCVars.cs | 12 ++--- .../CPR/Components/CPRTrainingComponent.cs | 3 +- .../Medical/CPR/Systems/CPRSystem.CVars.cs | 24 ++++----- .../Medical/CPR/Systems/CPRSystem.cs | 50 +++++++++++------- Resources/Audio/Effects/CPR.ogg | Bin 0 -> 68840 bytes .../components/cpr-training-component.ftl | 5 ++ Resources/Locale/en-US/traits/traits.ftl | 3 ++ .../Prototypes/Roles/Jobs/Medical/chemist.yml | 4 ++ .../Jobs/Medical/chief_medical_officer.yml | 1 + .../Roles/Jobs/Medical/medical_doctor.yml | 4 ++ .../Roles/Jobs/Medical/medical_intern.yml | 4 ++ .../Roles/Jobs/Medical/paramedic.yml | 4 ++ .../Roles/Jobs/Medical/senior_physician.yml | 4 ++ Resources/Prototypes/Traits/skills.yml | 15 ++++++ 15 files changed, 103 insertions(+), 48 deletions(-) create mode 100644 Resources/Audio/Effects/CPR.ogg create mode 100644 Resources/Locale/en-US/medical/components/cpr-training-component.ftl create mode 100644 Resources/Prototypes/Traits/skills.yml diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index bf2f880532..5fd9d67046 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -214,16 +214,16 @@ public void Zap(EntityUid uid, EntityUid target, EntityUid user, DefibrillatorCo } else { - if (_mobState.IsDead(target, mob)) - _damageable.TryChangeDamage(target, component.ZapHeal, true, origin: uid); + if (_mobState.IsDead(target, mob)) + _damageable.TryChangeDamage(target, component.ZapHeal, true, origin: uid); - if (_mobThreshold.TryGetThresholdForState(target, MobState.Dead, out var threshold) && - TryComp(target, out var damageableComponent) && - damageableComponent.TotalDamage < threshold) - { - _mobState.ChangeMobState(target, MobState.Critical, mob, uid); - dead = false; - } + if (_mobThreshold.TryGetThresholdForState(target, MobState.Dead, out var threshold) && + TryComp(target, out var damageableComponent) && + damageableComponent.TotalDamage < threshold) + { + _mobState.ChangeMobState(target, MobState.Critical, mob, uid); + dead = false; + } if (_mind.TryGetMind(target, out _, out var mind) && mind.Session is { } playerSession) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 2626db1c3a..8bf0c40fc2 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2241,8 +2241,8 @@ public static readonly CVarDef /// Controls whether the entire CPR system runs. When false, nobody can perform CPR. You should probably remove the trait too /// if you are wishing to permanently disable the system on your server. ///
- public static readonly CVarDef DoCPRSystem = - CVarDef.Create("cpr.do_cpr_system", true, CVar.REPLICATED | CVar.SERVER); + public static readonly CVarDef EnableCPR = + CVarDef.Create("cpr.enable", true, CVar.REPLICATED | CVar.SERVER); /// /// Toggles whether or not CPR reduces rot timers(As an abstraction of delaying brain death, the IRL actual purpose of CPR) @@ -2258,11 +2258,11 @@ public static readonly CVarDef CVarDef.Create("cpr.heals_airloss", true, CVar.REPLICATED | CVar.SERVER); /// - /// Toggles whether or not CPR has a (small) chance to revive a dead person if they are otherwise healthy enough for a defib to work. - /// This isn't very realistic, but people who see CPR in movies and TV will expect CPR to work this way. + /// The chance for a patient to be resuscitated when CPR is successfully performed. + /// Setting this above 0 isn't very realistic, but people who see CPR in movies and TV will expect CPR to work this way. /// - public static readonly CVarDef CPRResuscitate = - CVarDef.Create("cpr.do_resuscitate", true, CVar.REPLICATED | CVar.SERVER); + public static readonly CVarDef CPRResuscitationChance = + CVarDef.Create("cpr.resuscitation_chance", 0.01f, CVar.REPLICATED | CVar.SERVER); /// /// By default, CPR reduces rot timers by an amount of seconds equal to the time spent performing CPR. This is an optional multiplier that can increase or decrease the amount diff --git a/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs b/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs index 596fbc0c1d..e01250858a 100644 --- a/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs +++ b/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs @@ -9,7 +9,7 @@ namespace Content.Shared.Medical.CPR public sealed partial class CPRTrainingComponent : Component { [DataField] - public SoundSpecifier? CPRSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_safety_on.ogg"); + public SoundSpecifier CPRSound = new SoundPathSpecifier("/Audio/Effects/CPR.ogg"); /// /// How long the doafter for CPR takes @@ -22,6 +22,7 @@ public sealed partial class CPRTrainingComponent : Component [DataField] public float CrackRibsModifier = 1f; + public EntityUid? CPRPlayingStream; } [Serializable, NetSerializable] diff --git a/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs b/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs index 904026b1dc..9840b8ffbd 100644 --- a/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs +++ b/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs @@ -7,21 +7,21 @@ public sealed partial class CPRSystem { [Dependency] private readonly IConfigurationManager _cfg = default!; - public bool DoCPRSystem { get; private set; } - public bool CPRHealsAirloss { get; private set; } - public bool CPRReducesRot { get; private set; } - public bool CPRResuscitate { get; private set; } - public float CPRRotReductionMultiplier { get; private set; } - public float CPRAirlossReductionMultiplier { get; private set; } + public bool EnableCPR { get; private set; } + public bool HealsAirloss { get; private set; } + public bool ReducesRot { get; private set; } + public float ResuscitationChance { get; private set; } + public float RotReductionMultiplier { get; private set; } + public float AirlossReductionMultiplier { get; private set; } private void InitializeCVars() { - Subs.CVar(_cfg, CCVars.DoCPRSystem, value => DoCPRSystem = value, true); - Subs.CVar(_cfg, CCVars.CPRHealsAirloss, value => CPRHealsAirloss = value, true); - Subs.CVar(_cfg, CCVars.CPRReducesRot, value => CPRReducesRot = value, true); - Subs.CVar(_cfg, CCVars.CPRResuscitate, value => CPRResuscitate = value, true); - Subs.CVar(_cfg, CCVars.CPRRotReductionMultiplier, value => CPRRotReductionMultiplier = value, true); - Subs.CVar(_cfg, CCVars.CPRAirlossReductionMultiplier, value => CPRAirlossReductionMultiplier = value, true); + Subs.CVar(_cfg, CCVars.EnableCPR, value => EnableCPR = value, true); + Subs.CVar(_cfg, CCVars.CPRHealsAirloss, value => HealsAirloss = value, true); + Subs.CVar(_cfg, CCVars.CPRReducesRot, value => ReducesRot = value, true); + Subs.CVar(_cfg, CCVars.CPRResuscitationChance, value => ResuscitationChance = value, true); + Subs.CVar(_cfg, CCVars.CPRRotReductionMultiplier, value => RotReductionMultiplier = value, true); + Subs.CVar(_cfg, CCVars.CPRAirlossReductionMultiplier, value => AirlossReductionMultiplier = value, true); } } } diff --git a/Content.Shared/Medical/CPR/Systems/CPRSystem.cs b/Content.Shared/Medical/CPR/Systems/CPRSystem.cs index 964913f4f7..a41c8653ea 100644 --- a/Content.Shared/Medical/CPR/Systems/CPRSystem.cs +++ b/Content.Shared/Medical/CPR/Systems/CPRSystem.cs @@ -7,8 +7,10 @@ using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Verbs; +using Robust.Shared.Network; using Robust.Shared.Utility; using Robust.Shared.Random; +using Robust.Shared.Audio.Systems; namespace Content.Shared.Medical.CPR { @@ -22,6 +24,8 @@ public sealed partial class CPRSystem : EntitySystem [Dependency] private readonly IRobustRandom _robustRandom = default!; [Dependency] private readonly SharedRottingSystem _rottingSystem = default!; [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly INetManager _net = default!; public override void Initialize() { base.Initialize(); @@ -32,7 +36,7 @@ public override void Initialize() private void AddCPRVerb(EntityUid uid, CPRTrainingComponent component, GetVerbsEvent args) { - if (!DoCPRSystem || !args.CanInteract || !args.CanAccess + if (!EnableCPR || !args.CanInteract || !args.CanAccess || !TryComp(args.Target, out var targetState) || targetState.CurrentState == MobState.Alive) return; @@ -41,7 +45,7 @@ private void AddCPRVerb(EntityUid uid, CPRTrainingComponent component, GetVerbsE { Act = () => { - StartCPR(uid, args.Target, targetState, component); + StartCPR(uid, args.Target, component); }, Text = Loc.GetString("cpr-verb"), Icon = new SpriteSpecifier.Rsi(new("Interface/Alerts/human_alive.rsi"), "health4"), @@ -50,7 +54,7 @@ private void AddCPRVerb(EntityUid uid, CPRTrainingComponent component, GetVerbsE args.Verbs.Add(verb); } - private void StartCPR(EntityUid performer, EntityUid target, MobStateComponent targetState, CPRTrainingComponent cprComponent) + private void StartCPR(EntityUid performer, EntityUid target, CPRTrainingComponent cprComponent) { if (HasComp(target)) { @@ -70,16 +74,20 @@ private void StartCPR(EntityUid performer, EntityUid target, MobStateComponent t return; } - if (_inventory.TryGetSlotEntity(target, "mask", out var maskSelf)) + if (_inventory.TryGetSlotEntity(performer, "mask", out var maskSelf)) { _popupSystem.PopupEntity(Loc.GetString("cpr-must-remove-own-mask", ("clothing", maskSelf)), performer, performer, PopupType.MediumCaution); return; } - _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person", ("target", target)), target, performer, PopupType.Medium); - _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person-patient", ("user", performer)), target, target, PopupType.Medium); + if (_net.IsServer) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person", ("target", target)), target, performer, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person-patient", ("user", performer)), target, target, PopupType.Medium); + cprComponent.CPRPlayingStream = _audio.PlayPvs(cprComponent.CPRSound, performer).Value.Entity; + } - _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, performer, cprComponent.DoAfterDuration, new CPRDoAfterEvent(), target) + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, performer, cprComponent.DoAfterDuration, new CPRDoAfterEvent(), performer, target, performer) { BreakOnTargetMove = true, BreakOnUserMove = true, @@ -90,25 +98,28 @@ private void StartCPR(EntityUid performer, EntityUid target, MobStateComponent t private void OnCPRDoAfter(EntityUid performer, CPRTrainingComponent component, CPRDoAfterEvent args) { - // There is PROBABLY a better way to do this, by all means let me know - DamageSpecifier healing = new() - { - DamageDict = new() - { - { "Airloss", -component.AirlossHeal * CPRAirlossReductionMultiplier} - } - }; + component.CPRPlayingStream = _audio.Stop(component.CPRPlayingStream); if (args.Target == null) return; - if (CPRHealsAirloss) + if (HealsAirloss) + { + // There is PROBABLY a better way to do this, by all means let me know + var healing = new DamageSpecifier() + { + DamageDict = new() + { + { "Asphyxiation", -component.AirlossHeal * AirlossReductionMultiplier} + } + }; _damageable.TryChangeDamage(args.Target, healing, true, origin: performer); + } - if (CPRReducesRot) - _rottingSystem.ReduceAccumulator((EntityUid) args.Target, component.DoAfterDuration * CPRRotReductionMultiplier); + if (ReducesRot) + _rottingSystem.ReduceAccumulator((EntityUid) args.Target, component.DoAfterDuration * RotReductionMultiplier); - if (CPRResuscitate && _robustRandom.Prob(0.01f) + if (_robustRandom.Prob(ResuscitationChance) && _mobThreshold.TryGetThresholdForState((EntityUid) args.Target, MobState.Dead, out var threshold) && TryComp(args.Target, out var damageableComponent) && TryComp(args.Target, out var state) @@ -116,7 +127,6 @@ private void OnCPRDoAfter(EntityUid performer, CPRTrainingComponent component, C { _mobStateSystem.ChangeMobState((EntityUid) args.Target, MobState.Critical, state, performer); } - } } } diff --git a/Resources/Audio/Effects/CPR.ogg b/Resources/Audio/Effects/CPR.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2c7cedd2033c906029dcd1a8d90ab45b68bb0eba GIT binary patch literal 68840 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.mL>w?>>sa5J>hq2ux0H{*l6BSYS#*3Iz* z7jyq~K@d*<{ZDSugp&)z=Mh_roMC5P!d0BJW3B_{)>GJO`g=)+lEDu?=z=6%JU@#b zpZYaZx0k?{GOu>3I<}<0t46NNg$;(?uOg@sY*yTy2p-9>NP03i#w%J+9@u_lf=t?C zX6>@{bx9}PI1Z&z5MUutD8%dzf+|c491pZxPnr45+Xesi$jll&T@YDQT~vM1;Fmp! zf$m^e%l7hHXj4(D2-NyKKk)ldzW=A?C-$e`H+iNc)NsA;Phzo-3tem-`*7-08?^V# zZ;t6;onQc4BS6%1tg0&vz`~3Ozj%->pp*O9W~Z@fZ0mCXhnP1x77|)-NhoP^BH`2f zKI{H*#2BB|*vbaIq&;&wIg zq_+czHUNQ0U2nZ;vD$3hT)lr@^RSVwiR4|a%F@>Ey-DE^5pm&gUIUgU=8T^jVU_!$ z7f#Gpc!)_}eLR7Z2IOm29pNAVN3)Y>2erkGzsTrlNs{tqibyP{{}*k71vxJVF(Q1c z6>h_Nri*a_o0k$#L!a3}+7oHg_&ceVg&=QidAn+@xA?LjcM?prKXQ2n1U~=)S;k6b z89e^ZE3f=Hdt1$JQ4|)u6K|Tj<@Q}z1*H>V{EMefEcs#WMryN@Rx@tT-8U4wgB7Li z@j<3K87R_Xq}(fbg6h=Eg+(qM9$ck-_Z_^41{|K}Zq)wR7QWtJxxR`? zSpf?kRV*!d1YQm3DW+3M5dBEJG^(3Q4Hubd*$a0dd)^_^qO%hB6z$FSV;k5|9A7v# zNVpvOuv5Z6-qscGdEaxoQyOvY5)O}pg?$tj-#&~quiO@}-`aO6c5yuS9};|iFY3jv zMGHRQ7`hM=C8lY`37K_Jvmay(K(xtRxRW(EG$Q9M>G+8rqZj`(KfX9$;(0-OseH?# zvYCL>w;!`HzE7F5j72gg>_r5%X#qj-qP4YbvVS(k)P8Nm&eTRNX+lKR8tb6Z=4T>s z2kUQNg2&BSbQ2JP=CnIB-9en@zYl4^NGOA&m{39}#%mNsTWv{cVOf68*Nk{y@qc&8 zpr;A~mAMUz4ccX5;0xn`{=;?iU*>$EDOVWBSPowV#PlLG`PMmhB=q@v>cvG`uo07| zvzNBNW;gmgWT4+>25sBQPtp$3Q^%x{jpLc(hO@N zm57>D{meP3*Q*ixyZlP$ByKiifC`kSem$MNn*9=M$`pt_#XA|Re#HN>kCR-av6?_` zhuOSovf#ZotC8w-cRCJ8-zDXeAo@!6Eo~!gX=5neK+nW8>L7v5s6tGIZK{27eDxw|3Zt|`nzt@$eyzQn46*t zX#;W0Cme4JfleC&n;Uxl6g%Sk6!;1zP>P6cM$z>G|MT6%+iRFPLTc;Vl|Bz&a%%`t7%h{=La^kgd4t zvdaP{CaF6@+3*bVDkLYz-1e1I#A3!=9=!Q@$DOpH;hFRK=(n~0IyMw<0j}uvoJ8f< zJWhp^-MKuJo@LRmX8kko1%+hbS53I%c?)mO`=9S)(7zB%^}_XUAs6YunyP`mFxSDt z<*3muTsO@+((_3bNs}v_hsrR0;V7|I3IVtxtUIBB+vn@+=-rXzgmC4-t&yaU4(nR& z)oZnPxqf)h1sUJQUHoZD@af=rwW!;IS?6R6O2lDUIu~{QL)!MY7kf)#g!7vJQ>)iIYxE9=DFjGl$)ho$GlXIbE|@Ia-_DjE*G|(LSG}=1>I=m7GAkx^F~-WgazCZ=DnRyhgRK zqyg|X?>kh5Kl|(2GuL^z>&l==(Gh+Zw76af5b1*pytRdMH~E(y`zN9P3Kq4Aau=(s zuNT)sgu>ykUbQ7TkIhmm>0}RJt?O17#^Wl2^`ON^l|6g!Y-ZE>x*iO27qrOJkkc2J z;V3IJ4cQSTc^+7k8uq>e45JmT$pO$-mt}I}?AjQGCEORUJ>o^Bq6TR$Y%ZjU^0=nFrsNo^p}nLvi7;FwfIqi_@16s$okZl8 zV)p4yNkbe-d!vDU>}(C-+3DO@_T7#38BdEklk{F>@%-O2>`r|YfN$rvT6U2t&RUE2 zu`;!Dvv=t7uiGGr0w7Gp;AK13@t$sHompd;tj!SI)K+HvU`~I9Gfe;KyIHj#8TdpySM54uj^<5cs19z3)2t)pd#{GxgG%i5kj;%wT0 z>nOKb_HyGyw7SB~E`FTRFzn0VuLt2Ci0QtJ_Ss5hTcQ!!z=1M@zJaKisr`L|wh3Ce zm_)nki@`- zd$==msyBbioa@5wjAmt>_tZ}MpQ6L*L?}?}Ai!_TvJe@q6$#S+lv0b*#l8d~x-=;l ztBVWfj_Yy-^25gSf|dp~aDTw8K5dwt^o~qvjg6^r{ou7Xc9LPzGqt7H>-aVA{V0nx z$dD1-!V^lIS3SAA8}dxj!>NgY+*Ua^7+SI|w%MWx1dRi`VN`ERf^XsFwtlodqND5y z)0)+Wb7W0j-8cSm@{O+k>a5FMpFp=aUW^l;C)O;*V6w^-9@s+2^`ki61#+p{m(sTdvm>QIu2(Gn{eUF!ZhWOtyC_}?uGPHEb3Tt)O8B* z{h+G_)m2}rNCsEdpv3bKr}*dd{(ixG3>r5;Lhe8M{UjriaP;+R0=$f9TfUsb`-iFHv$<;0vciQ&f$wgS+j#$)-}z zo|t-?*6__2cQAfSj{m}a#f5g(`|t}qLc!*)24`Xui|cE~ zcY3=9I)~&@;eboD`M}Wg9>HHb4Z6O4UFt#mQhuJtX-!MG?MUU{BE_N?x7mj@I0k+FHiGSkpiC!vb^xknuvFAHU+5;+CU&5w}$&E_i%oL zj((Ql(e5Osc0X$g&1V+LN!Hl3mM!$q8KO0fN_34^!W7LtUQ-Hh+n2G9p`rp8NpF?d zau;mmq#bfcbTkY=mGibLV$-KR?|*Wq-DG$R{DA>PIPhETl1d;!4OZh&hI56zX8TFt z9&Osm@nB}UHzC)R#8d|P(u2HkJaYqQkE2a{KEsK(A0V@bSeq%;+*U0TbSco*y54)7 zC}$?CE!1;jKc?<=|I?&vRDtKj9#Rb%f6z_?T6FdNO3StP>`^E$k*an3oRd;AqFP81 zu*mJ_=foLjyE-9M)<$W05F=s_5+&>NbEk<+LEWS48OQPJBr@6o8S2=oFPoi5+p6P3RT1Q7tsc|d_BMm(lL81m6X_V)XWg$Dv3$JleW z)6%JhTvYk2`zKDy_LkNtJG@O-eAI(v$%hfb3f3K9Xe+StlRF+Ph~8_f ze;DrQ=z`)VDlHmO6qGGVtDK(3t2Rmx-3~ClG~D#~T^oKZYM}K!Rw z8Sd`M?^Nb^il5yh2+$-31@MY~{GRM}B9cvvf_A8PS`k+q8o#fuJH2<+WA@eAP7hCe|N*rpC!5Ko5+NK(^w)=~p)DMtqmxlMG!!(b#B-{XzaLyPv z$SF3qld&m|*rieDt$Tb5PZngBNa)hW{cO35c0nAD9jL0Hy_>5)231Oww$de z+eq9NA?F#?+T)&jT}v?q<%}3zS0)LU#aw>1k{daw-N6=*rYNXqGErK|N4dJd9kBDdEHDCjkW4~P@-n&dKp7ov~u~mI>3pOp1tDib5W>q{MrAWFj zXX;T;b@%4|5 zoiI9eOTgA>i$l!FMzc%uHQbUz%r~nV(`KRFaq=EY4-@7)!SAXi5$kn}GFlur%J@Sc~J(Cm2R zh+0)8F~o@s_=_Y0|0ory^J*j@=d(sCFq59=o4YWSbPFxU;oD?5!Mk&O9F6Kz-q`X% z8C3fp-H^04$y^<#R}ij6kNrPvne6%NtkKq?pSf znBQ>sd$a_qYG*v+P+8;|{ArUKNeLF&TL4wFQ$sSbf-jk(GhjTm7pun!l$Bfu-)M@ie{cic7YFY<{p<%2#VqQ`BdwBC#UxA$knUde-V!0+T5z6-p12d#?679sOpc#CP_NO>GDKj3wo3qHF z$vFz74E82ItrecKQy3UAL$P%IT6l{eIIwSMtNW%j?Waerjf<_$^{G2k3OmVY*GTG7 zybT1O^2*ux@T-&pnu=VC<^@jzQrS&IwaP!GIIEAwg{lu7wEeV3iixWHw6E*u%0cwy=CXRKB%4KbHxO27Moq+Jh zJ6&Jn(+I6AyslLcr5-wNagtrFgwp)det)>4I#Oq#4m161^{i=SXfEsbpd?t}uPiY+ zVI8O`McdI=8Mfo3(bVs^RO!(~yC4%SbOSNVj0biP9KLK}RxtfFI4zb`x%XIUb* znB9=+CF;eY{@o^&@31+YiUhX1@C|A6n3fy4HAC>e(1q@v_DYk+t$(xV{f%$%{xsv; z`eN*EA5y{pi=*h>W^Ull-Jio}XPhUoIJTm#rj41hszRxu*~WMN4q5O!yb+=sHv`&9 zLK{nZWqSXA;AX&JdLkx`GC_&_8be{!RFzc~6o1Rk$cyq-`k(avH2vfz_JjZ(dqQ|K z_5X@2?5zwL**@?zq6LEJ=?%X2csBk@a0!r zSI6Jmi$wc8)}lRuFd}gZarSZ z`mr^aMoz~E^5e^$QH-{Vv7gGrdL^ja;&XL=vK28Zs-(meWdsV9T{VD=#-Rc=H@vl{ zI-jtM`M7Dk;R7vWuo*4wyc;{uuT#r=!_dV^a`<6xJ~vwCZh^|TVe5dmsrmy$eHyBu z^IZQnz)oIkDnFCR)VQ=;N>g?5s2^J$ySI5nb&90*J|#vwp#pqH&EX<6{hRj(2ex0kEqw!=G?x9 zRvb@gGmyL&6hDe+)0?6kr*TOwUvPrs4S{qh^v5?`FQYPb%&(wNV6`amTnsWK17t+=y zmEJ-k-7f`MUnSu19GqP&G}zft<0|rEF<=_(`YKpSa-CESyo`L2ONkwB5~>PnZApD+ zq->suS(4&u7lh(FDSYwj)^cOD{yiUR%k>g(1C9+D>jEbBOXnHiQZ32BLrh$`;NOL} zCwlyE5ApdF%(IYwi5@`CE!C#Ea@th}9dJ`U9M2iJ2#YC`;T73a#>D&V=yNW%mk#Nt zDY3Tb*lk%My(&O1*ma~V_@0Mck6+l`ajQh;iEn*xU_4&*J>g&KAa~h;{~wtY18>Fk zbi=9UvkA=>&p^GrGq14S*@-p9`oetBwOh(3l;H1c5DLF*GO+ui{3>%W;m4ku+F}0q z*iONZ?-h=aw&O&^@py1}KTOgfV_TWSikVo4ZI2>pw*|(}gDqlozTMOu`?%C}zQZ$R zxTmDeXl`0fRi$yJ!tSugh>Hk+^i|g6E1X&5VaI47)*ZC(J#H@Hlo6q6&Yl-++vFv(@{CdXlehC1;I6SgIF?Mox=L-xNQU z-!h__BQsoipMv3SoVAn$7IQyG*raF-DCaSZSxxYyfs0ATqzfUDpmbN(NfbRX%K!V( zPXo%uWRb3;OX-<>%WuyXkwSbjh9TsGi)=%>c{YLzZ=1N2x*~oHjb4B z`infu&^7h-LYG8BJUWZjiVkc6Nv;{EhEz{ zdd~Tl0DEO>`UX)xF-<6urGxvB&{)I2g9-)Gy-^4p%-=zcoMg z)4Arto!0$#MxzRnz4DOq{kM}hIEhJ?88s;eDT;@uX2p2+_BKTJALD94*RDYD(EVHD ztv7e!l7};A+}~bUjjg-NHgn;=u&}QV+*&Zt?~?xUC?%63(0MYg@xfh#Vyl|Q8uG>l z=M0IM;LPf@$*0zDT@@<0YtmB^8y}ltk_Rswjb%Sq3)lO=K#pEdc0&Evbwk^{cNIDd z8&`XA6h#)CBYRf{#*(Su>{z5EycNTsB-xtC+M&6?`H{xWfNQm3TvSMhO|51kDh$bZRYGFmhkw^6VU#}zpR8wzi_z!m2= z8=8<2*;!h)O!nbP7R0VLMZ!K_#Udq`MgnA}AuIbfa`P3>Ywxj?oRH zyJ6G@+up(VeXr~N^S6z~b&c)b^W58WpYu8Ae8#|=|IGh5=2!14IQqrQMz!A{m#j1I zkrP?cBP{-yoQ#mI^Ul+csOq>W_b%3F>xN76BW4Avmj-}2@JtC4QTl&2iwU8}%d7IJ z%mQW`CN3g97C#o`TO~QuZTkAC?0gl&IH#X+DU?1MlqAx~j)+y`oL(ORL=8p7Jm^uL zy@VmpI2%~c^vr2Itnt^wHs3z`as03WfNGz1Ny~+fqo2-?o{{Y8n=D8_IK|yIlnU5E z0Ta)PGqRd9#(TyrKET)9d>V}y9f!+??^$yA(f*@4yR>wDRp>AP`Z4Baf7#3|QyeNB z`-Jq$fA9-m-u{nd=@6IWN)J&>Q=|W?SEOSn=Q8_iIg4tsy5<{W_%=jDz&|q{lWF7_ z0d_q42escXVafo3Rc*YU3yI*&J^F2BvZ$;wYN6SR`$2)9Ry~>5VB6QDPHfpxe95QO zhm>IwWd2Z96Zo6{tnFLQscx+;xYJ@WPF_-Z+x_l*E<6IS=`qcTvWekew}`3jX6Y;{ zf7HA-_f9lERxsVmRu94Jv`II)8i#UD#ECU&p)`9x7*jCFr%@a2 zV;{+LFWP6f$e!az{2A=SQX@7pD~LQ*Y+d#U{ZUj7v*|kVL=D=LANOUM=D6P_A-8&m zy)jKC7}d_~$<;)mrOx+x41nR>k?-Q3oc$0!gk--rc;|B>yV>_&_<7+I#O}oCB(6eN zDlDO`WUp&Pe0sdnL)PR~jRnK+-z zdyAb5rHw9@Zz>bHI;Ps0ZXghTvp%yFS*@r|aKrMzABHNEJ)m7U0n0U9{Omew)KKM_ zivpc17XAwEDwwU`Fod9oj>uJN>gO}=cettNf_=!7^NefQIfW!Mjm zIrB-?@*B3fvz-3~f1F8om;6hG_WJDNR7$2SUC^xwnmh@#zIghlkSWRG85^57+NnCg z2|aDs|0}PgcVxMnc(csx@96rfasgLD+VZ+2n<+tGiM3C zm25xh0Ww6%TaO~HirwJk-wN(@dNQ3y4WC4Tn_+7XTbh|Q;Z`?0tJtQ12B49-xa~u= zc6O5{$*J0G*#R@hAC&kI2>_r>5~ag-*40MNbJ%C*S+3u!;e^#0xI=0?A%CJsMrw1g zJfoh@^WHXr9Bu4v=krf@H%C)?9BMYDG&)7VlUVl%kIV3&@h?dmAzsM8rwa*JI$jCM zagy`oaB}K4L~M1A=XotRb;#>UZ}0F<=xd-_Lb z&Hjh!<3_9gZ(Wq>u1ZhIi7{+%Ka7vuE6yl-=`z#6UKISh=_?akmAi@~M@PHM4kW={ z1ihv!V;AgnwO?sASlihA>{IsVqL_qB=TMycQ?|1n4gTN9j$yq{Xx%uEi@R%M;N)$K z+1;*!gc0-7*orPrjMlfOCP7L#R0BVawcmL%VC{PMkvTFKbXMaB@j ztql||*~R->N8y((2rjGk7ilyZdORBS2%*hW-zL_(}Ati_8e%;$szI#9F zSMSc+bJVH>(p`Oa{_{Be?>H0d>chZ-H~=VFjee7Bt}cahmsvDzFLT_mKKR)ib1>~? zK627qA-Q{@F}>ekV)Lajo3x>XkrKuLdWJ0~4ZNz{zZ@B*d7wS#rLE$l(fB)tx^5<1 z1M_jWUu0Y*f5X`3T<1YlY8i2GDY)mR3 zlRgHeQPT4YYNEqX#{{ECKK9^%1=MN9B^-Scv*TEgO3-tZ2ypc{>Ccc?WiOEv+|$gM zxmVR%2A8;+L4SXV&dS653YqQ7p^g&eu;sjP7%|&6UN}?x>*ht(P*K#c1yEX3TnUc?Fcch#3kizeB*U%j{A%Fg@OTs7X1L!&+O|I1MTMy{nU*Br&w z7l!5cMaKt@7cZoFB;WDLyy6#>!o9+oUgB=fb~IHL7nfvZ{|@t{{9iZ>{BtA(+z$US zQO!FR=2#Q)HTj)wcS^0t<5Z_SQh@}5Ou24}+!j@ue$2yOt% zlOBXW{F6F>iJZ`61yBZ~&T)a4WnpV4ezVr;>#dnGWfPqRF*nI95G8m{3WiJabd$f(i9Tgg>JvqtP z+L}$5^lpDngty_$w8Be1Y8BBFi#V=eA%MfZ!bUHOm?(fc

UUXQ{C-_~qG0dZv#l zCq_`E1x}SXgE`LQ zbrkgM_!ki11;k1qn1qlZ>3gGrlgiLc#;m7K+btJxRUTw*KY!M+G`4Gt zL!o!!t=q2pemc#DBobXk8@LecZ1vX+_U7cn-s3Nuw@%JLOx~W!vzwR2bO^gmY#ziR zUK28rv(w!%)+>qaP>q0wG|pQ;ayN|XGy)-K(|n*6JhSMK^}`F;Gat8djN-&9FH=U! zsK3F?$t=T;b=4`y+%#7bn0I?kP%P>~@yAbAJQn=iG=p{a8IT`UnE>*YwrMn$s#oO5 z6iX+$Om%$BuDNgi;4^=+4O`#AosL~gZ`25mst4u!QO5{fn{Aw>=I2~KYu4*$`>aF< zbDaIJ<%@4cdef;_BOB-{)ka=X;=rvhAHaElEJ}-Cge??rQT1Bep`4 z!1bNMLnhXf^IT+eXG*#(G(xB&sGsoAVnit6VgDJan8Bk4j?{f?<(_{#p~^jeN+mmo zGjPAi%Fd`+hRUKI1anaj?b928=EI88MEdokw_o2lKr4qJXd)+7R^F?3vf9ZSx|Q)G%#oW)tK_F)G}i&WSGGgV`sud z@r&}eb`%(1F&@sw@a0-a7d_o{$3&06>Ph{Bc)?bOqvA$`en>yJUJO-l^t=q%U1`WL z&qmmLx9pS}1!N15KFR3mckDlFz1VA(*~nVgEZvv#^SJ1MKUePm&`;*)_Q5%%&-gK(#xusMm618_PK{3@q~EU~XZe$M&vt;f`H3MH)H${hE|8*v&w7%IHE zPrkO={i3yfl-3lldHS4xJjzgBp&%7|R^q$$kp%K$)Rj6lJJX{zYT7qr)bh~8*I|OQ z&L4bMQ=tOvb)D@n{%fE!#gpQp$R{n7&enr!dSA4fthW9_%PR7IG)munD@O8?ip}58 zca0nu96BFafheG3^VgdK=Q%hmS(?upPCSZIhtCMT-uYi{(qMOW6`rGjAR;NjPF{u*AI~i89u%rBwDN`}Qeqk4b3f(A;2d zDH3A|Ri0Lh6oH_qWe4p=I3}vleR@IH16MxdA)A{vzv6*shF6v7j2rEF`SBaE10h|Z*(!2 ze~QwpJ)Sy=2YaX)ZgcPMDT`6<@f zg%_l-DW-TWxzD}PFlbg;_7oJW+6ek9H{b>|QHofMuIW6{&+GnW`RMH3^SKbY_2tkO zvn}aqp|=Vr5&S0k2&RTn(u?#vW(9ou0$4mYcreMDiSf8$7q1eJx^zT5us!&vy;(f?OFBw;9M`vdbK zK{?81CVms{)hG|uU0UO)g_fji5c8?fnu0Eh| zkLwv}W6It$n=sDMD!>=$$m#9M2_s61?#A{)7m9y1`eG&pEwWz&ak0>}+{#72V%ud; zjgxJpME!VWj%M=@>MwT-tb^P>tC6n8JduY^!cRcVGkeb`U?!F%0DR4#*wG66TX&!Z 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 literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/medical/components/cpr-training-component.ftl b/Resources/Locale/en-US/medical/components/cpr-training-component.ftl new file mode 100644 index 0000000000..d196766561 --- /dev/null +++ b/Resources/Locale/en-US/medical/components/cpr-training-component.ftl @@ -0,0 +1,5 @@ +cpr-start-second-person = You start performing CPR on {CAPITALIZE($target)}. +cpr-start-second-person-patient = {CAPITALIZE(THE($user))} starts performing CPR on you. +cpr-must-remove = You must remove {THE($clothing)} from the patient. +cpr-must-remove-own-mask = You must remove your {THE($clothing)}. +cpr-target-rotting = {CAPITALIZE($entity)} is too far gone... diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index dc3d407e5e..e154717184 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -48,3 +48,6 @@ trait-description-NaturalTelepath = As a naturally occuring Telepath, you are ca whether or not you possess any notable psychic powers. This offers all of the same benefits and drawbacks of Latent Psychic, except that you are guaranteed to start with full Telepathy. You may still gain powers as normal for a Latent Psychic. +trait-name-CPRTraining = CPR Training +trait-description-CPRTraining = At some point in your life, you have received training in how to perform CPR. + This trait is automatically given for free to medical doctors, and is intended for non-medical characters diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml index b7e1cc7dff..0966c59e83 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml @@ -14,6 +14,10 @@ - Medical - Chemistry - Maintenance + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: ChemistGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index 8ac39d3865..7d1edce04d 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -44,6 +44,7 @@ components: - type: PsionicBonusChance #Nyano - Summary: makes it more likely to become psionic. flatBonus: 0.025 + - type: CPRTraining - type: startingGear id: CMOGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index 8418c1708a..0539739688 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -16,6 +16,10 @@ extendedAccess: - Chemistry - Paramedic # DeltaV - Add Paramedic access + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: DoctorGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index a2933f3ef5..082a9df54e 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -15,6 +15,10 @@ access: - Medical - Maintenance + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: MedicalInternGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml index 288843274a..60f0b503df 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml @@ -23,6 +23,10 @@ - Paramedic # DeltaV - Add Paramedic access extendedAccess: - Chemistry + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: ParamedicGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml index 761a92ded4..e2cacc4810 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml @@ -21,6 +21,10 @@ - Medical - Maintenance - Chemistry + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: SeniorPhysicianGear diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml new file mode 100644 index 0000000000..fa06198c6f --- /dev/null +++ b/Resources/Prototypes/Traits/skills.yml @@ -0,0 +1,15 @@ +- type: trait + id: CPRTraining + category: Uncategorized + points: -2 + components: + - type: CPRTraining + requirements: + - !type:CharacterJobRequirement + inverted: true + jobs: + - MedicalDoctor + - Chemist + - MedicalIntern + - Paramedic + - ChiefMedicalOfficer From 0d2fa143026c3ec1b970dba4fa65d60992e062b9 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 28 Jun 2024 15:37:40 -0400 Subject: [PATCH 68/68] Update base.yml --- Resources/Prototypes/Entities/Mobs/Species/base.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index b2a76d0041..d9c910f89f 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -310,10 +310,6 @@ - type: FireVisuals alternateState: Standing - type: LanguageSpeaker - speaks: - - GalacticCommon - understands: - - GalacticCommon - type: entity save: false