diff --git a/OpenRA.Mods.Common/Activities/Turn.cs b/OpenRA.Mods.Common/Activities/Turn.cs index 522a7efdd5..d175ca9d0a 100644 --- a/OpenRA.Mods.Common/Activities/Turn.cs +++ b/OpenRA.Mods.Common/Activities/Turn.cs @@ -21,22 +21,25 @@ namespace OpenRA.Mods.Common.Activities readonly IFacing facing; readonly int desiredFacing; - public Turn(Actor self, int desiredFacing) + public Turn(Actor self, int desiredFacing, bool isInterruptible = true) { disablable = self.TraitOrDefault() as IDisabledTrait; facing = self.Trait(); this.desiredFacing = desiredFacing; + IsInterruptible = isInterruptible; } public override Activity Tick(Actor self) { - if (IsCanceled) + if (IsInterruptible && IsCanceled) return NextActivity; + if (disablable != null && disablable.IsTraitDisabled) return this; if (desiredFacing == facing.Facing) return NextActivity; + facing.Facing = Util.TickFacing(facing.Facing, desiredFacing, facing.TurnSpeed); return this;