diff --git a/NewHorizons/Builder/Props/DialogueBuilder.cs b/NewHorizons/Builder/Props/DialogueBuilder.cs index 99e75d70..89d70da7 100644 --- a/NewHorizons/Builder/Props/DialogueBuilder.cs +++ b/NewHorizons/Builder/Props/DialogueBuilder.cs @@ -130,8 +130,6 @@ namespace NewHorizons.Builder.Props var characterName = existingDialogueTree.SelectSingleNode("NameField").InnerText; AddTranslation(additionalDialogueDoc.GetChildNode("DialogueTree"), characterName); - DoDialogueOptionsListReplacement(existingDialogueTree); - var newTextAsset = new TextAsset(existingDialogueDoc.OuterXml) { name = existingDialogue._xmlCharacterDialogueAsset.name @@ -139,9 +137,32 @@ namespace NewHorizons.Builder.Props existingDialogue.SetTextXml(newTextAsset); + FixDialogueNextFrame(existingDialogue); + return existingDialogue; } + private static void FixDialogueNextFrame(CharacterDialogueTree characterDialogueTree) + { + Delay.FireOnNextUpdate(() => + { + var rawText = characterDialogueTree._xmlCharacterDialogueAsset.text; + + var doc = new XmlDocument(); + doc.LoadXml(rawText); + var dialogueTree = doc.DocumentElement.SelectSingleNode("//DialogueTree"); + + DoDialogueOptionsListReplacement(dialogueTree); + + var newTextAsset = new TextAsset(doc.OuterXml) + { + name = characterDialogueTree._xmlCharacterDialogueAsset.name + }; + + characterDialogueTree.SetTextXml(newTextAsset); + }); + } + /// /// Always call this after adding translations, else it won't update them properly /// @@ -253,7 +274,7 @@ namespace NewHorizons.Builder.Props dialogueDoc.LoadXml(xml); var xmlNode = dialogueDoc.SelectSingleNode("DialogueTree"); AddTranslation(xmlNode); - DoDialogueOptionsListReplacement(xmlNode); + xml = xmlNode.OuterXml; var text = new TextAsset(xml) @@ -282,6 +303,8 @@ namespace NewHorizons.Builder.Props conversationZone.SetActive(true); + FixDialogueNextFrame(dialogueTree); + return dialogueTree; } @@ -499,12 +522,13 @@ namespace NewHorizons.Builder.Props dialogueDoc.LoadXml(text); var xmlNode = dialogueDoc.SelectSingleNode("DialogueTree"); AddTranslation(xmlNode, null); - DoDialogueOptionsListReplacement(xmlNode); var newTextAsset = new TextAsset(dialogueDoc.OuterXml) { name = dialogue._xmlCharacterDialogueAsset.name }; dialogue.SetTextXml(newTextAsset); + + FixDialogueNextFrame(dialogue); } } } diff --git a/NewHorizons/manifest.json b/NewHorizons/manifest.json index 74ce1e6e..c57ae22d 100644 --- a/NewHorizons/manifest.json +++ b/NewHorizons/manifest.json @@ -4,7 +4,7 @@ "author": "xen, Bwc9876, JohnCorby, MegaPiggy, Clay, Trifid, and friends", "name": "New Horizons", "uniqueName": "xen.NewHorizons", - "version": "1.20.1", + "version": "1.20.2", "owmlVersion": "2.10.3", "dependencies": [ "JohnCorby.VanillaFix", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ], "conflicts": [ "PacificEngine.OW_CommonResources" ],