diff --git a/OpenRA.Mods.Common/Traits/SelfHealing.cs b/OpenRA.Mods.Common/Traits/SelfHealing.cs index 0b17489789..ed39fcaa38 100644 --- a/OpenRA.Mods.Common/Traits/SelfHealing.cs +++ b/OpenRA.Mods.Common/Traits/SelfHealing.cs @@ -16,10 +16,18 @@ namespace OpenRA.Mods.Common.Traits [Desc("Attach this to actors which should be able to regenerate their health points.")] class SelfHealingInfo : UpgradableTraitInfo, Requires { + [Desc("Absolute amount of health points added in each step.")] public readonly int Step = 5; + + [Desc("Relative percentages of health added in each step.", + "When both values are defined, their summary will be applied.")] + public readonly int PercentageStep = 0; + public readonly int Delay = 5; + [Desc("Heal if current health is below this percentage of full health.")] public readonly int HealIfBelow = 50; + public readonly int DamageCooldown = 0; public override object Create(ActorInitializer init) { return new SelfHealing(init.Self, this); } @@ -55,7 +63,7 @@ namespace OpenRA.Mods.Common.Traits if (--ticks <= 0) { ticks = Info.Delay; - self.InflictDamage(self, new Damage(-Info.Step)); + self.InflictDamage(self, new Damage(-(Info.Step + Info.PercentageStep * health.MaxHP / 100))); } }