diff --git a/Content.Shared/Clothing/Components/EmitsSoundOnMoveComponent.cs b/Content.Shared/Clothing/Components/EmitsSoundOnMoveComponent.cs
new file mode 100644
index 00000000000..095b0daf384
--- /dev/null
+++ b/Content.Shared/Clothing/Components/EmitsSoundOnMoveComponent.cs
@@ -0,0 +1,35 @@
+using Robust.Shared.Audio;
+using Robust.Shared.GameStates;
+using Robust.Shared.Map;
+
+namespace Content.Shared.Clothing.Components;
+
+///
+/// Indicates that the clothing entity emits sound when it moves.
+///
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
+public sealed partial class EmitsSoundOnMoveComponent : Component
+{
+ [ViewVariables(VVAccess.ReadWrite)]
+ [DataField(required: true), AutoNetworkedField]
+ public SoundSpecifier SoundCollection = default!;
+
+ [ViewVariables(VVAccess.ReadWrite)]
+ [DataField("requiresGravity"), AutoNetworkedField]
+ public bool RequiresGravity = true;
+
+ [ViewVariables(VVAccess.ReadOnly)]
+ public EntityCoordinates LastPosition = EntityCoordinates.Invalid;
+
+ ///
+ /// The distance moved since the played sound.
+ ///
+ [ViewVariables(VVAccess.ReadOnly)]
+ public float SoundDistance = 0f;
+
+ ///
+ /// Whether this item is equipped in a inventory item slot.
+ ///
+ [ViewVariables(VVAccess.ReadOnly)]
+ public bool IsSlotValid = true;
+}
diff --git a/Content.Shared/Clothing/EntitySystems/EmitsSoundOnMoveSystem.cs b/Content.Shared/Clothing/EntitySystems/EmitsSoundOnMoveSystem.cs
new file mode 100644
index 00000000000..a60abd484d1
--- /dev/null
+++ b/Content.Shared/Clothing/EntitySystems/EmitsSoundOnMoveSystem.cs
@@ -0,0 +1,99 @@
+using System.Numerics;
+using Content.Shared.Clothing.Components;
+using Content.Shared.Gravity;
+using Content.Shared.Inventory;
+using Content.Shared.Inventory.Events;
+using Content.Shared.Mobs.Components;
+using Content.Shared.Movement.Components;
+using Robust.Shared.Audio.Systems;
+using Robust.Shared.Physics.Components;
+using Robust.Shared.Timing;
+
+namespace Content.Shared.Clothing.Systems;
+
+public sealed class EmitsSoundOnMoveSystem : EntitySystem
+{
+ [Dependency] private readonly SharedAudioSystem _audio = default!;
+ [Dependency] private readonly SharedMapSystem _grid = default!;
+ [Dependency] private readonly SharedGravitySystem _gravity = default!;
+ [Dependency] private readonly IGameTiming _timing = default!;
+
+ private EntityQuery _moverQuery;
+ private EntityQuery _physicsQuery;
+ private EntityQuery _xformQuery;
+ private EntityQuery _clothingQuery;
+
+ public override void Initialize()
+ {
+ _moverQuery = GetEntityQuery();
+ _physicsQuery = GetEntityQuery();
+ _xformQuery = GetEntityQuery();
+ _clothingQuery = GetEntityQuery();
+
+ SubscribeLocalEvent(OnEquipped);
+ SubscribeLocalEvent(OnUnequipped);
+ }
+
+ private void OnEquipped(EntityUid uid, EmitsSoundOnMoveComponent component, GotEquippedEvent args)
+ {
+ component.IsSlotValid = !args.SlotFlags.HasFlag(SlotFlags.POCKET);
+ }
+
+ private void OnUnequipped(EntityUid uid, EmitsSoundOnMoveComponent component, GotUnequippedEvent args)
+ {
+ component.IsSlotValid = true;
+ }
+
+ public override void Update(float frameTime)
+ {
+ var query = EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var comp))
+ {
+ UpdateSound(uid, comp);
+ }
+ query.Dispose();
+ }
+
+ private void UpdateSound(EntityUid uid, EmitsSoundOnMoveComponent component)
+ {
+ if (!_xformQuery.TryGetComponent(uid, out var xform) ||
+ !_physicsQuery.TryGetComponent(uid, out var physics))
+ return;
+
+ // Space does not transmit sound
+ if (xform.GridUid == null)
+ return;
+
+ if (component.RequiresGravity && _gravity.IsWeightless(uid, physics, xform))
+ return;
+
+ var parent = xform.ParentUid;
+
+ var isWorn = parent is { Valid: true } &&
+ _clothingQuery.TryGetComponent(uid, out var clothing)
+ && clothing.InSlot != null
+ && component.IsSlotValid;
+ // If this entity is worn by another entity, use that entity's coordinates
+ var coordinates = isWorn ? Transform(parent).Coordinates : xform.Coordinates;
+ var distanceNeeded = (isWorn && _moverQuery.TryGetComponent(parent, out var mover) && mover.Sprinting)
+ ? 1.5f // The parent is a mob that is currently sprinting
+ : 2f; // The parent is not a mob or is not sprinting
+
+ if (!coordinates.TryDistance(EntityManager, component.LastPosition, out var distance) || distance > distanceNeeded)
+ component.SoundDistance = distanceNeeded;
+ else
+ component.SoundDistance += distance;
+
+ component.LastPosition = coordinates;
+ if (component.SoundDistance < distanceNeeded)
+ return;
+ component.SoundDistance -= distanceNeeded;
+
+ var sound = component.SoundCollection;
+ var audioParams = sound.Params
+ .WithVolume(sound.Params.Volume)
+ .WithVariation(sound.Params.Variation ?? 0f);
+
+ _audio.PlayPredicted(sound, uid, uid, audioParams);
+ }
+}
diff --git a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl
index bb56233ff14..0106ba94b12 100644
--- a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl
+++ b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl
@@ -4,6 +4,7 @@
petting-success-generic = You pet {THE($target)} on {POSS-ADJ($target)} head.
petting-success-soft-floofy = You pet {THE($target)} on {POSS-ADJ($target)} soft floofy head.
+petting-success-generic-others = { CAPITALIZE(THE($user)) } pets {THE($target)}.
petting-success-bingus = You pet {THE($target)} on {POSS-ADJ($target)} wrinkly little head.
petting-success-bird = You pet {THE($target)} on {POSS-ADJ($target)} cute feathery head.
diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml
index 2c4c27137f0..bc7a5470b83 100644
--- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml
+++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml
@@ -67,6 +67,7 @@
ClothingShoesColorOrange: 2
ClothingShoesColorRed: 2
ClothingShoesColorPurple: 2
+ ClothingsClothwarp: 4
ClothingHeadHatGreysoft: 8
ClothingHeadHatMimesoft: 3
ClothingHeadHatBluesoft: 2
@@ -111,6 +112,8 @@
ClothingHandsGlovesColorOrange: 2
ClothingHandsGlovesColorPurple: 2
ClothingEyesGlassesCheapSunglasses: 3
+ ClothingNeckOldMantle: 2
+ ClothingNeckUnathiMantle: 2
contrabandInventory:
ClothingMaskNeckGaiter: 2
ClothingUniformJumpsuitTacticool: 1
diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml
index bb21bc36d47..a4eb5229e6a 100644
--- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml
+++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml
@@ -88,6 +88,8 @@
ClothingShoesBootsCowboyBlack: 1
ClothingShoesBootsCowboyWhite: 1
ClothingMaskNeckGaiterRed: 2
+ ClothingNeckBellCollar: 2
+ ClothingOuterUnathiRobe: 1
emaggedInventory:
ClothingShoesBling: 1
ClothingShoesBootsCowboyFancy: 1
diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml
index 06abe8c45fa..a50587039a4 100644
--- a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml
+++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml
@@ -7,9 +7,9 @@
- type: CombatMode
- type: InteractionPopup
successChance: 1
- interactSuccessString: hugging-success-generic
+ interactSuccessString: petting-success-generic
interactSuccessSound: /Audio/Effects/thudswoosh.ogg
- messagePerceivedByOthers: hugging-success-generic-others
+ messagePerceivedByOthers: petting-success-generic-others
- type: MindContainer
showExamineInfo: true
- type: Input
diff --git a/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml b/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml
index 7b4ab078911..18976b9a34b 100644
--- a/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml
+++ b/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml
@@ -74,3 +74,25 @@
sprite: Clothing/Neck/mantles/qmmantle.rsi
- type: Clothing
sprite: Clothing/Neck/mantles/qmmantle.rsi
+
+- type: entity
+ parent: ClothingNeckBase
+ id: ClothingNeckOldMantle
+ name: old wrap
+ description: A tattered fabric wrap, faded over the years. Smells faintly of cigars.
+ components:
+ - type: Sprite
+ sprite: Clothing/Neck/Mantles/oldmantle.rsi
+ - type: Clothing
+ sprite: Clothing/Neck/Mantles/oldmantle.rsi
+
+- type: entity
+ parent: ClothingNeckBase
+ id: ClothingNeckUnathiMantle
+ name: hide mantle
+ description: A rather grisly selection of cured hides and skin, sewn together to form a ragged mantle.
+ components:
+ - type: Sprite
+ sprite: Clothing/Neck/Mantles/unathimantle.rsi
+ - type: Clothing
+ sprite: Clothing/Neck/Mantles/unathimantle.rsi
diff --git a/Resources/Prototypes/Entities/Clothing/Neck/misc.yml b/Resources/Prototypes/Entities/Clothing/Neck/misc.yml
index 6b4be3c9f84..4f8015367b1 100644
--- a/Resources/Prototypes/Entities/Clothing/Neck/misc.yml
+++ b/Resources/Prototypes/Entities/Clothing/Neck/misc.yml
@@ -93,3 +93,17 @@
- type: Construction
graph: flowerwreath
node: flowerwreath
+
+- type: entity
+ parent: ClothingNeckBase
+ id: ClothingNeckBellCollar
+ name: bell collar
+ description: A way to inform others about your presence, or just to annoy everyone around you!
+ components:
+ - type: Sprite
+ sprite: Clothing/Neck/Misc/bellcollar.rsi
+ - type: Clothing
+ sprite: Clothing/Neck/Misc/bellcollar.rsi
+ - type: EmitsSoundOnMove
+ soundCollection:
+ collection: FootstepJester
diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml
index d17fb275c13..4b2c3c9c3ff 100644
--- a/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml
+++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml
@@ -377,3 +377,14 @@
sprite: Clothing/OuterClothing/Misc/red_racoon.rsi
- type: Clothing
sprite: Clothing/OuterClothing/Misc/red_racoon.rsi
+
+- type: entity
+ parent: ClothingOuterBase
+ id: ClothingOuterUnathiRobe
+ name: roughspun robes
+ description: A traditional Unathi garment.
+ components:
+ - type: Sprite
+ sprite: Clothing/OuterClothing/Misc/unathirobe.rsi
+ - type: Clothing
+ sprite: Clothing/OuterClothing/Misc/unathirobe.rsi
diff --git a/Resources/Prototypes/Entities/Clothing/clothwarps.yml b/Resources/Prototypes/Entities/Clothing/clothwarps.yml
new file mode 100644
index 00000000000..1a48c39a264
--- /dev/null
+++ b/Resources/Prototypes/Entities/Clothing/clothwarps.yml
@@ -0,0 +1,38 @@
+- type: entity
+ parent: Clothing
+ id: ClothingsClothwarp
+ name: clothwarps
+ description: A roll of treated canvas used for wrapping claws or paws.
+ components:
+ - type: Item
+ size: Small
+ storedRotation: -90
+ - type: Sprite
+ state: icon
+ sprite: Clothing/Shoes/Misc/clothwarp.rsi
+ - type: Clothing
+ slots:
+ - gloves
+ - FEET
+ sprite: Clothing/Shoes/Misc/clothwarp.rsi
+ - type: Construction
+ graph: ClothingsClothwarp
+ node: shoes
+ - type: Butcherable
+ butcheringType: Knife
+ spawned:
+ - id: MaterialCloth1
+ amount: 1
+ - type: Food
+ requiresSpecialDigestion: true
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ maxVol: 10
+ reagents:
+ - ReagentId: Fiber
+ Quantity: 10
+ - type: Tag
+ tags:
+ - ClothMade
+ - WhitelistChameleon
diff --git a/Resources/Prototypes/Loadouts/neck.yml b/Resources/Prototypes/Loadouts/neck.yml
index eb933de29ee..93093b08887 100644
--- a/Resources/Prototypes/Loadouts/neck.yml
+++ b/Resources/Prototypes/Loadouts/neck.yml
@@ -30,6 +30,30 @@
items:
- ClothingNeckScarfStripedZebra
+- type: loadout
+ id: LoadoutNeckBellCollar
+ category: Neck
+ cost: 1
+ exclusive: true
+ items:
+ - ClothingNeckBellCollar
+
+- type: loadout
+ id: LoadoutNeckOldMantle
+ category: Neck
+ cost: 1
+ exclusive: true
+ items:
+ - ClothingNeckOldMantle
+
+- type: loadout
+ id: LoadoutNeckUnathiMantle
+ category: Neck
+ cost: 1
+ exclusive: true
+ items:
+ - ClothingNeckUnathiMantle
+
#Pride Accessories
- type: loadout
id: LoadoutItemsPrideLGBTPin
diff --git a/Resources/Prototypes/Loadouts/shoes.yml b/Resources/Prototypes/Loadouts/shoes.yml
index 3c2e21e631b..67dcaa0c96b 100644
--- a/Resources/Prototypes/Loadouts/shoes.yml
+++ b/Resources/Prototypes/Loadouts/shoes.yml
@@ -164,3 +164,11 @@
exclusive: true
items:
- ClothingShoesMiscWhite
+
+- type: loadout
+ id: LoadoutShoesClothwarp
+ category: Shoes
+ cost: 1
+ exclusive: true
+ items:
+ - ClothingsClothwarp
diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/clothing/clothwarp.yml b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/clothwarp.yml
new file mode 100644
index 00000000000..65bc8f9ae66
--- /dev/null
+++ b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/clothwarp.yml
@@ -0,0 +1,13 @@
+- type: constructionGraph
+ id: ClothingsClothwarp
+ start: start
+ graph:
+ - node: start
+ edges:
+ - to: warps
+ steps:
+ - material: Cloth
+ amount: 2
+ doAfter: 1
+ - node: warps
+ entity: ClothingsClothwarp
diff --git a/Resources/Prototypes/Recipes/Construction/clothing.yml b/Resources/Prototypes/Recipes/Construction/clothing.yml
index f1eb270af73..99a6cfb13d3 100644
--- a/Resources/Prototypes/Recipes/Construction/clothing.yml
+++ b/Resources/Prototypes/Recipes/Construction/clothing.yml
@@ -96,3 +96,14 @@
description: Comfy, yet haunted by the ghosts of ducks you fed bread to as a child.
icon: { sprite: Clothing/Shoes/Misc/duck-slippers.rsi, state: icon }
objectType: Item
+
+- type: construction
+ name: clothwarps
+ id: ClothingsClothwarp
+ graph: ClothingsClothwarp
+ startNode: start
+ targetNode: warps
+ category: construction-category-clothing
+ description: A roll of treated canvas used for wrapping claws or paws.
+ icon: { sprite: Clothing/Shoes/Misc/clothwarp.rsi, state: icon }
+ objectType: Item
diff --git a/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/equipped-NECK.png b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/equipped-NECK.png
new file mode 100644
index 00000000000..2190dc844db
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/equipped-NECK.png differ
diff --git a/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/icon.png b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/icon.png
new file mode 100644
index 00000000000..17904840397
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/inhand-left.png b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/inhand-left.png
new file mode 100644
index 00000000000..2d727adbb21
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/inhand-right.png b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/inhand-right.png
new file mode 100644
index 00000000000..0e2c555c5c1
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/meta.json
new file mode 100644
index 00000000000..25dc7b17c84
--- /dev/null
+++ b/Resources/Textures/Clothing/Neck/Misc/bellcollar.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made by mnemotechnician (GitHub, Frontier) for Frontier Station 14",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-NECK",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/equipped-OUTERCLOTHING.png
new file mode 100644
index 00000000000..d317412c9dd
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/equipped-OUTERCLOTHING.png differ
diff --git a/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/icon.png b/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/icon.png
new file mode 100644
index 00000000000..4cf647611dc
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/meta.json
new file mode 100644
index 00000000000..9c6fab40625
--- /dev/null
+++ b/Resources/Textures/Clothing/Neck/mantles/oldmantle.rsi/meta.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/ParadiseSS13/Paradise",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-OUTERCLOTHING",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/equipped-OUTERCLOTHING.png
new file mode 100644
index 00000000000..5df12ac9933
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/equipped-OUTERCLOTHING.png differ
diff --git a/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/icon.png b/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/icon.png
new file mode 100644
index 00000000000..d59144a0524
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/meta.json
new file mode 100644
index 00000000000..9c6fab40625
--- /dev/null
+++ b/Resources/Textures/Clothing/Neck/mantles/unathimantle.rsi/meta.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/ParadiseSS13/Paradise",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-OUTERCLOTHING",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/equipped-OUTERCLOTHING.png
new file mode 100644
index 00000000000..f470372379d
Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/equipped-OUTERCLOTHING.png differ
diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/icon.png
new file mode 100644
index 00000000000..54fd0c07413
Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/meta.json
new file mode 100644
index 00000000000..9c6fab40625
--- /dev/null
+++ b/Resources/Textures/Clothing/OuterClothing/Misc/unathirobe.rsi/meta.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/ParadiseSS13/Paradise",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-OUTERCLOTHING",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/equipped-FEET.png
new file mode 100644
index 00000000000..4a3104fead9
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/equipped-FEET.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/equipped-HAND.png
new file mode 100644
index 00000000000..b78a810df85
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/equipped-HAND.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/icon.png
new file mode 100644
index 00000000000..8f531e890c1
Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/meta.json
new file mode 100644
index 00000000000..a7542e75bb1
--- /dev/null
+++ b/Resources/Textures/Clothing/Shoes/Misc/clothwarp.rsi/meta.json
@@ -0,0 +1 @@
+{"version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/", "size": {"x": 32, "y": 32}, "states": [{"name": "icon"}, {"name": "equipped-FEET", "directions": 4}, {"name": "equipped-HAND", "directions": 4}]}