diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 38ddd21285..1133847829 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -943,6 +943,28 @@ namespace OpenRA.Mods.Common.UtilityCommands node.Key = node.Key.Replace("ProvidesCustomPrerequisite", "ProvidesPrerequisite"); } + if (engineVersion < 20150509) + { + if (depth == 0 && node.Value.Nodes.Exists(n => n.Key == "Selectable")) + { + var selectable = node.Value.Nodes.FirstOrDefault(n => n.Key == "Selectable"); + var selectableNodes = selectable.Value.Nodes; + var voice = selectableNodes.FirstOrDefault(n => n.Key == "Voice"); + var selectableVoice = voice != null ? FieldLoader.GetValue("Voice", voice.Value.Value) : ""; + + if (voice != null) + { + node.Value.Nodes.Add(new MiniYamlNode("Voiced", "", new List + { + new MiniYamlNode("VoiceSet", selectableVoice), + })); + } + } + + if (node.Key.StartsWith("Selectable")) + node.Value.Nodes.RemoveAll(p => p.Key == "Voice"); + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } }