From 748e5831e834b192852533e5ce166b11a17d8cbb Mon Sep 17 00:00:00 2001
From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Date: Fri, 14 Jun 2024 23:43:23 -0400
Subject: [PATCH] Add moon boots (#29009)
---
Content.Client/Clothing/MagbootsSystem.cs | 8 --
.../Components/MovedByPressureComponent.cs | 31 --------
.../AtmosphereSystem.HighPressureDelta.cs | 1 +
Content.Server/Clothing/MagbootsSystem.cs | 49 ------------
.../Damage/Systems/GodmodeSystem.cs | 2 +-
Content.Server/Gravity/GravitySystem.cs | 1 -
.../EntitySystems/GravityWellSystem.cs | 2 +-
.../Components/MovedByPressureComponent.cs | 31 ++++++++
.../AntiGravityClothingComponent.cs | 9 +++
.../AntiGravityClothingSystem.cs | 23 ++++++
.../Clothing/SharedMagbootsSystem.cs | 72 +++++++++++++++---
Content.Shared/Gravity/SharedGravitySystem.cs | 37 +++++----
.../Inventory/InventorySystem.Relay.cs | 2 +
.../Entities/Clothing/Shoes/misc.yml | 18 +++++
.../Entities/Structures/Machines/lathe.yml | 11 +--
Resources/Prototypes/Recipes/Lathes/misc.yml | 7 ++
.../Prototypes/Research/experimental.yml | 1 +
.../Boots/moonboots.rsi/equipped-FEET-vox.png | Bin 0 -> 412 bytes
.../Boots/moonboots.rsi/equipped-FEET.png | Bin 0 -> 316 bytes
.../Shoes/Boots/moonboots.rsi/icon.png | Bin 0 -> 340 bytes
.../Shoes/Boots/moonboots.rsi/inhand-left.png | Bin 0 -> 323 bytes
.../Boots/moonboots.rsi/inhand-right.png | Bin 0 -> 340 bytes
.../Shoes/Boots/moonboots.rsi/meta.json | 30 ++++++++
23 files changed, 211 insertions(+), 124 deletions(-)
delete mode 100644 Content.Client/Clothing/MagbootsSystem.cs
delete mode 100644 Content.Server/Atmos/Components/MovedByPressureComponent.cs
delete mode 100644 Content.Server/Clothing/MagbootsSystem.cs
create mode 100644 Content.Shared/Atmos/Components/MovedByPressureComponent.cs
create mode 100644 Content.Shared/Clothing/Components/AntiGravityClothingComponent.cs
create mode 100644 Content.Shared/Clothing/EntitySystems/AntiGravityClothingSystem.cs
create mode 100644 Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET-vox.png
create mode 100644 Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/equipped-FEET.png
create mode 100644 Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/icon.png
create mode 100644 Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-left.png
create mode 100644 Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/inhand-right.png
create mode 100644 Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/meta.json
diff --git a/Content.Client/Clothing/MagbootsSystem.cs b/Content.Client/Clothing/MagbootsSystem.cs
deleted file mode 100644
index a3d39eafde..0000000000
--- a/Content.Client/Clothing/MagbootsSystem.cs
+++ /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
index ca830767bd..0000000000
--- a/Content.Server/Atmos/Components/MovedByPressureComponent.cs
+++ /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;
-
- ///
- /// Accumulates time when yeeted by high pressure deltas.
- ///
- [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;
- }
-}
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs
index cb50ff114e..2e41e45d3f 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.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
index 3838ad168d..0000000000
--- a/Content.Server/Clothing/MagbootsSystem.cs
+++ /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(OnGotEquipped);
- SubscribeLocalEvent(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);
- }
-}
diff --git a/Content.Server/Damage/Systems/GodmodeSystem.cs b/Content.Server/Damage/Systems/GodmodeSystem.cs
index 404cc63905..d896fba71c 100644
--- a/Content.Server/Damage/Systems/GodmodeSystem.cs
+++ b/Content.Server/Damage/Systems/GodmodeSystem.cs
@@ -1,4 +1,4 @@
-using Content.Server.Atmos.Components;
+using Content.Shared.Atmos.Components;
using Content.Shared.Damage.Components;
using Content.Shared.Damage.Systems;
diff --git a/Content.Server/Gravity/GravitySystem.cs b/Content.Server/Gravity/GravitySystem.cs
index ea62d4a819..6807b9df4a 100644
--- a/Content.Server/Gravity/GravitySystem.cs
+++ b/Content.Server/Gravity/GravitySystem.cs
@@ -1,7 +1,6 @@
using Content.Shared.Gravity;
using JetBrains.Annotations;
using Robust.Shared.Map.Components;
-using Robust.Shared.Utility;
namespace Content.Server.Gravity
{
diff --git a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs
index 779b2f5971..f53d658ebd 100644
--- a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs
+++ b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs
@@ -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
index 0000000000..8a4e2c6d4c
--- /dev/null
+++ b/Content.Shared/Atmos/Components/MovedByPressureComponent.cs
@@ -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;
+
+ ///
+ /// Accumulates time when yeeted by high pressure deltas.
+ ///
+ [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
index 0000000000..a8fcbdd2eb
--- /dev/null
+++ b/Content.Shared/Clothing/Components/AntiGravityClothingComponent.cs
@@ -0,0 +1,9 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Clothing.Components;
+
+///
+/// This is used for clothing that makes an entity weightless when worn.
+///
+[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
index 0000000000..c5b2ee3dfc
--- /dev/null
+++ b/Content.Shared/Clothing/EntitySystems/AntiGravityClothingSystem.cs
@@ -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
+{
+ ///
+ public override void Initialize()
+ {
+ SubscribeLocalEvent>(OnIsWeightless);
+ }
+
+ private void OnIsWeightless(Entity ent, ref InventoryRelayedEvent args)
+ {
+ if (args.Args.Handled)
+ return;
+
+ args.Args.Handled = true;
+ args.Args.IsWeightless = true;
+ }
+}
diff --git a/Content.Shared/Clothing/SharedMagbootsSystem.cs b/Content.Shared/Clothing/SharedMagbootsSystem.cs
index 27fb0c1a50..bb3b05074f 100644
--- a/Content.Shared/Clothing/SharedMagbootsSystem.cs
+++ b/Content.Shared/Clothing/SharedMagbootsSystem.cs
@@ -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(OnGetActions);
SubscribeLocalEvent(OnToggleMagboots);
SubscribeLocalEvent(OnMapInit);
+
+ SubscribeLocalEvent(OnGotEquipped);
+ SubscribeLocalEvent(OnGotUnequipped);
+
+ SubscribeLocalEvent>(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(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 ent, ref InventoryRelayedEvent 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;
diff --git a/Content.Shared/Gravity/SharedGravitySystem.cs b/Content.Shared/Gravity/SharedGravitySystem.cs
index df13be51fd..42a6d5d1f8 100644
--- a/Content.Shared/Gravity/SharedGravitySystem.cs
+++ b/Content.Shared/Gravity/SharedGravitySystem.cs
@@ -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]
public const string WeightlessAlert = "Weightless";
@@ -30,6 +27,11 @@ namespace Content.Shared.Gravity
if (TryComp(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(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();
- 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;
+ }
}
diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs
index 6bd65622f1..ea368884e0 100644
--- a/Content.Shared/Inventory/InventorySystem.Relay.cs
+++ b/Content.Shared/Inventory/InventorySystem.Relay.cs
@@ -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(RefRelayInventoryEvent);
+ SubscribeLocalEvent(RefRelayInventoryEvent);
// Eye/vision events
SubscribeLocalEvent(RelayInventoryEvent);
diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml
index cbea9d319d..22cd13af60 100644
--- a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml
+++ b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml
@@ -134,3 +134,21 @@
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: [ ]
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index 0ef76381f0..66af73088d 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -208,7 +208,7 @@
- MagazineBoxRifle
- MagazineLightRifle
- MagazineLightRifleEmpty
- - MagazinePistol
+ - MagazinePistol
- MagazinePistolEmpty
- MagazinePistolSubMachineGun
- MagazinePistolSubMachineGunEmpty
@@ -308,6 +308,7 @@
- WeaponGauntletGorilla
- SynthesizerInstrument
- ClothingShoesBootsMagSci
+ - ClothingShoesBootsMoon
- ClothingShoesBootsSpeed
- NodeScanner
- HolofanProjector
@@ -707,7 +708,7 @@
staticRecipes:
- BoxLethalshot
- BoxShotgunFlare
- - BoxShotgunPractice
+ - BoxShotgunPractice
- BoxShotgunSlug
- ClothingEyesHudSecurity
- CombatKnife
@@ -724,7 +725,7 @@
- MagazineBoxRiflePractice
- MagazineLightRifle
- MagazineLightRifleEmpty
- - MagazinePistol
+ - MagazinePistol
- MagazinePistolEmpty
- MagazinePistolSubMachineGun
- MagazinePistolSubMachineGunEmpty
@@ -837,8 +838,8 @@
- MagazineBoxRifle
- MagazineLightRifle
- MagazineLightRifleEmpty
- - MagazinePistol
- - MagazinePistolEmpty
+ - MagazinePistol
+ - MagazinePistolEmpty
- MagazineRifle
- MagazineRifleEmpty
- MagazineShotgun
diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml
index ab13dc4573..378392bae1 100644
--- a/Resources/Prototypes/Recipes/Lathes/misc.yml
+++ b/Resources/Prototypes/Recipes/Lathes/misc.yml
@@ -126,6 +126,13 @@
Steel: 1000
Plastic: 500
+- type: latheRecipe
+ id: ClothingShoesBootsMoon
+ result: ClothingShoesBootsMoon
+ completetime: 2
+ materials:
+ Steel: 600
+
- type: latheRecipe
id: ClothingShoesBootsSpeed
result: ClothingShoesBootsSpeed
diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml
index 77adfcf5d5..34443e78f0 100644
--- a/Resources/Prototypes/Research/experimental.yml
+++ b/Resources/Prototypes/Research/experimental.yml
@@ -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
index 0000000000000000000000000000000000000000..a65deca7604c8869eb12f083f48fd87f017e4117
GIT binary patch
literal 412
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z!#rIaLn`LH
zy=9np$U&g>p}WY$tQJ@2!}AopUQ9S@XrXbuLqN9EqH*B@$L^Tcv|!1bd`|aRtd)N4
z&s!6F-k^DPEGN)N2ymD?vo&%Sn=yBqSXcVf=ijI87msdG*=u9(J?Y-G)Aw|In^kIa
z%qA_dIluT`rT@?KcgxO&TD_gK+Gpw6KhxFjp0rP}n#<;CCBt{?{r9PUvm+&X-K6;1
zCoQ>}Rr*=;%=6D5_Qk#aTrx=|HL~nnAkUMP_piTBS#&h%qDB4U*2f=rT)O$T?00Vb
zWK;XE*MBm?9Q8roMP7a?zrtsm_g5cBi(U)m-ESqQ-?!v+;cZ`o%>}yquY6K?B`)%+
zQ2f+%CB37Da!KYXyYF7z;k|vuQ^T_6?{S`!L=r#T%Qldh^H|TWQEC47IH32c_I$ti
zzFY5_W%&P#R&xDQO><2b{+oF<+hfv_qQXU;`d?yB_!|71w;1FKPgg&ebxsLQ0A0k44ofy`glX(f`Xa)F$xE?rg
zfR~ro%ECfWP*7G@*38UIMMWhjC`d(FSw=>txv|m5$EP4SHzp>=U3}FEpf0|WAirRS
z|HvTR>$V6`W|^mpV@O2n+iAP`4jXW|*5)d_|NsAPl2YiZlsl_}+p5`YWSS0gYqknF
zaa3xpa$pPzUjNSY>%Ux)4-GznhIxM}%3-&Rr;HPtJcPTGce)?8Dix
zPQH|_W--5vseA`>g@J=9EAw9)=wb#>S3j3^P6Px$4oO5oR9J=Wl)a8eKom#MZd3|Hrjn=>Dlagt-ottby;4G>(D*13jV(6Beq5@GL9p09RJ9HRV8s*
z0HEtS`o2G%tGFc~gg^*E+qM7W$PEX%??&j5IyN7FP|mh~k!O>^&n>$>E5PF>gcr{GvT48#2!
z*LBS?-{||Es;UTr;LP3B0#}P~*tShoRsR>5rip2qkWx|<1pxCr|C%4!#<3_0Ow&{f
mDF1;gD_6x|>sX`Fyfz<2V56wR^>uOp0000I$f@PVL01S#5KR6_@~B8%R?PTznI>+OyP??wOI4i|Lq%X9=10=+$;$+2M8Ke
z@9fRf{O&9H>|N>oZKqD`uD!i3sA&yD`Fc%N>yo)zpJqE>kM#14Yg*Fq^W^3SYy!(3R
zd)*@$mgz4aojoG&Sjw5LUuXI*ZmM;{+IR)98$iUil$TdLtfXt&mKvWpD=v@}Q<9c&
zne|NfKa06_dxgt>-TqZQe|qQ5S4--~J<)#0dDO3&e78sm}`&b`8=^x+yjj^}?
zMJTV|WX534=lm(PMP@DMfwJ7{-8~Ae^3A4)*{%t>c6Be$tM?*f_W>FVdQ&MBb@0M3k$`v3p{
literal 0
HcmV?d00001
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
index 0000000000..2c2d49e031
--- /dev/null
+++ b/Resources/Textures/Clothing/Shoes/Boots/moonboots.rsi/meta.json
@@ -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
+ }
+ ]
+}
--
2.51.2