diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs
index 41c10d6f2d..9833230e94 100644
--- a/Content.Client/IgnoredComponents.cs
+++ b/Content.Client/IgnoredComponents.cs
@@ -35,7 +35,6 @@
"Smes",
"LightBulb",
"Healing",
- "Catwalk",
"RangedMagazine",
"Ammo",
"HitscanWeaponCapacitor",
diff --git a/Content.Server/GameObjects/Components/CatwalkComponent.cs b/Content.Server/GameObjects/Components/CatwalkComponent.cs
deleted file mode 100644
index 4027c5045d..0000000000
--- a/Content.Server/GameObjects/Components/CatwalkComponent.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Robust.Shared.GameObjects;
-
-namespace Content.Server.GameObjects.Components
-{
- ///
- /// Literally just a marker component for footsteps for now.
- ///
- [RegisterComponent]
- public sealed class CatwalkComponent : Component
- {
- public override string Name => "Catwalk";
- }
-}
diff --git a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs
index 50219e5c07..4801729395 100644
--- a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs
+++ b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs
@@ -56,7 +56,8 @@ namespace Content.Server.GameObjects.EntitySystems
public override void Update(float frameTime)
{
- foreach (var (moverComponent, collidableComponent) in EntityManager.ComponentManager.EntityQuery())
+ foreach (var (moverComponent, collidableComponent) in EntityManager.ComponentManager
+ .EntityQuery(false))
{
var entity = moverComponent.Owner;
UpdateKinematics(entity.Transform, moverComponent, collidableComponent);
@@ -141,24 +142,19 @@ namespace Content.Server.GameObjects.EntitySystems
var grid = _mapManager.GetGrid(coordinates.GetGridId(EntityManager));
var tile = grid.GetTileRef(coordinates);
- // If the coordinates have a catwalk, it's always catwalk.
- string soundCollectionName;
- var catwalk = false;
- foreach (var maybeCatwalk in grid.GetSnapGridCell(tile.GridIndices, SnapGridOffset.Center))
+ // If the coordinates have a FootstepModifier component
+ // i.e. component that emit sound on footsteps emit that sound
+ string? soundCollectionName = null;
+ foreach (var maybeFootstep in grid.GetSnapGridCell(tile.GridIndices, SnapGridOffset.Center))
{
- if (maybeCatwalk.Owner.HasComponent())
+ if (maybeFootstep.Owner.TryGetComponent(out FootstepModifierComponent? footstep))
{
- catwalk = true;
+ soundCollectionName = footstep._soundCollectionName;
break;
}
}
-
- if (catwalk)
- {
- // Catwalk overrides tile sound.s
- soundCollectionName = "footstep_catwalk";
- }
- else
+ // if there is no FootstepModifierComponent, determine sound based on tiles
+ if (soundCollectionName == null)
{
// Walking on a tile.
var def = (ContentTileDefinition) _tileDefinitionManager[tile.Tile.TypeId];
diff --git a/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml b/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml
index b37a374bbe..21affcdef7 100644
--- a/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml
+++ b/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml
@@ -22,7 +22,8 @@
- type: IconSmooth
key: catwalk
base: catwalk_
- - type: Catwalk
+ - type: FootstepModifier
+ footstepSoundCollection: footstep_catwalk
- type: Construction
graph: Catwalk
node: Catwalk