diff --git a/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs b/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs index 2b3297ef46..4169b7d354 100644 --- a/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs +++ b/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs @@ -207,25 +207,36 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules } } + var inheritsNode = imageNode.LastChildMatching("Inherits"); + var inheritsNodeIndex = inheritsNode == null ? 0 : imageNode.Value.Nodes.IndexOf(inheritsNode) + 1; + var maxDuplicateTilesetCount = duplicateTilesetCount.MaxByOrDefault(kv => kv.Value).Value; if (maxDuplicateTilesetCount > 1) { - if (imageNode.LastChildMatching("Defaults") == null) - imageNode.Value.Nodes.Insert(0, new MiniYamlNode("Defaults", "")); + var defaultsNode = imageNode.LastChildMatching("Defaults"); + if (defaultsNode == null) + { + defaultsNode = new MiniYamlNode("Defaults", ""); + imageNode.Value.Nodes.Insert(inheritsNodeIndex, defaultsNode); + } var nodes = MiniYaml.FromString(duplicateTilesetCount.First(kv => kv.Value == maxDuplicateTilesetCount).Key); defaultTilesetFilenamesNode = new MiniYamlNode("TilesetFilenames", "", nodes); - imageNode.LastChildMatching("Defaults").Value.Nodes.Insert(0, defaultTilesetFilenamesNode); + defaultsNode.Value.Nodes.Insert(0, defaultTilesetFilenamesNode); } var maxDuplicateCount = duplicateCount.MaxByOrDefault(kv => kv.Value).Value; if (maxDuplicateCount > 1) { - if (imageNode.LastChildMatching("Defaults") == null) - imageNode.Value.Nodes.Insert(0, new MiniYamlNode("Defaults", "")); + var defaultsNode = imageNode.LastChildMatching("Defaults"); + if (defaultsNode == null) + { + defaultsNode = new MiniYamlNode("Defaults", ""); + imageNode.Value.Nodes.Insert(inheritsNodeIndex, defaultsNode); + } defaultFilenameNode = new MiniYamlNode("Filename", duplicateCount.First(kv => kv.Value == maxDuplicateCount).Key); - imageNode.LastChildMatching("Defaults").Value.Nodes.Insert(0, defaultFilenameNode); + defaultsNode.Value.Nodes.Insert(0, defaultFilenameNode); } }