From 55130306272b0f99703d2c64b7ba13e539966369 Mon Sep 17 00:00:00 2001 From: atlimit8 Date: Thu, 9 Jul 2015 23:30:25 -0500 Subject: [PATCH] Make GainsExperience upgrades explicit. --- OpenRA.Mods.Common/Traits/GainsExperience.cs | 12 ++---------- OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs | 13 +++++++++++++ mods/cnc/rules/defaults.yaml | 5 +++++ mods/d2k/rules/defaults.yaml | 5 +++++ mods/ra/rules/defaults.yaml | 5 +++++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/GainsExperience.cs b/OpenRA.Mods.Common/Traits/GainsExperience.cs index 04a7e9b73f..8644671a4d 100644 --- a/OpenRA.Mods.Common/Traits/GainsExperience.cs +++ b/OpenRA.Mods.Common/Traits/GainsExperience.cs @@ -21,7 +21,7 @@ namespace OpenRA.Mods.Common.Traits public class GainsExperienceInfo : ITraitInfo, Requires, Requires { [FieldLoader.LoadUsing("LoadUpgrades")] - [Desc("Upgrades to grant at each level", + [Desc("Upgrades to grant at each level. (Required property)", "Key is the XP requirements for each level as a percentage of our own value.", "Value is a list of the upgrade types to grant")] public readonly Dictionary Upgrades = null; @@ -39,15 +39,7 @@ namespace OpenRA.Mods.Common.Traits MiniYaml upgrades; if (!y.ToDictionary().TryGetValue("Upgrades", out upgrades)) - { - return new Dictionary() - { - { 200, new[] { "firepower", "damage", "speed", "reload", "inaccuracy", "rank" } }, - { 400, new[] { "firepower", "damage", "speed", "reload", "inaccuracy", "rank" } }, - { 800, new[] { "firepower", "damage", "speed", "reload", "inaccuracy", "rank" } }, - { 1600, new[] { "firepower", "damage", "speed", "reload", "inaccuracy", "rank", "eliteweapon", "selfheal" } } - }; - } + throw new YamlException("GainsExperience is missing Upgrades."); return upgrades.Nodes.ToDictionary( kv => FieldLoader.GetValue("(key)", kv.Key), diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 299234409f..11993fe398 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -1367,6 +1367,19 @@ namespace OpenRA.Mods.Common.UtilityCommands node.Value.Nodes.RemoveAll(n => n.Key == "InitialActivity"); } + // Make default upgrades explicit for GainsExperience + if (engineVersion < 20150709) + { + if (depth == 1 && (node.Key == "GainsExperience" || node.Key.StartsWith("GainsExperience@")) + && node.Value.Nodes.FirstOrDefault(n => n.Key == "Upgrades") == null) + node.Value.Nodes.Add(new MiniYamlNode("Upgrades", new MiniYaml("", new List { + new MiniYamlNode("200", "firepower, damage, speed, reload, inaccuracy, rank"), + new MiniYamlNode("400", "firepower, damage, speed, reload, inaccuracy, rank"), + new MiniYamlNode("800", "firepower, damage, speed, reload, inaccuracy, rank"), + new MiniYamlNode("1600", "firepower, damage, speed, reload, inaccuracy, rank, eliteweapon, selfheal") + }))); + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index 77ab115f76..a49a1a9fb8 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -10,6 +10,11 @@ ^GainsExperience: GainsExperience: + Upgrades: + 200: firepower, damage, speed, reload, inaccuracy, rank + 400: firepower, damage, speed, reload, inaccuracy, rank + 800: firepower, damage, speed, reload, inaccuracy, rank + 1600: firepower, damage, speed, reload, inaccuracy, rank, eliteweapon, selfheal GainsStatUpgrades: SelfHealing@ELITE: Step: 2 diff --git a/mods/d2k/rules/defaults.yaml b/mods/d2k/rules/defaults.yaml index f11913754b..5c1c5770c9 100644 --- a/mods/d2k/rules/defaults.yaml +++ b/mods/d2k/rules/defaults.yaml @@ -10,6 +10,11 @@ ^GainsExperience: GainsExperience: + Upgrades: + 200: firepower, damage, speed, reload, inaccuracy, rank + 400: firepower, damage, speed, reload, inaccuracy, rank + 800: firepower, damage, speed, reload, inaccuracy, rank + 1600: firepower, damage, speed, reload, inaccuracy, rank, eliteweapon, selfheal GainsStatUpgrades: SelfHealing@ELITE: Step: 2 diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index 2807979fb0..f5695ae1c3 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -11,6 +11,11 @@ ^GainsExperience: GainsExperience: + Upgrades: + 200: firepower, damage, speed, reload, inaccuracy, rank + 400: firepower, damage, speed, reload, inaccuracy, rank + 800: firepower, damage, speed, reload, inaccuracy, rank + 1600: firepower, damage, speed, reload, inaccuracy, rank, eliteweapon, selfheal GainsStatUpgrades: SelfHealing@ELITE: Step: 2