diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index e58bcede5b..2993c37135 100755 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -105,7 +105,7 @@ namespace OpenRA.Traits } } - public interface INotifyAttack { void Attacking(Actor self); } + public interface INotifyAttack { void Attacking(Actor self, Target target); } public interface IRenderModifier { IEnumerable ModifyRender(Actor self, IEnumerable r); } public interface IDamageModifier { float GetDamageModifier(Actor attacker, WarheadInfo warhead); } public interface ISpeedModifier { decimal GetSpeedModifier(); } diff --git a/OpenRA.Mods.RA/Activities/LayMines.cs b/OpenRA.Mods.RA/Activities/LayMines.cs index 49e8fe75f3..5a37a56c96 100644 --- a/OpenRA.Mods.RA/Activities/LayMines.cs +++ b/OpenRA.Mods.RA/Activities/LayMines.cs @@ -74,7 +74,7 @@ namespace OpenRA.Mods.RA.Activities void LayMine(Actor self) { var limitedAmmo = self.TraitOrDefault(); - if (limitedAmmo != null) limitedAmmo.Attacking(self); + if (limitedAmmo != null) limitedAmmo.Attacking(self, Target.FromCell(self.Location)); self.World.AddFrameEndTask( w => w.CreateActor(self.Info.Traits.Get().Mine, new TypeDictionary diff --git a/OpenRA.Mods.RA/Activities/Leap.cs b/OpenRA.Mods.RA/Activities/Leap.cs index 9f02f8c7e5..6412211868 100644 --- a/OpenRA.Mods.RA/Activities/Leap.cs +++ b/OpenRA.Mods.RA/Activities/Leap.cs @@ -28,7 +28,7 @@ namespace OpenRA.Mods.RA.Activities this.target = target; initialLocation = self.Trait().PxPosition; - self.Trait().Attacking(self); + self.Trait().Attacking(self, target); Sound.Play("dogg5p.aud", self.CenterLocation); } diff --git a/OpenRA.Mods.RA/AttackOmni.cs b/OpenRA.Mods.RA/AttackOmni.cs index 517de83a36..cddf62fd8e 100644 --- a/OpenRA.Mods.RA/AttackOmni.cs +++ b/OpenRA.Mods.RA/AttackOmni.cs @@ -22,7 +22,6 @@ namespace OpenRA.Mods.RA class AttackOmni : AttackBase, INotifyBuildComplete { bool buildComplete = false; - protected Target target; public void BuildingComplete(Actor self) { buildComplete = true; } public AttackOmni(Actor self) : base(self) { } @@ -33,12 +32,6 @@ namespace OpenRA.Mods.RA return base.CanAttack( self, target ) && !isBuilding; } - public override void Tick(Actor self) - { - base.Tick(self); - DoAttack(self, target); - } - protected override IActivity GetAttackActivity(Actor self, Target newTarget, bool allowMove) { return new SetTarget( newTarget ); @@ -54,7 +47,7 @@ namespace OpenRA.Mods.RA if( IsCanceled || !target.IsValid ) return NextActivity; - self.Trait().target = target; + self.Trait().DoAttack(self, target); return this; } } diff --git a/OpenRA.Mods.RA/AttackTesla.cs b/OpenRA.Mods.RA/AttackTesla.cs index c281f3edb4..11d5b33250 100644 --- a/OpenRA.Mods.RA/AttackTesla.cs +++ b/OpenRA.Mods.RA/AttackTesla.cs @@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA return target.Actor == previousTarget ? 3 : base.FireDelay(self, target, info); } - public void Attacking(Actor self) + public void Attacking(Actor self, Target target) { foreach (var w in Weapons) w.FireDelay = 8; diff --git a/OpenRA.Mods.RA/Cloak.cs b/OpenRA.Mods.RA/Cloak.cs index 4353fa8f96..713689c969 100644 --- a/OpenRA.Mods.RA/Cloak.cs +++ b/OpenRA.Mods.RA/Cloak.cs @@ -62,7 +62,7 @@ namespace OpenRA.Mods.RA remainingTime = Math.Max(remainingTime, (int)(info.CloakDelay * 25)); } - public void Attacking(Actor self) { DoUncloak(); } + public void Attacking(Actor self, Target target) { DoUncloak(); } public void Damaged(Actor self, AttackInfo e) { canCloak = (e.DamageState < DamageState.Critical); diff --git a/OpenRA.Mods.RA/LimitedAmmo.cs b/OpenRA.Mods.RA/LimitedAmmo.cs index 96588a6ed3..4ce834522e 100644 --- a/OpenRA.Mods.RA/LimitedAmmo.cs +++ b/OpenRA.Mods.RA/LimitedAmmo.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.RA return true; } - public void Attacking(Actor self) { --ammo; } + public void Attacking(Actor self, Target target) { --ammo; } public IEnumerable GetPips(Actor self) { diff --git a/OpenRA.Mods.RA/Render/RenderInfantry.cs b/OpenRA.Mods.RA/Render/RenderInfantry.cs index dfadbd7425..935796c202 100644 --- a/OpenRA.Mods.RA/Render/RenderInfantry.cs +++ b/OpenRA.Mods.RA/Render/RenderInfantry.cs @@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA.Render return takeCover != null && takeCover.IsProne; } - public void Attacking(Actor self) + public void Attacking(Actor self, Target target) { inAttack = true; diff --git a/OpenRA.Mods.RA/Weapon.cs b/OpenRA.Mods.RA/Weapon.cs index b5093d44d9..f6f3275aa8 100644 --- a/OpenRA.Mods.RA/Weapon.cs +++ b/OpenRA.Mods.RA/Weapon.cs @@ -149,7 +149,7 @@ namespace OpenRA.Mods.RA }); foreach (var na in self.TraitsImplementing()) - na.Attacking(self); + na.Attacking(self, target); FiredShot(); } diff --git a/OpenRA.Mods.RA/WithMuzzleFlash.cs b/OpenRA.Mods.RA/WithMuzzleFlash.cs index d68bfa55bd..810306a3e4 100644 --- a/OpenRA.Mods.RA/WithMuzzleFlash.cs +++ b/OpenRA.Mods.RA/WithMuzzleFlash.cs @@ -45,7 +45,7 @@ namespace OpenRA.Mods.RA } } - public void Attacking(Actor self) + public void Attacking(Actor self, Target target) { isShowing = true; foreach( var mf in muzzleFlashes )