Make GainsExperience upgrades explicit.

This commit is contained in:
atlimit8
2015-07-09 23:30:25 -05:00
parent bd12a742f1
commit 5513030627
5 changed files with 30 additions and 10 deletions

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.Common.Traits
public class GainsExperienceInfo : ITraitInfo, Requires<ValuedInfo>, Requires<UpgradeManagerInfo> public class GainsExperienceInfo : ITraitInfo, Requires<ValuedInfo>, Requires<UpgradeManagerInfo>
{ {
[FieldLoader.LoadUsing("LoadUpgrades")] [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.", "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")] "Value is a list of the upgrade types to grant")]
public readonly Dictionary<int, string[]> Upgrades = null; public readonly Dictionary<int, string[]> Upgrades = null;
@@ -39,15 +39,7 @@ namespace OpenRA.Mods.Common.Traits
MiniYaml upgrades; MiniYaml upgrades;
if (!y.ToDictionary().TryGetValue("Upgrades", out upgrades)) if (!y.ToDictionary().TryGetValue("Upgrades", out upgrades))
{ throw new YamlException("GainsExperience is missing Upgrades.");
return new Dictionary<int, string[]>()
{
{ 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" } }
};
}
return upgrades.Nodes.ToDictionary( return upgrades.Nodes.ToDictionary(
kv => FieldLoader.GetValue<int>("(key)", kv.Key), kv => FieldLoader.GetValue<int>("(key)", kv.Key),

View File

@@ -1367,6 +1367,19 @@ namespace OpenRA.Mods.Common.UtilityCommands
node.Value.Nodes.RemoveAll(n => n.Key == "InitialActivity"); 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<MiniYamlNode> {
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); UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }

View File

@@ -10,6 +10,11 @@
^GainsExperience: ^GainsExperience:
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: GainsStatUpgrades:
SelfHealing@ELITE: SelfHealing@ELITE:
Step: 2 Step: 2

View File

@@ -10,6 +10,11 @@
^GainsExperience: ^GainsExperience:
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: GainsStatUpgrades:
SelfHealing@ELITE: SelfHealing@ELITE:
Step: 2 Step: 2

View File

@@ -11,6 +11,11 @@
^GainsExperience: ^GainsExperience:
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: GainsStatUpgrades:
SelfHealing@ELITE: SelfHealing@ELITE:
Step: 2 Step: 2