From d7f321e04d8c6467865c37a395646c99c9894537 Mon Sep 17 00:00:00 2001 From: Jonathan Gustafsson Date: Sun, 7 Dec 2014 13:33:31 +0100 Subject: [PATCH] Fix aircraft fly endlessly in a circle when ordered to attack inside own turning radius --- OpenRA.Mods.RA/Activities/Air/FlyAttack.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.RA/Activities/Air/FlyAttack.cs b/OpenRA.Mods.RA/Activities/Air/FlyAttack.cs index 68e830b091..9f0185f864 100644 --- a/OpenRA.Mods.RA/Activities/Air/FlyAttack.cs +++ b/OpenRA.Mods.RA/Activities/Air/FlyAttack.cs @@ -10,6 +10,7 @@ using OpenRA.Mods.RA.Traits; using OpenRA.Traits; +using System.Linq; namespace OpenRA.Mods.RA.Activities { @@ -17,6 +18,7 @@ namespace OpenRA.Mods.RA.Activities { readonly Target target; Activity inner; + int ticksUntilTurn = 50; public FlyAttack(Target target) { this.target = target; } @@ -38,9 +40,11 @@ namespace OpenRA.Mods.RA.Activities if (IsCanceled) return NextActivity; - inner = Util.SequenceActivities(new Fly(self, target), new FlyTimed(50)); + if (target.IsInRange(self.CenterPosition, attack.Armaments.Select(a => a.Weapon.MinRange).Min())) + inner = Util.SequenceActivities(new FlyTimed(ticksUntilTurn), new Fly(self, target), new FlyTimed(ticksUntilTurn)); + else + inner = Util.SequenceActivities(new Fly(self, target), new FlyTimed(ticksUntilTurn)); } - inner = Util.RunActivity(self, inner); return this;