From f4b302e01af48224d9a36829502f95098dc34b39 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 4 Mar 2012 12:39:46 +1300 Subject: [PATCH] add support for damage cooldown on SelfHealing --- OpenRA.Mods.RA/SelfHealing.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.RA/SelfHealing.cs b/OpenRA.Mods.RA/SelfHealing.cs index e5714051bf..4de5a560e4 100644 --- a/OpenRA.Mods.RA/SelfHealing.cs +++ b/OpenRA.Mods.RA/SelfHealing.cs @@ -17,14 +17,15 @@ namespace OpenRA.Mods.RA public readonly int Step = 5; public readonly int Ticks = 5; public readonly float HealIfBelow = .5f; + public readonly int DamageCooldown = 0; public virtual object Create(ActorInitializer init) { return new SelfHealing(this); } } - class SelfHealing : ITick, ISync + class SelfHealing : ITick, ISync, INotifyDamage { - [Sync] - int ticks; + [Sync] int ticks; + [Sync] int damageTicks; SelfHealingInfo Info; public SelfHealing(SelfHealingInfo info) { Info = info; } @@ -37,6 +38,12 @@ namespace OpenRA.Mods.RA var health = self.Trait(); if (health.HP >= Info.HealIfBelow*health.MaxHP) return; + + if (damageTicks > 0) + { + --damageTicks; + return; + } if (--ticks <= 0) { @@ -44,5 +51,11 @@ namespace OpenRA.Mods.RA self.InflictDamage(self, -Info.Step, null); } } + + public void Damaged (Actor self, AttackInfo e) + { + if (e.Damage > 0) + damageTicks = Info.DamageCooldown; + } } }