diff --git a/OpenRA.Game/Network/Order.cs b/OpenRA.Game/Network/Order.cs index ebc74817ac..2ead383e08 100755 --- a/OpenRA.Game/Network/Order.cs +++ b/OpenRA.Game/Network/Order.cs @@ -53,6 +53,8 @@ namespace OpenRA : this(orderString, subject, targetActor, int2.Zero, null, false) { } public Order(string orderString, Actor subject, int2 targetLocation) : this(orderString, subject, null, targetLocation, null, false) { } + public Order(string orderString, Actor subject, int2 targetLocation, bool queued) + : this(orderString, subject, null, targetLocation, null, queued) { } public Order(string orderString, Actor subject, string targetString) : this(orderString, subject, null, int2.Zero, targetString, false) { } public Order(string orderString, Actor subject, Actor targetActor, int2 targetLocation) diff --git a/OpenRA.Game/Traits/Mobile.cs b/OpenRA.Game/Traits/Mobile.cs index f8690fac56..505034cfd8 100644 --- a/OpenRA.Game/Traits/Mobile.cs +++ b/OpenRA.Game/Traits/Mobile.cs @@ -87,7 +87,7 @@ namespace OpenRA.Traits var umt = self.Info.Traits.Get().MovementType; if (Util.GetEffectiveSpeed(self,umt) == 0) return null; /* allow disabling move orders from modifiers */ if (xy == toCell) return null; - return new Order("Move", self, xy); + return new Order("Move", self, xy, mi.Modifiers.HasModifier(Modifiers.Shift)); } public void ResolveOrder(Actor self, Order order) @@ -96,7 +96,7 @@ namespace OpenRA.Traits { if (self.traits.GetOrDefault().CanEnterCell(order.TargetLocation)) { - self.CancelActivity(); + if( !order.Queued ) self.CancelActivity(); self.QueueActivity(new Activities.Move(order.TargetLocation, 8)); } }