From b4298a445eaf82e2672286bea9d1ac04202a5a2d Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 2 Apr 2010 21:57:16 +1200 Subject: [PATCH] fixed units forgetting their orders while near enemies. --- OpenRA.Game/Traits/AI/AutoTarget.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenRA.Game/Traits/AI/AutoTarget.cs b/OpenRA.Game/Traits/AI/AutoTarget.cs index 82182591ef..43451c3ae8 100644 --- a/OpenRA.Game/Traits/AI/AutoTarget.cs +++ b/OpenRA.Game/Traits/AI/AutoTarget.cs @@ -49,9 +49,9 @@ namespace OpenRA.Traits var attack = self.traits.Get(); var range = Util.GetMaximumRange(self); - if (attack.target == null || - (attack.target.Location - self.Location).LengthSquared > range * range + 2) - AttackTarget(self, ChooseTarget(self, range)); + if( attack.target == null || + ( attack.target.Location - self.Location ).LengthSquared > range * range ) + attack.target = ChooseTarget( self, range ); var info = self.Info.Traits.Get(); nextScanTime = (int)(25 * (info.ScanTimeAverage + @@ -74,6 +74,12 @@ namespace OpenRA.Traits { if (!self.IsIdle) return; + var attack = self.traits.Get(); + var range = Util.GetMaximumRange(self); + + if( attack.target != null && ( attack.target.Location - self.Location ).LengthSquared <= range * range ) + return; + // not a lot we can do about things we can't hurt... although maybe we should automatically run away? if (!Combat.HasAnyValidWeapons(self, e.Attacker)) return; @@ -82,7 +88,7 @@ namespace OpenRA.Traits if (e.Damage < 0) return; // don't retaliate against healers - AttackTarget(self, e.Attacker); + attack.target = e.Attacker; } } }