diff --git a/GatheringPathRenderer/packages.lock.json b/GatheringPathRenderer/packages.lock.json index f7b5b4d3..aae9abba 100644 --- a/GatheringPathRenderer/packages.lock.json +++ b/GatheringPathRenderer/packages.lock.json @@ -76,18 +76,10 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==" - }, "System.Text.Json": { "type": "Transitive", - "resolved": "8.0.4", - "contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", - "dependencies": { - "System.Text.Encodings.Web": "8.0.0" - } + "resolved": "8.0.5", + "contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==" }, "ecommons": { "type": "Project" @@ -101,7 +93,7 @@ "questionable.model": { "type": "Project", "dependencies": { - "System.Text.Json": "[8.0.4, )" + "System.Text.Json": "[8.0.5, )" } } } diff --git a/GatheringPaths/packages.lock.json b/GatheringPaths/packages.lock.json index 408e267a..d46a7a0e 100644 --- a/GatheringPaths/packages.lock.json +++ b/GatheringPaths/packages.lock.json @@ -2,23 +2,15 @@ "version": 1, "dependencies": { "net8.0-windows7.0": { - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==" - }, "System.Text.Json": { "type": "Transitive", - "resolved": "8.0.4", - "contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", - "dependencies": { - "System.Text.Encodings.Web": "8.0.0" - } + "resolved": "8.0.5", + "contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==" }, "questionable.model": { "type": "Project", "dependencies": { - "System.Text.Json": "[8.0.4, )" + "System.Text.Json": "[8.0.5, )" } } } diff --git a/QuestPathGenerator/QuestPathGenerator.csproj b/QuestPathGenerator/QuestPathGenerator.csproj index d5eb73ba..9c862ec9 100644 --- a/QuestPathGenerator/QuestPathGenerator.csproj +++ b/QuestPathGenerator/QuestPathGenerator.csproj @@ -26,7 +26,7 @@ - + diff --git a/QuestPathGenerator/RoslynElements/DialogueChoiceExtensions.cs b/QuestPathGenerator/RoslynElements/DialogueChoiceExtensions.cs index 92f6ab87..e33fe408 100644 --- a/QuestPathGenerator/RoslynElements/DialogueChoiceExtensions.cs +++ b/QuestPathGenerator/RoslynElements/DialogueChoiceExtensions.cs @@ -42,6 +42,9 @@ internal static class DialogueChoiceExtensions .AsSyntaxNodeOrToken(), Assignment(nameof(DialogueChoice.DataId), dialogueChoice.DataId, emptyChoice.DataId) + .AsSyntaxNodeOrToken(), + Assignment(nameof(DialogueChoice.SpecialCondition), dialogueChoice.SpecialCondition, + emptyChoice.SpecialCondition) .AsSyntaxNodeOrToken())))); } } diff --git a/QuestPathGenerator/packages.lock.json b/QuestPathGenerator/packages.lock.json index 77bbdf0a..44b2a011 100644 --- a/QuestPathGenerator/packages.lock.json +++ b/QuestPathGenerator/packages.lock.json @@ -68,9 +68,9 @@ }, "System.Text.Json": { "type": "Direct", - "requested": "[8.0.4, )", - "resolved": "8.0.4", - "contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "requested": "[8.0.5, )", + "resolved": "8.0.5", + "contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "8.0.0", "System.Buffers": "4.5.1", @@ -264,7 +264,7 @@ "questionable.model": { "type": "Project", "dependencies": { - "System.Text.Json": "[8.0.4, )" + "System.Text.Json": "[8.0.5, )" } } } diff --git a/QuestPaths/6.x - Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json b/QuestPaths/6.x - Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json index 20e3b2b8..aaa63db4 100644 --- a/QuestPaths/6.x - Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json +++ b/QuestPaths/6.x - Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json @@ -65,6 +65,19 @@ "Type": "YesNo", "Prompt": "TEXT_AKTKMB115_04394_Q1_000_042", "Yes": true + }, + { + "Type": "List", + "ExcelSheet": "ContentTalk", + "Prompt": 254, + "Answer": 247, + "SpecialCondition": "NoDutyActions" + }, + { + "Type": "List", + "ExcelSheet": "ContentTalk", + "Prompt": 254, + "Answer": 248 } ], "AetheryteShortcut": "Garlemald - Camp Broken Glass", diff --git a/QuestPaths/packages.lock.json b/QuestPaths/packages.lock.json index 408e267a..d46a7a0e 100644 --- a/QuestPaths/packages.lock.json +++ b/QuestPaths/packages.lock.json @@ -2,23 +2,15 @@ "version": 1, "dependencies": { "net8.0-windows7.0": { - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==" - }, "System.Text.Json": { "type": "Transitive", - "resolved": "8.0.4", - "contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", - "dependencies": { - "System.Text.Encodings.Web": "8.0.0" - } + "resolved": "8.0.5", + "contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==" }, "questionable.model": { "type": "Project", "dependencies": { - "System.Text.Json": "[8.0.4, )" + "System.Text.Json": "[8.0.5, )" } } } diff --git a/Questionable.Model/Questing/DialogueChoice.cs b/Questionable.Model/Questing/DialogueChoice.cs index a43a335c..329449a7 100644 --- a/Questionable.Model/Questing/DialogueChoice.cs +++ b/Questionable.Model/Questing/DialogueChoice.cs @@ -23,4 +23,9 @@ public sealed class DialogueChoice /// If set, only applies when focusing the given target id. /// public uint? DataId { get; set; } + + /// + /// Used for 'In from the Cold'. + /// + public string? SpecialCondition { get; set; } } diff --git a/Questionable.Model/Questionable.Model.csproj b/Questionable.Model/Questionable.Model.csproj index 54301430..62ae2a34 100644 --- a/Questionable.Model/Questionable.Model.csproj +++ b/Questionable.Model/Questionable.Model.csproj @@ -11,7 +11,7 @@ - + diff --git a/Questionable.Model/packages.lock.json b/Questionable.Model/packages.lock.json index c609cb4f..7fd9471e 100644 --- a/Questionable.Model/packages.lock.json +++ b/Questionable.Model/packages.lock.json @@ -13,9 +13,9 @@ }, "System.Text.Json": { "type": "Direct", - "requested": "[8.0.4, )", - "resolved": "8.0.4", - "contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "requested": "[8.0.5, )", + "resolved": "8.0.5", + "contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "8.0.0", "System.Buffers": "4.5.1", diff --git a/Questionable/Controller/GameUi/InteractionUiController.cs b/Questionable/Controller/GameUi/InteractionUiController.cs index 6db38b80..698d24dd 100644 --- a/Questionable/Controller/GameUi/InteractionUiController.cs +++ b/Questionable/Controller/GameUi/InteractionUiController.cs @@ -7,7 +7,9 @@ using Dalamud.Game.Addon.Lifecycle; using Dalamud.Game.Addon.Lifecycle.AddonArgTypes; using Dalamud.Game.ClientState.Objects; using Dalamud.Plugin.Services; +using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game.Event; +using FFXIVClientStructs.FFXIV.Client.Game.InstanceContent; using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Component.GUI; @@ -333,7 +335,16 @@ internal sealed class InteractionUiController : IDisposable } else { - var step = quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step); + QuestStep? step = null; + if (_territoryData.IsQuestBattleInstance(_clientState.TerritoryType)) + { + step = quest.FindSequence(currentQuest.Sequence)?.Steps + .FirstOrDefault(x => x.InteractionType == EInteractionType.SinglePlayerDuty); + } + + if (step == null) + step = quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step); + if (step == null) _logger.LogDebug("Ignoring current quest dialogue choices, no active step"); else @@ -427,6 +438,27 @@ internal sealed class InteractionUiController : IDisposable if (dialogueChoice.Type != EDialogChoiceType.List) continue; + if (dialogueChoice.SpecialCondition == "NoDutyActions") + { + try + { + unsafe + { + ContentDirector* contentDirector = EventFramework.Instance()->GetContentDirector(); + if (contentDirector != null && contentDirector->DutyActionManager.ActionsPresent) + { + _logger.LogInformation("NoDutyActions: actions present, skipping dialogue choice"); + continue; + } + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to check for duty actions"); + continue; + } + } + if (dialogueChoice.Answer == null) { _logger.LogDebug("Ignoring entry in DialogueChoices, no answer"); diff --git a/Questionable/Questionable.csproj b/Questionable/Questionable.csproj index 376045ee..8d1a3c89 100644 --- a/Questionable/Questionable.csproj +++ b/Questionable/Questionable.csproj @@ -13,7 +13,7 @@ - + diff --git a/Questionable/packages.lock.json b/Questionable/packages.lock.json index 1fd12865..07f5b16f 100644 --- a/Questionable/packages.lock.json +++ b/Questionable/packages.lock.json @@ -65,12 +65,9 @@ }, "System.Text.Json": { "type": "Direct", - "requested": "[8.0.4, )", - "resolved": "8.0.4", - "contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", - "dependencies": { - "System.Text.Encodings.Web": "8.0.0" - } + "requested": "[8.0.5, )", + "resolved": "8.0.5", + "contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==" }, "Humanizer.Core": { "type": "Transitive", @@ -174,15 +171,10 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==" - }, "gatheringpaths": { "type": "Project", "dependencies": { - "Questionable.Model": "[1.0.0, )" + "Questionable.Model": "[3.10.0, )" } }, "llib": { @@ -194,13 +186,13 @@ "questionable.model": { "type": "Project", "dependencies": { - "System.Text.Json": "[8.0.4, )" + "System.Text.Json": "[8.0.5, )" } }, "questpaths": { "type": "Project", "dependencies": { - "Questionable.Model": "[1.0.0, )" + "Questionable.Model": "[3.10.0, )" } } }