diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index 464c4c3758..cf7aedd95f 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -210,12 +210,12 @@ namespace Content.Shared.Movement.Systems var diff = relativeRot - oldRelativeRot; // If we're going from a grid -> map then preserve the relative rotation so it's seamless if they go into space and back. - if (HasComp(relative) && HasComp(mover.RelativeEntity)) + if (MapQuery.HasComp(relative) && MapGridQuery.HasComp(mover.RelativeEntity)) { mover.TargetRelativeRotation -= diff; } - // Snap to nearest cardinal if map -> grid - else if (HasComp(relative) && HasComp(mover.RelativeEntity)) + // Snap to nearest cardinal if map -> grid or grid -> grid + else if (MapGridQuery.HasComp(relative) && (MapQuery.HasComp(mover.RelativeEntity) || MapGridQuery.HasComp(mover.RelativeEntity))) { var targetDir = mover.TargetRelativeRotation - diff; targetDir = targetDir.GetCardinalDir().ToAngle().Reduced(); diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index cb0c776cfa..abcf30d320 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -50,18 +50,19 @@ public abstract partial class SharedMoverController : VirtualController [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly TagSystem _tags = default!; + protected EntityQuery CanMoveInAirQuery; + protected EntityQuery FootstepModifierQuery; protected EntityQuery MoverQuery; + protected EntityQuery MapQuery; + protected EntityQuery MapGridQuery; protected EntityQuery MobMoverQuery; protected EntityQuery RelayTargetQuery; protected EntityQuery ModifierQuery; + protected EntityQuery NoRotateQuery; protected EntityQuery PhysicsQuery; protected EntityQuery RelayQuery; protected EntityQuery PullableQuery; protected EntityQuery XformQuery; - protected EntityQuery CanMoveInAirQuery; - protected EntityQuery NoRotateQuery; - protected EntityQuery FootstepModifierQuery; - protected EntityQuery MapGridQuery; private static readonly ProtoId FootstepSoundTag = "FootstepSound"; @@ -91,6 +92,7 @@ public abstract partial class SharedMoverController : VirtualController CanMoveInAirQuery = GetEntityQuery(); FootstepModifierQuery = GetEntityQuery(); MapGridQuery = GetEntityQuery(); + MapQuery = GetEntityQuery(); SubscribeLocalEvent(OnTileFriction);