Fixes AttackMove moving even if an enemy is within range.

This commit is contained in:
WolfGaming
2014-12-04 11:14:15 +00:00
parent fb6b9b8be5
commit a155c7b7ac
3 changed files with 44 additions and 17 deletions

View File

@@ -68,24 +68,42 @@ namespace OpenRA.Mods.RA
{
const int ScanInterval = 7;
Activity inner;
int scanTicks;
bool hasMoved;
Activity inner;
AutoTarget autoTarget;
public AttackMoveActivity(Actor self, Activity inner)
{
this.inner = inner;
autoTarget = self.TraitOrDefault<AutoTarget>();
hasMoved = false;
}
public override Activity Tick(Actor self)
{
if (autoTarget != null && --scanTicks <= 0)
if (autoTarget != null)
{
autoTarget.ScanAndAttack(self);
scanTicks = ScanInterval;
// If the actor hasn't moved since the activity was issued
if (!hasMoved)
autoTarget.ResetScanTimer();
if (--scanTicks <= 0)
{
var attackActivity = autoTarget.ScanAndAttack(self);
if (attackActivity != null)
{
if (!hasMoved)
return attackActivity;
self.QueueActivity(false, attackActivity);
}
scanTicks = ScanInterval;
}
}
hasMoved = true;
if (inner == null)
return NextActivity;