Upgrade rules for increasing HP and damage by 100x for the RA mod
This commit is contained in:
@@ -45,6 +45,12 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static string MultiplyByFactor(int oldValue, int factor)
|
||||||
|
{
|
||||||
|
oldValue = oldValue * factor;
|
||||||
|
return oldValue.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
internal static void UpgradeActorRules(ModData modData, int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth)
|
internal static void UpgradeActorRules(ModData modData, int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth)
|
||||||
{
|
{
|
||||||
var addNodes = new List<MiniYamlNode>();
|
var addNodes = new List<MiniYamlNode>();
|
||||||
@@ -1295,6 +1301,78 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Multiply all health and damage in the RA mod by 100 to avoid issues caused by rounding
|
||||||
|
if (engineVersion < 20171212)
|
||||||
|
{
|
||||||
|
var mod = modData.Manifest.Id;
|
||||||
|
if (mod == "ra")
|
||||||
|
{
|
||||||
|
if (node.Key == "HP" && parent.Key == "Health")
|
||||||
|
{
|
||||||
|
var oldValue = FieldLoader.GetValue<int>(node.Key, node.Value.Value);
|
||||||
|
node.Value.Value = MultiplyByFactor(oldValue, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.Key.StartsWith("SelfHealing"))
|
||||||
|
{
|
||||||
|
var step = node.Value.Nodes.FirstOrDefault(n => n.Key == "Step");
|
||||||
|
if (step == null)
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("Step", "500"));
|
||||||
|
else if (step != null)
|
||||||
|
{
|
||||||
|
var oldValue = FieldLoader.GetValue<int>(step.Key, step.Value.Value);
|
||||||
|
step.Value.Value = MultiplyByFactor(oldValue, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.Key == "RepairsUnits")
|
||||||
|
{
|
||||||
|
var step = node.Value.Nodes.FirstOrDefault(n => n.Key == "HpPerStep");
|
||||||
|
if (step == null)
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("HpPerStep", "1000"));
|
||||||
|
else if (step != null)
|
||||||
|
{
|
||||||
|
var oldValue = FieldLoader.GetValue<int>(step.Key, step.Value.Value);
|
||||||
|
step.Value.Value = MultiplyByFactor(oldValue, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.Key == "RepairableBuilding")
|
||||||
|
{
|
||||||
|
var step = node.Value.Nodes.FirstOrDefault(n => n.Key == "RepairStep");
|
||||||
|
if (step == null)
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("RepairStep", "700"));
|
||||||
|
else if (step != null)
|
||||||
|
{
|
||||||
|
var oldValue = FieldLoader.GetValue<int>(step.Key, step.Value.Value);
|
||||||
|
step.Value.Value = MultiplyByFactor(oldValue, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.Key == "Burns")
|
||||||
|
{
|
||||||
|
var step = node.Value.Nodes.FirstOrDefault(n => n.Key == "Damage");
|
||||||
|
if (step == null)
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("Damage", "100"));
|
||||||
|
else if (step != null)
|
||||||
|
{
|
||||||
|
var oldValue = FieldLoader.GetValue<int>(step.Key, step.Value.Value);
|
||||||
|
step.Value.Value = MultiplyByFactor(oldValue, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.Key == "DamagedByTerrain")
|
||||||
|
{
|
||||||
|
var step = node.Value.Nodes.FirstOrDefault(n => n.Key == "Damage");
|
||||||
|
if (step != null)
|
||||||
|
{
|
||||||
|
var oldValue = FieldLoader.GetValue<int>(step.Key, step.Value.Value);
|
||||||
|
step.Value.Value = MultiplyByFactor(oldValue, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1439,6 +1517,20 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
if (node.Key == "BurstDelay")
|
if (node.Key == "BurstDelay")
|
||||||
node.Key = "BurstDelays";
|
node.Key = "BurstDelays";
|
||||||
|
|
||||||
|
// Multiply all health and damage in the RA mod by 100 to avoid issues caused by rounding
|
||||||
|
if (engineVersion < 20171212)
|
||||||
|
{
|
||||||
|
var mod = modData.Manifest.Id;
|
||||||
|
if (mod == "ra")
|
||||||
|
{
|
||||||
|
if (node.Key == "Damage" && (parent.Value.Value == "SpreadDamage" || parent.Value.Value == "TargetDamage"))
|
||||||
|
{
|
||||||
|
var oldValue = FieldLoader.GetValue<int>(node.Key, node.Value.Value);
|
||||||
|
node.Value.Value = MultiplyByFactor(oldValue, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UpgradeWeaponRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeWeaponRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user