]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Speed Boots [Tier 3 Civ-Service] (#21438)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Wed, 8 Nov 2023 01:25:43 +0000 (20:25 -0500)
committerGitHub <noreply@github.com>
Wed, 8 Nov 2023 01:25:43 +0000 (18:25 -0700)
* Speed Boots

* validate

* monkey

24 files changed:
Content.Client/PowerCell/PowerCellSystem.cs
Content.Server/Medical/DefibrillatorSystem.cs
Content.Server/PowerCell/PowerCellSystem.Draw.cs
Content.Server/PowerCell/PowerCellSystem.cs
Content.Server/Weapons/Misc/TetherGunSystem.cs
Content.Shared/Clothing/ClothingSpeedModifierSystem.cs
Content.Shared/Clothing/Components/ToggleClothingSpeedComponent.cs [new file with mode: 0644]
Content.Shared/PowerCell/PowerCellSlotEmptyEvent.cs [moved from Content.Server/PowerCell/PowerCellSlotEmptyEvent.cs with 83% similarity]
Content.Shared/PowerCell/SharedPowerCellSystem.cs
Resources/Locale/en-US/clothing/components/toggleable-clothing-component.ftl
Resources/Locale/en-US/research/technologies.ftl
Resources/Prototypes/Entities/Clothing/Shoes/misc.yml
Resources/Prototypes/Entities/Structures/Machines/lathe.yml
Resources/Prototypes/Recipes/Lathes/misc.yml
Resources/Prototypes/Research/civilianservices.yml
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/equipped-FEET.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon-on.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-equipped-FEET.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-left.png [new file with mode: 0644]
Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-right.png [new file with mode: 0644]

index ec69f0d56b4cbe69cac9953de1c8d0a432f8c991..1423dffaa3966e7f09c91db05b4bf379e4147be4 100644 (file)
@@ -1,4 +1,5 @@
 using Content.Shared.PowerCell;
+using Content.Shared.PowerCell.Components;
 using JetBrains.Annotations;
 using Robust.Client.GameObjects;
 
@@ -15,6 +16,29 @@ public sealed class PowerCellSystem : SharedPowerCellSystem
         SubscribeLocalEvent<PowerCellVisualsComponent, AppearanceChangeEvent>(OnPowerCellVisualsChange);
     }
 
