Add an upgrade rule for DamageWarheads

This commit is contained in:
penev92
2015-04-24 14:16:41 +03:00
parent aa57d5f956
commit ea01439377
34 changed files with 257 additions and 32 deletions

View File

@@ -1240,6 +1240,40 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
}
if (engineVersion < 20150421)
{
if (node.Key.StartsWith("Warhead") && node.Value.Value == "SpreadDamage")
{
// Add DamageTypes property to DamageWarheads with a default value "Prone50Percent"
if (node.Value.Nodes.All(x => x.Key != "DamageTypes"))
{
var damage = node.Value.Nodes.FirstOrDefault(x => x.Key == "Damage");
var damageValue = damage != null ? FieldLoader.GetValue<int>("Damage", damage.Value.Value) : -1;
var prone = node.Value.Nodes.FirstOrDefault(x => x.Key == "PreventProne");
var preventsProne = prone != null && FieldLoader.GetValue<bool>("PreventProne", prone.Value.Value);
var proneModifier = node.Value.Nodes.FirstOrDefault(x => x.Key == "ProneModifier");
var modifierValue = proneModifier == null ? "50" : proneModifier.Value.Value;
var value = new List<string>();
if (damageValue > 0)
value.Add("Prone{0}Percent".F(modifierValue));
if (!preventsProne)
value.Add("TriggerProne");
if (value.Any())
node.Value.Nodes.Add(new MiniYamlNode("DamageTypes", value.JoinWith(", ")));
}
// Remove obsolete PreventProne and ProneModifier
node.Value.Nodes.RemoveAll(x => x.Key == "PreventProne");
node.Value.Nodes.RemoveAll(x => x.Key == "ProneModifier");
}
}
UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
}
}