Migrate SelfHealing.HealIfBelow from float to int percentage

This commit is contained in:
reaperrr
2016-03-24 13:36:00 +01:00
parent 8ba875476f
commit 3a97757bfa
13 changed files with 32 additions and 15 deletions

View File

@@ -18,7 +18,8 @@ namespace OpenRA.Mods.Common.Traits
{
public readonly int Step = 5;
public readonly int Delay = 5;
public readonly float HealIfBelow = .5f;
[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); }
@@ -42,7 +43,7 @@ namespace OpenRA.Mods.Common.Traits
if (self.IsDead || IsTraitDisabled)
return;
if (health.HP >= Info.HealIfBelow * health.MaxHP)
if (health.HP >= Info.HealIfBelow * health.MaxHP / 100)
return;
if (damageTicks > 0)

View File

@@ -692,6 +692,22 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
}
// Migrated SelfHealing to use int percentage instead of float
if (engineVersion < 20160325)
{
if (node.Key == "SelfHealing")
{
var healIfBelowNode = node.Value.Nodes.FirstOrDefault(x => x.Key == "HealIfBelow");
if (healIfBelowNode != null)
{
// The HealIfBelow value is now an int percentage, so multiply the float with 100.
var oldValue = FieldLoader.GetValue<float>("HealIfBelow", healIfBelowNode.Value.Value);
var newValue = (int)(oldValue * 100);
healIfBelowNode.Value.Value = newValue.ToString();
}
}
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
}
}