diff --git a/OpenRA.Game/Orders/UnitOrderGenerator.cs b/OpenRA.Game/Orders/UnitOrderGenerator.cs index 04c8dd9c00..b6d103a48a 100644 --- a/OpenRA.Game/Orders/UnitOrderGenerator.cs +++ b/OpenRA.Game/Orders/UnitOrderGenerator.cs @@ -90,12 +90,15 @@ namespace OpenRA.Orders .OrderByDescending( x => x.Order.OrderPriority ) ) { var actorsAt = self.World.ActorMap.GetUnitsAt( xy ).ToList(); - + + var forceAttack = mi.Modifiers.HasModifier(Modifiers.Ctrl); + var forceMove = mi.Modifiers.HasModifier(Modifiers.Alt); + var forceQueue = mi.Modifiers.HasModifier(Modifiers.Shift); string cursor = null; if( underCursor != null ) - if (o.Order.CanTargetActor(self, underCursor, mi.Modifiers.HasModifier(Modifiers.Ctrl), mi.Modifiers.HasModifier(Modifiers.Alt), mi.Modifiers.HasModifier(Modifiers.Shift), ref cursor)) + if (o.Order.CanTargetActor(self, underCursor, forceAttack, forceMove, forceQueue, ref cursor)) return new UnitOrderResult( self, o.Order, o.Trait, cursor, Target.FromActor( underCursor ) ); - if (o.Order.CanTargetLocation(self, xy, actorsAt, mi.Modifiers.HasModifier(Modifiers.Ctrl), mi.Modifiers.HasModifier(Modifiers.Alt), mi.Modifiers.HasModifier(Modifiers.Shift), ref cursor)) + if (o.Order.CanTargetLocation(self, xy, actorsAt, forceAttack, forceMove, forceQueue, ref cursor)) return new UnitOrderResult( self, o.Order, o.Trait, cursor, Target.FromCell( xy ) ); } } diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index bbaf192825..a8a5003d57 100755 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -46,7 +46,7 @@ namespace OpenRA.Traits string OrderID { get; } int OrderPriority { get; } bool CanTargetActor(Actor self, Actor target, bool forceAttack, bool forceMove, bool forceQueue, ref string cursor); - bool CanTargetLocation(Actor self, int2 location, List actorsAtLocation, bool forceAttack, bool forceQueue, bool forceMove, ref string cursor); + bool CanTargetLocation(Actor self, int2 location, List actorsAtLocation, bool forceAttack, bool forceMove, bool forceQueue, ref string cursor); bool IsQueued { get; } }