diff --git a/OpenRA.Mods.Common/Traits/Player/ProvidesTechPrerequisite.cs b/OpenRA.Mods.Common/Traits/Player/ProvidesTechPrerequisite.cs index c35c7a1ac5..96661db6b6 100644 --- a/OpenRA.Mods.Common/Traits/Player/ProvidesTechPrerequisite.cs +++ b/OpenRA.Mods.Common/Traits/Player/ProvidesTechPrerequisite.cs @@ -15,7 +15,14 @@ namespace OpenRA.Mods.Common.Traits { public class ProvidesTechPrerequisiteInfo : ITechTreePrerequisiteInfo { + [Desc("Internal id for this tech level.")] + public readonly string Id; + + [Translate] + [Desc("Name shown in the lobby options.")] public readonly string Name; + + [Desc("Prerequisites to grant when this tech level is active.")] public readonly string[] Prerequisites = { }; public object Create(ActorInitializer init) { return new ProvidesTechPrerequisite(this, init); } @@ -23,8 +30,9 @@ namespace OpenRA.Mods.Common.Traits public class ProvidesTechPrerequisite : ITechTreePrerequisite { - ProvidesTechPrerequisiteInfo info; + readonly ProvidesTechPrerequisiteInfo info; bool enabled; + static readonly string[] NoPrerequisites = new string[0]; public string Name { get { return info.Name; } } diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 2222cf84a7..a6dacaa870 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -804,6 +804,13 @@ namespace OpenRA.Mods.Common.UtilityCommands } } + if (engineVersion < 20160604 && node.Key.StartsWith("ProvidesTechPrerequisite")) + { + var name = node.Value.Nodes.First(n => n.Key == "Name"); + var id = name.Value.Value.ToLowerInvariant().Replace(" ", ""); + node.Value.Nodes.Add(new MiniYamlNode("Id", id)); + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/mods/cnc/rules/player.yaml b/mods/cnc/rules/player.yaml index 38b5d7fa04..db4ae61a3a 100644 --- a/mods/cnc/rules/player.yaml +++ b/mods/cnc/rules/player.yaml @@ -19,14 +19,18 @@ Player: ProvidesTechPrerequisite@low: Name: Low Prerequisites: techlevel.low + Id: low ProvidesTechPrerequisite@medium: Name: Medium Prerequisites: techlevel.low, techlevel.medium + Id: medium ProvidesTechPrerequisite@nosuper: Name: No Powers Prerequisites: techlevel.low, techlevel.medium, techlevel.high + Id: nopowers ProvidesTechPrerequisite@all: Name: Unrestricted Prerequisites: techlevel.low, techlevel.medium, techlevel.high, techlevel.superweapons + Id: unrestricted GlobalUpgradeManager: ResourceStorageWarning: diff --git a/mods/d2k/rules/player.yaml b/mods/d2k/rules/player.yaml index c31633d836..5479a45592 100644 --- a/mods/d2k/rules/player.yaml +++ b/mods/d2k/rules/player.yaml @@ -73,15 +73,19 @@ Player: ProvidesTechPrerequisite@low: Name: Low Prerequisites: techlevel.low + Id: low ProvidesTechPrerequisite@medium: Name: Medium Prerequisites: techlevel.low, techlevel.medium + Id: medium ProvidesTechPrerequisite@nosuper: Name: No Powers Prerequisites: techlevel.low, techlevel.medium, techlevel.high + Id: nopowers ProvidesTechPrerequisite@all: Name: Unrestricted Prerequisites: techlevel.low, techlevel.medium, techlevel.high, techlevel.superweapons + Id: unrestricted EnemyWatcher: HarvesterInsurance: GlobalUpgradeManager: diff --git a/mods/ra/rules/player.yaml b/mods/ra/rules/player.yaml index 05d155f158..cf146302a8 100644 --- a/mods/ra/rules/player.yaml +++ b/mods/ra/rules/player.yaml @@ -55,18 +55,23 @@ Player: ProvidesTechPrerequisite@infonly: Name: Infantry Only Prerequisites: techlevel.infonly + Id: infantryonly ProvidesTechPrerequisite@low: Name: Low Prerequisites: techlevel.infonly, techlevel.low + Id: low ProvidesTechPrerequisite@medium: Name: Medium Prerequisites: techlevel.infonly, techlevel.low, techlevel.medium + Id: medium ProvidesTechPrerequisite@high: Name: No Superweapons Prerequisites: techlevel.infonly, techlevel.low, techlevel.medium, techlevel.high + Id: nosuperweapons ProvidesTechPrerequisite@unrestricted: Name: Unrestricted Prerequisites: techlevel.infonly, techlevel.low, techlevel.medium, techlevel.high, techlevel.unrestricted + Id: unrestricted GlobalUpgradeManager: EnemyWatcher: VeteranProductionIconOverlay: