diff --git a/OpenRA.Mods.RA/GainsStatUpgrades.cs b/OpenRA.Mods.RA/GainsStatUpgrades.cs index bf54966c0b..24f8b05f35 100644 --- a/OpenRA.Mods.RA/GainsStatUpgrades.cs +++ b/OpenRA.Mods.RA/GainsStatUpgrades.cs @@ -21,8 +21,8 @@ namespace OpenRA.Mods.RA public readonly string FirepowerUpgrade = "firepower"; public readonly int[] FirepowerModifier = { 110, 115, 120, 130 }; - public readonly string ArmorUpgrade = "armor"; - public readonly int[] ArmorModifier = { 110, 120, 130, 150 }; + public readonly string DamageUpgrade = "damage"; + public readonly int[] DamageModifier = { 91, 87, 83, 65 }; public readonly string SpeedUpgrade = "speed"; public readonly int[] SpeedModifier = { 110, 115, 120, 150 }; @@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA readonly GainsStatUpgradesInfo info; [Sync] int firepowerLevel = 0; [Sync] int speedLevel = 0; - [Sync] int armorLevel = 0; + [Sync] int damageLevel = 0; [Sync] int reloadLevel = 0; public GainsStatUpgrades(GainsStatUpgradesInfo info) @@ -49,7 +49,7 @@ namespace OpenRA.Mods.RA public bool AcceptsUpgrade(string type) { return (type == info.FirepowerUpgrade && firepowerLevel < info.FirepowerModifier.Length) - || (type == info.ArmorUpgrade && armorLevel < info.ArmorModifier.Length) + || (type == info.DamageUpgrade && damageLevel < info.DamageModifier.Length) || (type == info.SpeedUpgrade && speedLevel < info.SpeedModifier.Length) || (type == info.ReloadUpgrade && reloadLevel < info.ReloadModifier.Length); } @@ -59,8 +59,8 @@ namespace OpenRA.Mods.RA var mod = available ? 1 : -1; if (type == info.FirepowerUpgrade) firepowerLevel = (firepowerLevel + mod).Clamp(0, info.FirepowerModifier.Length); - else if (type == info.ArmorUpgrade) - armorLevel = (armorLevel + mod).Clamp(0, info.ArmorModifier.Length); + else if (type == info.DamageUpgrade) + damageLevel = (damageLevel + mod).Clamp(0, info.DamageModifier.Length); else if (type == info.SpeedUpgrade) speedLevel = (speedLevel + mod).Clamp(0, info.SpeedModifier.Length); else if (type == info.ReloadUpgrade) @@ -69,7 +69,7 @@ namespace OpenRA.Mods.RA public int GetDamageModifier(Actor attacker, DamageWarhead warhead) { - return armorLevel > 0 ? 1 / info.ArmorModifier[armorLevel - 1] : 100; + return damageLevel > 0 ? info.DamageModifier[damageLevel - 1] : 100; } public int GetFirepowerModifier() diff --git a/OpenRA.Utility/UpgradeRules.cs b/OpenRA.Utility/UpgradeRules.cs index fe0ec8c408..c16910f132 100644 --- a/OpenRA.Utility/UpgradeRules.cs +++ b/OpenRA.Utility/UpgradeRules.cs @@ -436,21 +436,34 @@ namespace OpenRA.Utility ConvertFloatArrayToPercentArray(ref node.Value.Value); } + // RemoveImmediately was replaced with RemoveOnConditions + if (engineVersion < 20140821) + { + if (depth == 1) + { + if (node.Key == "RemoveImmediately") + node.Key = "RemoveOnConditions"; + + if (node.Key == "-RemoveImmediately") + node.Key = "-RemoveOnConditions"; + } + } + + if (engineVersion < 20140823) + { + if (depth == 2 && node.Key == "ArmorUpgrade" && parentKey == "GainsStatUpgrades") + node.Key = "DamageUpgrade"; + + if (depth == 2 && node.Key == "ArmorModifier" && parentKey == "GainsStatUpgrades") + { + node.Key = "DamageModifier"; + node.Value.Value = string.Join(", ", node.Value.Value.Split(',') + .Select(s => ((int)(100 * 100 / float.Parse(s))).ToString())); + } + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); - // RemoveImmediately was replaced with RemoveOnConditions - if (engineVersion < 20140821) - { - if (depth == 1) - { - if (node.Key == "RemoveImmediately") - node.Key = "RemoveOnConditions"; - - if (node.Key == "-RemoveImmediately") - node.Key = "-RemoveOnConditions"; - } - } - } } diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index b1856e8a94..97b24be64f 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -118,7 +118,7 @@ 1000: firepower, armor, speed, reload GainsStatUpgrades: FirepowerModifier: 110, 130 - ArmorModifier: 120, 150 + DamageModifier: 83, 66 SpeedModifier: 120, 150 ReloadModifier: 90, 75 GivesExperience: @@ -208,7 +208,7 @@ 1000: firepower, armor, speed, reload GainsStatUpgrades: FirepowerModifier: 110, 130 - ArmorModifier: 120, 150 + DamageModifier: 83, 66 SpeedModifier: 120, 150 ReloadModifier: 90, 75 GivesExperience: @@ -261,7 +261,7 @@ 1000: firepower, armor, speed, reload GainsStatUpgrades: FirepowerModifier: 110, 130 - ArmorModifier: 120, 150 + DamageModifier: 83, 66 SpeedModifier: 120, 150 ReloadModifier: 90, 75 GivesExperience: @@ -308,7 +308,7 @@ 1000: firepower, armor, speed, reload GainsStatUpgrades: FirepowerModifier: 110, 130 - ArmorModifier: 120, 150 + DamageModifier: 83, 66 SpeedModifier: 120, 150 ReloadModifier: 90, 75 GivesExperience: