Disable preemptive targeting for queued orders.
This commit is contained in:
@@ -63,11 +63,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
ChildActivity.Cancel(self);
|
||||
var attackBases = autoTarget.ActiveAttackBases;
|
||||
foreach (var ab in attackBases)
|
||||
{
|
||||
var activity = ab.GetAttackActivity(self, target, true, false);
|
||||
QueueChild(activity);
|
||||
ab.OnQueueAttackActivity(self, activity, target, true, false);
|
||||
}
|
||||
QueueChild(ab.GetAttackActivity(self, target, true, false));
|
||||
|
||||
// Make sure to continue moving when the attack activities have finished.
|
||||
QueueChild(getInner());
|
||||
|
||||
@@ -399,15 +399,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!target.IsValidFor(self))
|
||||
return;
|
||||
|
||||
if (!queued)
|
||||
self.CancelActivity();
|
||||
|
||||
var activity = GetAttackActivity(self, target, allowMove, forceAttack, targetLineColor);
|
||||
self.QueueActivity(activity);
|
||||
OnQueueAttackActivity(self, activity, target, allowMove, forceAttack);
|
||||
self.QueueActivity(queued, activity);
|
||||
OnResolveAttackOrder(self, activity, target, queued, forceAttack);
|
||||
}
|
||||
|
||||
public virtual void OnQueueAttackActivity(Actor self, Activity activity, Target target, bool allowMove, bool forceAttack) { }
|
||||
public virtual void OnResolveAttackOrder(Actor self, Activity activity, Target target, bool queued, bool forceAttack) { }
|
||||
|
||||
public bool IsReachableTarget(Target target, bool allowMove)
|
||||
{
|
||||
|
||||
@@ -157,11 +157,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new AttackActivity(self, newTarget, allowMove, forceAttack, targetLineColor);
|
||||
}
|
||||
|
||||
public override void OnQueueAttackActivity(Actor self, Activity activity, Target target, bool allowMove, bool forceAttack)
|
||||
public override void OnResolveAttackOrder(Actor self, Activity activity, Target target, bool queued, bool forceAttack)
|
||||
{
|
||||
// We can improve responsiveness for turreted actors by preempting
|
||||
// the last order (usually a move) and setting the target immediately
|
||||
if (self.CurrentActivity != null && self.CurrentActivity.NextActivity == activity)
|
||||
if (!queued)
|
||||
{
|
||||
RequestedTarget = target;
|
||||
requestedForceAttack = forceAttack;
|
||||
|
||||
Reference in New Issue
Block a user