diff --git a/OpenRA.Mods.RA/Attack/AttackCharge.cs b/OpenRA.Mods.RA/Attack/AttackCharge.cs index 363bdc914b..de6a5c14b9 100644 --- a/OpenRA.Mods.RA/Attack/AttackCharge.cs +++ b/OpenRA.Mods.RA/Attack/AttackCharge.cs @@ -8,8 +8,8 @@ */ #endregion -using OpenRA.Mods.RA.Activities; using OpenRA.FileFormats; +using OpenRA.Mods.RA.Activities; using OpenRA.Mods.RA.Render; using OpenRA.Traits; @@ -29,34 +29,36 @@ namespace OpenRA.Mods.RA class AttackCharge : AttackOmni, ITick, INotifyAttack, ISync { + readonly AttackChargeInfo aci; + [Sync] int charges; [Sync] int timeToRecharge; public AttackCharge(Actor self) : base(self) { - charges = self.Info.Traits.Get().MaxCharges; + aci = self.Info.Traits.Get(); + charges = aci.MaxCharges; } - public override void Tick( Actor self ) + public override void Tick(Actor self) { - if( --timeToRecharge <= 0 ) - charges = self.Info.Traits.Get().MaxCharges; + if (--timeToRecharge <= 0) + charges = aci.MaxCharges; - base.Tick( self ); + base.Tick(self); } public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { --charges; - timeToRecharge = self.Info.Traits.Get().ReloadTime; + timeToRecharge = aci.ReloadTime; } public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove) { return new ChargeAttack(newTarget); } - public override void ResolveOrder(Actor self, Order order) { @@ -82,7 +84,7 @@ namespace OpenRA.Mods.RA var initDelay = self.Info.Traits.Get().InitialChargeDelay; var attack = self.Trait(); - if(attack.charges == 0 || !attack.CanAttack(self, target)) + if (attack.charges == 0 || !attack.CanAttack(self, target)) return this; self.Trait().PlayCharge(self); @@ -106,7 +108,7 @@ namespace OpenRA.Mods.RA var chargeDelay = self.Info.Traits.Get().ChargeDelay; var attack = self.Trait(); - if(attack.charges == 0) + if (attack.charges == 0) return NextActivity; attack.DoAttack(self, target);