From 8c808c8fde03ed395b0596ce8bba6a36db324dd0 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Thu, 11 Jul 2024 13:11:50 +0200 Subject: [PATCH] Fix quest chain logic --- .../MSQ/F-Living Memory/4959_Dawntrail.json | 2 +- .../MagicalRanged/4842_Power Forgotten.json | 3 +- .../Dungeons/5013_It Belongs in a Museum.json | 98 ++++++++++++++++ .../Hunts/5009_A New Dawn, A New Hunt.json | 37 ++++++ .../Unlocks/Hunts/5010_Why We Hunt.json | 52 +++++++++ .../Hunts/5011_Hunting the Hunter.json | 106 ++++++++++++++++++ .../Unlocks/Hunts/5012_The Hunt Goes On.json | 61 ++++++++++ Questionable/Controller/CommandHandler.cs | 8 +- Questionable/Controller/QuestController.cs | 5 +- .../Controller/Steps/BaseTasks/NextQuest.cs | 2 + Questionable/Questionable.csproj | 2 +- Questionable/QuestionablePlugin.cs | 2 +- 12 files changed, 368 insertions(+), 10 deletions(-) create mode 100644 QuestPaths/Dawntrail/Unlocks/Dungeons/5013_It Belongs in a Museum.json create mode 100644 QuestPaths/Dawntrail/Unlocks/Hunts/5009_A New Dawn, A New Hunt.json create mode 100644 QuestPaths/Dawntrail/Unlocks/Hunts/5010_Why We Hunt.json create mode 100644 QuestPaths/Dawntrail/Unlocks/Hunts/5011_Hunting the Hunter.json create mode 100644 QuestPaths/Dawntrail/Unlocks/Hunts/5012_The Hunt Goes On.json diff --git a/QuestPaths/Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json b/QuestPaths/Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json index 4d320523e..6cbdaee5a 100644 --- a/QuestPaths/Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json +++ b/QuestPaths/Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json @@ -83,7 +83,7 @@ "Y": -14.999356, "Z": 204.42505 }, - "StopDistance": 5, + "StopDistance": 7, "TerritoryId": 1185, "InteractionType": "CompleteQuest" } diff --git a/QuestPaths/Dawntrail/RoleQuests/MagicalRanged/4842_Power Forgotten.json b/QuestPaths/Dawntrail/RoleQuests/MagicalRanged/4842_Power Forgotten.json index 124f68790..c23273f2a 100644 --- a/QuestPaths/Dawntrail/RoleQuests/MagicalRanged/4842_Power Forgotten.json +++ b/QuestPaths/Dawntrail/RoleQuests/MagicalRanged/4842_Power Forgotten.json @@ -44,7 +44,8 @@ "Z": 618.2803 }, "TerritoryId": 957, - "InteractionType": "Interact" + "InteractionType": "Interact", + "AetheryteShortcut": "Thavnair - Yedlihmad" } ] }, diff --git a/QuestPaths/Dawntrail/Unlocks/Dungeons/5013_It Belongs in a Museum.json b/QuestPaths/Dawntrail/Unlocks/Dungeons/5013_It Belongs in a Museum.json new file mode 100644 index 000000000..03026121a --- /dev/null +++ b/QuestPaths/Dawntrail/Unlocks/Dungeons/5013_It Belongs in a Museum.json @@ -0,0 +1,98 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1051434, + "Position": { + "X": 28.580078, + "Y": -14, + "Z": 75.66943 + }, + "TerritoryId": 1185, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1051435, + "Position": { + "X": 383.1692, + "Y": -17.700003, + "Z": -771.3283 + }, + "TerritoryId": 1190, + "InteractionType": "Interact", + "AetheryteShortcut": "Shaaloani - Mehwahhetsoan", + "Fly": true + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "TerritoryId": 1190, + "InteractionType": "Duty", + "ContentFinderConditionId": 834 + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1051435, + "Position": { + "X": 383.1692, + "Y": -17.700003, + "Z": -771.3283 + }, + "TerritoryId": 1190, + "InteractionType": "Interact", + "AetheryteShortcut": "Shaaloani - Mehwahhetsoan", + "SkipIf": [ + "AetheryteShortcutIfInSameTerritory" + ] + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1051436, + "Position": { + "X": 476.73767, + "Y": 114.935, + "Z": 661.6769 + }, + "TerritoryId": 1187, + "InteractionType": "Interact", + "AetheryteShortcut": "Urqopacha - Worlar's Echo" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1051438, + "Position": { + "X": -498.7717, + "Y": 59.21188, + "Z": 145.00647 + }, + "TerritoryId": 1187, + "InteractionType": "CompleteQuest" + } + ] + } + ] +} diff --git a/QuestPaths/Dawntrail/Unlocks/Hunts/5009_A New Dawn, A New Hunt.json b/QuestPaths/Dawntrail/Unlocks/Hunts/5009_A New Dawn, A New Hunt.json new file mode 100644 index 000000000..3cb108032 --- /dev/null +++ b/QuestPaths/Dawntrail/Unlocks/Hunts/5009_A New Dawn, A New Hunt.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1051413, + "Position": { + "X": -75.21173, + "Y": -10.00001, + "Z": 138.8418 + }, + "TerritoryId": 1185, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1048541, + "Position": { + "X": 23.5141, + "Y": -14, + "Z": 137.40747 + }, + "TerritoryId": 1185, + "InteractionType": "CompleteQuest", + "NextQuestId": 5010 + } + ] + } + ] +} diff --git a/QuestPaths/Dawntrail/Unlocks/Hunts/5010_Why We Hunt.json b/QuestPaths/Dawntrail/Unlocks/Hunts/5010_Why We Hunt.json new file mode 100644 index 000000000..438994daf --- /dev/null +++ b/QuestPaths/Dawntrail/Unlocks/Hunts/5010_Why We Hunt.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1048541, + "Position": { + "X": 23.5141, + "Y": -14, + "Z": 137.40747 + }, + "TerritoryId": 1185, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1051414, + "Position": { + "X": -90.348694, + "Y": -19.6019, + "Z": 212.54285 + }, + "TerritoryId": 1185, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1048541, + "Position": { + "X": 23.5141, + "Y": -14, + "Z": 137.40747 + }, + "TerritoryId": 1185, + "InteractionType": "CompleteQuest", + "NextQuestId": 5011 + } + ] + } + ] +} diff --git a/QuestPaths/Dawntrail/Unlocks/Hunts/5011_Hunting the Hunter.json b/QuestPaths/Dawntrail/Unlocks/Hunts/5011_Hunting the Hunter.json new file mode 100644 index 000000000..08fd38256 --- /dev/null +++ b/QuestPaths/Dawntrail/Unlocks/Hunts/5011_Hunting the Hunter.json @@ -0,0 +1,106 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1048541, + "Position": { + "X": 23.5141, + "Y": -14, + "Z": 137.40747 + }, + "TerritoryId": 1185, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1049457, + "Position": { + "X": -223.92621, + "Y": 30, + "Z": -603.11285 + }, + "TerritoryId": 1191, + "InteractionType": "Interact", + "AetheryteShortcut": "Heritage Found - The Outskirts" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "Position": { + "X": -65.20557, + "Y": 38.80659, + "Z": -459.1674 + }, + "TerritoryId": 1186, + "InteractionType": "WalkTo", + "AetheryteShortcut": "Solution Nine", + "AethernetShortcut": [ + "[Solution Nine] Aetheryte Plaza", + "[Solution Nine] Resolution" + ] + }, + { + "DataId": 1049180, + "Position": { + "X": -67.27704, + "Y": 38.80659, + "Z": -459.22028 + }, + "TerritoryId": 1186, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1051415, + "Position": { + "X": -400.351, + "Y": 14.029996, + "Z": 112.26062 + }, + "TerritoryId": 1186, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Solution Nine] Resolution", + "[Solution Nine] Residential Sector" + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1048541, + "Position": { + "X": 23.5141, + "Y": -14, + "Z": 137.40747 + }, + "TerritoryId": 1185, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Tuliyollal", + "AethernetShortcut": [ + "[Tuliyollal] Aetheryte Plaza", + "[Tuliyollal] Bayside Bevy Marketplace" + ], + "NextQuestId": 5012 + } + ] + } + ] +} diff --git a/QuestPaths/Dawntrail/Unlocks/Hunts/5012_The Hunt Goes On.json b/QuestPaths/Dawntrail/Unlocks/Hunts/5012_The Hunt Goes On.json new file mode 100644 index 000000000..73b69173b --- /dev/null +++ b/QuestPaths/Dawntrail/Unlocks/Hunts/5012_The Hunt Goes On.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1048541, + "Position": { + "X": 23.5141, + "Y": -14, + "Z": 137.40747 + }, + "TerritoryId": 1185, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1051415, + "Position": { + "X": -400.351, + "Y": 14.029996, + "Z": 112.26062 + }, + "TerritoryId": 1186, + "InteractionType": "Interact", + "AetheryteShortcut": "Solution Nine", + "AethernetShortcut": [ + "[Solution Nine] Aetheryte Plaza", + "[Solution Nine] Residential Sector" + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1048541, + "Position": { + "X": 23.5141, + "Y": -14, + "Z": 137.40747 + }, + "TerritoryId": 1185, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Tuliyollal", + "AethernetShortcut": [ + "[Tuliyollal] Aetheryte Plaza", + "[Tuliyollal] Bayside Bevy Marketplace" + ] + } + ] + } + ] +} diff --git a/Questionable/Controller/CommandHandler.cs b/Questionable/Controller/CommandHandler.cs index 6cc495bbb..af894e8d0 100644 --- a/Questionable/Controller/CommandHandler.cs +++ b/Questionable/Controller/CommandHandler.cs @@ -93,10 +93,10 @@ internal sealed class CommandHandler : IDisposable if (arguments.Length >= 1 && ushort.TryParse(arguments[0], out ushort questId)) { - if (_questRegistry.IsKnownQuest(questId)) + if (_questRegistry.TryGetQuest(questId, out Quest? quest)) { _debugOverlay.HighlightedQuest = questId; - _chatGui.Print($"[Questionable] Set highlighted quest to {questId}."); + _chatGui.Print($"[Questionable] Set highlighted quest to {questId} ({quest.Info.Name})."); } else _chatGui.PrintError($"[Questionable] Unknown quest {questId}."); @@ -115,7 +115,7 @@ internal sealed class CommandHandler : IDisposable if (_questRegistry.TryGetQuest(questId, out Quest? quest)) { _questController.SetNextQuest(quest); - _chatGui.Print($"[Questionable] Set next quest to {questId}."); + _chatGui.Print($"[Questionable] Set next quest to {questId} ({quest.Info.Name})."); } else { @@ -136,7 +136,7 @@ internal sealed class CommandHandler : IDisposable if (_questRegistry.TryGetQuest(questId, out Quest? quest)) { _questController.SimulateQuest(quest); - _chatGui.Print($"[Questionable] Simulating quest {questId}."); + _chatGui.Print($"[Questionable] Simulating quest {questId} ({quest.Info.Name})."); } else _chatGui.PrintError($"[Questionable] Unknown quest {questId}."); diff --git a/Questionable/Controller/QuestController.cs b/Questionable/Controller/QuestController.cs index 68b984afe..221bb2242 100644 --- a/Questionable/Controller/QuestController.cs +++ b/Questionable/Controller/QuestController.cs @@ -78,6 +78,8 @@ internal sealed class QuestController { lock (_lock) { + _logger.LogInformation("Reload, resetting curent quest progress"); + _startedQuest = null; _nextQuest = null; _simulatedQuest = null; @@ -328,9 +330,8 @@ internal sealed class QuestController { _logger.LogInformation("Stopping automatic questing"); _automatic = false; + _nextQuest = null; } - - _nextQuest = null; } public void SimulateQuest(Quest? quest) diff --git a/Questionable/Controller/Steps/BaseTasks/NextQuest.cs b/Questionable/Controller/Steps/BaseTasks/NextQuest.cs index 0790d75b9..c03f5a068 100644 --- a/Questionable/Controller/Steps/BaseTasks/NextQuest.cs +++ b/Questionable/Controller/Steps/BaseTasks/NextQuest.cs @@ -50,5 +50,7 @@ internal static class NextQuest } public ETaskResult Update() => ETaskResult.TaskComplete; + + public override string ToString() => $"SetNextQuest({NextQuestId})"; } } diff --git a/Questionable/Questionable.csproj b/Questionable/Questionable.csproj index d8f32ddbd..6b39ffc1c 100644 --- a/Questionable/Questionable.csproj +++ b/Questionable/Questionable.csproj @@ -1,6 +1,6 @@  - 1.3 + 1.4 dist $(SolutionDir)=X:\ diff --git a/Questionable/QuestionablePlugin.cs b/Questionable/QuestionablePlugin.cs index e7b943da8..3b1e59ca2 100644 --- a/Questionable/QuestionablePlugin.cs +++ b/Questionable/QuestionablePlugin.cs @@ -87,6 +87,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin serviceCollection.AddTaskWithFactory(); serviceCollection.AddTransient(); + serviceCollection.AddTaskWithFactory(); serviceCollection.AddTaskWithFactory(); serviceCollection.AddTaskWithFactory(); serviceCollection.AddTaskWithFactory(); @@ -111,7 +112,6 @@ public sealed class QuestionablePlugin : IDalamudPlugin WaitAtEnd.WaitObjectAtPosition>(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); - serviceCollection.AddTaskWithFactory(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton();