]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add moon boots (#29009)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Sat, 15 Jun 2024 03:43:23 +0000 (23:43 -0400)
committerGitHub <noreply@github.com>
Sat, 15 Jun 2024 03:43:23 +0000 (20:43 -0700)
23 files changed:
Content.Client/Clothing/MagbootsSystem.cs [deleted file]
Content.Server/Atmos/Components/MovedByPressureComponent.cs [deleted file]
Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs
Content.Server/Clothing/MagbootsSystem.cs [deleted file]
Content.Server/Damage/Systems/GodmodeSystem.cs
Content.Server/Gravity/GravitySystem.cs
Content.Server/Singularity/EntitySystems/GravityWellSystem.cs
Content.Shared/Atmos/Components/MovedByPressureComponent.cs [new file with mode: 0644]
Content.Shared/Clothing/Components/AntiGravityClothingComponent.cs [new file with mode: 0644]
Content.Shared/Clothing/EntitySystems/AntiGravityClothingSystem.cs [new file with mode: 0644]
Content.Shared/Clothing/SharedMagbootsSystem.cs
Content.Shared/Gravity/SharedGravitySystem.cs
Content.Shared/Inventory/InventorySystem.Relay.cs
Resources/Prototypes/Entities/Clothing/Shoes/misc.yml
Resources/Prototypes/Entities/Structures/Machines/lathe.yml
Resources/Prototypes/Recipes/Lathes/misc.yml
Resources/Prototypes/Research/experimental.yml
Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET-vox.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/icon.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/meta.json [new file with mode: 0644]

diff --git a/Content.Client/Clothing/MagbootsSystem.cs b/Content.Client/Clothing/MagbootsSystem.cs
deleted file mode 100644 (file)
index a3d39ea..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-using Content.Shared.Clothing;
-
-namespace Content.Client.Clothing;
-
-public sealed class MagbootsSystem : SharedMagbootsSystem
-{
-
-}
diff --git a/Content.Server/Atmos/Components/MovedByPressureComponent.cs b/Content.Server/Atmos/Components/MovedByPressureComponent.cs
deleted file mode 100644 (file)
index ca83076..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-namespace Content.Server.Atmos.Components
-{
-    // Unfortunately can't be friends yet due to magboots.
-    [RegisterComponent]
-    public sealed partial class MovedByPressureComponent : Component
-    {
-        public const float MoveForcePushRatio = 1f;
-        public const float MoveForceForcePushRatio = 1f;
-        public const float ProbabilityOffset = 25f;
-        public const float ProbabilityBasePercent = 10f;
-        public const float ThrowForce = 100f;
-
-        /// <summary>
-        /// Accumulates time when yeeted by high pressure deltas.
-        /// </summary>
-        [DataField("accumulator")]
-        public float Accumulator = 0f;
-
-        [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("enabled")]
-        public bool Enabled { get; set; } = true;
-        [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("pressureResistance")]
-        public float PressureResistance { get; set; } = 1f;
-        [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("moveResist")]
-        public float MoveResist { get; set; } = 100f;
-        [ViewVariables(VVAccess.ReadWrite)]
-        public int LastHighPressureMovementAirCycle { get; set; } = 0;
-    }
-}
index cb50ff114e0faaaa67b64b3f8646fe781428b5f1..2e41e45d3f8c1fe73d9ce1c09f1dc14f6d37f02b 100644 (file)
@@ -1,5 +1,6 @@
 using Content.Server.Atmos.Components;
 using Content.Shared.Atmos;
+using Content.Shared.Atmos.Components;
 using Content.Shared.Mobs.Components;
 using Content.Shared.Physics;
 using Robust.Shared.Audio;
diff --git a/Content.Server/Clothing/MagbootsSystem.cs b/Content.Server/Clothing/MagbootsSystem.cs
deleted file mode 100644 (file)
index 3838ad1..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-using Content.Server.Atmos.Components;
-using Content.Shared.Alert;
-using Content.Shared.Clothing;
-
-namespace Content.Server.Clothing;
-
-public sealed class MagbootsSystem : SharedMagbootsSystem
-{
-    [Dependency] private readonly AlertsSystem _alerts = default!;
-
-    public override void Initialize()
-    {
-        base.Initialize();
-
-        SubscribeLocalEvent<MagbootsComponent, ClothingGotEquippedEvent>(OnGotEquipped);
-        SubscribeLocalEvent<MagbootsComponent, ClothingGotUnequippedEvent>(OnGotUnequipped);
-    }
-
-    protected override void UpdateMagbootEffects(EntityUid parent, EntityUid uid, bool state, MagbootsComponent? component)
-    {
-        if (!Resolve(uid, ref component))
-            return;
-        state = state && component.On;
-
-        if (TryComp(parent, out MovedByPressureComponent? movedByPressure))
-        {
-            movedByPressure.Enabled = !state;
-        }
-
-        if (state)
-        {
-            _alerts.ShowAlert(parent, component.MagbootsAlert);
-        }
-        else
-        {
-            _alerts.ClearAlert(parent, component.MagbootsAlert);
-        }
-    }
-
-    private void OnGotUnequipped(EntityUid uid, MagbootsComponent component, ref ClothingGotUnequippedEvent args)
-    {
-        UpdateMagbootEffects(args.Wearer, uid, false, component);
-    }
-
-    private void OnGotEquipped(EntityUid uid, MagbootsComponent component, ref ClothingGotEquippedEvent args)
-    {
-        UpdateMagbootEffects(args.Wearer, uid, true, component);
-    }
-}
index 404cc6390577542b6f9439310c52c239c4ada345..d896fba71c49c41103dc723f16a5841de2083f02 100644 (file)
@@ -1,4 +1,4 @@
-using Content.Server.Atmos.Components;
+using Content.Shared.Atmos.Components;
 using Content.Shared.Damage.Components;
 using Content.Shared.Damage.Systems;
 
index ea62d4a81954bca086e9f4caee416485786af18a..6807b9df4a4e7ea5fe2e447f4af525cf05dbb6d9 100644 (file)
@@ -1,7 +1,6 @@
 using Content.Shared.Gravity;
 using JetBrains.Annotations;
 using Robust.Shared.Map.Components;
-using Robust.Shared.Utility;
 
 namespace Content.Server.Gravity
 {
index 779b2f59719d19178846fc9b25d51213df474b2f..f53d658ebd7f2a238b10f3070699e9b5eb3949c6 100644 (file)
@@ -1,6 +1,6 @@
 using System.Numerics;
-using Content.Server.Atmos.Components;
 using Content.Server.Singularity.Components;
+using Content.Shared.Atmos.Components;
 using Content.Shared.Ghost;
 using Content.Shared.Singularity.EntitySystems;
 using Robust.Shared.Map;
diff --git a/Content.Shared/Atmos/Components/MovedByPressureComponent.cs b/Content.Shared/Atmos/Components/MovedByPressureComponent.cs
new file mode 100644 (file)
index 0000000..8a4e2c6
--- /dev/null
@@ -0,0 +1,31 @@
+namespace Content.Shared.Atmos.Components;
+
+// Unfortunately can't be friends yet due to magboots.
+[RegisterComponent]
+public sealed partial class MovedByPressureComponent : Component
+{
+    public const float MoveForcePushRatio = 1f;
+    public const float MoveForceForcePushRatio = 1f;
+    public const float ProbabilityOffset = 25f;
+    public const float ProbabilityBasePercent = 10f;
+    public const float ThrowForce = 100f;
+
+    /// <summary>
+    /// Accumulates time when yeeted by high pressure deltas.
+    /// </summary>
+    [DataField]
+    public float Accumulator;
+
+    [DataField]
+    public bool Enabled { get; set; } = true;
+
+    [DataField]
+    public float PressureResistance { get; set; } = 1f;
+
+    [DataField]
+    public float MoveResist { get; set; } = 100f;
+
+    [ViewVariables(VVAccess.ReadWrite)]
+    public int LastHighPressureMovementAirCycle { get; set; } = 0;
+}
+
diff --git a/Content.Shared/Clothing/Components/AntiGravityClothingComponent.cs b/Content.Shared/Clothing/Components/AntiGravityClothingComponent.cs
new file mode 100644 (file)
index 0000000..a8fcbdd
--- /dev/null
@@ -0,0 +1,9 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Clothing.Components;
+
+/// <summary>
+/// This is used for clothing that makes an entity weightless when worn.
+/// </summary>
+[RegisterComponent, NetworkedComponent]
+public sealed partial class AntiGravityClothingComponent : Component;
diff --git a/Content.Shared/Clothing/EntitySystems/AntiGravityClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/AntiGravityClothingSystem.cs
new file mode 100644 (file)
index 0000000..c5b2ee3
--- /dev/null
@@ -0,0 +1,23 @@
+using Content.Shared.Clothing.Components;
+using Content.Shared.Gravity;
+using Content.Shared.Inventory;
+
+namespace Content.Shared.Clothing.EntitySystems;
+
+public sealed class AntiGravityClothingSystem : EntitySystem
+{
+    /// <inheritdoc/>
+    public override void Initialize()
+    {
+        SubscribeLocalEvent<AntiGravityClothingComponent, InventoryRelayedEvent<IsWeightlessEvent>>(OnIsWeightless);
+    }
+
+    private void OnIsWeightless(Entity<AntiGravityClothingComponent> ent, ref InventoryRelayedEvent<IsWeightlessEvent> args)
+    {
+        if (args.Args.Handled)
+            return;
+
+        args.Args.Handled = true;
+        args.Args.IsWeightless = true;
+    }
+}
index 27fb0c1a5024d24f5be8dbea54a8439b33438144..bb3b05074f2f3fa3f02f85c2d5e8c2dc29676c9d 100644 (file)
@@ -1,5 +1,8 @@
 using Content.Shared.Actions;
+using Content.Shared.Alert;
+using Content.Shared.Atmos.Components;
 using Content.Shared.Clothing.EntitySystems;
+using Content.Shared.Gravity;
 using Content.Shared.Inventory;
 using Content.Shared.Item;
 using Content.Shared.Slippery;
@@ -9,8 +12,9 @@ using Robust.Shared.Containers;
 
 namespace Content.Shared.Clothing;
 
-public abstract class SharedMagbootsSystem : EntitySystem
+public sealed class SharedMagbootsSystem : EntitySystem
 {
+    [Dependency] private readonly AlertsSystem _alerts = default!;
     [Dependency] private readonly ClothingSpeedModifierSystem _clothingSpeedModifier = default!;
     [Dependency] private readonly ClothingSystem _clothing = default!;
     [Dependency] private readonly InventorySystem _inventory = default!;
@@ -29,6 +33,11 @@ public abstract class SharedMagbootsSystem : EntitySystem
         SubscribeLocalEvent<MagbootsComponent, GetItemActionsEvent>(OnGetActions);
         SubscribeLocalEvent<MagbootsComponent, ToggleMagbootsEvent>(OnToggleMagboots);
         SubscribeLocalEvent<MagbootsComponent, MapInitEvent>(OnMapInit);
+
+        SubscribeLocalEvent<MagbootsComponent, ClothingGotEquippedEvent>(OnGotEquipped);
+        SubscribeLocalEvent<MagbootsComponent, ClothingGotUnequippedEvent>(OnGotUnequipped);
+
+        SubscribeLocalEvent<MagbootsComponent, InventoryRelayedEvent<IsWeightlessEvent>>(OnIsWeightless);
     }
 
     private void OnMapInit(EntityUid uid, MagbootsComponent component, MapInitEvent args)
@@ -37,6 +46,16 @@ public abstract class SharedMagbootsSystem : EntitySystem
         Dirty(uid, component);
     }
 
+    private void OnGotUnequipped(EntityUid uid, MagbootsComponent component, ref ClothingGotUnequippedEvent args)
+    {
+        UpdateMagbootEffects(args.Wearer, uid, false, component);
+    }
+
+    private void OnGotEquipped(EntityUid uid, MagbootsComponent component, ref ClothingGotEquippedEvent args)
+    {
+        UpdateMagbootEffects(args.Wearer, uid, true, component);
+    }
+
     private void OnToggleMagboots(EntityUid uid, MagbootsComponent component, ToggleMagbootsEvent args)
     {
         if (args.Handled)
@@ -51,9 +70,11 @@ public abstract class SharedMagbootsSystem : EntitySystem
     {
         magboots.On = !magboots.On;
 
-        if (_sharedContainer.TryGetContainingContainer(uid, out var container) &&
+        if (_sharedContainer.TryGetContainingContainer((uid, Transform(uid)), out var container) &&
             _inventory.TryGetSlotEntity(container.Owner, "shoes", out var entityUid) && entityUid == uid)
+        {
             UpdateMagbootEffects(container.Owner, uid, true, magboots);
+        }
 
         if (TryComp<ItemComponent>(uid, out var item))
         {
@@ -66,9 +87,28 @@ public abstract class SharedMagbootsSystem : EntitySystem
         Dirty(uid, magboots);
     }
 
-    protected virtual void UpdateMagbootEffects(EntityUid parent, EntityUid uid, bool state, MagbootsComponent? component) { }
+    public void UpdateMagbootEffects(EntityUid parent, EntityUid uid, bool state, MagbootsComponent? component)
+    {
+        if (!Resolve(uid, ref component))
+            return;
+        state = state && component.On;
+
+        if (TryComp(parent, out MovedByPressureComponent? movedByPressure))
+        {
+            movedByPressure.Enabled = !state;
+        }
 
-    protected void OnChanged(EntityUid uid, MagbootsComponent component)
+        if (state)
+        {
+            _alerts.ShowAlert(parent, component.MagbootsAlert);
+        }
+        else
+        {
+            _alerts.ClearAlert(parent, component.MagbootsAlert);
+        }
+    }
+
+    private void OnChanged(EntityUid uid, MagbootsComponent component)
     {
         _sharedActions.SetToggled(component.ToggleActionEntity, component.On);
         _clothingSpeedModifier.SetClothingSpeedModifierEnabled(uid, component.On);
@@ -79,10 +119,12 @@ public abstract class SharedMagbootsSystem : EntitySystem
         if (!args.CanAccess || !args.CanInteract)
             return;
 
-        ActivationVerb verb = new();
-        verb.Text = Loc.GetString("toggle-magboots-verb-get-data-text");
-        verb.Act = () => ToggleMagboots(uid, component);
-        // TODO VERB ICON add toggle icon? maybe a computer on/off symbol?
+        ActivationVerb verb = new()
+        {
+            Text = Loc.GetString("toggle-magboots-verb-get-data-text"),
+            Act = () => ToggleMagboots(uid, component),
+            // TODO VERB ICON add toggle icon? maybe a computer on/off symbol?
+        };
         args.Verbs.Add(verb);
     }
 
@@ -96,6 +138,18 @@ public abstract class SharedMagbootsSystem : EntitySystem
     {
         args.AddAction(ref component.ToggleActionEntity, component.ToggleAction);
     }
+
+    private void OnIsWeightless(Entity<MagbootsComponent> ent, ref InventoryRelayedEvent<IsWeightlessEvent> args)
+    {
+        if (args.Args.Handled)
+            return;
+
+        if (!ent.Comp.On)
+            return;
+
+        args.Args.IsWeightless = false;
+        args.Args.Handled = true;
+    }
 }
 
-public sealed partial class ToggleMagbootsEvent : InstantActionEvent {}
+public sealed partial class ToggleMagbootsEvent : InstantActionEvent;
index df13be51fd4e87ea264a00801d385315828b51c8..42a6d5d1f8024e72af81508b44db70bd653fb699 100644 (file)
@@ -1,9 +1,7 @@
 using Content.Shared.Alert;
-using Content.Shared.Clothing;
 using Content.Shared.Inventory;
 using Content.Shared.Movement.Components;
 using Robust.Shared.GameStates;
-using Robust.Shared.Map;
 using Robust.Shared.Physics;
 using Robust.Shared.Physics.Components;
 using Robust.Shared.Serialization;
@@ -15,7 +13,6 @@ namespace Content.Shared.Gravity
     {
         [Dependency] protected readonly IGameTiming Timing = default!;
         [Dependency] private readonly AlertsSystem _alerts = default!;
-        [Dependency] private readonly InventorySystem _inventory = default!;
 
         [ValidatePrototypeId<AlertPrototype>]
         public const string WeightlessAlert = "Weightless";
@@ -30,6 +27,11 @@ namespace Content.Shared.Gravity
             if (TryComp<MovementIgnoreGravityComponent>(uid, out var ignoreGravityComponent))
                 return ignoreGravityComponent.Weightless;
 
+            var ev = new IsWeightlessEvent(uid);
+            RaiseLocalEvent(uid, ref ev);
+            if (ev.Handled)
+                return ev.IsWeightless;
+
             if (!Resolve(uid, ref xform))
                 return true;
 
@@ -40,18 +42,6 @@ namespace Content.Shared.Gravity
                 return false;
             }
 
-            var hasGrav = gravity != null || mapGravity != null;
-
-            // Check for something holding us down
-            // If the planet has gravity component and no gravity it will still give gravity
-            // If there's no gravity comp at all (i.e. space) then they don't work.
-            if (hasGrav && _inventory.TryGetSlotEntity(uid, "shoes", out var ent))
-            {
-                // TODO this should just be a event that gets relayed instead of a specific slot & component check.
-                if (TryComp<MagbootsComponent>(ent, out var boots) && boots.On)
-                    return false;
-            }
-
             return true;
         }
 
@@ -74,9 +64,11 @@ namespace Content.Shared.Gravity
 
         private void OnHandleState(EntityUid uid, GravityComponent component, ref ComponentHandleState args)
         {
-            if (args.Current is not GravityComponentState state) return;
+            if (args.Current is not GravityComponentState state)
+                return;
 
-            if (component.EnabledVV == state.Enabled) return;
+            if (component.EnabledVV == state.Enabled)
+                return;
             component.EnabledVV = state.Enabled;
             var ev = new GravityChangedEvent(uid, component.EnabledVV);
             RaiseLocalEvent(uid, ref ev, true);
@@ -90,9 +82,10 @@ namespace Content.Shared.Gravity
         private void OnGravityChange(ref GravityChangedEvent ev)
         {
             var alerts = AllEntityQuery<AlertsComponent, TransformComponent>();
-            while(alerts.MoveNext(out var uid, out var comp, out var xform))
+            while(alerts.MoveNext(out var uid, out _, out var xform))
             {
-                if (xform.GridUid != ev.ChangedGridIndex) continue;
+                if (xform.GridUid != ev.ChangedGridIndex)
+                    continue;
 
                 if (!ev.HasGravity)
                 {
@@ -145,4 +138,10 @@ namespace Content.Shared.Gravity
             }
         }
     }
+
+    [ByRefEvent]
+    public record struct IsWeightlessEvent(EntityUid Entity, bool IsWeightless = false, bool Handled = false) : IInventoryRelayEvent
+    {
+        SlotFlags IInventoryRelayEvent.TargetSlots => ~SlotFlags.POCKET;
+    }
 }
index 6bd65622f17214c5f114a437f46c55954b0119a0..ea368884e0506a260604b59dc346d46413357045 100644 (file)
@@ -3,6 +3,7 @@ using Content.Shared.Damage;
 using Content.Shared.Electrocution;
 using Content.Shared.Explosion;
 using Content.Shared.Eye.Blinding.Systems;
+using Content.Shared.Gravity;
 using Content.Shared.IdentityManagement.Components;
 using Content.Shared.Inventory.Events;
 using Content.Shared.Movement.Systems;
@@ -30,6 +31,7 @@ public partial class InventorySystem
 
         // by-ref events
         SubscribeLocalEvent<InventoryComponent, GetExplosionResistanceEvent>(RefRelayInventoryEvent);
+        SubscribeLocalEvent<InventoryComponent, IsWeightlessEvent>(RefRelayInventoryEvent);
 
         // Eye/vision events
         SubscribeLocalEvent<InventoryComponent, CanSeeAttemptEvent>(RelayInventoryEvent);
index cbea9d319d913cc639fb351d01533bfc984fbd25..22cd13af60051664336dda442112eabe8e39ea49 100644 (file)
     event: !type:ToggleClothingSpeedEvent
     icon: { sprite: Clothing/Shoes/Boots/speedboots.rsi, state: icon }
     iconOn: { sprite: Clothing/Shoes/Boots/speedboots.rsi, state: icon-on }
+
+- type: entity
+  parent: ClothingShoesBase
+  id: ClothingShoesBootsMoon
+  name: moon boots
+  description: Special anti-gravity boots developed with a speciality blend of lunar rock gel. Shipped from the Netherlands.
+  components:
+  - type: Sprite
+    sprite: Clothing/Shoes/Boots/moonboots.rsi
+    layers:
+    - state: icon
+  - type: Clothing
+    sprite: Clothing/Shoes/Boots/moonboots.rsi
+  - type: AntiGravityClothing
+  - type: StaticPrice
+    price: 75
+  - type: Tag
+    tags: [ ]
index 0ef76381f000002a23030da7c8edf05fd2644bd0..66af73088dc722b52107aebee36afb6090290d0b 100644 (file)
       - MagazineBoxRifle
       - MagazineLightRifle
       - MagazineLightRifleEmpty
-      - MagazinePistol 
+      - MagazinePistol
       - MagazinePistolEmpty
       - MagazinePistolSubMachineGun
       - MagazinePistolSubMachineGunEmpty
       - WeaponGauntletGorilla
       - SynthesizerInstrument
       - ClothingShoesBootsMagSci
+      - ClothingShoesBootsMoon
       - ClothingShoesBootsSpeed
       - NodeScanner
       - HolofanProjector
     staticRecipes:
       - BoxLethalshot
       - BoxShotgunFlare
-      - BoxShotgunPractice 
+      - BoxShotgunPractice
       - BoxShotgunSlug
       - ClothingEyesHudSecurity
       - CombatKnife
       - MagazineBoxRiflePractice
       - MagazineLightRifle
       - MagazineLightRifleEmpty
-      - MagazinePistol 
+      - MagazinePistol
       - MagazinePistolEmpty
       - MagazinePistolSubMachineGun
       - MagazinePistolSubMachineGunEmpty
         - MagazineBoxRifle
         - MagazineLightRifle
         - MagazineLightRifleEmpty
-        - MagazinePistol 
-        - MagazinePistolEmpty 
+        - MagazinePistol
+        - MagazinePistolEmpty
         - MagazineRifle
         - MagazineRifleEmpty
         - MagazineShotgun
index ab13dc4573feeba66f217e57558802b5b6394e71..378392bae170e7e09710f8ca42e18984422d2bfe 100644 (file)
     Steel: 1000
     Plastic: 500
 
+- type: latheRecipe
+  id: ClothingShoesBootsMoon
+  result: ClothingShoesBootsMoon
+  completetime: 2
+  materials:
+    Steel: 600
+
 - type: latheRecipe
   id: ClothingShoesBootsSpeed
   result: ClothingShoesBootsSpeed
index 77adfcf5d5a704b503ae2c039902e91ae43a7a30..34443e78f00c6ebff7f1448cb95b91186697c10d 100644 (file)
@@ -68,6 +68,7 @@
   cost: 7500
   recipeUnlocks:
   - ClothingShoesBootsMagSci
+  - ClothingShoesBootsMoon
 
 - type: technology
   id: AnomalyCoreHarnessing
diff --git a/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET-vox.png
new file mode 100644 (file)
index 0000000..a65deca
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET-vox.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET.png
new file mode 100644 (file)
index 0000000..2b4cdf4
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/icon.png
new file mode 100644 (file)
index 0000000..04f662d
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..03bdacf
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..f00d861
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/meta.json
new file mode 100644 (file)
index 0000000..2c2d49e
--- /dev/null
@@ -0,0 +1,30 @@
+{
+  "version": 1,
+  "license": "CC-BY-SA-3.0",
+  "copyright": "Taken from Tau Ceti Station at commit https://github.com/TauCetiStation/TauCetiClassic/blob/HEAD/icons/obj/clothing/shoes.dmi",
+  "size": {
+    "x": 32,
+    "y": 32
+  },
+  "states": [
+    {
+      "name": "icon"
+    },
+    {
+      "name": "equipped-FEET",
+      "directions": 4
+    },
+    {
+      "name": "equipped-FEET-vox",
+      "directions": 4
+    },
+    {
+      "name": "inhand-left",
+      "directions": 4
+    },
+    {
+      "name": "inhand-right",
+      "directions": 4
+    }
+  ]
+}