+    /// <inheritdoc/>
+    public override bool HasActivatableCharge(EntityUid uid, PowerCellDrawComponent? battery = null, PowerCellSlotComponent? cell = null,
+        EntityUid? user = null)
+    {
+        if (!Resolve(uid, ref battery, ref cell, false))
+            return true;
+
+        return battery.CanUse;
+    }
+
+    /// <inheritdoc/>
+    public override bool HasDrawCharge(
+        EntityUid uid,
+        PowerCellDrawComponent? battery = null,
+        PowerCellSlotComponent? cell = null,
+        EntityUid? user = null)
+    {
+        if (!Resolve(uid, ref battery, ref cell, false))
+            return true;
+
+        return battery.CanDraw;
+    }
+
     private void OnPowerCellVisualsChange(EntityUid uid, PowerCellVisualsComponent component, ref AppearanceChangeEvent args)
     {
         if (args.Sprite == null)
index d041f8ee9d7548f5b1339f60a7c0b43b3e85bd71..dd9f1ec91e84461a1942d1975e19209ad5df9046 100644 (file)
@@ -16,6 +16,7 @@ using Content.Shared.Mind;
 using Content.Shared.Mobs;
 using Content.Shared.Mobs.Components;
 using Content.Shared.Mobs.Systems;
+using Content.Shared.PowerCell;
 using Content.Shared.Timing;
 using Content.Shared.Toggleable;
 using Robust.Shared.Player;
index 9d73138346f1eff78837670a2b0ac4d1f31f9c53..c6d8e1e709d97133b127a93e5a1ddf8522e18010 100644 (file)
@@ -22,7 +22,7 @@ public sealed partial class PowerCellSystem
             if (!comp.Drawing)
                 continue;
 
-            if (_timing.CurTime < comp.NextUpdateTime)
+            if (Timing.CurTime < comp.NextUpdateTime)
                 continue;
 
             comp.NextUpdateTime += Delay;
index 1cfb4d1d7019861b7785329ea90d29f6fc3ae53a..b424f34de556109d938a83c6e52081ba31ca56b6 100644 (file)
@@ -1,9 +1,5 @@
-using Content.Server.Administration.Logs;
-using Content.Server.Chemistry.EntitySystems;
-using Content.Server.Explosion.EntitySystems;
 using Content.Server.Emp;
 using Content.Server.Power.Components;
-using Content.Shared.Database;
 using Content.Shared.Examine;
 using Content.Shared.PowerCell;
 using Content.Shared.PowerCell.Components;
@@ -15,7 +11,6 @@ using Content.Server.Power.EntitySystems;
 using Content.Server.UserInterface;
 using Content.Shared.Containers.ItemSlots;
 using Content.Shared.Popups;
-using Robust.Shared.Timing;
 
 namespace Content.Server.PowerCell;
 
@@ -24,7 +19,6 @@ namespace Content.Server.PowerCell;
 /// </summary>
 public sealed partial class PowerCellSystem : SharedPowerCellSystem
 {
-    [Dependency] private readonly IGameTiming _timing = default!;
     [Dependency] private readonly ActivatableUISystem _activatable = default!;
     [Dependency] private readonly BatterySystem _battery = default!;
     [Dependency] private readonly SharedContainerSystem _containerSystem = default!;
@@ -95,12 +89,8 @@ public sealed partial class PowerCellSystem : SharedPowerCellSystem
     }
 
     #region Activatable
-
-    /// <summary>
-    /// Returns whether the entity has a slotted battery and <see cref="PowerCellDrawComponent.UseRate"/> charge.
-    /// </summary>
-    /// <param name="user">Popup to this user with the relevant detail if specified.</param>
-    public bool HasActivatableCharge(EntityUid uid, PowerCellDrawComponent? battery = null, PowerCellSlotComponent? cell = null, EntityUid? user = null)
+    /// <inheritdoc/>
+    public override bool HasActivatableCharge(EntityUid uid, PowerCellDrawComponent? battery = null, PowerCellSlotComponent? cell = null, EntityUid? user = null)
     {
         // Default to true if we don't have the components.
         if (!Resolve(uid, ref battery, ref cell, false))
@@ -108,6 +98,7 @@ public sealed partial class PowerCellSystem : SharedPowerCellSystem
 
         return HasCharge(uid, battery.UseRate, cell, user);
     }
+
     /// <summary>
     /// Tries to use the <see cref="PowerCellDrawComponent.UseRate"/> for this entity.
     /// </summary>
@@ -128,11 +119,12 @@ public sealed partial class PowerCellSystem : SharedPowerCellSystem
         return false;
     }
 
