Remove ability to have a single unit guard itself

This commit is contained in:
ScottNZ
2013-05-31 18:12:30 +12:00
parent 5f3563d83e
commit 02a8b05aff

View File

@@ -61,8 +61,9 @@ namespace OpenRA.Mods.RA
if (target == null || subjects.All(s => s.IsDead())) if (target == null || subjects.All(s => s.IsDead()))
yield break; yield break;
foreach (var actor in subjects) foreach (var subject in subjects)
yield return new Order("Guard", actor, false) { TargetActor = target }; if (subject != target)
yield return new Order("Guard", subject, false) { TargetActor = target };
} }
public void Tick(World world) public void Tick(World world)
@@ -76,10 +77,13 @@ namespace OpenRA.Mods.RA
public string GetCursor(World world, CPos xy, MouseInput mi) public string GetCursor(World world, CPos xy, MouseInput mi)
{ {
return world.Map.IsInMap(xy) if (world.Map.IsInMap(xy))
&& FriendlyGuardableUnitsAtMouse(world, mi).Any() {
? "guard" var targets = FriendlyGuardableUnitsAtMouse(world, mi);
: "move-blocked"; if (targets.Any() && (subjects.Count() > 1 || (subjects.Count() == 1 && subjects.First() != targets.First())))
return "guard";
}
return "move-blocked";
} }
static IEnumerable<Actor> FriendlyGuardableUnitsAtMouse(World world, MouseInput mi) static IEnumerable<Actor> FriendlyGuardableUnitsAtMouse(World world, MouseInput mi)