Merge pull request #12947 from pchote/fix-obelisk-targeting

Fix obelisk targeting.
This commit is contained in:
Oliver Brakmann
2017-03-11 22:28:42 +01:00
committed by GitHub
2 changed files with 7 additions and 5 deletions

View File

@@ -17,7 +17,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Cnc.Traits
{
[Desc("Implements the charge-then-burst attack logic specific to the RA tesla coil.")]
class AttackTeslaInfo : AttackOmniInfo
class AttackTeslaInfo : AttackBaseInfo
{
[Desc("How many charges this actor has to attack with, once charged.")]
public readonly int MaxCharges = 1;
@@ -37,7 +37,7 @@ namespace OpenRA.Mods.Cnc.Traits
public override object Create(ActorInitializer init) { return new AttackTesla(init.Self, this); }
}
class AttackTesla : AttackOmni, ITick, INotifyAttack
class AttackTesla : AttackBase, ITick, INotifyAttack
{
readonly AttackTeslaInfo info;

View File

@@ -26,23 +26,25 @@ namespace OpenRA.Mods.Common.Traits
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack)
{
return new SetTarget(this, newTarget);
return new SetTarget(this, newTarget, allowMove);
}
protected class SetTarget : Activity
{
readonly Target target;
readonly AttackOmni attack;
readonly bool allowMove;
public SetTarget(AttackOmni attack, Target target)
public SetTarget(AttackOmni attack, Target target, bool allowMove)
{
this.target = target;
this.attack = attack;
this.allowMove = allowMove;
}
public override Activity Tick(Actor self)
{
if (IsCanceled || !target.IsValidFor(self))
if (IsCanceled || !target.IsValidFor(self) || !attack.IsReachableTarget(target, allowMove))
return NextActivity;
attack.DoAttack(self, target);