Fix #725; planes don't stack afld / planes will fly to empty aflds
This commit is contained in:
@@ -35,8 +35,7 @@ namespace OpenRA.Mods.RA.Air
|
|||||||
|
|
||||||
void Calculate(Actor self)
|
void Calculate(Actor self)
|
||||||
{
|
{
|
||||||
if (dest == null)
|
if (dest == null || Reservable.IsReserved(dest)) dest = ChooseAirfield(self);
|
||||||
dest = ChooseAirfield(self);
|
|
||||||
|
|
||||||
if (dest == null) return;
|
if (dest == null) return;
|
||||||
|
|
||||||
@@ -94,7 +93,17 @@ namespace OpenRA.Mods.RA.Air
|
|||||||
if (IsCanceled) return NextActivity;
|
if (IsCanceled) return NextActivity;
|
||||||
if (!isCalculated)
|
if (!isCalculated)
|
||||||
Calculate(self);
|
Calculate(self);
|
||||||
if (dest == null) return NextActivity;
|
if (dest == null)
|
||||||
|
{
|
||||||
|
var rearmBuildings = self.Info.Traits.Get<PlaneInfo>().RearmBuildings;
|
||||||
|
var nearestAfld = self.World.ActorsWithTrait<Reservable>()
|
||||||
|
.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(
|
return Util.SequenceActivities(
|
||||||
Fly.ToPx(w1),
|
Fly.ToPx(w1),
|
||||||
|
|||||||
Reference in New Issue
Block a user