diff --git a/OpenRA.Game/GameRules/Warheads/AbsoluteSpreadDamageWarhead.cs b/OpenRA.Game/GameRules/Warheads/AbsoluteSpreadDamageWarhead.cs index 223fb720d6..17a3398731 100644 --- a/OpenRA.Game/GameRules/Warheads/AbsoluteSpreadDamageWarhead.cs +++ b/OpenRA.Game/GameRules/Warheads/AbsoluteSpreadDamageWarhead.cs @@ -24,16 +24,7 @@ namespace OpenRA.GameRules [Desc("What factor to multiply the Damage by for this spread range.", "Each factor specified must have an associated Spread defined.")] public readonly float[] SpreadFactor = { 1f }; - public override void DoImpact(Target target, Actor firedBy, float firepowerModifier) - { - // Used by traits that damage a single actor, rather than a position - if (target.Type == TargetType.Actor) - DoImpact(target.Actor, firedBy, firepowerModifier); - else - DoImpact(target.CenterPosition, firedBy, firepowerModifier); - } - - public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) + public override void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) { var world = firedBy.World; @@ -60,7 +51,7 @@ namespace OpenRA.GameRules } } - public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) + public override void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) { if (IsValidAgainst(victim, firedBy)) { diff --git a/OpenRA.Game/GameRules/Warheads/DamageWarhead.cs b/OpenRA.Game/GameRules/Warheads/DamageWarhead.cs index a20cbd7435..6ecaadabc0 100644 --- a/OpenRA.Game/GameRules/Warheads/DamageWarhead.cs +++ b/OpenRA.Game/GameRules/Warheads/DamageWarhead.cs @@ -55,5 +55,17 @@ namespace OpenRA.GameRules float versus; return Versus.TryGetValue(armor.Type, out versus) ? versus : 1f; } + + public override void DoImpact(Target target, Actor firedBy, float firepowerModifier) + { + // Used by traits that damage a single actor, rather than a position + if (target.Type == TargetType.Actor) + DoImpact(target.Actor, firedBy, firepowerModifier); + else + DoImpact(target.CenterPosition, firedBy, firepowerModifier); + } + + public abstract void DoImpact(Actor target, Actor firedBy, float firepowerModifier); + public abstract void DoImpact(WPos pos, Actor firedBy, float firepowerModifier); } } diff --git a/OpenRA.Game/GameRules/Warheads/HealthPercentageDamageWarhead.cs b/OpenRA.Game/GameRules/Warheads/HealthPercentageDamageWarhead.cs index fbbf802629..822a003786 100644 --- a/OpenRA.Game/GameRules/Warheads/HealthPercentageDamageWarhead.cs +++ b/OpenRA.Game/GameRules/Warheads/HealthPercentageDamageWarhead.cs @@ -21,16 +21,7 @@ namespace OpenRA.GameRules [Desc("Size of the area. Damage will be applied to this area.", "If two spreads are defined, the area of effect is a ring, where the second value is the inner radius.")] public readonly WRange[] Spread = { new WRange(43), WRange.Zero }; - public override void DoImpact(Target target, Actor firedBy, float firepowerModifier) - { - // Used by traits that damage a single actor, rather than a position - if (target.Type == TargetType.Actor) - DoImpact(target.Actor, firedBy, firepowerModifier); - else - DoImpact(target.CenterPosition, firedBy, firepowerModifier); - } - - public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) + public override void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) { var world = firedBy.World; var range = Spread[0]; @@ -42,7 +33,7 @@ namespace OpenRA.GameRules DoImpact(victim, firedBy, firepowerModifier); } - public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) + public override void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) { if (IsValidAgainst(victim, firedBy)) { diff --git a/OpenRA.Game/GameRules/Warheads/PerCellDamageWarhead.cs b/OpenRA.Game/GameRules/Warheads/PerCellDamageWarhead.cs index 4641834223..5f0a370bea 100644 --- a/OpenRA.Game/GameRules/Warheads/PerCellDamageWarhead.cs +++ b/OpenRA.Game/GameRules/Warheads/PerCellDamageWarhead.cs @@ -21,16 +21,7 @@ namespace OpenRA.GameRules [Desc("Size of the area. Damage will be applied to this area.")] public readonly int[] Size = { 0, 0 }; - public override void DoImpact(Target target, Actor firedBy, float firepowerModifier) - { - // Used by traits that damage a single actor, rather than a position - if (target.Type == TargetType.Actor) - DoImpact(target.Actor, firedBy, firepowerModifier); - else - DoImpact(target.CenterPosition, firedBy, firepowerModifier); - } - - public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) + public override void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) { var world = firedBy.World; var targetTile = world.Map.CellContaining(pos); @@ -42,7 +33,7 @@ namespace OpenRA.GameRules DoImpact(victim, firedBy, firepowerModifier); } - public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) + public override void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) { if (IsValidAgainst(victim, firedBy)) { diff --git a/OpenRA.Game/GameRules/Warheads/SpreadDamageWarhead.cs b/OpenRA.Game/GameRules/Warheads/SpreadDamageWarhead.cs index f9af6ea087..150739b302 100644 --- a/OpenRA.Game/GameRules/Warheads/SpreadDamageWarhead.cs +++ b/OpenRA.Game/GameRules/Warheads/SpreadDamageWarhead.cs @@ -21,16 +21,7 @@ namespace OpenRA.GameRules [Desc("For Normal DamageModel: Distance from the explosion center at which damage is 1/2.")] public readonly WRange Spread = new WRange(43); - public override void DoImpact(Target target, Actor firedBy, float firepowerModifier) - { - // Used by traits that damage a single actor, rather than a position - if (target.Type == TargetType.Actor) - DoImpact(target.Actor, firedBy, firepowerModifier); - else - DoImpact(target.CenterPosition, firedBy, firepowerModifier); - } - - public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) + public override void DoImpact(WPos pos, Actor firedBy, float firepowerModifier) { var world = firedBy.World; var maxSpread = new WRange((int)(Spread.Range * (float)Math.Log(Math.Abs(Damage), 2))); @@ -44,7 +35,7 @@ namespace OpenRA.GameRules } } - public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) + public override void DoImpact(Actor victim, Actor firedBy, float firepowerModifier) { if (IsValidAgainst(victim, firedBy)) {