diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index 771675c440..6773fe316f 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -271,10 +271,10 @@ namespace Content.Shared.Movement.Systems if (worldTotal != Vector2.Zero) { - // This should have its event run during island solver soooo - xform.DeferUpdates = true; - xform.WorldRotation = worldTotal.ToWorldAngle(); - xform.DeferUpdates = false; + var worldRot = _transform.GetWorldRotation(xform); + _transform.SetLocalRotation(xform, xform.LocalRotation + worldTotal.ToWorldAngle() - worldRot); + // TODO apparently this results in a duplicate move event because "This should have its event run during + // island solver"??. So maybe SetRotation needs an argument to avoid raising an event? if (!weightless && TryComp(mover.Owner, out var mobMover) && TryGetSound(weightless, mover, mobMover, xform, out var sound))