-    /// <summary>
-    /// Whether the power cell has any power at all for the draw rate.
-    /// </summary>
-    public bool HasDrawCharge(EntityUid uid, PowerCellDrawComponent? battery = null,
-        PowerCellSlotComponent? cell = null, EntityUid? user = null)
+    /// <inheritdoc/>
+    public override bool HasDrawCharge(
+        EntityUid uid,
+        PowerCellDrawComponent? battery = null,
+        PowerCellSlotComponent? cell = null,
+        EntityUid? user = null)
     {
         if (!Resolve(uid, ref battery, ref cell, false))
             return true;
@@ -142,15 +134,6 @@ public sealed partial class PowerCellSystem : SharedPowerCellSystem
 
     #endregion
 
-    public void SetPowerCellDrawEnabled(EntityUid uid, bool enabled, PowerCellDrawComponent? component = null)
-    {
-        if (!Resolve(uid, ref component, false) || enabled == component.Drawing)
-            return;
-
-        component.Drawing = enabled;
-        component.NextUpdateTime = _timing.CurTime;
-    }
-
     /// <summary>
     /// Returns whether the entity has a slotted battery and charge for the requested action.
     /// </summary>
index 44d0c49e3f8b4f582b7cc1b7c358692429cb318d..f6aafe376d6f93639071c37a6e2abc711e67890d 100644 (file)
@@ -1,4 +1,5 @@
 using Content.Server.PowerCell;
+using Content.Shared.PowerCell;
 using Content.Shared.Weapons.Misc;
 using Robust.Shared.Physics.Components;
 
index 74b5369aa398ea6f3bcd5b61293e44972867ce21..66ff5c624a42553a5ae51f24a7c21cfbf549846b 100644 (file)
@@ -1,6 +1,11 @@
+using Content.Shared.Actions;
+using Content.Shared.Clothing.Components;
 using Content.Shared.Examine;
+using Content.Shared.IdentityManagement;
 using Content.Shared.Inventory;
 using Content.Shared.Movement.Systems;
+using Content.Shared.PowerCell;
+using Content.Shared.Toggleable;
 using Content.Shared.Verbs;
 using Robust.Shared.Containers;
 using Robust.Shared.GameStates;
@@ -10,9 +15,13 @@ namespace Content.Shared.Clothing;
 
 public sealed class ClothingSpeedModifierSystem : EntitySystem
 {
-    [Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!;
+    [Dependency] private readonly SharedActionsSystem _actions = default!;
+    [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
+    [Dependency] private readonly ClothingSpeedModifierSystem _clothingSpeedModifier = default!;
     [Dependency] private readonly SharedContainerSystem _container = default!;
     [Dependency] private readonly ExamineSystemShared _examine = default!;
+    [Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!;
+    [Dependency] private readonly SharedPowerCellSystem _powerCell = default!;
 
     public override void Initialize()
     {
@@ -22,6 +31,12 @@ public sealed class ClothingSpeedModifierSystem : EntitySystem
         SubscribeLocalEvent<ClothingSpeedModifierComponent, ComponentHandleState>(OnHandleState);
         SubscribeLocalEvent<ClothingSpeedModifierComponent, InventoryRelayedEvent<RefreshMovementSpeedModifiersEvent>>(OnRefreshMoveSpeed);
         SubscribeLocalEvent<ClothingSpeedModifierComponent, GetVerbsEvent<ExamineVerb>>(OnClothingVerbExamine);
+
+        SubscribeLocalEvent<ToggleClothingSpeedComponent, GetVerbsEvent<ActivationVerb>>(AddToggleVerb);
+        SubscribeLocalEvent<ToggleClothingSpeedComponent, GetItemActionsEvent>(OnGetActions);
+        SubscribeLocalEvent<ToggleClothingSpeedComponent, ToggleClothingSpeedEvent>(OnToggleSpeed);
+        SubscribeLocalEvent<ToggleClothingSpeedComponent, MapInitEvent>(OnMapInit);
+        SubscribeLocalEvent<ToggleClothingSpeedComponent, PowerCellSlotEmptyEvent>(OnPowerCellSlotEmpty);
     }
 
     // Public API
@@ -34,7 +49,7 @@ public sealed class ClothingSpeedModifierSystem : EntitySystem
         if (component.Enabled != enabled)
         {
             component.Enabled = enabled;
-            Dirty(component);
+            Dirty(uid, component);
 
             // inventory system will automatically hook into the event raised by this and update accordingly
             if (_container.TryGetContainingContainer(uid, out var container))
@@ -126,4 +141,61 @@ public sealed class ClothingSpeedModifierSystem : EntitySystem
 
         _examine.AddDetailedExamineVerb(args, component, msg, Loc.GetString("clothing-speed-examinable-verb-text"), "/Textures/Interface/VerbIcons/outfit.svg.192dpi.png", Loc.GetString("clothing-speed-examinable-verb-message"));
     }
+
+    private void OnMapInit(Entity<ToggleClothingSpeedComponent> uid, ref MapInitEvent args)
+    {
+        _actions.AddAction(uid, ref uid.Comp.ToggleActionEntity, uid.Comp.ToggleAction);
+    }
+
+    private void OnToggleSpeed(Entity<ToggleClothingSpeedComponent> uid, ref ToggleClothingSpeedEvent args)
+    {
+        if (args.Handled)
+            return;
+
+        args.Handled = true;
+        SetSpeedToggleEnabled(uid, !uid.Comp.Enabled, args.Performer);
+    }
+
+    private void SetSpeedToggleEnabled(Entity<ToggleClothingSpeedComponent> uid, bool value, EntityUid? user)
+    {
+        if (uid.Comp.Enabled == value)
+            return;
+
+        TryComp<PowerCellDrawComponent>(uid, out var draw);
+        if (value && !_powerCell.HasDrawCharge(uid, draw, user: user))
+            return;
+
+        uid.Comp.Enabled = value;
+
+        _appearance.SetData(uid, ToggleVisuals.Toggled, uid.Comp.Enabled);
+        _actions.SetToggled(uid.Comp.ToggleActionEntity, uid.Comp.Enabled);
+        _clothingSpeedModifier.SetClothingSpeedModifierEnabled(uid.Owner, uid.Comp.Enabled);
+        _powerCell.SetPowerCellDrawEnabled(uid, uid.Comp.Enabled, draw);
+        Dirty(uid, uid.Comp);
+    }
+
+    private void AddToggleVerb(Entity<ToggleClothingSpeedComponent> uid, ref GetVerbsEvent<ActivationVerb> args)
+    {
+        if (!args.CanAccess || !args.CanInteract)
+            return;
+
+        var user = args.User;
+        ActivationVerb verb = new()
+        {
+            Text = Loc.GetString("toggle-clothing-verb-text",
+                ("entity", Identity.Entity(uid, EntityManager))),
+            Act = () => SetSpeedToggleEnabled(uid, !uid.Comp.Enabled, user)
+        };
+        args.Verbs.Add(verb);
+    }
+
+    private void OnGetActions(Entity<ToggleClothingSpeedComponent> uid, ref GetItemActionsEvent args)
+    {
+        args.AddAction(ref uid.Comp.ToggleActionEntity, uid.Comp.ToggleAction);
+    }
+
+    private void OnPowerCellSlotEmpty(Entity<ToggleClothingSpeedComponent> uid, ref PowerCellSlotEmptyEvent args)
+    {
+        SetSpeedToggleEnabled(uid, false, null);
+    }
 }
diff --git a/Content.Shared/Clothing/Components/ToggleClothingSpeedComponent.cs b/Content.Shared/Clothing/Components/ToggleClothingSpeedComponent.cs
new file mode 100644 (file)
index 0000000..90b2d73
--- /dev/null
@@ -0,0 +1,35 @@
+using Content.Shared.Actions;
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared.Clothing.Components;
+
+/// <summary>
+/// This is used for a clothing item that gives a speed modification that is toggleable.
+/// </summary>
+[RegisterComponent, NetworkedComponent, Access(typeof(ClothingSpeedModifierSystem)), AutoGenerateComponentState]
+public sealed partial class ToggleClothingSpeedComponent : Component
+{
+    /// <summary>
+    /// The action for toggling the clothing.
+    /// </summary>
+    [DataField]
+    public EntProtoId ToggleAction = "ActionToggleSpeedBoots";
+
+    /// <summary>
+    /// The action entity
+    /// </summary>
+    [DataField, AutoNetworkedField]
+    public EntityUid? ToggleActionEntity;
+
+    /// <summary>
+    /// The state of the toggle.
+    /// </summary>
+    [DataField, AutoNetworkedField]
+    public bool Enabled;
+}
+
+public sealed partial class ToggleClothingSpeedEvent : InstantActionEvent
+{
+
+}
similarity index 83%
rename from Content.Server/PowerCell/PowerCellSlotEmptyEvent.cs
rename to Content.Shared/PowerCell/PowerCellSlotEmptyEvent.cs
index b2930ee50fc22c4a5b252c3cd7cfcdb807a2eea3..e4075175aef7e4f5ad07537cfde981d6f34bab71 100644 (file)
@@ -1,4 +1,4 @@
-namespace Content.Server.PowerCell;
+namespace Content.Shared.PowerCell;
 
 /// <summary>
 /// Raised directed on an entity when its active power cell has no more charge to supply.
index 57af4403606e6ae933d7db78fbf5d8f9c4ac8387..508bfc85f08e7b5fa4ec8979243e57a573e620c2 100644 (file)
@@ -2,24 +2,26 @@ using Content.Shared.Containers.ItemSlots;
 using Content.Shared.PowerCell.Components;
 using Content.Shared.Rejuvenate;
 using Robust.Shared.Containers;
+using Robust.Shared.Timing;
 
 namespace Content.Shared.PowerCell;
 
 public abstract class SharedPowerCellSystem : EntitySystem
 {
+    [Dependency] protected readonly IGameTiming Timing = default!;
     [Dependency] private readonly ItemSlotsSystem _itemSlots = default!;
     [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
 
     public override void Initialize()
     {
         base.Initialize();
-        SubscribeLocalEvent<PowerCellSlotComponent, RejuvenateEvent>(OnRejuventate);
+        SubscribeLocalEvent<PowerCellSlotComponent, RejuvenateEvent>(OnRejuvenate);
         SubscribeLocalEvent<PowerCellSlotComponent, EntInsertedIntoContainerMessage>(OnCellInserted);
         SubscribeLocalEvent<PowerCellSlotComponent, EntRemovedFromContainerMessage>(OnCellRemoved);
         SubscribeLocalEvent<PowerCellSlotComponent, ContainerIsInsertingAttemptEvent>(OnCellInsertAttempt);
     }
 
-    private void OnRejuventate(EntityUid uid, PowerCellSlotComponent component, RejuvenateEvent args)
+    private void OnRejuvenate(EntityUid uid, PowerCellSlotComponent component, RejuvenateEvent args)
     {
         if (!_itemSlots.TryGetSlot(uid, component.CellSlotId, out var itemSlot) || !itemSlot.Item.HasValue)
             return;
@@ -60,4 +62,35 @@ public abstract class SharedPowerCellSystem : EntitySystem
         _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, false);
         RaiseLocalEvent(uid, new PowerCellChangedEvent(true), false);
     }
+
+    public void SetPowerCellDrawEnabled(EntityUid uid, bool enabled, PowerCellDrawComponent? component = null)
+    {
+        if (!Resolve(uid, ref component, false) || enabled == component.Drawing)
+            return;
+
+        component.Drawing = enabled;
+        component.NextUpdateTime = Timing.CurTime;
+    }
+
+    /// <summary>
+    /// Returns whether the entity has a slotted battery and <see cref="PowerCellDrawComponent.UseRate"/> charge.
+    /// </summary>
+    /// <param name="uid"></param>
+    /// <param name="battery"></param>
+    /// <param name="cell"></param>
+    /// <param name="user">Popup to this user with the relevant detail if specified.</param>
+    public abstract bool HasActivatableCharge(
+        EntityUid uid,
+        PowerCellDrawComponent? battery = null,
+        PowerCellSlotComponent? cell = null,
+        EntityUid? user = null);
+
+    /// <summary>
+    /// Whether the power cell has any power at all for the draw rate.
+    /// </summary>
+    public abstract bool HasDrawCharge(
+        EntityUid uid,
+        PowerCellDrawComponent? battery = null,
+        PowerCellSlotComponent? cell = null,
+        EntityUid? user = null);
 }
index eb342d028d2f47569851b03f7db102c4664a52df..746eea4a28fb8585d578ab7aba67d1afa2714233 100644 (file)
@@ -1,2 +1,3 @@
+toggle-clothing-verb-text = Toggle {CAPITALIZE($entity)}
 
-toggleable-clothing-remove-first = You have to unequip {$entity} first.
\ No newline at end of file
+toggleable-clothing-remove-first = You have to unequip {$entity} first.
index 0f8a657aa43ec51eca0fb52d5ac57548b5668c32..7f90f134eafcf565d83ec62fb0f37a752232a446 100644 (file)
@@ -70,3 +70,4 @@ research-technology-meat-manipulation = Meat Manipulation
 research-technology-honk-mech = H.O.N.K. Mech
 research-technology-advanced-spray = Advanced Spray
 research-technology-bluespace-cargo-transport = Bluespace Cargo Transport
+research-technology-quantum-fiber-weaving = Quantum Fiber Weaving
index e531e212e95dc8e35acca0b8fc2032db46777c29..30cf878ad1da6d34f94032cf800ada6777e582fa 100644 (file)
     sprite: Clothing/Shoes/Misc/damedaneshoes.rsi
   - type: Clothing
     sprite: Clothing/Shoes/Misc/damedaneshoes.rsi
+
+- type: entity
+  parent: [ClothingShoesBase, PowerCellSlotSmallItem]
+  id: ClothingShoesBootsSpeed
+  name: speed boots
+  description: High-tech boots woven with quantum fibers, able to convert electricity into pure speed!
+  components:
+  - type: Sprite
+    sprite: Clothing/Shoes/Boots/speedboots.rsi
+    layers:
+    - state: icon
+      map: [ "enum.ToggleVisuals.Layer" ]
+  - type: Clothing
+    sprite: Clothing/Shoes/Boots/speedboots.rsi
+  - type: ToggleClothingSpeed
+    toggleAction: ActionToggleSpeedBoots
+  - type: ClothingSpeedModifier
+    walkModifier: 1.25
+    sprintModifier: 1.25
+    enabled: false
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.ToggleVisuals.Toggled:
+        enum.ToggleVisuals.Layer:
+          True: {state: icon-on}
+          False: {state: icon}
+  - type: StaticPrice
+    price: 500
+  - type: PowerCellDraw
+    drawRate: 4
+  - type: ItemSlots
+    slots:
+      cell_slot:
+        name: power-cell-slot-component-slot-name-default
+  - type: Tag
+    tags: []
+
+- type: entity
+  id: ActionToggleSpeedBoots
+  name: Toggle Speed Boots
+  description: Toggles the speed boots on and off.
+  noSpawn: true
+  components:
+  - type: InstantAction
+    itemIconStyle: NoItem
+    event: !type:ToggleClothingSpeedEvent
+    icon: { sprite: Clothing/Shoes/Boots/speedboots.rsi, state: icon }
+    iconOn: { sprite: Clothing/Shoes/Boots/speedboots.rsi, state: icon-on }
index b82f3f68285bf27fc689a5297a048f3057237d2a..5be2f17c9b516411029310d4b2edc4c501b6979c 100644 (file)
       - SynthesizerInstrument
       - RPED
       - ClothingShoesBootsMag
+      - ClothingShoesBootsSpeed
       - NodeScanner
       - HolofanProjector
       - BluespaceBeaker
index 5aff63ed9255c95a2e1fe27d3f0882635d610d8c..266cdf6e51380ea461ffdac556cf743136e24948 100644 (file)
     Steel: 1000
     Plastic: 500
 
+- type: latheRecipe
+  id: ClothingShoesBootsSpeed
+  result: ClothingShoesBootsSpeed
+  completetime: 2
+  materials:
+    Steel: 1500
+    Plastic: 1000
+    Silver: 500
+
 - type: latheRecipe
   id: ModularReceiver
   result: ModularReceiver
index d82090719e133806bc1de2ffe86a57e5a53c2d31..c49ba37160481cc529447bd58edd3ba1cb1ae6bb 100644 (file)
   cost: 15000
   recipeUnlocks:
   - CargoTelepadMachineCircuitboard
+
+- type: technology
+  id: QuantumFiberWeaving
+  name: research-technology-quantum-fiber-weaving
+  icon:
+    sprite: Clothing/Shoes/Boots/speedboots.rsi
+    state: icon
+  discipline: CivilianServices
+  tier: 3
+  cost: 10000
+  recipeUnlocks:
+  - ClothingShoesBootsSpeed
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/equipped-FEET.png
new file mode 100644 (file)
index 0000000..7061822
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/equipped-FEET.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon-on.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon-on.png
new file mode 100644 (file)
index 0000000..9f48712
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon-on.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon.png
new file mode 100644 (file)
index 0000000..2fda829
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..fbb48f5
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..9262063
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/meta.json
new file mode 100644 (file)
index 0000000..3aa61e3
--- /dev/null
@@ -0,0 +1,41 @@
+{
+  "version": 1,
+  "license": "CC0-1.0",
+  "copyright": "Created by EmoGarbage404",
+  "size": {
+    "x": 32,
+    "y": 32
+  },
+  "states": [
+    {
+      "name": "equipped-FEET",
+      "directions": 4
+    },
+    {
+      "name": "on-equipped-FEET",
+      "directions": 4
+    },
+    {
+      "name": "icon"
+    },
+    {
+      "name": "icon-on"
+    },
+    {
+      "name": "inhand-left",
+      "directions": 4
+    },
+    {
+      "name": "inhand-right",
+      "directions": 4
+    },
+    {
+      "name": "on-inhand-left",
+      "directions": 4
+    },
+    {
+      "name": "on-inhand-right",
+      "directions": 4
+    }
+  ]
+}
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-equipped-FEET.png
new file mode 100644 (file)
index 0000000..b8b1846
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-equipped-FEET.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-left.png
new file mode 100644 (file)
index 0000000..3077ae0
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-left.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-right.png
new file mode 100644 (file)
index 0000000..ee0c1be
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-inhand-right.png differ