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; + } } }