diff --git a/Content.Server/CardboardBox/CardboardBoxSystem.cs b/Content.Server/CardboardBox/CardboardBoxSystem.cs index 4b49dc902c..c697ed99d5 100644 --- a/Content.Server/CardboardBox/CardboardBoxSystem.cs +++ b/Content.Server/CardboardBox/CardboardBoxSystem.cs @@ -54,7 +54,7 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem foreach (var mover in mobMover) { //Set the movement relay for the box as the first mob - if (component.Mover == null && args.Contents.Contains(mover)) + if (component.Mover == null) { var relay = EnsureComp(mover); _mover.SetRelay(mover, uid, relay); diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index 51ec4089bf..27286dc701 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -8,6 +8,7 @@ using Robust.Shared.Input.Binding; using Robust.Shared.Players; using Robust.Shared.Serialization; using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Shared.Movement.Systems { @@ -190,6 +191,7 @@ namespace Content.Shared.Movement.Systems if (relayMover.RelayEntity == null) return; + DebugTools.Assert(relayMover.RelayEntity != entity); HandleDirChange(relayMover.RelayEntity.Value, dir, subTick, state); return; } diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Relay.cs b/Content.Shared/Movement/Systems/SharedMoverController.Relay.cs index cec9474a25..77ed9e9755 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Relay.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Relay.cs @@ -1,6 +1,7 @@ using Content.Shared.Movement.Components; using Robust.Shared.GameStates; using Robust.Shared.Serialization; +using Robust.Shared.Utility; namespace Content.Shared.Movement.Systems; @@ -22,6 +23,12 @@ public abstract partial class SharedMoverController if (!Resolve(uid, ref component)) return; + if (uid == relayEntity) + { + Logger.Error($"An entity attempted to relay movement to itself. Entity:{ToPrettyString(uid)}"); + return; + } + component.RelayEntity = relayEntity; Dirty(component); } @@ -37,6 +44,7 @@ public abstract partial class SharedMoverController { if (args.Current is not RelayInputMoverComponentState state) return; + DebugTools.Assert(state.Entity != uid); component.RelayEntity = state.Entity; }