From 774c8121c25549cd79d741a3235243b9febd2383 Mon Sep 17 00:00:00 2001 From: Christopher Grant Date: Sun, 17 Aug 2014 22:57:44 -0400 Subject: [PATCH 1/2] Fixed invulnerable infantry Closes #6263 --- OpenRA.Mods.RA/GainsStatUpgrades.cs | 14 +++++++------- OpenRA.Utility/UpgradeRules.cs | 13 +++++++++++++ mods/ts/rules/defaults.yaml | 8 ++++---- 3 files changed, 24 insertions(+), 11 deletions(-) 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 c1e348eda7..45ea51e56c 100644 --- a/OpenRA.Utility/UpgradeRules.cs +++ b/OpenRA.Utility/UpgradeRules.cs @@ -436,6 +436,19 @@ namespace OpenRA.Utility ConvertFloatArrayToPercentArray(ref node.Value.Value); } + 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 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: From 5c15fa2631163eff9320b48534ddcc600b7b2cc7 Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Sat, 23 Aug 2014 10:15:13 +0200 Subject: [PATCH 2/2] Fix a bad merge in UpgradeRules.cs --- OpenRA.Utility/UpgradeRules.cs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/OpenRA.Utility/UpgradeRules.cs b/OpenRA.Utility/UpgradeRules.cs index 45ea51e56c..f89e133e30 100644 --- a/OpenRA.Utility/UpgradeRules.cs +++ b/OpenRA.Utility/UpgradeRules.cs @@ -436,6 +436,19 @@ 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") @@ -451,19 +464,6 @@ namespace OpenRA.Utility 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"; - } - } - } }