From 512358eb722cd045a05447868881ac6bf2ee2b4d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 29 Dec 2013 11:12:09 +1300 Subject: [PATCH] Disable Move OrderTargeter if the Move order is rejected. --- OpenRA.Mods.RA/Move/Mobile.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.RA/Move/Mobile.cs b/OpenRA.Mods.RA/Move/Mobile.cs index 8b80d292e6..887c12ec03 100755 --- a/OpenRA.Mods.RA/Move/Mobile.cs +++ b/OpenRA.Mods.RA/Move/Mobile.cs @@ -251,7 +251,7 @@ namespace OpenRA.Mods.RA.Move self.World.ScreenMap.Remove(self); } - public IEnumerable Orders { get { yield return new MoveOrderTargeter(Info); } } + public IEnumerable Orders { get { yield return new MoveOrderTargeter(self, Info); } } // Note: Returns a valid order even if the unit can't move to the target public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued) @@ -504,10 +504,12 @@ namespace OpenRA.Mods.RA.Move class MoveOrderTargeter : IOrderTargeter { readonly MobileInfo unitType; + readonly bool rejectMove; - public MoveOrderTargeter(MobileInfo unitType) + public MoveOrderTargeter(Actor self, MobileInfo unitType) { this.unitType = unitType; + this.rejectMove = !self.AcceptsOrder("Move"); } public string OrderID { get { return "Move"; } } @@ -516,7 +518,7 @@ namespace OpenRA.Mods.RA.Move public bool CanTarget(Actor self, Target target, List othersAtTarget, TargetModifiers modifiers, ref string cursor) { - if (!target.IsValidFor(self)) + if (rejectMove || !target.IsValidFor(self)) return false; var location = target.CenterPosition.ToCPos();