From 823d7d44a9f13955fc3ca82415e911182b3c6e9b Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 13 May 2010 18:06:20 +1200 Subject: [PATCH] did tesla instakill via damagemodifier instead --- OpenRA.Game/Actor.cs | 2 +- OpenRA.Game/Traits/AI/TakeCover.cs | 4 +++- OpenRA.Game/Traits/TraitsInterfaces.cs | 2 +- OpenRA.Mods.RA/Crates/ArmorUpgradeCrateAction.cs | 3 ++- OpenRA.Mods.RA/Effects/InvulnEffect.cs | 2 +- OpenRA.Mods.RA/IronCurtainable.cs | 3 ++- OpenRA.Mods.RA/TeslaInstantKills.cs | 14 ++++++-------- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/OpenRA.Game/Actor.cs b/OpenRA.Game/Actor.cs index 62aded8acf..82cb4ac824 100755 --- a/OpenRA.Game/Actor.cs +++ b/OpenRA.Game/Actor.cs @@ -177,7 +177,7 @@ namespace OpenRA /* apply the damage modifiers, if we have any. */ var modifier = (float)traits.WithInterface() - .Select(t => t.GetDamageModifier()).Product(); + .Select(t => t.GetDamageModifier(warhead)).Product(); damage = (int)(damage * modifier); diff --git a/OpenRA.Game/Traits/AI/TakeCover.cs b/OpenRA.Game/Traits/AI/TakeCover.cs index f906225a3d..e335b9c846 100644 --- a/OpenRA.Game/Traits/AI/TakeCover.cs +++ b/OpenRA.Game/Traits/AI/TakeCover.cs @@ -18,6 +18,8 @@ */ #endregion +using OpenRA.GameRules; + namespace OpenRA.Traits { class TakeCoverInfo : ITraitInfo @@ -51,7 +53,7 @@ namespace OpenRA.Traits --remainingProneTime; } - public float GetDamageModifier() + public float GetDamageModifier( WarheadInfo warhead ) { return IsProne ? proneDamage : 1f; } diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index b3fb2c8de1..77ad54236d 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -61,7 +61,7 @@ namespace OpenRA.Traits public interface IOccupySpace { IEnumerable OccupiedCells(); } public interface INotifyAttack { void Attacking(Actor self); } public interface IRenderModifier { IEnumerable ModifyRender(Actor self, IEnumerable r); } - public interface IDamageModifier { float GetDamageModifier(); } + public interface IDamageModifier { float GetDamageModifier( WarheadInfo warhead ); } public interface ISpeedModifier { float GetSpeedModifier(); } public interface IPowerModifier { float GetPowerModifier(); } public interface IFirepowerModifier { float GetFirepowerModifier(); } diff --git a/OpenRA.Mods.RA/Crates/ArmorUpgradeCrateAction.cs b/OpenRA.Mods.RA/Crates/ArmorUpgradeCrateAction.cs index 82350dd457..b07b63647f 100644 --- a/OpenRA.Mods.RA/Crates/ArmorUpgradeCrateAction.cs +++ b/OpenRA.Mods.RA/Crates/ArmorUpgradeCrateAction.cs @@ -18,6 +18,7 @@ */ #endregion +using OpenRA.GameRules; using OpenRA.Traits; namespace OpenRA.Mods.RA @@ -49,6 +50,6 @@ namespace OpenRA.Mods.RA { float multiplier; public ArmorUpgrade(float multiplier) { this.multiplier = 1/multiplier; } - public float GetDamageModifier() { return multiplier; } + public float GetDamageModifier( WarheadInfo warhead ) { return multiplier; } } } diff --git a/OpenRA.Mods.RA/Effects/InvulnEffect.cs b/OpenRA.Mods.RA/Effects/InvulnEffect.cs index a255bca624..00d8f095ac 100644 --- a/OpenRA.Mods.RA/Effects/InvulnEffect.cs +++ b/OpenRA.Mods.RA/Effects/InvulnEffect.cs @@ -37,7 +37,7 @@ namespace OpenRA.Mods.RA.Effects public void Tick( World world ) { - if (a.IsDead || b.GetDamageModifier() > 0) + if (a.IsDead || b.GetDamageModifier(null) > 0) world.AddFrameEndTask(w => w.Remove(this)); } diff --git a/OpenRA.Mods.RA/IronCurtainable.cs b/OpenRA.Mods.RA/IronCurtainable.cs index 7ab0ade00d..81d48c0f17 100644 --- a/OpenRA.Mods.RA/IronCurtainable.cs +++ b/OpenRA.Mods.RA/IronCurtainable.cs @@ -18,6 +18,7 @@ */ #endregion +using OpenRA.GameRules; using OpenRA.Mods.RA.Effects; using OpenRA.Traits; @@ -39,7 +40,7 @@ namespace OpenRA.Mods.RA RemainingTicks--; } - public float GetDamageModifier() + public float GetDamageModifier( WarheadInfo warhead ) { return (RemainingTicks > 0) ? 0.0f : 1.0f; } diff --git a/OpenRA.Mods.RA/TeslaInstantKills.cs b/OpenRA.Mods.RA/TeslaInstantKills.cs index 305e27beba..b67f1919ef 100755 --- a/OpenRA.Mods.RA/TeslaInstantKills.cs +++ b/OpenRA.Mods.RA/TeslaInstantKills.cs @@ -1,17 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using OpenRA.GameRules; using OpenRA.Traits; namespace OpenRA.Mods.RA { - class TeslaInstantKills : INotifyDamage + class TeslaInstantKills : IDamageModifier { - public void Damaged( Actor self, AttackInfo e ) + public float GetDamageModifier( WarheadInfo warhead ) { - if( e.Warhead.InfDeath == 5 ) - self.Health = 0; + if( warhead.InfDeath == 5 ) + return 1000f; + return 1f; } } }