From 9e2128234195964b3aa98a75c2cf4ce4034c254f Mon Sep 17 00:00:00 2001 From: Curtis S Date: Sat, 22 Oct 2011 13:23:30 -0600 Subject: [PATCH] Fix #725; planes don't stack afld / planes will fly to empty aflds --- OpenRA.Mods.RA/Air/ReturnToBase.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.RA/Air/ReturnToBase.cs b/OpenRA.Mods.RA/Air/ReturnToBase.cs index 27241609e2..726828063c 100755 --- a/OpenRA.Mods.RA/Air/ReturnToBase.cs +++ b/OpenRA.Mods.RA/Air/ReturnToBase.cs @@ -35,8 +35,7 @@ namespace OpenRA.Mods.RA.Air void Calculate(Actor self) { - if (dest == null) - dest = ChooseAirfield(self); + if (dest == null || Reservable.IsReserved(dest)) dest = ChooseAirfield(self); if (dest == null) return; @@ -94,7 +93,17 @@ namespace OpenRA.Mods.RA.Air if (IsCanceled) return NextActivity; if (!isCalculated) Calculate(self); - if (dest == null) return NextActivity; + if (dest == null) + { + var rearmBuildings = self.Info.Traits.Get().RearmBuildings; + var nearestAfld = self.World.ActorsWithTrait() + .Where(a => a.Actor.Owner == self.Owner && rearmBuildings.Contains(a.Actor.Info.Name)) + .Select(a => a.Actor) + .ClosestTo(self.CenterLocation); + + self.CancelActivity(); + return Util.SequenceActivities(Fly.ToCell(nearestAfld.Location), new FlyCircle()); + } return Util.SequenceActivities( Fly.ToPx(w1),