From 02a8b05aff891ab8a12079349106f855c4679945 Mon Sep 17 00:00:00 2001 From: ScottNZ Date: Fri, 31 May 2013 18:12:30 +1200 Subject: [PATCH] Remove ability to have a single unit guard itself --- OpenRA.Mods.RA/Guard.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.RA/Guard.cs b/OpenRA.Mods.RA/Guard.cs index 6c0696cc85..12efeca889 100644 --- a/OpenRA.Mods.RA/Guard.cs +++ b/OpenRA.Mods.RA/Guard.cs @@ -61,8 +61,9 @@ namespace OpenRA.Mods.RA if (target == null || subjects.All(s => s.IsDead())) yield break; - foreach (var actor in subjects) - yield return new Order("Guard", actor, false) { TargetActor = target }; + foreach (var subject in subjects) + if (subject != target) + yield return new Order("Guard", subject, false) { TargetActor = target }; } public void Tick(World world) @@ -76,10 +77,13 @@ namespace OpenRA.Mods.RA public string GetCursor(World world, CPos xy, MouseInput mi) { - return world.Map.IsInMap(xy) - && FriendlyGuardableUnitsAtMouse(world, mi).Any() - ? "guard" - : "move-blocked"; + if (world.Map.IsInMap(xy)) + { + var targets = FriendlyGuardableUnitsAtMouse(world, mi); + if (targets.Any() && (subjects.Count() > 1 || (subjects.Count() == 1 && subjects.First() != targets.First()))) + return "guard"; + } + return "move-blocked"; } static IEnumerable FriendlyGuardableUnitsAtMouse(World world, MouseInput mi)