From 4ce89b7693c9bdca4eecd51ef9021811a50a83e5 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Fri, 19 Jul 2024 21:16:40 +0200 Subject: [PATCH] Minor cleanup for ARR part 3 --- QuestPathGenerator/QuestSourceGenerator.cs | 2 +- ...uty (Will Take You from the Mountain).json | 83 ++++++ .../WAR/1050_Embracing the Beast.json | 123 +++++++++ .../WAR/317_The Mountain That Strides.json | 198 +++++++++++++++ .../WAR/318_Bleeder of the Pack.json | 4 +- .../WAR/319_Bringing Down the Mountain.json | 237 ++++++++++++++++++ .../272_Life, Materia and Everything.json | 3 +- .../MSQ-1/Shared/343_Lord of the Inferno.json | 3 +- .../Shared/511_A Hero in the Making.json | 3 +- .../MSQ-1/Shared/574_Dressed to Deceive.json | 3 +- .../MSQ-1/Shared/683_Wood's Will Be Done.json | 3 +- .../Shared/684_Till Sea Swallows All.json | 3 +- .../MSQ-2/3863_Terror at Fallgourd.json | 5 +- .../MSQ-2/3864_Ziz Is So Ridiculous.json | 26 +- .../MSQ-2/3865_Trial by Turtle.json | 18 +- .../MSQ-2/517_All Good Things.json | 3 +- .../MSQ-2/520_Reclamation.json | 3 +- .../MSQ-2/522_The Black Wolf's Ultimatum.json | 3 +- .../MSQ-2/685_For Coin and Country.json | 5 +- .../MSQ-2/748_Highbridge Times.json | 32 ++- .../MSQ-2/756_Where There Is Smoke.json | 14 +- .../MSQ-2/757_On to Little Ala Mhigo.json | 11 +- .../MSQ-2/761_Tea for Three.json | 35 ++- .../MSQ-2/762_Foot in the Door.json | 18 +- .../763_Meeting with the Resistance.json | 5 +- .../MSQ-2/774_Helping Horn.json | 26 +- ...777_The Bear and the Young'uns' Cares.json | 43 +++- .../MSQ-2/778_Wilred Wants You.json | 5 +- .../782_Big Trouble in Little Ala Mhigo.json | 52 +++- .../MSQ-2/783_Back to Square One.json | 18 +- .../MSQ-2/786_Seeing Eye to Winged Eye.json | 3 +- .../MSQ-2/787_Rock of Rancor.json | 66 ++++- .../MSQ-2/799_Power of Deduction.json | 3 +- .../MSQ-2/801_Skeletons in Her Closet.json | 65 ++++- .../809_Tales from the Tidus Slayer.json | 3 +- .../MSQ-2/811_The Lominsan Way.json | 17 +- .../MSQ-2/814_A Modest Proposal.json | 17 +- .../832_The Things We Do for Cheese.json | 32 +-- .../MSQ-2/848_Battle Scars.json | 32 ++- .../MSQ-2/855_In the Company of Heroes.json | 53 +++- .../MSQ-2/856_As You Wish.json | 56 +++-- .../MSQ-2/857_Lord of Crags.json | 14 +- .../MSQ-2/886_The Unending War.json | 10 +- .../Unlocks/Misc/802_Broadening Horizons.json | 36 +++ Questionable.Model/V1/QuestStep.cs | 2 +- Questionable/Controller/CombatController.cs | 14 +- .../MovementOverrideController.cs | 7 + .../Steps/Interactions/EquipItem.cs | 29 ++- .../Controller/Steps/Interactions/UseItem.cs | 32 ++- .../Controller/Steps/Shared/WaitAtEnd.cs | 2 +- Questionable/GameFunctions.cs | 12 + Questionable/QuestionablePlugin.cs | 2 +- .../Validators/UniqueStartStopValidator.cs | 2 +- 53 files changed, 1297 insertions(+), 199 deletions(-) create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1049_Pride and Duty (Will Take You from the Mountain).json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/317_The Mountain That Strides.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/319_Bringing Down the Mountain.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/802_Broadening Horizons.json diff --git a/QuestPathGenerator/QuestSourceGenerator.cs b/QuestPathGenerator/QuestSourceGenerator.cs index 40d1fafe..6190603f 100644 --- a/QuestPathGenerator/QuestSourceGenerator.cs +++ b/QuestPathGenerator/QuestSourceGenerator.cs @@ -368,7 +368,7 @@ public class QuestSourceGenerator : ISourceGenerator .AsSyntaxNodeOrToken(), AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices) .AsSyntaxNodeOrToken(), - Assignment(nameof(QuestStep.PickupQuestId), step.PickupQuestId, emptyStep.PickupQuestId) + Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId, emptyStep.PickUpQuestId) .AsSyntaxNodeOrToken(), Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId, emptyStep.TurnInQuestId) .AsSyntaxNodeOrToken(), diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1049_Pride and Duty (Will Take You from the Mountain).json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1049_Pride and Duty (Will Take You from the Mountain).json new file mode 100644 index 00000000..75809361 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1049_Pride and Duty (Will Take You from the Mountain).json @@ -0,0 +1,83 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000927, + "Position": { + "X": -1.2055054, + "Y": 44.999886, + "Z": -255.8786 + }, + "TerritoryId": 128, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1006761, + "Position": { + "X": 520.2562, + "Y": 17.62488, + "Z": 470.51184 + }, + "TerritoryId": 137, + "InteractionType": "Interact", + "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1006763, + "Position": { + "X": 494.9568, + "Y": 11.450662, + "Z": 329.76257 + }, + "TerritoryId": 137, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1006762, + "Position": { + "X": 494.16345, + "Y": 12.305895, + "Z": 337.27014 + }, + "TerritoryId": 137, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1006746, + "Position": { + "X": 460.65454, + "Y": 8.309061, + "Z": 74.47925 + }, + "TerritoryId": 137, + "InteractionType": "CompleteQuest", + "NextQuestId": 1050 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json new file mode 100644 index 00000000..d927f243 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json @@ -0,0 +1,123 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "TerritoryId": 137, + "InteractionType": "EquipItem", + "ItemId": 4544 + }, + { + "DataId": 1006746, + "Position": { + "X": 460.65454, + "Y": 8.309061, + "Z": 74.47925 + }, + "TerritoryId": 137, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1004962, + "Position": { + "X": -300.1908, + "Y": 7.2785034, + "Z": 410.94055 + }, + "TerritoryId": 146, + "InteractionType": "Interact", + "AetheryteShortcut": "Southern Thanalan - Forgotten Springs", + "SkipIf": [ + "AetheryteShortcutIfInSameTerritory" + ], + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "DataId": 1006735, + "Position": { + "X": -316.1822, + "Y": 8.844355, + "Z": 433.82922 + }, + "TerritoryId": 146, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1006288, + "Position": { + "X": -361.40997, + "Y": 8.46532, + "Z": 426.13855 + }, + "TerritoryId": 146, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "Position": { + "X": 156.89783, + "Y": 4.3410587, + "Z": 831.42926 + }, + "TerritoryId": 146, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [ + 1917 + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1006746, + "Position": { + "X": 460.65454, + "Y": 8.309061, + "Z": 74.47925 + }, + "TerritoryId": 137, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol" + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/317_The Mountain That Strides.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/317_The Mountain That Strides.json new file mode 100644 index 00000000..a7f2bcb6 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/317_The Mountain That Strides.json @@ -0,0 +1,198 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000927, + "Position": { + "X": -1.2055054, + "Y": 44.999886, + "Z": -255.8786 + }, + "TerritoryId": 128, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002682, + "Position": { + "X": -86.930725, + "Y": 40.999992, + "Z": -153.91785 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] Marauders' Guild", + "[Limsa Lominsa] Culinarians' Guild" + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1002112, + "Position": { + "X": 561.6693, + "Y": 89.783, + "Z": -81.52899 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] Culinarians' Guild", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ], + "Fly": true + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1002683, + "Position": { + "X": 559.6245, + "Y": 89.783, + "Z": -80.1557 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1002113, + "Position": { + "X": 312.45886, + "Y": -24.483091, + "Z": 212.84802 + }, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 2000289, + "Position": { + "X": 348.34814, + "Y": -18.60083, + "Z": 168.3833 + }, + "TerritoryId": 138, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "Position": { + "X": 297.38306, + "Y": -14.2977295, + "Z": 148.85168 + }, + "TerritoryId": 138, + "InteractionType": "WalkTo" + }, + { + "DataId": 2000290, + "Position": { + "X": 297.38306, + "Y": -14.2977295, + "Z": 148.85168 + }, + "TerritoryId": 138, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ], + "DelaySecondsAtStart": 5 + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 1002684, + "Position": { + "X": 299.1836, + "Y": 0.7139131, + "Z": 86.10657 + }, + "TerritoryId": 138, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 1002112, + "Position": { + "X": 561.6693, + "Y": 89.783, + "Z": -81.52899 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ], + "Fly": true + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000927, + "Position": { + "X": -1.2055054, + "Y": 44.999886, + "Z": -255.8786 + }, + "TerritoryId": 128, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Marauders' Guild" + ], + "NextQuestId": 318 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/318_Bleeder of the Pack.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/318_Bleeder of the Pack.json index 2e89f068..f10b5595 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/318_Bleeder of the Pack.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/318_Bleeder of the Pack.json @@ -48,6 +48,7 @@ }, "TerritoryId": 135, "InteractionType": "SinglePlayerDuty", + "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks", "Fly": true } ] @@ -68,7 +69,8 @@ "AethernetShortcut": [ "[Limsa Lominsa] Aetheryte Plaza", "[Limsa Lominsa] Marauders' Guild" - ] + ], + "NextQuestId": 319 } ] } diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/319_Bringing Down the Mountain.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/319_Bringing Down the Mountain.json new file mode 100644 index 00000000..f71fbd95 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/319_Bringing Down the Mountain.json @@ -0,0 +1,237 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000927, + "Position": { + "X": -1.2055054, + "Y": 44.999886, + "Z": -255.8786 + }, + "TerritoryId": 128, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002115, + "Position": { + "X": 562.3406, + "Y": 89.86035, + "Z": -80.216736 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] Marauders' Guild", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ], + "Fly": true + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1002713, + "Position": { + "X": 554.4059, + "Y": 89.783, + "Z": -67.979004 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1002686, + "Position": { + "X": 554.2838, + "Y": 89.78309, + "Z": -72.43463 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 2000296, + "Position": { + "X": 565.1482, + "Y": 66.666626, + "Z": -215.2591 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 2000297, + "Position": { + "X": 590.8141, + "Y": 72.40405, + "Z": -272.08368 + }, + "StopDistance": 1, + "TerritoryId": 135, + "InteractionType": "Interact", + "Mount": false + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "Position": { + "X": 565.94104, + "Y": 85.81174, + "Z": -322.61465 + }, + "TerritoryId": 135, + "InteractionType": "WalkTo", + "Mount": false + }, + { + "DataId": 2000298, + "Position": { + "X": 566.8268, + "Y": 85.52673, + "Z": -320.82092 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 2000299, + "Position": { + "X": 574.0901, + "Y": 90.440186, + "Z": -429.06842 + }, + "TerritoryId": 135, + "InteractionType": "SinglePlayerDuty", + "Mount": false + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 1002689, + "Position": { + "X": 569.6345, + "Y": 86.253204, + "Z": -363.94293 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "DataId": 1002714, + "Position": { + "X": 572.5946, + "Y": 86.366455, + "Z": -365.3468 + }, + "StopDistance": 5, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1002715, + "Position": { + "X": 566.4302, + "Y": 86.2767, + "Z": -364.95007 + }, + "StopDistance": 5, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000927, + "Position": { + "X": -1.2055054, + "Y": 44.999886, + "Z": -255.8786 + }, + "TerritoryId": 128, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Marauders' Guild" + ], + "NextQuestId": 1049 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/272_Life, Materia and Everything.json b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/272_Life, Materia and Everything.json index a7f3e960..5a78ab23 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/272_Life, Materia and Everything.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/272_Life, Materia and Everything.json @@ -71,7 +71,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/343_Lord of the Inferno.json b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/343_Lord of the Inferno.json index 90b15acb..8009715b 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/343_Lord of the Inferno.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/343_Lord of the Inferno.json @@ -110,7 +110,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/511_A Hero in the Making.json b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/511_A Hero in the Making.json index 6be4f74c..3e622bc6 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/511_A Hero in the Making.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/511_A Hero in the Making.json @@ -149,7 +149,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/574_Dressed to Deceive.json b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/574_Dressed to Deceive.json index d64ec054..db2817ed 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/574_Dressed to Deceive.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/574_Dressed to Deceive.json @@ -193,7 +193,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/683_Wood's Will Be Done.json b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/683_Wood's Will Be Done.json index f4ef9415..86f494ab 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/683_Wood's Will Be Done.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/683_Wood's Will Be Done.json @@ -33,7 +33,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/684_Till Sea Swallows All.json b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/684_Till Sea Swallows All.json index c46bfe51..8de127a1 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/684_Till Sea Swallows All.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/684_Till Sea Swallows All.json @@ -34,7 +34,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3863_Terror at Fallgourd.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3863_Terror at Fallgourd.json index 3933f111..af778f4e 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3863_Terror at Fallgourd.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3863_Terror at Fallgourd.json @@ -28,7 +28,8 @@ "Z": -0.015319824 }, "TerritoryId": 212, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 1007417, @@ -79,4 +80,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3864_Ziz Is So Ridiculous.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3864_Ziz Is So Ridiculous.json index 588dbdac..8f5618ca 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3864_Ziz Is So Ridiculous.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3864_Ziz Is So Ridiculous.json @@ -21,21 +21,25 @@ "Sequence": 1, "Steps": [ { - "DataId": 7, - "Position": { - "X": -41.58087, - "Y": -38.55963, - "Z": 233.7528 - }, "TerritoryId": 154, "InteractionType": "AttuneAetheryte", - "StopDistance": 5 + "StopDistance": 5, + "Aetheryte": "North Shroud - Fallgourd Float" }, { "Position": { - "X": -220.29037, - "Y": -28.43536, - "Z": 283.79355 + "X": -214.10292, + "Y": -56.837837, + "Z": 295.99493 + }, + "TerritoryId": 154, + "InteractionType": "WalkTo" + }, + { + "Position": { + "X": -276.81464, + "Y": -56.335888, + "Z": 302.93182 }, "TerritoryId": 154, "InteractionType": "Combat", @@ -63,4 +67,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3865_Trial by Turtle.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3865_Trial by Turtle.json index a825d975..92b1abd6 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3865_Trial by Turtle.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3865_Trial by Turtle.json @@ -74,16 +74,22 @@ "Sequence": 255, "Steps": [ { - "DataId": 20, + "DataId": 1004596, "Position": { - "X": -326.6194, - "Y": 10.696533, - "Z": 406.63757 + "X": -471.27496, + "Y": -2.650424, + "Z": 95.628296 }, + "TerritoryId": 146, + "InteractionType": "Interact", + "TargetTerritoryId": 146, + "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo" + }, + { "TerritoryId": 146, "InteractionType": "AttuneAetheryte", "StopDistance": 5, - "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo" + "Aetheryte": "Southern Thanalan - Forgotten Springs" }, { "DataId": 1004917, @@ -98,4 +104,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/517_All Good Things.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/517_All Good Things.json index e1ae6a7e..382486a7 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/517_All Good Things.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/517_All Good Things.json @@ -57,7 +57,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/520_Reclamation.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/520_Reclamation.json index f97d4ebe..7c38913e 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/520_Reclamation.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/520_Reclamation.json @@ -34,7 +34,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/522_The Black Wolf's Ultimatum.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/522_The Black Wolf's Ultimatum.json index f95811f8..20342383 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/522_The Black Wolf's Ultimatum.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/522_The Black Wolf's Ultimatum.json @@ -53,7 +53,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/685_For Coin and Country.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/685_For Coin and Country.json index f8322951..44a41aec 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/685_For Coin and Country.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/685_For Coin and Country.json @@ -37,7 +37,8 @@ "Z": -380.82272 }, "TerritoryId": 140, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" }, { "DataId": 2001711, @@ -63,4 +64,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/748_Highbridge Times.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/748_Highbridge Times.json index 37e50319..1c833dab 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/748_Highbridge Times.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/748_Highbridge Times.json @@ -32,7 +32,15 @@ "Z": -58.854065 }, "TerritoryId": 145, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 1006204, @@ -42,7 +50,15 @@ "Z": -7.5532227 }, "TerritoryId": 145, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 1006205, @@ -52,7 +68,15 @@ "Z": 7.4310913 }, "TerritoryId": 145, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, @@ -72,4 +96,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/756_Where There Is Smoke.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/756_Where There Is Smoke.json index bedbc2ab..86f138cc 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/756_Where There Is Smoke.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/756_Where There Is Smoke.json @@ -24,6 +24,15 @@ { "Sequence": 1, "Steps": [ + { + "Position": { + "X": 318.09802, + "Y": 20.949646, + "Z": -263.94977 + }, + "TerritoryId": 145, + "InteractionType": "WalkTo" + }, { "DataId": 2001965, "Position": { @@ -37,7 +46,8 @@ "ItemId": 2000604, "KillEnemyDataIds": [ 363 - ] + ], + "DisableNavmesh": true } ] }, @@ -57,4 +67,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/757_On to Little Ala Mhigo.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/757_On to Little Ala Mhigo.json index 5ef5f6fb..806682c1 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/757_On to Little Ala Mhigo.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/757_On to Little Ala Mhigo.json @@ -35,15 +35,10 @@ "TargetTerritoryId": 146 }, { - "DataId": 19, - "Position": { - "X": -159.3805, - "Y": 30.105957, - "Z": -415.45746 - }, "TerritoryId": 146, "InteractionType": "AttuneAetheryte", - "StopDistance": 7 + "StopDistance": 7, + "Aetheryte": "Southern Thanalan - Little Ala Mhigo" }, { "DataId": 1006211, @@ -73,4 +68,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/761_Tea for Three.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/761_Tea for Three.json index 898bfb5b..273407b3 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/761_Tea for Three.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/761_Tea for Three.json @@ -32,7 +32,15 @@ "Z": -247.82184 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 1006704, @@ -42,7 +50,15 @@ "Z": -165.45361 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 1006703, @@ -52,7 +68,15 @@ "Z": -133.22656 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, @@ -67,9 +91,10 @@ "Z": -402.02948 }, "TerritoryId": 146, - "InteractionType": "CompleteQuest" + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/762_Foot in the Door.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/762_Foot in the Door.json index 1d13caee..18c59692 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/762_Foot in the Door.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/762_Foot in the Door.json @@ -29,6 +29,16 @@ "InteractionType": "UseItem", "ItemId": 30362 }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" + }, { "DataId": 2001711, "Position": { @@ -37,7 +47,8 @@ "Z": -386.862 }, "TerritoryId": 140, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 2001715, @@ -47,7 +58,8 @@ "Z": -0.015319824 }, "TerritoryId": 212, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 1006688, @@ -62,4 +74,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/763_Meeting with the Resistance.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/763_Meeting with the Resistance.json index 998e9795..0bee2532 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/763_Meeting with the Resistance.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/763_Meeting with the Resistance.json @@ -28,7 +28,8 @@ "Z": -0.015319824 }, "TerritoryId": 212, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 1007418, @@ -59,4 +60,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/774_Helping Horn.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/774_Helping Horn.json index adaa6059..19f0b727 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/774_Helping Horn.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/774_Helping Horn.json @@ -26,15 +26,26 @@ "Steps": [ { "Position": { - "X": 260.3064, - "Y": 3.8526046, - "Z": 15.633602 + "X": 262.89966, + "Y": 11.363011, + "Z": -143.02156 }, "TerritoryId": 153, "InteractionType": "Combat", "EnemySpawnType": "OverworldEnemies", - "KillEnemyDataIds": [ - 4 + "ComplexCombatData": [ + { + "DataId": 4, + "MinimumKillCount": 4, + "CompletionQuestVariablesFlags": [ + null, + 64, + null, + null, + null, + null + ] + } ] } ] @@ -80,9 +91,10 @@ "Z": -39.932922 }, "TerritoryId": 153, - "InteractionType": "CompleteQuest" + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "South Shroud - Quarrymill" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/777_The Bear and the Young'uns' Cares.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/777_The Bear and the Young'uns' Cares.json index e3867516..f3d4477f 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/777_The Bear and the Young'uns' Cares.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/777_The Bear and the Young'uns' Cares.json @@ -32,7 +32,15 @@ "Z": -337.789 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 1006222, @@ -42,7 +50,16 @@ "Z": -331.34973 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "DisableNavmesh": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] }, { "DataId": 1006223, @@ -52,7 +69,15 @@ "Z": -348.50085 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 1006224, @@ -62,7 +87,15 @@ "Z": -325.42914 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 16 + ] } ] }, @@ -82,4 +115,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/778_Wilred Wants You.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/778_Wilred Wants You.json index f60e3675..d37c45b8 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/778_Wilred Wants You.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/778_Wilred Wants You.json @@ -67,9 +67,10 @@ "Z": -352.98694 }, "TerritoryId": 146, - "InteractionType": "CompleteQuest" + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/782_Big Trouble in Little Ala Mhigo.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/782_Big Trouble in Little Ala Mhigo.json index 78ccc8d4..66c21c38 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/782_Big Trouble in Little Ala Mhigo.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/782_Big Trouble in Little Ala Mhigo.json @@ -32,7 +32,15 @@ "Z": -318.5016 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 16 + ] }, { "DataId": 1006225, @@ -42,7 +50,15 @@ "Z": -333.69952 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 1007617, @@ -52,7 +68,15 @@ "Z": -339.71167 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 2001981, @@ -62,7 +86,15 @@ "Z": -350.08777 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 8 + ] }, { "DataId": 1007616, @@ -72,7 +104,15 @@ "Z": -341.3291 }, "TerritoryId": 146, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, @@ -122,4 +162,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/783_Back to Square One.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/783_Back to Square One.json index 1b5b077c..660d62af 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/783_Back to Square One.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/783_Back to Square One.json @@ -29,6 +29,16 @@ "InteractionType": "UseItem", "ItemId": 30362 }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" + }, { "DataId": 2001711, "Position": { @@ -37,7 +47,8 @@ "Z": -386.862 }, "TerritoryId": 140, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 2001715, @@ -47,7 +58,8 @@ "Z": -0.015319824 }, "TerritoryId": 212, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 1006688, @@ -62,4 +74,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/786_Seeing Eye to Winged Eye.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/786_Seeing Eye to Winged Eye.json index 7a8ebe2f..8cec6ad0 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/786_Seeing Eye to Winged Eye.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/786_Seeing Eye to Winged Eye.json @@ -12,6 +12,7 @@ "Y": -44.865616, "Z": 264.54565 }, + "StopDistance": 7, "TerritoryId": 154, "InteractionType": "AcceptQuest", "AetheryteShortcut": "North Shroud - Fallgourd Float", @@ -57,4 +58,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/787_Rock of Rancor.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/787_Rock of Rancor.json index cded24cf..d846e910 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/787_Rock of Rancor.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/787_Rock of Rancor.json @@ -24,6 +24,15 @@ { "Sequence": 1, "Steps": [ + { + "Position": { + "X": -195.16211, + "Y": -63.65229, + "Z": 370.28903 + }, + "TerritoryId": 154, + "InteractionType": "WalkTo" + }, { "Position": { "X": -222.67735, @@ -31,8 +40,9 @@ "Z": 396.86935 }, "TerritoryId": 154, - "InteractionType": "WaitForManualProgress", - "Comment": "Use Firesand Stick on glowing spot" + "InteractionType": "UseItem", + "ItemId": 2000616, + "GroundTarget": true } ] }, @@ -47,7 +57,15 @@ "Z": 389.9137 }, "TerritoryId": 154, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 8 + ] }, { "DataId": 2001986, @@ -57,7 +75,15 @@ "Z": 383.3523 }, "TerritoryId": 154, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 2001987, @@ -67,7 +93,15 @@ "Z": 376.3026 }, "TerritoryId": 154, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 16 + ] }, { "DataId": 2001985, @@ -77,7 +111,15 @@ "Z": 378.95776 }, "TerritoryId": 154, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] }, { "DataId": 2001984, @@ -87,7 +129,15 @@ "Z": 388.93713 }, "TerritoryId": 154, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] } ] }, @@ -108,4 +158,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/799_Power of Deduction.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/799_Power of Deduction.json index 099bfc98..650caa72 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/799_Power of Deduction.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/799_Power of Deduction.json @@ -12,6 +12,7 @@ "Y": -44.86571, "Z": 262.65344 }, + "StopDistance": 7, "TerritoryId": 154, "InteractionType": "AcceptQuest", "AetheryteShortcut": "North Shroud - Fallgourd Float", @@ -67,4 +68,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/801_Skeletons in Her Closet.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/801_Skeletons in Her Closet.json index be3e4aac..9daeed01 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/801_Skeletons in Her Closet.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/801_Skeletons in Her Closet.json @@ -20,6 +20,29 @@ { "Sequence": 1, "Steps": [ + { + "DataId": 1006259, + "Position": { + "X": 43.808594, + "Y": 2.5499606, + "Z": 21.683044 + }, + "TerritoryId": 132, + "InteractionType": "AcceptQuest", + "PickUpQuestId": 802, + "AetheryteShortcut": "Gridania" + }, + { + "DataId": 1000171, + "Position": { + "X": -114.366455, + "Y": -7.351947, + "Z": 94.52954 + }, + "TerritoryId": 132, + "InteractionType": "Interact", + "TargetTerritoryId": 148 + }, { "DataId": 2001999, "Position": { @@ -28,8 +51,7 @@ "Z": 69.41321 }, "TerritoryId": 148, - "InteractionType": "Interact", - "AetheryteShortcut": "Central Shroud - Bentbranch Meadows" + "InteractionType": "Interact" } ] }, @@ -37,18 +59,27 @@ "Sequence": 2, "Steps": [ { - "DataId": 2002701, - "Position": { - "X": -574.4259, - "Y": 67.00232, - "Z": 71.39697 - }, "TerritoryId": 148, "InteractionType": "Duty", "ContentFinderConditionId": 6 } ] }, + { + "Sequence": 3, + "Steps": [ + { + "Position": { + "X": 0, + "Y": 0, + "Z": 0 + }, + "TerritoryId": 1, + "InteractionType": "WalkTo", + "Comment": "Filler" + } + ] + }, { "Sequence": 4, "Steps": [ @@ -77,6 +108,16 @@ "InteractionType": "UseItem", "ItemId": 30362 }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo", + "$": "Avoid walking around Waking Sands table" + }, { "DataId": 2001711, "Position": { @@ -85,7 +126,8 @@ "Z": -386.862 }, "TerritoryId": 140, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 2001715, @@ -95,7 +137,8 @@ "Z": -0.015319824 }, "TerritoryId": 212, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 212 }, { "DataId": 1006688, @@ -110,4 +153,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/809_Tales from the Tidus Slayer.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/809_Tales from the Tidus Slayer.json index 9369543a..77eb0417 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/809_Tales from the Tidus Slayer.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/809_Tales from the Tidus Slayer.json @@ -27,6 +27,7 @@ "Y": 64.37781, "Z": -205.24915 }, + "StopDistance": 0.25, "TerritoryId": 135, "InteractionType": "Combat", "EnemySpawnType": "AfterInteraction", @@ -53,4 +54,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/811_The Lominsan Way.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/811_The Lominsan Way.json index c9a34e68..4f2e8d83 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/811_The Lominsan Way.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/811_The Lominsan Way.json @@ -46,15 +46,20 @@ "TargetTerritoryId": 137 }, { - "DataId": 11, "Position": { - "X": 489.15845, - "Y": 20.828491, - "Z": 468.80298 + "X": 378.54834, + "Y": 21.81276, + "Z": 478.4722 }, + "TerritoryId": 137, + "InteractionType": "WalkTo", + "$": "Avoids the beach due to rocks, doesn't even look like a faster path" + }, + { "TerritoryId": 137, "InteractionType": "AttuneAetheryte", - "StopDistance": 5 + "StopDistance": 5, + "Aetheryte": "Eastern La Noscea - Costa Del Sol" }, { "DataId": 1006266, @@ -69,4 +74,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/814_A Modest Proposal.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/814_A Modest Proposal.json index f230eb01..ad8c57f0 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/814_A Modest Proposal.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/814_A Modest Proposal.json @@ -24,18 +24,6 @@ { "Sequence": 255, "Steps": [ - { - "DataId": 6, - "Position": { - "X": -230.0603, - "Y": 22.62909, - "Z": 355.45886 - }, - "TerritoryId": 153, - "InteractionType": "AttuneAetheryte", - "StopDistance": 5, - "AetheryteShortcut": "South Shroud - Quarrymill" - }, { "DataId": 1006279, "Position": { @@ -44,9 +32,10 @@ "Z": 339.49792 }, "TerritoryId": 153, - "InteractionType": "CompleteQuest" + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "South Shroud - Camp Tranquil" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/832_The Things We Do for Cheese.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/832_The Things We Do for Cheese.json index d2cafe70..2e7f3419 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/832_The Things We Do for Cheese.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/832_The Things We Do for Cheese.json @@ -1,6 +1,9 @@ { "$schema": "https://carvel.li/questionable/quest-1.0", "Author": "JerryWester", + "TerritoryBlacklist": [ + 1041 + ], "QuestSequence": [ { "Sequence": 0, @@ -47,18 +50,23 @@ "Z": 89.37195 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "TargetTerritoryId": 137 }, { - "DataId": 12, - "Position": { - "X": -18.387146, - "Y": 72.67859, - "Z": 3.829956 - }, "TerritoryId": 137, "InteractionType": "AttuneAetheryte", - "StopDistance": 5 + "StopDistance": 5, + "Aetheryte": "Eastern La Noscea - Wineport" + }, + { + "Position": { + "X": -272.5533, + "Y": 59.7689, + "Z": 176.81541 + }, + "TerritoryId": 137, + "InteractionType": "WalkTo" }, { "DataId": 1006268, @@ -76,12 +84,6 @@ "Sequence": 3, "Steps": [ { - "DataId": 2002702, - "Position": { - "X": -338.61298, - "Y": 69.01648, - "Z": 159.65515 - }, "TerritoryId": 137, "InteractionType": "Duty", "ContentFinderConditionId": 8 @@ -120,4 +122,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/848_Battle Scars.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/848_Battle Scars.json index 4d49d09a..3bfbf651 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/848_Battle Scars.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/848_Battle Scars.json @@ -32,7 +32,15 @@ "Z": 299.39722 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 2002059, @@ -42,7 +50,15 @@ "Z": 308.24744 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 2002060, @@ -52,7 +68,15 @@ "Z": 276.53918 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, @@ -73,4 +97,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/855_In the Company of Heroes.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/855_In the Company of Heroes.json index 5a7edca6..422962d5 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/855_In the Company of Heroes.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/855_In the Company of Heroes.json @@ -62,7 +62,15 @@ "Z": 454.5509 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + 8, + null + ] }, { "DataId": 1006318, @@ -72,7 +80,15 @@ "Z": 451.0719 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + 16, + null + ] }, { "DataId": 1006317, @@ -82,7 +98,15 @@ "Z": 450.43103 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + 64, + null + ] }, { "DataId": 1006316, @@ -92,7 +116,15 @@ "Z": 457.02295 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + 32, + null + ] }, { "DataId": 1006266, @@ -102,7 +134,15 @@ "Z": 455.89368 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + 128, + null + ] } ] }, @@ -116,10 +156,11 @@ "Y": 20.706482, "Z": 451.13293 }, + "StopDistance": 7, "TerritoryId": 137, "InteractionType": "CompleteQuest" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/856_As You Wish.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/856_As You Wish.json index 8db15e7f..f0d29889 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/856_As You Wish.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/856_As You Wish.json @@ -36,15 +36,28 @@ "AetheryteShortcut": "Eastern La Noscea - Wineport" }, { - "DataId": 15, + "DataId": 2002085, "Position": { - "X": 437.4303, - "Y": 5.508484, - "Z": 94.590576 + "X": 404.86768, + "Y": 4.3182373, + "Z": 88.45642 }, + "TerritoryId": 139, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { "TerritoryId": 139, "InteractionType": "AttuneAetheryte", - "StopDistance": 5 + "StopDistance": 5, + "Aetheryte": "Upper La Noscea - Camp Bronze Lake" }, { "DataId": 2002084, @@ -54,17 +67,15 @@ "Z": 133.04333 }, "TerritoryId": 139, - "InteractionType": "Interact" - }, - { - "DataId": 2002085, - "Position": { - "X": 404.86768, - "Y": 4.3182373, - "Z": 88.45642 - }, - "TerritoryId": 139, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] }, { "DataId": 2002083, @@ -74,7 +85,15 @@ "Z": 47.196045 }, "TerritoryId": 139, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] } ] }, @@ -88,10 +107,11 @@ "Y": 16.258692, "Z": 128.37415 }, + "StopDistance": 7, "TerritoryId": 139, "InteractionType": "CompleteQuest" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/857_Lord of Crags.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/857_Lord of Crags.json index 6bc4effb..87b49340 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/857_Lord of Crags.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/857_Lord of Crags.json @@ -1,6 +1,9 @@ { "$schema": "https://carvel.li/questionable/quest-1.0", "Author": "JerryWester", + "TerritoryBlacklist": [ + 1046 + ], "QuestSequence": [ { "Sequence": 0, @@ -12,6 +15,7 @@ "Y": 16.258692, "Z": 128.37415 }, + "StopDistance": 7, "TerritoryId": 139, "InteractionType": "AcceptQuest", "AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake", @@ -40,15 +44,9 @@ "Sequence": 2, "Steps": [ { - "DataId": 2002690, - "Position": { - "X": 381.39917, - "Y": 23.727722, - "Z": -140.79504 - }, "TerritoryId": 139, "InteractionType": "Duty", - "ContentFinderConditionId": 20002 + "ContentFinderConditionId": 57 } ] }, @@ -68,4 +66,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/886_The Unending War.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/886_The Unending War.json index ba175735..65c9073a 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/886_The Unending War.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/886_The Unending War.json @@ -21,12 +21,12 @@ "Sequence": 1, "Steps": [ { - "DataId": 1006731, "Position": { - "X": 52.231567, - "Y": 235.30933, - "Z": 347.85986 + "X": 48.65701, + "Y": 234.78163, + "Z": 348.13953 }, + "StopDistance": 1, "TerritoryId": 155, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", @@ -93,4 +93,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/802_Broadening Horizons.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/802_Broadening Horizons.json new file mode 100644 index 00000000..5438bab9 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/802_Broadening Horizons.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1006259, + "Position": { + "X": 43.808594, + "Y": 2.5499606, + "Z": 21.683044 + }, + "TerritoryId": 132, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000171, + "Position": { + "X": -114.366455, + "Y": -7.351947, + "Z": 94.52954 + }, + "TerritoryId": 132, + "InteractionType": "CompleteQuest" + } + ] + } + ] +} diff --git a/Questionable.Model/V1/QuestStep.cs b/Questionable.Model/V1/QuestStep.cs index dc932f65..52793959 100644 --- a/Questionable.Model/V1/QuestStep.cs +++ b/Questionable.Model/V1/QuestStep.cs @@ -69,7 +69,7 @@ public sealed class QuestStep public IList PointMenuChoices { get; set; } = new List(); // TODO: Not implemented - public ushort? PickupQuestId { get; set; } + public ushort? PickUpQuestId { get; set; } public ushort? TurnInQuestId { get; set; } public ushort? NextQuestId { get; set; } diff --git a/Questionable/Controller/CombatController.cs b/Questionable/Controller/CombatController.cs index aada0a1a..bb85caff 100644 --- a/Questionable/Controller/CombatController.cs +++ b/Questionable/Controller/CombatController.cs @@ -157,21 +157,21 @@ internal sealed class CombatController private unsafe bool IsEnemyToKill(IGameObject gameObject) { - if (gameObject is IBattleChara battleChara) + if (gameObject is IBattleNpc battleNpc) { // TODO this works as somewhat of a delay between killing enemies if certain items/flags are checked // but also delays killing the next enemy a little if (_currentFight == null || _currentFight.Data.SpawnType != EEnemySpawnType.OverworldEnemies || _currentFight.Data.ComplexCombatDatas.Count == 0) { - if (battleChara.IsDead) + if (battleNpc.IsDead) return false; } - if (!battleChara.IsTargetable) + if (!battleNpc.IsTargetable) return false; - if (battleChara.TargetObjectId == _clientState.LocalPlayer?.GameObjectId) + if (battleNpc.TargetObjectId == _clientState.LocalPlayer?.GameObjectId) return true; if (_currentFight != null) @@ -184,18 +184,18 @@ internal sealed class CombatController if (_currentFight.Data.CompletedComplexDatas.Contains(i)) continue; - if (complexCombatData[i].DataId == battleChara.DataId) + if (complexCombatData[i].DataId == battleNpc.DataId) return true; } } else { - if (_currentFight.Data.KillEnemyDataIds.Contains(battleChara.DataId)) + if (_currentFight.Data.KillEnemyDataIds.Contains(battleNpc.DataId)) return true; } } - if (battleChara.StatusFlags.HasFlag(StatusFlags.Hostile)) + if (battleNpc.BattleNpcKind is BattleNpcSubKind.BattleNpcPart or BattleNpcSubKind.Enemy) { var gameObjectStruct = (GameObject*)gameObject.Address; return gameObjectStruct->NamePlateIconId != 0; diff --git a/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs b/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs index 38f9fb4a..610d5948 100644 --- a/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs +++ b/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs @@ -16,6 +16,13 @@ internal sealed class MovementOverrideController new BlacklistedPoint(128, new(2f, 40.25f, 36.5f), new(0.25f, 40.25f, 36.5f)), new BlacklistedPoint(132, new(45.5f, -8f, 101f), new(50.53978f, -8.046954f, 101.06045f)), + + // eastern thanalan + new BlacklistedPoint(145, new(-139.75f, -32.25f, 75.25f), new(-139.57748f, -33.785175f, 77.87906f)), + + // southern thanalan + new BlacklistedPoint(146, new(-201.75f, 10.5f, -265.5f), new(-203.75235f, 10.130764f, -265.15314f)), + new BlacklistedPoint(1189, new(574f, -142.25f, 504.25f), new(574.44183f, -142.12766f, 507.60065f)), // heritage found: yyupye's halo (farm, npc: Mahuwsa) diff --git a/Questionable/Controller/Steps/Interactions/EquipItem.cs b/Questionable/Controller/Steps/Interactions/EquipItem.cs index 929d33e0..8268c0dc 100644 --- a/Questionable/Controller/Steps/Interactions/EquipItem.cs +++ b/Questionable/Controller/Steps/Interactions/EquipItem.cs @@ -44,6 +44,8 @@ internal static class EquipItem InventoryType.ArmoryWrist, InventoryType.ArmoryRings, + InventoryType.ArmorySoulCrystal, + InventoryType.Inventory1, InventoryType.Inventory2, InventoryType.Inventory3, @@ -81,9 +83,12 @@ internal static class EquipItem if (inventoryManager == null) return ETaskResult.StillRunning; - if (_targetSlots.Any(x => - inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x)->ItemId == _itemId)) - return ETaskResult.TaskComplete; + foreach (ushort x in _targetSlots) + { + var itemSlot = inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x); + if (itemSlot != null && itemSlot->ItemId == _itemId) + return ETaskResult.TaskComplete; + } Equip(); _continueAt = DateTime.Now.AddSeconds(1); @@ -100,10 +105,14 @@ internal static class EquipItem if (equippedContainer == null) return; - if (_targetSlots.Any(slot => equippedContainer->GetInventorySlot(slot)->ItemId == _itemId)) + foreach (ushort slot in _targetSlots) { - logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString()); - return; + var itemSlot = equippedContainer->GetInventorySlot(slot); + if (itemSlot != null && itemSlot->ItemId == _itemId) + { + logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString()); + return; + } } foreach (InventoryType sourceInventoryType in SourceInventoryTypes) @@ -124,7 +133,11 @@ internal static class EquipItem // Move the item to the first available slot ushort targetSlot = _targetSlots - .Where(x => inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x)->ItemId == 0) + .Where(x => + { + var itemSlot = inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x); + return itemSlot == null || itemSlot->ItemId == 0; + }) .Concat(_targetSlots).First(); logger.LogInformation( @@ -146,7 +159,7 @@ internal static class EquipItem >= 1 and <= 11 => [(ushort)(item.EquipSlotCategory.Row - 1)], 12 => [11, 12], // rings 13 => [0], - 17 => [14], // soul crystal + 17 => [13], // soul crystal _ => null }; } diff --git a/Questionable/Controller/Steps/Interactions/UseItem.cs b/Questionable/Controller/Steps/Interactions/UseItem.cs index 77a16847..1fd7b6aa 100644 --- a/Questionable/Controller/Steps/Interactions/UseItem.cs +++ b/Questionable/Controller/Steps/Interactions/UseItem.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Numerics; using FFXIVClientStructs.FFXIV.Client.Game; using Microsoft.Extensions.DependencyInjection; @@ -38,10 +39,17 @@ internal static class UseItem var unmount = serviceProvider.GetRequiredService(); if (step.GroundTarget == true) { - ArgumentNullException.ThrowIfNull(step.DataId); + ITask task; + if (step.DataId != null) + task = serviceProvider.GetRequiredService() + .With(step.DataId.Value, step.ItemId.Value); + else + { + ArgumentNullException.ThrowIfNull(step.Position); + task = serviceProvider.GetRequiredService() + .With(step.Position.Value, step.ItemId.Value); + } - var task = serviceProvider.GetRequiredService() - .With(step.DataId.Value, step.ItemId.Value); return [unmount, task]; } else if (step.DataId != null) @@ -161,6 +169,24 @@ internal static class UseItem public override string ToString() => $"UseItem({ItemId} on ground at {DataId})"; } + internal sealed class UseOnPosition(GameFunctions gameFunctions, ILogger logger) + : UseItemBase(logger) + { + public Vector3 Position { get; set; } + + public ITask With(Vector3 position, uint itemId) + { + Position = position; + ItemId = itemId; + return this; + } + + protected override bool UseItem() => gameFunctions.UseItemOnPosition(Position, ItemId); + + public override string ToString() => + $"UseItem({ItemId} on ground at {Position.ToString("G", CultureInfo.InvariantCulture)})"; + } + internal sealed class UseOnObject(GameFunctions gameFunctions, ILogger logger) : UseItemBase(logger) { public uint DataId { get; set; } diff --git a/Questionable/Controller/Steps/Shared/WaitAtEnd.cs b/Questionable/Controller/Steps/Shared/WaitAtEnd.cs index 8e8a8c63..947e425f 100644 --- a/Questionable/Controller/Steps/Shared/WaitAtEnd.cs +++ b/Questionable/Controller/Steps/Shared/WaitAtEnd.cs @@ -111,7 +111,7 @@ internal static class WaitAtEnd return [ serviceProvider.GetRequiredService() - .With(step.PickupQuestId ?? quest.QuestId), + .With(step.PickUpQuestId ?? quest.QuestId), serviceProvider.GetRequiredService() ]; diff --git a/Questionable/GameFunctions.cs b/Questionable/GameFunctions.cs index 227d0c3e..f12e1bd7 100644 --- a/Questionable/GameFunctions.cs +++ b/Questionable/GameFunctions.cs @@ -128,6 +128,13 @@ internal sealed unsafe class GameFunctions if (chocoboQuest != 0 && !QuestManager.IsQuestComplete(chocoboQuest)) return (chocoboQuest, QuestManager.GetQuestSequence(chocoboQuest)); } + else if (currentQuest == 801) + { + // skeletons in her closet, finish 'broadening horizons' to unlock the white wolf gate + ushort broadeningHorizons = 802; + if (questManager->IsQuestAccepted(broadeningHorizons)) + return (broadeningHorizons, QuestManager.GetQuestSequence(broadeningHorizons)); + } return (currentQuest, sequence); } @@ -443,6 +450,11 @@ internal sealed unsafe class GameFunctions return false; } + public bool UseItemOnPosition(Vector3 position, uint itemId) + { + return ActionManager.Instance()->UseActionLocation(ActionType.KeyItem, itemId, location: &position); + } + public bool UseAction(EAction action) { if (ActionManager.Instance()->GetActionStatus(ActionType.Action, (uint)action) == 0) diff --git a/Questionable/QuestionablePlugin.cs b/Questionable/QuestionablePlugin.cs index eca5656a..1cb6c4c1 100644 --- a/Questionable/QuestionablePlugin.cs +++ b/Questionable/QuestionablePlugin.cs @@ -121,7 +121,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin serviceCollection.AddTaskWithFactory(); serviceCollection.AddTaskWithFactory(); serviceCollection.AddTaskWithFactory(); - serviceCollection.AddTaskWithFactory(); + serviceCollection.AddTaskWithFactory(); serviceCollection.AddTaskWithFactory(); serviceCollection .AddTaskWithFactory Validate(Quest quest) { var questAccepts = FindQuestStepsWithInteractionType(quest, EInteractionType.AcceptQuest) - .Where(x => x.Step.PickupQuestId == null) + .Where(x => x.Step.PickUpQuestId == null) .ToList(); foreach (var accept in questAccepts) {