From c6272ccd88c0058be0bb43ee549bc8cdc82dee80 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Sat, 19 Oct 2024 17:24:21 +0200 Subject: [PATCH] Add rogue quests; adjust ninja paths --- .../RoslynElements/QuestStepExtensions.cs | 2 + .../Class Quests/NIN/102_My First Dagger.json | 3 +- .../NIN/104_Stabbers in Yer Fambles.json | 196 ++++++++++ .../NIN/110_A Dainty Dilemma.json | 298 +++++++++++++++ .../NIN/126_Stray into the Shadows.json | 346 ++++++++++++++++++ .../Class Quests/NIN/144_Stifled Screams.json | 144 ++++++++ .../NIN/145_Slave to the Code.json | 86 +++++ .../NIN/146_Grinners in the Mist.json | 258 +++++++++++++ .../Class Quests/NIN/148_Sweet Sorrows.json | 292 +++++++++++++++ .../NIN/154_Market for Death.json | 160 ++++++++ .../Class Quests/NIN/155_Cloying Victory.json | 108 ++++++ .../212_Peasants by Day, Ninjas by Night.json | 27 +- .../Class Quests/NIN/213_My First Mudra.json | 20 +- .../NIN/215_Once Upon a Time in Doma.json | 41 +-- .../NIN/216_Pirates versus Ninjas.json | 20 +- .../Class Quests/NIN/217_Ninja Bathin'.json | 11 +- .../Class Quests/NIN/232_Tough Guys.json | 11 +- .../Class Quests/NIN/233_The Crow Knows.json | 11 +- .../NIN/234_Master and Student.json | 31 +- .../NIN/235_Strangers in a Strange Land.json | 22 +- .../NIN/1684_The Impossible Girl.json | 22 +- .../Class Quests/NIN/1685_Ninja Assassin.json | 67 +--- .../NIN/1686_Medieval Espionage.json | 22 +- .../Class Quests/NIN/1687_Staying Alive.json | 29 +- .../Class Quests/NIN/1688_In Her Defense.json | 42 +-- .../2948_Search for the Stolen Scroll.json | 29 +- .../NIN/2949_Ninja Bathin' Redux.json | 43 ++- .../NIN/2951_True Enlightenment.json | 31 +- .../NIN/2952_When Clans Collide.json | 22 +- QuestPaths/quest-v1.json | 27 +- .../Questing/Converter/ActionConverter.cs | 1 + .../Converter/InteractionTypeConverter.cs | 1 + .../Questing/Converter/StatusConverter.cs | 12 + Questionable.Model/Questing/EAction.cs | 2 + .../Questing/EInteractionType.cs | 1 + Questionable.Model/Questing/EStatus.cs | 12 + Questionable.Model/Questing/QuestStep.cs | 1 + .../Controller/Steps/Gathering/DoGather.cs | 4 +- .../Controller/Steps/Interactions/Action.cs | 82 ++++- .../Steps/Interactions/StatusOff.cs | 47 +++ Questionable/Functions/GameFunctions.cs | 8 +- Questionable/QuestionablePlugin.cs | 2 + 42 files changed, 2261 insertions(+), 333 deletions(-) create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/104_Stabbers in Yer Fambles.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/110_A Dainty Dilemma.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/126_Stray into the Shadows.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/144_Stifled Screams.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/145_Slave to the Code.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/146_Grinners in the Mist.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/148_Sweet Sorrows.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/154_Market for Death.json create mode 100644 QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/155_Cloying Victory.json create mode 100644 Questionable.Model/Questing/Converter/StatusConverter.cs create mode 100644 Questionable.Model/Questing/EStatus.cs create mode 100644 Questionable/Controller/Steps/Interactions/StatusOff.cs diff --git a/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs b/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs index 45f2a858..d65ca794 100644 --- a/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs +++ b/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs @@ -95,6 +95,8 @@ internal static class QuestStepExtensions .AsSyntaxNodeOrToken(), Assignment(nameof(QuestStep.Action), step.Action, emptyStep.Action) .AsSyntaxNodeOrToken(), + Assignment(nameof(QuestStep.Status), step.Status, emptyStep.Status) + .AsSyntaxNodeOrToken(), Assignment(nameof(QuestStep.EnemySpawnType), step.EnemySpawnType, emptyStep.EnemySpawnType) .AsSyntaxNodeOrToken(), diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/102_My First Dagger.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/102_My First Dagger.json index 431a9e90..bece61c8 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/102_My First Dagger.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/102_My First Dagger.json @@ -53,7 +53,8 @@ "Prompt": "TEXT_CLSROG011_00102_Q1_000_030", "Yes": true } - ] + ], + "NextQuestId": 104 } ] } diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/104_Stabbers in Yer Fambles.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/104_Stabbers in Yer Fambles.json new file mode 100644 index 00000000..a87348bb --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/104_Stabbers in Yer Fambles.json @@ -0,0 +1,196 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": 31.662792, + "Y": 44.020653, + "Z": 146.94322 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "EnemySpawnType": "OverworldEnemies", + "ComplexCombatData": [ + { + "DataId": 347, + "MinimumKillCount": 3, + "CompletionQuestVariablesFlags": [ + { + "Low": 3 + }, + null, + null, + null, + null, + null + ] + } + ], + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)" + ], + "CompletionQuestVariablesFlags": [ + { + "Low": 3 + }, + null, + null, + null, + null, + null + ] + }, + { + "Position": { + "X": 74.15681, + "Y": 45.953808, + "Z": 169.73499 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "EnemySpawnType": "OverworldEnemies", + "ComplexCombatData": [ + { + "DataId": 338, + "MinimumKillCount": 3, + "CompletionQuestVariablesFlags": [ + null, + { + "Low": 3 + }, + null, + null, + null, + null + ] + } + ], + "CompletionQuestVariablesFlags": [ + null, + { + "Low": 3 + }, + null, + null, + null, + null + ] + }, + { + "Position": { + "X": 5.6626997, + "Y": 42.625427, + "Z": 55.983746 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "EnemySpawnType": "OverworldEnemies", + "ComplexCombatData": [ + { + "DataId": 383, + "MinimumKillCount": 3, + "CompletionQuestVariablesFlags": [ + null, + { + "High": 3 + }, + null, + null, + null, + null + ] + } + ], + "CompletionQuestVariablesFlags": [ + null, + { + "High": 3 + }, + null, + null, + null, + null + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 110 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/110_A Dainty Dilemma.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/110_A Dainty Dilemma.json new file mode 100644 index 00000000..062d18b9 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/110_A Dainty Dilemma.json @@ -0,0 +1,298 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1010197, + "Position": { + "X": -150.98804, + "Y": -129.4397, + "Z": 266.31567 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2004936, + "Position": { + "X": -151.90363, + "Y": -128.16058, + "Z": 256.8551 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "SkipConditions": { + "StepIf": { + "InTerritory": [ + 135 + ] + } + } + }, + { + "Position": { + "X": 174.3623, + "Y": 39.811382, + "Z": 52.27733 + }, + "TerritoryId": 135, + "InteractionType": "Combat", + "EnemySpawnType": "OverworldEnemies", + "Fly": true, + "KillEnemyDataIds": [ + 324 + ], + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1010197, + "Position": { + "X": -150.98804, + "Y": -129.4397, + "Z": 266.31567 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 2004936, + "Position": { + "X": -151.90363, + "Y": -128.16058, + "Z": 256.8551 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] The Aftcastle" + ], + "SkipConditions": { + "StepIf": { + "InTerritory": [ + 128 + ] + } + } + }, + { + "DataId": 1005411, + "Position": { + "X": 13.412659, + "Y": 40.2, + "Z": -13.260071 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_CLSROG050_00110_Q1_000_061", + "Answer": "TEXT_CLSROG050_00110_A1_000_064" + } + ] + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1010206, + "Position": { + "X": 107.71338, + "Y": 47.783855, + "Z": 50.736206 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Fly": true, + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)" + ] + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "Position": { + "X": 101.76026, + "Y": 48.69752, + "Z": 10.89893 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "EnemySpawnType": "OverworldEnemies", + "KillEnemyDataIds": [ + 769 + ], + "Fly": true + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 1010206, + "Position": { + "X": 107.71338, + "Y": 47.783855, + "Z": 50.736206 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 8, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 126 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/126_Stray into the Shadows.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/126_Stray into the Shadows.json new file mode 100644 index 00000000..bf69b456 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/126_Stray into the Shadows.json @@ -0,0 +1,346 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1010198, + "Position": { + "X": -152.11719, + "Y": -129.4397, + "Z": 267.10913 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2004936, + "Position": { + "X": -151.8734, + "Y": -128.1446, + "Z": 256.8712 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "SkipConditions": { + "StepIf": { + "InTerritory": [ + 128 + ] + } + } + }, + { + "DataId": 1010212, + "Position": { + "X": -50.8584, + "Y": 40, + "Z": 111.40613 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1010211, + "Position": { + "X": -42.22174, + "Y": 42.249126, + "Z": 115.89221 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "Position": { + "X": -62.300663, + "Y": 42.300003, + "Z": -151.94725 + }, + "StopDistance": 0.5, + "TerritoryId": 128, + "InteractionType": "Action", + "Action": "Hide", + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Culinarians' Guild" + ], + "SkipConditions": { + "StepIf": { + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + } + }, + { + "Position": { + "X": -54.962505, + "Y": 42.300007, + "Z": -158.14607 + }, + "StopDistance": 0.5, + "TerritoryId": 128, + "InteractionType": "WalkTo", + "DisableNavmesh": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "TerritoryId": 128, + "InteractionType": "StatusOff", + "Status": "Hidden" + }, + { + "Position": { + "X": -155.25468, + "Y": 18, + "Z": 28.882175 + }, + "StopDistance": 0.5, + "TerritoryId": 129, + "InteractionType": "Action", + "Action": "Hide", + "AethernetShortcut": [ + "[Limsa Lominsa] Culinarians' Guild", + "[Limsa Lominsa] Hawkers' Alley" + ], + "SkipConditions": { + "StepIf": { + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + } + } + }, + { + "Position": { + "X": -150.91245, + "Y": 18.2, + "Z": 34.06711 + }, + "StopDistance": 0.5, + "TerritoryId": 129, + "InteractionType": "WalkTo", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "TerritoryId": 129, + "InteractionType": "StatusOff", + "Status": "Hidden" + }, + { + "Position": { + "X": -187.95581, + "Y": 1.2697256, + "Z": 208.46738 + }, + "StopDistance": 0.5, + "TerritoryId": 129, + "InteractionType": "Action", + "Action": "Hide", + "AethernetShortcut": [ + "[Limsa Lominsa] Hawkers' Alley", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "StepIf": { + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + } + } + }, + { + "Position": { + "X": -190.81572, + "Y": 0.9999907, + "Z": 210.59836 + }, + "TerritoryId": 129, + "InteractionType": "WalkTo", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "TerritoryId": 129, + "InteractionType": "StatusOff", + "Status": "Hidden" + }, + { + "DataId": 1010213, + "Position": { + "X": -161.12, + "Y": 1.9499999, + "Z": 239.30713 + }, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 1010213, + "Position": { + "X": -161.12, + "Y": 1.9499999, + "Z": 239.30713 + }, + "TerritoryId": 129, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 1010213, + "Position": { + "X": -161.12, + "Y": 1.9499999, + "Z": 239.30713 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] Hawkers' Alley", + "[Limsa Lominsa] Fishermens' Guild" + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129 + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 144 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/144_Stifled Screams.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/144_Stifled Screams.json new file mode 100644 index 00000000..be10582b --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/144_Stifled Screams.json @@ -0,0 +1,144 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1010199, + "Position": { + "X": 256.12268, + "Y": 21.097961, + "Z": 581.3839 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks", + "Fly": true + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 2004861, + "Position": { + "X": -131.63965, + "Y": 0.503479, + "Z": 729.9762 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "Fly": true + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1010218, + "Position": { + "X": 319.44763, + "Y": -36.353825, + "Z": 346.76123 + }, + "TerritoryId": 138, + "InteractionType": "Interact", + "Fly": true, + "AetheryteShortcut": "Western La Noscea - Aleport" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1010218, + "Position": { + "X": 319.44763, + "Y": -36.353825, + "Z": 346.76123 + }, + "TerritoryId": 138, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1010218, + "Position": { + "X": 319.44763, + "Y": -36.353825, + "Z": 346.76123 + }, + "StopDistance": 5, + "TerritoryId": 138, + "InteractionType": "CompleteQuest", + "NextQuestId": 145 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/145_Slave to the Code.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/145_Slave to the Code.json new file mode 100644 index 00000000..18b09b12 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/145_Slave to the Code.json @@ -0,0 +1,86 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1010218, + "Position": { + "X": 319.44763, + "Y": -36.353825, + "Z": 346.76123 + }, + "StopDistance": 5, + "TerritoryId": 138, + "InteractionType": "AcceptQuest", + "AetheryteShortcut": "Western La Noscea - Aleport", + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": 593.2056, + "Y": 43.88314, + "Z": 304.65137 + }, + "TerritoryId": 138, + "InteractionType": "WalkTo", + "Fly": true + }, + { + "DataId": 1010228, + "Position": { + "X": 594.1709, + "Y": 43.893982, + "Z": 303.76135 + }, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 146 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/146_Grinners in the Mist.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/146_Grinners in the Mist.json new file mode 100644 index 00000000..091bc9be --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/146_Grinners in the Mist.json @@ -0,0 +1,258 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2004936, + "Position": { + "X": -151.90363, + "Y": -128.16058, + "Z": 256.8551 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129 + }, + { + "DataId": 1010238, + "Position": { + "X": 146.71545, + "Y": 62.3279, + "Z": 291.82874 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)" + ], + "Fly": true + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "Position": { + "X": 168.34132, + "Y": 69.5, + "Z": 327.67975 + }, + "StopDistance": 0.5, + "TerritoryId": 134, + "InteractionType": "Action", + "Action": "Hide" + }, + { + "Position": { + "X": 178.24341, + "Y": 69.5, + "Z": 328.4606 + }, + "TerritoryId": 134, + "InteractionType": "WalkTo" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "TerritoryId": 134, + "InteractionType": "StatusOff", + "Status": "Hidden" + }, + { + "DataId": 1010238, + "Position": { + "X": 146.71545, + "Y": 62.3279, + "Z": 291.82874 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Fly": true + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1010242, + "Position": { + "X": 7.2174683, + "Y": 57.91383, + "Z": -307.11835 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "AetheryteShortcut": "Middle La Noscea - Summerford Farms", + "Fly": true, + "EnemySpawnType": "AfterInteraction", + "KillEnemyDataIds": [ + 3567, + 3568 + ] + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1010242, + "Position": { + "X": 7.2174683, + "Y": 57.91383, + "Z": -307.11835 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 1010237, + "Position": { + "X": 242.29797, + "Y": 8.000164, + "Z": 668.2383 + }, + "TerritoryId": 135, + "InteractionType": "SinglePlayerDuty", + "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks", + "Fly": true + } + ] + }, + { + "Sequence": 8, + "Steps": [ + { + "DataId": 1010237, + "Position": { + "X": 242.29797, + "Y": 8.000164, + "Z": 668.2383 + }, + "StopDistance": 7, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 148 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/148_Sweet Sorrows.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/148_Sweet Sorrows.json new file mode 100644 index 00000000..78735a35 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/148_Sweet Sorrows.json @@ -0,0 +1,292 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2004936, + "Position": { + "X": -151.90363, + "Y": -128.16058, + "Z": 256.8551 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "SkipConditions": { + "StepIf": { + "InTerritory": [ + 134, + 135 + ] + } + } + }, + { + "Position": { + "X": 212.54845, + "Y": 65.80573, + "Z": 285.71436 + }, + "TerritoryId": 134, + "InteractionType": "WalkTo", + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)" + ], + "Fly": true, + "SkipConditions": { + "StepIf": { + "InTerritory": [ + 135 + ] + } + } + }, + { + "Position": { + "X": 509.26575, + "Y": 95.90476, + "Z": -446.11078 + }, + "StopDistance": 0.5, + "TerritoryId": 135, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [ + 2864, + 2865, + 2866 + ], + "Fly": true + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1010252, + "Position": { + "X": 508.23218, + "Y": 95.95811, + "Z": -449.82074 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 2004936, + "Position": { + "X": -151.90363, + "Y": -128.16058, + "Z": 256.8551 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "SkipConditions": { + "StepIf": { + "AetheryteUnlocked": "Eastern La Noscea - Costa Del Sol" + } + }, + "$": "Pathfinder ref" + }, + { + "DataId": 1000868, + "Position": { + "X": -192.00433, + "Y": 0.9999907, + "Z": 211.68835 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 137, + "SkipConditions": { + "StepIf": { + "AetheryteUnlocked": "Eastern La Noscea - Costa Del Sol" + } + } + }, + { + "TerritoryId": 137, + "InteractionType": "AttuneAetheryte", + "Aetheryte": "Eastern La Noscea - Costa Del Sol", + "SkipConditions": { + "StepIf": { + "AetheryteUnlocked": "Eastern La Noscea - Costa Del Sol" + } + } + }, + { + "Position": { + "X": 449.17413, + "Y": 16.072088, + "Z": 406.06335 + }, + "TerritoryId": 137, + "InteractionType": "WalkTo", + "Fly": true, + "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol", + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } + }, + { + "DataId": 1010251, + "Position": { + "X": 450.82776, + "Y": 16.18121, + "Z": 406.69873 + }, + "TerritoryId": 137, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1010251, + "Position": { + "X": 450.82776, + "Y": 16.18121, + "Z": 406.69873 + }, + "TerritoryId": 137, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 1010250, + "Position": { + "X": 448.47778, + "Y": 16.154829, + "Z": 408.77393 + }, + "TerritoryId": 137, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 154 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/154_Market for Death.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/154_Market for Death.json new file mode 100644 index 00000000..d0908b94 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/154_Market for Death.json @@ -0,0 +1,160 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": 410.07083, + "Y": 31.504957, + "Z": -12.586371 + }, + "TerritoryId": 138, + "InteractionType": "WalkTo", + "AetheryteShortcut": "Western La Noscea - Aleport", + "TargetTerritoryId": 139, + "Fly": true + }, + { + "Position": { + "X": -436.69995, + "Y": -2.0159357, + "Z": 48.819775 + }, + "StopDistance": 1, + "TerritoryId": 139, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [ + 3569, + 3570, + 3571 + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2004916, + "Position": { + "X": -436.02655, + "Y": -1.9379272, + "Z": 48.569458 + }, + "TerritoryId": 139, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1010261, + "Position": { + "X": -437.3694, + "Y": -2.369183, + "Z": 55.954834 + }, + "StopDistance": 7, + "TerritoryId": 139, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1010267, + "Position": { + "X": -449.08832, + "Y": 21.634577, + "Z": -327.93164 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "AetheryteShortcut": "Middle La Noscea - Summerford Farms", + "Fly": true + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 155 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/155_Cloying Victory.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/155_Cloying Victory.json new file mode 100644 index 00000000..4b7c8044 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/155_Cloying Victory.json @@ -0,0 +1,108 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Fishermens' Guild" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, + "StepIf": { + "ExtraCondition": "RoguesGuild" + } + } + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2004936, + "Position": { + "X": -151.90363, + "Y": -128.16058, + "Z": 256.8551 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129 + }, + { + "DataId": 2004863, + "Position": { + "X": 4.4403076, + "Y": 44.47998, + "Z": 121.29382 + }, + "TerritoryId": 128, + "InteractionType": "SinglePlayerDuty", + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1009944, + "Position": { + "X": -152.66656, + "Y": 2.8562405, + "Z": 243.18298 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1009943, + "Position": { + "X": -153.36847, + "Y": -129.4397, + "Z": 265.88843 + }, + "StopDistance": 7, + "TerritoryId": 129, + "InteractionType": "CompleteQuest", + "NextQuestId": 212 + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/212_Peasants by Day, Ninjas by Night.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/212_Peasants by Day, Ninjas by Night.json index b4d68b9e..c0aece19 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/212_Peasants by Day, Ninjas by Night.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/212_Peasants by Day, Ninjas by Night.json @@ -21,16 +21,11 @@ "[Limsa Lominsa] Fishermens' Guild" ], "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + }, "StepIf": { - "NearPosition": { - "Position": { - "X": -151.80984, - "Y": -128.6493, - "Z": 265.27332 - }, - "TerritoryId": 129, - "MaximumDistance": 50 - } + "ExtraCondition": "RoguesGuild" } } }, @@ -41,6 +36,7 @@ "Y": -129.4397, "Z": 265.88843 }, + "StopDistance": 7, "TerritoryId": 129, "InteractionType": "AcceptQuest" } @@ -98,7 +94,8 @@ "Z": -2.3651733 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "Fly": true } ] }, @@ -135,9 +132,17 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", + "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true } - } + }, + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_JOBNIN300_00212_Q2_000_000", + "Yes": true + } + ] } ] }, diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/213_My First Mudra.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/213_My First Mudra.json index 36039c5b..68637f76 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/213_My First Mudra.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/213_My First Mudra.json @@ -18,15 +18,7 @@ "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137, @@ -77,9 +69,15 @@ } }, { - "InteractionType": "WaitForManualProgress", + "DataId": 2004927, + "Position": { + "X": -10.605103, + "Y": 41.397705, + "Z": 267.87207 + }, "TerritoryId": 137, - "Comment": "Use Ten -> Fuma Shuriken on the dummy" + "InteractionType": "Action", + "Action": "Fuma Shuriken" } ] }, diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/215_Once Upon a Time in Doma.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/215_Once Upon a Time in Doma.json index 4f10975f..a0d21f69 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/215_Once Upon a Time in Doma.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/215_Once Upon a Time in Doma.json @@ -18,15 +18,7 @@ "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -71,9 +63,15 @@ } }, { - "InteractionType": "WaitForManualProgress", + "DataId": 2004928, + "Position": { + "X": -10.605103, + "Y": 41.397705, + "Z": 267.87207 + }, "TerritoryId": 137, - "Comment": "Use Ten -> Chi -> Raiton on the dummy" + "InteractionType": "Action", + "Action": "Raiton" } ] }, @@ -96,9 +94,16 @@ "Sequence": 3, "Steps": [ { - "InteractionType": "WaitForManualProgress", + "DataId": 2004929, + "Position": { + "X": -10.605103, + "Y": 41.397705, + "Z": 267.87207 + }, + "StopDistance": 7, "TerritoryId": 137, - "Comment": "Use Chi -> Ten -> Katon on the dummy" + "InteractionType": "Action", + "Action": "Katon" } ] }, @@ -180,15 +185,7 @@ "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/216_Pirates versus Ninjas.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/216_Pirates versus Ninjas.json index 5449a01e..f93110de 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/216_Pirates versus Ninjas.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/216_Pirates versus Ninjas.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -40,7 +31,14 @@ "Z": 257.98413 }, "TerritoryId": 137, - "InteractionType": "AcceptQuest" + "InteractionType": "AcceptQuest", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_JOBNIN400_00216_Q1_000_000", + "Answer": "TEXT_JOBNIN400_00216_A1_000_001" + } + ] } ] }, diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/217_Ninja Bathin'.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/217_Ninja Bathin'.json index 2108a0ce..47e60936 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/217_Ninja Bathin'.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/217_Ninja Bathin'.json @@ -207,19 +207,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/232_Tough Guys.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/232_Tough Guys.json index 277b3c15..da4da560 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/232_Tough Guys.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/232_Tough Guys.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/233_The Crow Knows.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/233_The Crow Knows.json index 4bc21c0a..6d437dd4 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/233_The Crow Knows.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/233_The Crow Knows.json @@ -86,19 +86,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/234_Master and Student.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/234_Master and Student.json index 04608f05..8f2abd34 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/234_Master and Student.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/234_Master and Student.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -55,7 +46,14 @@ "Z": 250.32422 }, "TerritoryId": 137, - "InteractionType": "Interact" + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_JOBNIN500_00234_Q1_000_000", + "Answer": "TEXT_JOBNIN500_00234_A1_000_002" + } + ] } ] }, @@ -162,19 +160,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/235_Strangers in a Strange Land.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/235_Strangers in a Strange Land.json index c0da4f4e..5bd22f6b 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/235_Strangers in a Strange Land.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/235_Strangers in a Strange Land.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -191,19 +182,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1684_The Impossible Girl.json b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1684_The Impossible Girl.json index b4bf12a1..62ab3435 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1684_The Impossible Girl.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1684_The Impossible Girl.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -163,19 +154,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1685_Ninja Assassin.json b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1685_Ninja Assassin.json index 7fd6311f..3bf578ba 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1685_Ninja Assassin.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1685_Ninja Assassin.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -75,18 +66,15 @@ "Sequence": 2, "Steps": [ { + "DataId": 2005928, "Position": { - "X": -11.615023, - "Y": 66.32614, - "Z": 421.28235 + "X": -22.842834, + "Y": 66.300415, + "Z": 426.1692 }, "TerritoryId": 135, - "InteractionType": "WalkTo" - }, - { - "TerritoryId": 135, - "InteractionType": "WaitForManualProgress", - "Comment": "Use Raiton on destination" + "InteractionType": "Action", + "Action": "Raiton" } ] }, @@ -94,18 +82,15 @@ "Sequence": 3, "Steps": [ { + "DataId": 2005929, "Position": { - "X": -45.41632, - "Y": 50.40381, - "Z": 519.4183 + "X": -46.707886, + "Y": 48.41687, + "Z": 529.1676 }, "TerritoryId": 135, - "InteractionType": "WalkTo" - }, - { - "TerritoryId": 135, - "InteractionType": "WaitForManualProgress", - "Comment": "Use Raiton on destination" + "InteractionType": "Action", + "Action": "Raiton" } ] }, @@ -113,18 +98,15 @@ "Sequence": 4, "Steps": [ { + "DataId": 2005930, "Position": { - "X": -91.23599, - "Y": 28.63774, - "Z": 617.4151 + "X": -93.888794, + "Y": 26.932129, + "Z": 623.25464 }, "TerritoryId": 135, - "InteractionType": "WalkTo" - }, - { - "TerritoryId": 135, - "InteractionType": "WaitForManualProgress", - "Comment": "Use Raiton on destination" + "InteractionType": "Action", + "Action": "Raiton" } ] }, @@ -193,19 +175,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1686_Medieval Espionage.json b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1686_Medieval Espionage.json index 1fac612b..5dd02706 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1686_Medieval Espionage.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1686_Medieval Espionage.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -182,18 +173,9 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1687_Staying Alive.json b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1687_Staying Alive.json index 9d8c74d8..52e53ea9 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1687_Staying Alive.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1687_Staying Alive.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -111,6 +102,7 @@ }, "TerritoryId": 398, "InteractionType": "WalkTo", + "Fly": true, "AetheryteShortcut": "The Dravanian Forelands - Tailfeather" }, { @@ -138,7 +130,8 @@ "TerritoryId": 398, "InteractionType": "Combat", "EnemySpawnType": "AfterInteraction", - "KillEnemyDataIds": [5042, 4619] + "KillEnemyDataIds": [5042, 4619], + "Fly": true } ] }, @@ -153,7 +146,8 @@ "Z": -217.02905 }, "TerritoryId": 398, - "InteractionType": "Interact" + "InteractionType": "Interact", + "Fly": true } ] }, @@ -170,18 +164,9 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1688_In Her Defense.json b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1688_In Her Defense.json index 5003e063..60b6c1cb 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/NIN/1688_In Her Defense.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/NIN/1688_In Her Defense.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -114,19 +105,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -156,7 +138,14 @@ "TerritoryId": 135, "Fly": true, "InteractionType": "Interact", - "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks" + "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_JOBNIN600_01688_Q1_000_000", + "Answer": "TEXT_JOBNIN600_01688_A1_000_010" + } + ] } ] }, @@ -220,18 +209,9 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2948_Search for the Stolen Scroll.json b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2948_Search for the Stolen Scroll.json index da54b86a..8cec6e1b 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2948_Search for the Stolen Scroll.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2948_Search for the Stolen Scroll.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -115,6 +106,13 @@ "AethernetShortcut": [ "[Limsa Lominsa] Aetheryte Plaza", "[Limsa Lominsa] The Aftcastle" + ], + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_JOBNIN601_02948_Q1_000_031", + "Answer": "TEXT_JOBNIN601_02948_A3_000_034" + } ] } ] @@ -210,18 +208,9 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2949_Ninja Bathin' Redux.json b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2949_Ninja Bathin' Redux.json index 0db541cf..a4e48192 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2949_Ninja Bathin' Redux.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2949_Ninja Bathin' Redux.json @@ -15,19 +15,10 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true }, "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 @@ -74,7 +65,8 @@ "Z": -60.22008 }, "TerritoryId": 628, - "InteractionType": "WalkTo", + "InteractionType": "Action", + "Action": "Hide", "AethernetShortcut": [ "[Kugane] Sekiseigumi Barracks", "[Kugane] Aetheryte Plaza" @@ -93,11 +85,20 @@ } }, { - "InteractionType": "WaitForManualProgress", + "Position": { + "X": -46.572186, + "Y": 3.0135043, + "Z": -71.70311 + }, "TerritoryId": 628, - "Comment": "Hide, then approach Loutish Lickspittle", + "InteractionType": "WalkTo", "CompletionQuestVariablesFlags": [null, null, null, null, null, 128] }, + { + "TerritoryId": 628, + "InteractionType": "StatusOff", + "Status": "Hidden" + }, { "Position": { "X": -53.864307, @@ -105,18 +106,28 @@ "Z": -106.929726 }, "TerritoryId": 628, - "InteractionType": "WalkTo" + "InteractionType": "Action", + "Action": "Hide" }, { - "InteractionType": "WaitForManualProgress", + "Position": { + "X": -82.41595, + "Y": -7.300003, + "Z": -111.459076 + }, "TerritoryId": 628, - "Comment": "Hide, then approach the two NPCs downstairs" + "InteractionType": "WalkTo" } ] }, { "Sequence": 3, "Steps": [ + { + "TerritoryId": 628, + "InteractionType": "StatusOff", + "Status": "Hidden" + }, { "DataId": 1023555, "Position": { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2951_True Enlightenment.json b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2951_True Enlightenment.json index 326f2abc..0d833ebd 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2951_True Enlightenment.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2951_True Enlightenment.json @@ -17,7 +17,14 @@ "AetheryteShortcut": "Yanxia - Namai", "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true } - } + }, + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_JOBNIN680_02951_Q1_000_003", + "Answer": "TEXT_JOBNIN680_02951_A3_000_006" + } + ] } ] }, @@ -48,7 +55,14 @@ "Z": -96.75751 }, "TerritoryId": 614, - "InteractionType": "Interact" + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_JOBNIN680_02951_SYSTEM_100_049", + "Yes": true + } + ] } ] }, @@ -91,10 +105,12 @@ "Y": 16.160986, "Z": 390.68732 }, + "StopDistance": 1, "TerritoryId": 614, "InteractionType": "Combat", "KillEnemyDataIds": [6641], - "EnemySpawnType": "OverworldEnemies" + "EnemySpawnType": "OverworldEnemies", + "Fly": true } ] }, @@ -110,7 +126,14 @@ }, "TerritoryId": 614, "InteractionType": "Interact", - "AetheryteShortcut": "Yanxia - Namai" + "AetheryteShortcut": "Yanxia - Namai", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_JOBNIN680_02951_SYSTEM_100_049", + "Yes": true + } + ] } ] }, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2952_When Clans Collide.json b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2952_When Clans Collide.json index ba6035e0..202dfebd 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/NIN/2952_When Clans Collide.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/NIN/2952_When Clans Collide.json @@ -17,7 +17,14 @@ "AetheryteShortcut": "Yanxia - Namai", "SkipConditions": { "AetheryteShortcutIf": { "InSameTerritory": true } - } + }, + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_JOBNIN700_02952_Q1_100_004", + "Answer": "TEXT_JOBNIN700_02952_A1_100_005" + } + ] } ] }, @@ -34,7 +41,7 @@ "TerritoryId": 622, "InteractionType": "SinglePlayerDuty", "Fly": true, - "AetheryteShortcut": "Azim Steppe - Dawn Throne", + "AetheryteShortcut": "Azim Steppe - Reunion", "SkipConditions": { "AetheryteShortcutIf": { "NearPosition": { @@ -64,18 +71,9 @@ "TerritoryId": 137, "InteractionType": "Interact", "AetheryteShortcut": "Eastern La Noscea - Wineport", - "Fly": true, "SkipConditions": { "StepIf": { - "NearPosition": { - "Position": { - "X": -25.149055, - "Y": -24.773232, - "Z": 258.15594 - }, - "TerritoryId": 137, - "MaximumDistance": 25 - } + "ExtraCondition": "DockStorehouse" } }, "TargetTerritoryId": 137 diff --git a/QuestPaths/quest-v1.json b/QuestPaths/quest-v1.json index fb18c119..dc821c51 100644 --- a/QuestPaths/quest-v1.json +++ b/QuestPaths/quest-v1.json @@ -118,6 +118,7 @@ "Say", "Emote", "Action", + "StatusOff", "WaitForNpcAtPosition", "WaitForManualProgress", "Duty", @@ -945,7 +946,8 @@ "Hop-step", "Fuma Shuriken", "Katon", - "Raiton" + "Raiton", + "Hide" ] } }, @@ -954,6 +956,29 @@ ] } }, + { + "if": { + "properties": { + "InteractionType": { + "const": "StatusOff" + } + } + }, + "then": { + "properties": { + "Status": { + "type": "string", + "description": "The status to disable", + "enum": [ + "Hidden" + ] + } + }, + "required": [ + "Status" + ] + } + }, { "if": { "properties": { diff --git a/Questionable.Model/Questing/Converter/ActionConverter.cs b/Questionable.Model/Questing/Converter/ActionConverter.cs index 9b1be7dd..7a217424 100644 --- a/Questionable.Model/Questing/Converter/ActionConverter.cs +++ b/Questionable.Model/Questing/Converter/ActionConverter.cs @@ -35,6 +35,7 @@ public sealed class ActionConverter() : EnumConverter(Values) { EAction.BlueGulal, "Blue Gulal" }, { EAction.ElectrixFlux, "Electric Flux" }, { EAction.HopStep, "Hop-step" }, + { EAction.Hide, "Hide" }, { EAction.FumaShuriken, "Fuma Shuriken" }, { EAction.Katon, "Katon" }, { EAction.Raiton, "Raiton" }, diff --git a/Questionable.Model/Questing/Converter/InteractionTypeConverter.cs b/Questionable.Model/Questing/Converter/InteractionTypeConverter.cs index aef951bf..b8367ebb 100644 --- a/Questionable.Model/Questing/Converter/InteractionTypeConverter.cs +++ b/Questionable.Model/Questing/Converter/InteractionTypeConverter.cs @@ -21,6 +21,7 @@ public sealed class InteractionTypeConverter() : EnumConverter { EInteractionType.Say, "Say" }, { EInteractionType.Emote, "Emote" }, { EInteractionType.Action, "Action" }, + { EInteractionType.StatusOff, "StatusOff" }, { EInteractionType.WaitForObjectAtPosition, "WaitForNpcAtPosition" }, { EInteractionType.WaitForManualProgress, "WaitForManualProgress" }, { EInteractionType.Duty, "Duty" }, diff --git a/Questionable.Model/Questing/Converter/StatusConverter.cs b/Questionable.Model/Questing/Converter/StatusConverter.cs new file mode 100644 index 00000000..e16c493b --- /dev/null +++ b/Questionable.Model/Questing/Converter/StatusConverter.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using Questionable.Model.Common.Converter; + +namespace Questionable.Model.Questing.Converter; + +public sealed class StatusConverter() : EnumConverter(Values) +{ + private static readonly Dictionary Values = new() + { + { EStatus.Hidden, "Hidden" }, + }; +} diff --git a/Questionable.Model/Questing/EAction.cs b/Questionable.Model/Questing/EAction.cs index 71549e6e..42928173 100644 --- a/Questionable.Model/Questing/EAction.cs +++ b/Questionable.Model/Questing/EAction.cs @@ -36,6 +36,7 @@ public enum EAction BlueGulal = 29384, ElectrixFlux = 29718, HopStep = 31116, + Hide = 2245, Ten = 2259, Ninjutsu = 2260, Chi = 2261, @@ -43,6 +44,7 @@ public enum EAction FumaShuriken = 2265, Katon = 2266, Raiton = 2267, + RabbitMedium = 2272, CollectMiner = 240, ScourMiner = 22182, diff --git a/Questionable.Model/Questing/EInteractionType.cs b/Questionable.Model/Questing/EInteractionType.cs index af23e90e..137078eb 100644 --- a/Questionable.Model/Questing/EInteractionType.cs +++ b/Questionable.Model/Questing/EInteractionType.cs @@ -20,6 +20,7 @@ public enum EInteractionType Say, Emote, Action, + StatusOff, WaitForObjectAtPosition, WaitForManualProgress, Duty, diff --git a/Questionable.Model/Questing/EStatus.cs b/Questionable.Model/Questing/EStatus.cs new file mode 100644 index 00000000..780f1a4e --- /dev/null +++ b/Questionable.Model/Questing/EStatus.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; +using Questionable.Model.Questing.Converter; + +namespace Questionable.Model.Questing; + +[JsonConverter(typeof(StatusConverter))] +public enum EStatus : uint +{ + GatheringRateUp = 218, + Hidden = 614, + Eukrasia = 2606, +} diff --git a/Questionable.Model/Questing/QuestStep.cs b/Questionable.Model/Questing/QuestStep.cs index dcb8042a..5a699818 100644 --- a/Questionable.Model/Questing/QuestStep.cs +++ b/Questionable.Model/Questing/QuestStep.cs @@ -63,6 +63,7 @@ public sealed class QuestStep public EEmote? Emote { get; set; } public ChatMessage? ChatMessage { get; set; } public EAction? Action { get; set; } + public EStatus? Status { get; set; } public EEnemySpawnType? EnemySpawnType { get; set; } public List KillEnemyDataIds { get; set; } = []; diff --git a/Questionable/Controller/Steps/Gathering/DoGather.cs b/Questionable/Controller/Steps/Gathering/DoGather.cs index 169b0b7c..701f8534 100644 --- a/Questionable/Controller/Steps/Gathering/DoGather.cs +++ b/Questionable/Controller/Steps/Gathering/DoGather.cs @@ -37,8 +37,6 @@ internal static class DoGather ICondition condition, ILogger logger) : TaskExecutor { - private const uint StatusGatheringRateUp = 218; - private bool _wasGathering; private SlotInfo? _slotToGather; private Queue? _actionQueue; @@ -155,7 +153,7 @@ internal static class DoGather //uint gp = clientState.LocalPlayer!.CurrentGp; Queue actions = new(); - if (!gameFunctions.HasStatus(StatusGatheringRateUp)) + if (!gameFunctions.HasStatus(EStatus.GatheringRateUp)) { // do we have an alternative item? only happens for 'evaluation' leve quests if (Task.Request.AlternativeItemId != 0) diff --git a/Questionable/Controller/Steps/Interactions/Action.cs b/Questionable/Controller/Steps/Interactions/Action.cs index e6c4f1f4..7255fa0b 100644 --- a/Questionable/Controller/Steps/Interactions/Action.cs +++ b/Questionable/Controller/Steps/Interactions/Action.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using Dalamud.Game.ClientState.Objects.Types; +using FFXIVClientStructs.FFXIV.Client.Game; using Microsoft.Extensions.Logging; using Questionable.Controller.Steps.Common; using Questionable.Functions; @@ -29,7 +31,13 @@ internal static class Action public static ITask OnObject(uint? dataId, EAction action) { - return new UseOnObject(dataId, action); + if (action is EAction.FumaShuriken or EAction.Katon or EAction.Raiton) + { + ArgumentNullException.ThrowIfNull(dataId); + return new UseMudraOnObject(dataId.Value, action); + } + else + return new UseOnObject(dataId, action); } } @@ -62,19 +70,18 @@ internal static class Action { if (Task.Action == EAction.Diagnosis) { - uint eukrasiaAura = 2606; // If SGE have Eukrasia status, we need to remove it. - if (gameFunctions.HasStatus(eukrasiaAura)) + if (gameFunctions.HasStatus(EStatus.Eukrasia)) { - if (GameFunctions.RemoveStatus(eukrasiaAura)) + if (GameFunctions.RemoveStatus(EStatus.Eukrasia)) { // Introduce a delay of 2 seconds before using the next action (otherwise it will try and use Eukrasia Diagnosis) _continueAt = DateTime.Now.AddSeconds(2); - return true; + return true; } } } - + _usedAction = gameFunctions.UseAction(gameObject, Task.Action); _continueAt = DateTime.Now.AddSeconds(0.5); return true; @@ -118,4 +125,67 @@ internal static class Action return ETaskResult.TaskComplete; } } + + internal sealed record UseMudraOnObject(uint DataId, EAction Action) : ITask + { + public override string ToString() => $"Mudra({Action})"; + } + + internal sealed class UseMudraOnObjectExecutor( + GameFunctions gameFunctions, + ILogger logger) : TaskExecutor + { + private static readonly ReadOnlyDictionary> Combos = + new Dictionary> + { + { EAction.FumaShuriken, new() { { EAction.Ninjutsu, EAction.Ten } } }, + { EAction.Raiton, new() { { EAction.Ninjutsu, EAction.Ten }, { EAction.FumaShuriken, EAction.Chi } } }, + { EAction.Katon, new() {{ EAction.Ninjutsu, EAction.Chi }, { EAction.FumaShuriken, EAction.Ten } } } + }.AsReadOnly(); + + private DateTime _continueAt = DateTime.MinValue; + + protected override bool Start() => true; + + public override unsafe ETaskResult Update() + { + if (DateTime.Now < _continueAt) + return ETaskResult.StillRunning; + + EAction adjustedNinjutsuId = (EAction)ActionManager.Instance()->GetAdjustedActionId((uint)EAction.Ninjutsu); + if (adjustedNinjutsuId == EAction.RabbitMedium) + { + _continueAt = DateTime.Now.AddSeconds(1); + return ETaskResult.StillRunning; + } + + IGameObject? gameObject = gameFunctions.FindObjectByDataId(Task.DataId); + if (gameObject == null || !gameObject.IsTargetable) + return ETaskResult.StillRunning; + + if (adjustedNinjutsuId == Task.Action) + { + _continueAt = DateTime.Now.AddSeconds(0.25); + return gameFunctions.UseAction(gameObject, Task.Action) + ? ETaskResult.TaskComplete + : ETaskResult.StillRunning; + } + + if (Combos.TryGetValue(Task.Action, out var combo)) + { + if (combo.TryGetValue(adjustedNinjutsuId, out var mudra)) + { + _continueAt = DateTime.Now.AddSeconds(0.25); + gameFunctions.UseAction(mudra); + return ETaskResult.StillRunning; + } + + _continueAt = DateTime.Now.AddSeconds(0.25); + return ETaskResult.StillRunning; + } + + logger.LogError("Unable to find relevant combo for {Action}", Task.Action); + return ETaskResult.TaskComplete; + } + } } diff --git a/Questionable/Controller/Steps/Interactions/StatusOff.cs b/Questionable/Controller/Steps/Interactions/StatusOff.cs new file mode 100644 index 00000000..746f7394 --- /dev/null +++ b/Questionable/Controller/Steps/Interactions/StatusOff.cs @@ -0,0 +1,47 @@ +using System; +using Questionable.Controller.Steps.Common; +using Questionable.Functions; +using Questionable.Model; +using Questionable.Model.Questing; + +namespace Questionable.Controller.Steps.Interactions; + +internal static class StatusOff +{ + internal sealed class Factory : SimpleTaskFactory + { + public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step) + { + if (step.InteractionType != EInteractionType.StatusOff) + return null; + + ArgumentNullException.ThrowIfNull(step.Status); + return new Task(step.Status.Value); + } + } + + internal sealed record Task(EStatus Status) : ITask + { + public bool ShouldRedoOnInterrupt() => true; + + public override string ToString() => $"StatusOff({Status})"; + } + + internal sealed class DoStatusOff( + GameFunctions gameFunctions) + : AbstractDelayedTaskExecutor + { + protected override bool StartInternal() + { + if (gameFunctions.HasStatus(Task.Status)) + return GameFunctions.RemoveStatus(Task.Status); + + return false; + } + + public override ETaskResult Update() + { + return gameFunctions.HasStatus(Task.Status) ? ETaskResult.StillRunning : ETaskResult.TaskComplete; + } + } +} diff --git a/Questionable/Functions/GameFunctions.cs b/Questionable/Functions/GameFunctions.cs index 2cc2e122..bb0313ae 100644 --- a/Questionable/Functions/GameFunctions.cs +++ b/Questionable/Functions/GameFunctions.cs @@ -298,7 +298,7 @@ internal sealed unsafe class GameFunctions statusManager->HasStatus(2730); } - public bool HasStatus(uint statusId) + public bool HasStatus(EStatus statusId) { var localPlayer = _clientState.LocalPlayer; if (localPlayer == null) @@ -306,12 +306,12 @@ internal sealed unsafe class GameFunctions var battleChara = (BattleChara*)localPlayer.Address; StatusManager* statusManager = battleChara->GetStatusManager(); - return statusManager->HasStatus(statusId); + return statusManager->HasStatus((uint)statusId); } - public static bool RemoveStatus(uint statusId) + public static bool RemoveStatus(EStatus statusId) { - return StatusManager.ExecuteStatusOff(statusId); + return StatusManager.ExecuteStatusOff((uint)statusId); } public bool Mount() diff --git a/Questionable/QuestionablePlugin.cs b/Questionable/QuestionablePlugin.cs index bdb639f4..bac54241 100644 --- a/Questionable/QuestionablePlugin.cs +++ b/Questionable/QuestionablePlugin.cs @@ -174,6 +174,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin serviceCollection.AddTaskExecutor(); serviceCollection.AddTaskExecutor(); serviceCollection.AddTaskFactoryAndExecutor(); + serviceCollection.AddTaskExecutor(); + serviceCollection.AddTaskFactoryAndExecutor(); serviceCollection.AddTaskFactoryAndExecutor(); serviceCollection.AddTaskFactory(); serviceCollection.AddTaskExecutor();