diff --git a/OpenRA.Mods.RA/Activities/Attack.cs b/OpenRA.Mods.RA/Activities/Attack.cs index 88bfc1efff..b0076573bb 100755 --- a/OpenRA.Mods.RA/Activities/Attack.cs +++ b/OpenRA.Mods.RA/Activities/Attack.cs @@ -27,6 +27,14 @@ namespace OpenRA.Mods.RA.Activities } public override IActivity Tick( Actor self ) + { + var attack = self.Trait(); + var ret = InnerTick( self, attack ); + attack.IsAttacking = ( ret == this ); + return ret; + } + + IActivity InnerTick( Actor self, AttackBase attack ) { if (IsCanceled) return NextActivity; var facing = self.Trait(); @@ -49,7 +57,6 @@ namespace OpenRA.Mods.RA.Activities return Util.SequenceActivities( new Turn( desiredFacing ), this ); } - var attack = self.Trait(); attack.target = Target; attack.DoAttack(self); return this; diff --git a/OpenRA.Mods.RA/AttackBase.cs b/OpenRA.Mods.RA/AttackBase.cs index 022a307f92..d1901b003e 100644 --- a/OpenRA.Mods.RA/AttackBase.cs +++ b/OpenRA.Mods.RA/AttackBase.cs @@ -41,6 +41,7 @@ namespace OpenRA.Mods.RA public class AttackBase : IIssueOrder, IResolveOrder, ITick, IExplodeModifier, IOrderCursor, IOrderVoice { + public bool IsAttacking { get; internal set; } public Target target; public List Weapons = new List(); diff --git a/OpenRA.Mods.RA/AutoHeal.cs b/OpenRA.Mods.RA/AutoHeal.cs index e3a5cf5686..0426dc587d 100644 --- a/OpenRA.Mods.RA/AutoHeal.cs +++ b/OpenRA.Mods.RA/AutoHeal.cs @@ -24,7 +24,7 @@ namespace OpenRA.Mods.RA if (target != null) attack.ResolveOrder(self, new Order("Attack", self, target)); else - if (self.GetCurrentActivity() is Attack) + if (attack.IsAttacking) self.CancelActivity(); } diff --git a/OpenRA.Mods.RA/IdleAnimation.cs b/OpenRA.Mods.RA/IdleAnimation.cs index cbaf71184b..1d6f3fbd1e 100644 --- a/OpenRA.Mods.RA/IdleAnimation.cs +++ b/OpenRA.Mods.RA/IdleAnimation.cs @@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA public void Damaged(Actor self, AttackInfo e) { - if (self.GetCurrentActivity() is IdleAnimation) + if (self.GetCurrentActivity() is Activities.IdleAnimation) self.CancelActivity(); } diff --git a/OpenRA.Mods.RA/Render/RenderUnitReload.cs b/OpenRA.Mods.RA/Render/RenderUnitReload.cs index e2ec355c7d..b368af6351 100755 --- a/OpenRA.Mods.RA/Render/RenderUnitReload.cs +++ b/OpenRA.Mods.RA/Render/RenderUnitReload.cs @@ -24,13 +24,11 @@ namespace OpenRA.Mods.RA.Render public override void Tick(Actor self) { - var isAttacking = self.GetCurrentActivity() is Attack; - var attack = self.TraitOrDefault(); if (attack != null) anim.ReplaceAnim((attack.IsReloading() ? "empty-" : "") - + (isAttacking ? "aim" : "idle")); + + (attack.IsAttacking ? "aim" : "idle")); base.Tick(self); } }