diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/107_Coming to Limsa Lominsa.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/107_Coming to Limsa Lominsa.json new file mode 100644 index 00000000..273d8f91 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/107_Coming to Limsa Lominsa.json @@ -0,0 +1,58 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1001028, + "Position": { + "X": -39.84137, + "Y": 19.999994, + "Z": -4.9592285 + }, + "TerritoryId": 181, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002732, + "Position": { + "X": 11.184814, + "Y": 20.999336, + "Z": 13.321045 + }, + "TerritoryId": 181, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA001_00107_Q1_000_1", + "Yes": true + } + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002697, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 181, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/108_MRD_Close to Home.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/108_MRD_Close to Home.json new file mode 100644 index 00000000..8e72271b --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/108_MRD_Close to Home.json @@ -0,0 +1,288 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002697, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 181, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002698, + "Position": { + "X": 8.499207, + "Y": 39.505493, + "Z": 3.5552979 + }, + "TerritoryId": 181, + "InteractionType": "Interact", + "Comment": "Required to accept this Quest; should link to a QuestId" + }, + { + "DataId": 1000969, + "Position": { + "X": 7.9193726, + "Y": 40.000175, + "Z": 17.471558 + }, + "TerritoryId": 181, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "ExcelSheet": "quest/001/ManSea001_00107", + "Prompt": "TEXT_MANSEA001_00107_Q1_000_1", + "Yes": true + } + ] + }, + { + "DataId": 2001563, + "Position": { + "X": 3.616333, + "Y": 20.004517, + "Z": 9.750427 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest; the next few entries should be run as part of a separate quest" + }, + { + "DataId": 2001564, + "Position": { + "X": -3.0671387, + "Y": 20.004517, + "Z": 9.964111 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001565, + "Position": { + "X": -11.39856, + "Y": 19.97406, + "Z": 6.6376343 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001566, + "Position": { + "X": -18.32611, + "Y": 20.004517, + "Z": 1.7241821 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001567, + "Position": { + "X": -30.47229, + "Y": 19.97406, + "Z": 0.8086548 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001568, + "Position": { + "X": -44.724243, + "Y": 20.004517, + "Z": -0.5036011 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 1003604, + "Position": { + "X": -60.44104, + "Y": 18.00033, + "Z": -4.348877 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "Comment": "Quest Turn-In (Making a Name)" + }, + { + "DataId": 8, + "Position": { + "X": -84.031494, + "Y": 20.767456, + "Z": 0.015197754 + }, + "StopDistance": 10, + "TerritoryId": 129, + "InteractionType": "AttuneAetheryte", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "DataId": 1001217, + "Position": { + "X": -140.85602, + "Y": 18.199999, + "Z": 17.013733 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 49, + "Position": { + "X": -213.61108, + "Y": 16.739136, + "Z": 51.80432 + }, + "TerritoryId": 129, + "InteractionType": "AttuneAethernetShard", + "Comment": "Hawkers' Alley" + }, + { + "DataId": 43, + "Position": { + "X": -335.1645, + "Y": 12.619202, + "Z": 56.381958 + }, + "TerritoryId": 129, + "InteractionType": "AttuneAethernetShard", + "Comment": "Arcanists' Guild" + }, + { + "DataId": 44, + "Position": { + "X": -179.40033, + "Y": 4.8065186, + "Z": 182.97095 + }, + "TerritoryId": 129, + "InteractionType": "AttuneAethernetShard", + "Comment": "Fishermens' Guild", + "AethernetShortcut": [ + "[Limsa Lominsa] Arcanists' Guild", + "[Limsa Lominsa] Hawkers' Alley" + ] + }, + { + "Position": { + "X": -83.8817, + "Y": 18.475962, + "Z": -29.903847 + }, + "TerritoryId": 129, + "InteractionType": "WalkTo", + "TargetTerritoryId": 128, + "Comment": "Walk to Culinarians' Guild", + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] Aetheryte Plaza" + ] + }, + { + "DataId": 42, + "Position": { + "X": -56.50421, + "Y": 44.47998, + "Z": -131.45648 + }, + "TerritoryId": 128, + "InteractionType": "AttuneAethernetShard", + "Comment": "Culinarians' Guild" + }, + { + "DataId": 48, + "Position": { + "X": -5.1728516, + "Y": 44.63257, + "Z": -218.06671 + }, + "TerritoryId": 128, + "InteractionType": "AttuneAethernetShard", + "Comment": "Marauders' Guild" + }, + { + "DataId": 1000926, + "Position": { + "X": -10.055725, + "Y": 44.999794, + "Z": -245.80762 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "Comment": "MRD Receptionist", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000926, + "Position": { + "X": -10.055725, + "Y": 44.999794, + "Z": -245.80762 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "Comment": "Pick up Class Quest" + }, + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/109_ACN_Close to Home.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/109_ACN_Close to Home.json new file mode 100644 index 00000000..11813c99 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/109_ACN_Close to Home.json @@ -0,0 +1,288 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002697, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 181, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002698, + "Position": { + "X": 8.499207, + "Y": 39.505493, + "Z": 3.5552979 + }, + "TerritoryId": 181, + "InteractionType": "Interact", + "Comment": "Required to accept this Quest; should link to a QuestId" + }, + { + "DataId": 1000969, + "Position": { + "X": 7.9193726, + "Y": 40.000175, + "Z": 17.471558 + }, + "TerritoryId": 181, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "ExcelSheet": "quest/001/ManSea001_00107", + "Prompt": "TEXT_MANSEA001_00107_Q1_000_1", + "Yes": true + } + ] + }, + { + "DataId": 2001563, + "Position": { + "X": 3.616333, + "Y": 20.004517, + "Z": 9.750427 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest; the next few entries should be run as part of a separate quest" + }, + { + "DataId": 2001564, + "Position": { + "X": -3.0671387, + "Y": 20.004517, + "Z": 9.964111 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001565, + "Position": { + "X": -11.39856, + "Y": 19.97406, + "Z": 6.6376343 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001566, + "Position": { + "X": -18.32611, + "Y": 20.004517, + "Z": 1.7241821 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001567, + "Position": { + "X": -30.47229, + "Y": 19.97406, + "Z": 0.8086548 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 2001568, + "Position": { + "X": -44.724243, + "Y": 20.004517, + "Z": -0.5036011 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "$": "Making a Name: can't abandon quest" + }, + { + "DataId": 1003604, + "Position": { + "X": -60.44104, + "Y": 18.00033, + "Z": -4.348877 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "Comment": "Quest Turn-In (Making a Name)" + }, + { + "DataId": 8, + "Position": { + "X": -84.031494, + "Y": 20.767456, + "Z": 0.015197754 + }, + "StopDistance": 10, + "TerritoryId": 129, + "InteractionType": "AttuneAetheryte", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "DataId": 1001217, + "Position": { + "X": -140.85602, + "Y": 18.199999, + "Z": 17.013733 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 49, + "Position": { + "X": -213.61108, + "Y": 16.739136, + "Z": 51.80432 + }, + "TerritoryId": 129, + "InteractionType": "AttuneAethernetShard", + "Comment": "Hawkers' Alley" + }, + { + "DataId": 43, + "Position": { + "X": -335.1645, + "Y": 12.619202, + "Z": 56.381958 + }, + "TerritoryId": 129, + "InteractionType": "AttuneAethernetShard", + "Comment": "Arcanists' Guild" + }, + { + "DataId": 1000895, + "Position": { + "X": -335.74432, + "Y": 12.899764, + "Z": 1.3884888 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "Comment": "ACN Receptionist", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000895, + "Position": { + "X": -335.74432, + "Y": 12.899764, + "Z": 1.3884888 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "Comment": "Pick up Class Quest" + }, + { + "DataId": 44, + "Position": { + "X": -179.40033, + "Y": 4.8065186, + "Z": 182.97095 + }, + "TerritoryId": 129, + "InteractionType": "AttuneAethernetShard", + "Comment": "Fishermens' Guild", + "AethernetShortcut": [ + "[Limsa Lominsa] Arcanists' Guild", + "[Limsa Lominsa] Hawkers' Alley" + ] + }, + { + "Position": { + "X": -83.8817, + "Y": 18.475962, + "Z": -29.903847 + }, + "TerritoryId": 129, + "InteractionType": "WalkTo", + "TargetTerritoryId": 128, + "Comment": "Walk to Culinarians' Guild", + "AethernetShortcut": [ + "[Limsa Lominsa] Fishermens' Guild", + "[Limsa Lominsa] Aetheryte Plaza" + ] + }, + { + "DataId": 42, + "Position": { + "X": -56.50421, + "Y": 44.47998, + "Z": -131.45648 + }, + "TerritoryId": 128, + "InteractionType": "AttuneAethernetShard", + "Comment": "Culinarians' Guild" + }, + { + "DataId": 48, + "Position": { + "X": -5.1728516, + "Y": 44.63257, + "Z": -218.06671 + }, + "TerritoryId": 128, + "InteractionType": "AttuneAethernetShard", + "Comment": "Marauders' Guild" + }, + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/397_Sky-high.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/397_Sky-high.json new file mode 100644 index 00000000..df64c848 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/397_Sky-high.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003239, + "Position": { + "X": -283.68048, + "Y": 10.593393, + "Z": -249.34778 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/402_Thanks a Million.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/402_Thanks a Million.json new file mode 100644 index 00000000..4ae9678a --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/402_Thanks a Million.json @@ -0,0 +1,83 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003239, + "Position": { + "X": -283.68048, + "Y": 10.593393, + "Z": -249.34778 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2001255, + "Position": { + "X": -320.57678, + "Y": 25.833496, + "Z": -527.5502 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Comment": "Technically triggers combat, but can be ignored" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "Position": { + "X": -380.10605, + "Y": 32.598312, + "Z": -608.40186 + }, + "TerritoryId": 134, + "InteractionType": "WalkTo", + "TargetTerritoryId": 138 + }, + { + "DataId": 13, + "Position": { + "X": 651.5449, + "Y": 11.734131, + "Z": 513.35913 + }, + "StopDistance": 10, + "TerritoryId": 138, + "InteractionType": "AttuneAetheryte" + }, + { + "Position": { + "X": 652.74164, + "Y": 8.129893, + "Z": 522.6646 + }, + "TerritoryId": 138, + "InteractionType": "WalkTo" + }, + { + "DataId": 1003244, + "Position": { + "X": 650.72095, + "Y": 7.856781, + "Z": 527.21436 + }, + "StopDistance": 6, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/403_Relighting the Torch.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/403_Relighting the Torch.json new file mode 100644 index 00000000..02ac1613 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/403_Relighting the Torch.json @@ -0,0 +1,122 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003245, + "Position": { + "X": 655.75635, + "Y": 8.316303, + "Z": 521.1719 + }, + "StopDistance": 7, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1003246, + "Position": { + "X": 443.22876, + "Y": 14.645099, + "Z": 452.84204 + }, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2001260, + "Position": { + "X": 602.50244, + "Y": 28.94629, + "Z": 361.01306 + }, + "TerritoryId": 138, + "InteractionType": "UseItem", + "ItemId": 2000343 + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 2001261, + "Position": { + "X": 602.50244, + "Y": 28.976807, + "Z": 361.0437 + }, + "TerritoryId": 138, + "InteractionType": "Combat", + "EnemySpawnType": "AfterInteraction", + "KillEnemyDataIds": [ + 17 + ] + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1003246, + "Position": { + "X": 443.22876, + "Y": 14.645099, + "Z": 452.84204 + }, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1003245, + "Position": { + "X": 655.75635, + "Y": 8.316303, + "Z": 521.1719 + }, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1001000, + "Position": { + "X": -32.028687, + "Y": 41.499985, + "Z": 208.39233 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/406_On to the Drydocks.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/406_On to the Drydocks.json new file mode 100644 index 00000000..5c5385d2 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/406_On to the Drydocks.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1001000, + "Position": { + "X": -32.028687, + "Y": 41.499985, + "Z": 208.39233 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "Position": { + "X": 24.438343, + "Y": 44.499928, + "Z": 183.94363 + }, + "TerritoryId": 128, + "InteractionType": "WalkTo", + "TargetTerritoryId": 135 + }, + { + "DataId": 10, + "Position": { + "X": 156.11499, + "Y": 15.518433, + "Z": 673.21277 + }, + "StopDistance": 10, + "TerritoryId": 135, + "InteractionType": "AttuneAetheryte" + }, + { + "DataId": 1002238, + "Position": { + "X": 247.36401, + "Y": 14.02301, + "Z": 611.9325 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/412_Without a Doubt.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/412_Without a Doubt.json new file mode 100644 index 00000000..2acd2c17 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/412_Without a Doubt.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002238, + "Position": { + "X": 247.36401, + "Y": 14.02301, + "Z": 611.9325 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002274, + "Position": { + "X": -34.65332, + "Y": 8.921356, + "Z": 861.4479 + }, + "TerritoryId": 135, + "InteractionType": "Emote", + "Emote": "doubt" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/413_Do Angry Pirates Dream.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/413_Do Angry Pirates Dream.json new file mode 100644 index 00000000..8b200191 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/413_Do Angry Pirates Dream.json @@ -0,0 +1,81 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002238, + "Position": { + "X": 247.36401, + "Y": 14.02301, + "Z": 611.9325 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002237, + "Position": { + "X": 167.55933, + "Y": 14.095915, + "Z": 683.92444 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1002240, + "Position": { + "X": 118.51672, + "Y": 23.000835, + "Z": 735.6831 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1002463, + "Position": { + "X": 249.89697, + "Y": 6.194409, + "Z": 773.12866 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002237, + "Position": { + "X": 167.55933, + "Y": 14.095915, + "Z": 683.92444 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/414_Victory in Peril.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/414_Victory in Peril.json new file mode 100644 index 00000000..2539f4d4 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/414_Victory in Peril.json @@ -0,0 +1,110 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 249 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002237, + "Position": { + "X": 167.55933, + "Y": 14.095915, + "Z": 683.92444 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002240, + "Position": { + "X": 118.51672, + "Y": 23.000835, + "Z": 735.6831 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "Position": { + "X": 106.18569, + "Y": 53.59632, + "Z": 674.99817 + }, + "TerritoryId": 135, + "InteractionType": "WalkTo" + }, + { + "DataId": 1002651, + "Position": { + "X": 107.65234, + "Y": 54.64395, + "Z": 674.9523 + }, + "StopDistance": 5, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1002237, + "Position": { + "X": 167.55933, + "Y": 14.095915, + "Z": 683.92444 + }, + "TerritoryId": 135, + "InteractionType": "SinglePlayerDuty", + "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1002238, + "Position": { + "X": 247.36401, + "Y": 14.02301, + "Z": 611.9325 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002237, + "Position": { + "X": 167.55933, + "Y": 14.095915, + "Z": 683.92444 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/415_Righting the Shipwright.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/415_Righting the Shipwright.json new file mode 100644 index 00000000..f4bf1e9e --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/415_Righting the Shipwright.json @@ -0,0 +1,127 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002274, + "Position": { + "X": -34.65332, + "Y": 8.921356, + "Z": 861.4479 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002456, + "Position": { + "X": -94.86542, + "Y": 2.3717625, + "Z": 734.2793 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2000769, + "Position": { + "X": -145.09808, + "Y": 1.0527954, + "Z": 709.10205 + }, + "StopDistance": 4, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "DataId": 2000770, + "Position": { + "X": -185.68707, + "Y": -0.13739014, + "Z": 694.6669 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 2000771, + "Position": { + "X": -168.84113, + "Y": 1.9683228, + "Z": 659.327 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1002456, + "Position": { + "X": -94.86542, + "Y": 2.3717625, + "Z": 734.2793 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002238, + "Position": { + "X": 247.36401, + "Y": 14.02301, + "Z": 611.9325 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/462_On to Summerford.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/462_On to Summerford.json new file mode 100644 index 00000000..8579964b --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/462_On to Summerford.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 41, + "Position": { + "X": 16.067688, + "Y": 40.787354, + "Z": 68.80286 + }, + "TerritoryId": 128, + "InteractionType": "AttuneAethernetShard" + }, + { + "DataId": 52, + "Position": { + "X": 227.98499, + "Y": 115.526, + "Z": -257.0382 + }, + "StopDistance": 10, + "TerritoryId": 134, + "InteractionType": "AttuneAetheryte", + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)" + ] + }, + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/463_Dressed to Call.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/463_Dressed to Call.json new file mode 100644 index 00000000..ff79aec7 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/463_Dressed to Call.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Comment": "All starting gear (except the hat) is ilvl 5 already" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/465_Washed Up.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/465_Washed Up.json new file mode 100644 index 00000000..37e2762e --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/465_Washed Up.json @@ -0,0 +1,185 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": 200.59262, + "Y": 109.63514, + "Z": -268.2013 + }, + "TerritoryId": 134, + "InteractionType": "Jump", + "JumpDestination": { + "Position": { + "X": 198.45822, + "Y": 101.082535, + "Z": -274.90256 + }, + "StopDistance": 3 + }, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -8 + ] + }, + { + "DataId": 1002639, + "Position": { + "X": 197.16174, + "Y": 101.098366, + "Z": -273.57898 + }, + "StopDistance": 5, + "TerritoryId": 134, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_SUBSEA053_00465_Q4_000_1", + "Answer": "TEXT_SUBSEA053_00465_A4_000_2" + } + ], + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 8 + ] + }, + { + "DataId": 1002638, + "Position": { + "X": 169.35986, + "Y": 93.96625, + "Z": -191.36346 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_SUBSEA053_00465_Q3_000_1", + "Answer": "TEXT_SUBSEA053_00465_A3_000_1" + } + ], + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 16 + ] + }, + { + "DataId": 1002637, + "Position": { + "X": 94.46863, + "Y": 66.13388, + "Z": -257.52655 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_SUBSEA053_00465_Q2_000_1", + "Answer": "TEXT_SUBSEA053_00465_A2_000_1" + } + ], + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1002636, + "Position": { + "X": 17.746216, + "Y": 60.791252, + "Z": -269.91687 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_SUBSEA053_00465_Q1_000_1", + "Answer": "TEXT_SUBSEA053_00465_A1_000_1" + } + ], + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1002635, + "Position": { + "X": 33.829224, + "Y": 54.646034, + "Z": -150.31665 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/466_Double Dealing.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/466_Double Dealing.json new file mode 100644 index 00000000..fb15bb95 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/466_Double Dealing.json @@ -0,0 +1,181 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002640, + "Position": { + "X": 131.09021, + "Y": 45.70909, + "Z": 134.44714 + }, + "TerritoryId": 134, + "InteractionType": "Emote", + "Emote": "doubt" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "Position": { + "X": 189.7694, + "Y": 46.25815, + "Z": 121.13219 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [ + 52 + ] + }, + { + "DataId": 1002643, + "Position": { + "X": 194.44568, + "Y": 46.41682, + "Z": 119.21863 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1002642, + "Position": { + "X": 192.52307, + "Y": 46.299305, + "Z": 122.11792 + }, + "StopDistance": 7, + "TerritoryId": 134, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1002641, + "Position": { + "X": 190.875, + "Y": 46.324783, + "Z": 118.30322 + }, + "StopDistance": 7, + "TerritoryId": 134, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1002640, + "Position": { + "X": 131.09021, + "Y": 45.70909, + "Z": 134.44714 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 2001279, + "Position": { + "X": 132.7992, + "Y": 45.76172, + "Z": 134.93542 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1002630, + "Position": { + "X": 179.85803, + "Y": 64.61002, + "Z": 294.75854 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "Position": { + "X": 205.08835, + "Y": 111.9045, + "Z": -245.44336 + }, + "TerritoryId": 134, + "InteractionType": "WalkTo", + "AetheryteShortcut": "Middle La Noscea - Summerford Farms" + }, + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/467_Loam Maintenance.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/467_Loam Maintenance.json new file mode 100644 index 00000000..f2ca99fc --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/467_Loam Maintenance.json @@ -0,0 +1,129 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002627, + "Position": { + "X": 203.32642, + "Y": 111.72371, + "Z": -213.91626 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": 202.80931, + "Y": 111.89438, + "Z": -216.29411 + }, + "TerritoryId": 134, + "InteractionType": "Jump", + "JumpDestination": { + "Position": { + "X": 192.77504, + "Y": 98.07924, + "Z": -211.47052 + }, + "StopDistance": 5 + } + }, + { + "DataId": 1002629, + "Position": { + "X": 52.750366, + "Y": 64.48143, + "Z": -185.71759 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2001239, + "Position": { + "X": -132.9519, + "Y": 45.365112, + "Z": -228.93109 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 2001238, + "Position": { + "X": -121.78229, + "Y": 45.97534, + "Z": -210.83392 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ], + "DisableNavmesh": true + }, + { + "DataId": 2001237, + "Position": { + "X": -129.38129, + "Y": 46.67737, + "Z": -192.52313 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ], + "DisableNavmesh": true + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002631, + "Position": { + "X": 0.045776367, + "Y": 57.85028, + "Z": -308.76636 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/468_Plowshares to Swords.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/468_Plowshares to Swords.json new file mode 100644 index 00000000..f363ea51 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/468_Plowshares to Swords.json @@ -0,0 +1,90 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002631, + "Position": { + "X": 0.045776367, + "Y": 57.85028, + "Z": -308.76636 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": -42.099247, + "Y": 54.599857, + "Z": -262.0961 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "EnemySpawnType": "OverworldEnemies", + "KillEnemyDataIds": [ + 348, + 349 + ], + "Comment": "Kill Pirates/Raiders manually", + "$": "These flags don't exist, just want this step to not-finish", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1002631, + "Position": { + "X": 0.045776367, + "Y": 57.85028, + "Z": -308.76636 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "Position": { + "X": 205.08835, + "Y": 111.9045, + "Z": -245.44336 + }, + "TerritoryId": 134, + "InteractionType": "WalkTo", + "AetheryteShortcut": "Middle La Noscea - Summerford Farms" + }, + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/469_Just Deserts.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/469_Just Deserts.json new file mode 100644 index 00000000..76a1f683 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/469_Just Deserts.json @@ -0,0 +1,144 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 272 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002633, + "Position": { + "X": 232.56274, + "Y": 113.07393, + "Z": -240.2533 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1002645, + "Position": { + "X": -144.27411, + "Y": 20.32, + "Z": -336.32416 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1002646, + "Position": { + "X": -58.762512, + "Y": 12.537111, + "Z": -410.94073 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1002647, + "Position": { + "X": -34.866882, + "Y": 10.902258, + "Z": -432.15082 + }, + "TerritoryId": 134, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "Position": { + "X": 205.08835, + "Y": 111.9045, + "Z": -245.44336 + }, + "TerritoryId": 134, + "InteractionType": "WalkTo", + "AetheryteShortcut": "Middle La Noscea - Summerford Farms" + }, + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/543_Lurkers in the Grotto.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/543_Lurkers in the Grotto.json new file mode 100644 index 00000000..2a475c02 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/543_Lurkers in the Grotto.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 252 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2001582, + "Position": { + "X": -58.640503, + "Y": 27.145752, + "Z": -141.7716 + }, + "TerritoryId": 134, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002626, + "Position": { + "X": 207.2633, + "Y": 112.860374, + "Z": -222.43079 + }, + "TerritoryId": 134, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/544_Feint and Strike.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/544_Feint and Strike.json new file mode 100644 index 00000000..5992b001 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/544_Feint and Strike.json @@ -0,0 +1,99 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 280 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": -1.9166679, + "Y": 44.999886, + "Z": -256.1519 + }, + "TerritoryId": 128, + "InteractionType": "WalkTo", + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Marauders' Guild" + ] + }, + { + "DataId": 1003282, + "Position": { + "X": -3.03656, + "Y": 48.168007, + "Z": -261.70752 + }, + "StopDistance": 7, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1003283, + "Position": { + "X": 668.0552, + "Y": 7.297715, + "Z": 533.1654 + }, + "TerritoryId": 138, + "InteractionType": "SinglePlayerDuty", + "AetheryteShortcut": "Western La Noscea - Swiftperch" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "Position": { + "X": -1.9166679, + "Y": 44.999886, + "Z": -256.1519 + }, + "TerritoryId": 128, + "InteractionType": "WalkTo", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Marauders' Guild" + ] + }, + { + "DataId": 1003282, + "Position": { + "X": -3.03656, + "Y": 48.168007, + "Z": -261.70752 + }, + "StopDistance": 7, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/545_A Mizzenmast Repast.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/545_A Mizzenmast Repast.json new file mode 100644 index 00000000..9db04c7e --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/545_A Mizzenmast Repast.json @@ -0,0 +1,123 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "TerritoryId": 128, + "InteractionType": "EquipItem", + "ItemId": 3760 + }, + { + "DataId": 1003597, + "Position": { + "X": 8.194031, + "Y": 39.999973, + "Z": 17.746216 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131094 + } + ] + }, + { + "DataId": 1001029, + "Position": { + "X": 9.170593, + "Y": 20.999403, + "Z": -15.213318 + }, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 2001010, + "Position": { + "X": -0.015319824, + "Y": 1.449585, + "Z": 7.522644 + }, + "TerritoryId": 177, + "InteractionType": "Interact", + "TargetTerritoryId": 128 + }, + { + "DataId": 1003597, + "Position": { + "X": 8.194031, + "Y": 39.999973, + "Z": 17.746216 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131094 + } + ] + }, + { + "DataId": 1001029, + "Position": { + "X": 9.170593, + "Y": 20.999403, + "Z": -15.213318 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 198, + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA009_00545_Q1_000_1", + "Yes": true + } + ] + }, + { + "DataId": 1002694, + "Position": { + "X": -0.045776367, + "Y": 1.6001425, + "Z": -7.0039062 + }, + "TerritoryId": 198, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/546_The Lominsan Envoy.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/546_The Lominsan Envoy.json new file mode 100644 index 00000000..5beb7aba --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/546_The Lominsan Envoy.json @@ -0,0 +1,410 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002694, + "Position": { + "X": -0.045776367, + "Y": 1.6001425, + "Z": -7.0039062 + }, + "TerritoryId": 198, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2001835, + "Position": { + "X": 0.0235393, + "Y": 2.330988, + "Z": 9.8216 + }, + "TerritoryId": 198, + "InteractionType": "Interact", + "TargetTerritoryId": 129 + }, + { + "DataId": 1003611, + "Position": { + "X": 9.781006, + "Y": 20.999247, + "Z": 15.0911255 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 128, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131093 + } + ] + }, + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1003597, + "Position": { + "X": 8.194031, + "Y": 39.999973, + "Z": 17.746216 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "TargetTerritoryId": 128, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131092 + } + ] + }, + { + "DataId": 1002695, + "Position": { + "X": -25.92511, + "Y": 91.999954, + "Z": -3.6774292 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA200_00546_Q1_000_1", + "Yes": true + } + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 2001668, + "Position": { + "X": -11.10527, + "Y": 92.04318, + "Z": 17.18466 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA200_00546_Q3_000_1", + "Yes": true + } + ] + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1000109, + "Position": { + "X": 29.770264, + "Y": -19.000002, + "Z": 114.12219 + }, + "TerritoryId": 132, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA200_00546_Q7_000_1", + "Yes": true + } + ], + "Comment": "Gridania Arrivals Attendant" + }, + { + "DataId": 1002830, + "Position": { + "X": 36.63684, + "Y": -18.800003, + "Z": 89.64673 + }, + "TerritoryId": 132, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 2, + "Position": { + "X": 32.913696, + "Y": 2.670288, + "Z": 30.014404 + }, + "StopDistance": 10, + "TerritoryId": 132, + "InteractionType": "AttuneAetheryte" + }, + { + "DataId": 25, + "Position": { + "X": 166.58276, + "Y": -1.7243042, + "Z": 86.13721 + }, + "TerritoryId": 132, + "InteractionType": "AttuneAethernetShard", + "Comment": "Archers' Guild" + }, + { + "Position": { + "X": 12.761639, + "Y": 1.2659149, + "Z": -18.021421 + }, + "TerritoryId": 132, + "InteractionType": "WalkTo", + "TargetTerritoryId": 133, + "AethernetShortcut": [ + "[Gridania] Archers' Guild", + "[Gridania] Aetheryte Plaza" + ] + }, + { + "DataId": 26, + "Position": { + "X": 101.27405, + "Y": 9.018005, + "Z": -111.31464 + }, + "TerritoryId": 133, + "InteractionType": "AttuneAethernetShard", + "Comment": "Leatherworkers' Guild" + }, + { + "DataId": 27, + "Position": { + "X": 121.23291, + "Y": 12.649658, + "Z": -229.63306 + }, + "TerritoryId": 133, + "InteractionType": "AttuneAethernetShard", + "Comment": "Lancers' Guild" + }, + { + "DataId": 30, + "Position": { + "X": -73.92999, + "Y": 7.9804688, + "Z": -140.15417 + }, + "TerritoryId": 133, + "InteractionType": "AttuneAethernetShard", + "AethernetShortcut": [ + "[Gridania] Lancers' Guild", + "[Gridania] Leatherworkers' Guild & Shaded Bower" + ], + "Comment": "Mih Khetto's Amphitheatre" + }, + { + "Position": { + "X": -174.09056, + "Y": 10.91981, + "Z": -162.12527 + }, + "TerritoryId": 133, + "InteractionType": "WalkTo" + }, + { + "DataId": 29, + "Position": { + "X": -311.0857, + "Y": 7.94989, + "Z": -177.05048 + }, + "TerritoryId": 133, + "InteractionType": "AttuneAethernetShard", + "Comment": "Botanists' Guild" + }, + { + "DataId": 28, + "Position": { + "X": -145.15906, + "Y": 4.9591064, + "Z": -11.7647705 + }, + "TerritoryId": 133, + "InteractionType": "AttuneAethernetShard", + "AethernetShortcut": [ + "[Gridania] Botanists' Guild", + "[Gridania] Mih Khetto's Amphitheatre" + ], + "Comment": "Conjurers' Guild" + }, + { + "DataId": 1000460, + "Position": { + "X": -159.41101, + "Y": 4.054107, + "Z": -4.1047363 + }, + "TerritoryId": 133, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 1000106, + "Position": { + "X": 29.007324, + "Y": -19.000002, + "Z": 105.485596 + }, + "TerritoryId": 132, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Gridania] Conjurers' Guild", + "[Gridania] Airship Landing" + ], + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA200_00546_Q5_000_1", + "Yes": true + } + ] + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 2001671, + "Position": { + "X": 7.156433, + "Y": -21.957764, + "Z": 123.73535 + }, + "TerritoryId": 132, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA200_00546_Q3_000_1", + "Yes": true + } + ] + } + ] + }, + { + "Sequence": 8, + "Steps": [ + { + "DataId": 1004434, + "Position": { + "X": -27.17633, + "Y": 83.19998, + "Z": 2.304016 + }, + "TerritoryId": 130, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANSEA200_00546_Q7_000_1", + "Yes": true + } + ], + "Comment": "Ul'dah Arrivals Attendant" + }, + { + "DataId": 1004336, + "Position": { + "X": -12.619263, + "Y": 82.99987, + "Z": 4.562378 + }, + "TerritoryId": 130, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1004339, + "Position": { + "X": -25.986206, + "Y": 81.799995, + "Z": -31.99823 + }, + "TerritoryId": 130, + "InteractionType": "Interact", + "TargetTerritoryId": 131, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131096 + } + ] + }, + { + "DataId": 51, + "Position": { + "X": 6.6376343, + "Y": 30.655273, + "Z": -24.826477 + }, + "TerritoryId": 131, + "InteractionType": "AttuneAethernetShard" + }, + { + "DataId": 1001821, + "Position": { + "X": -24.124573, + "Y": 38.000004, + "Z": 85.31323 + }, + "TerritoryId": 131, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/674_Call of the Sea.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/674_Call of the Sea.json new file mode 100644 index 00000000..d72c6455 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/674_Call of the Sea.json @@ -0,0 +1,171 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "$": "This is the follow-up quest for both Lominsan Envoy & Gridanian Envoy (Ul'dahn Envoy has a quest with the same name, but different id)", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1001821, + "Position": { + "X": -24.124573, + "Y": 38.000004, + "Z": 85.31323 + }, + "TerritoryId": 131, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 37, + "Position": { + "X": -98.22869, + "Y": 42.37336, + "Z": 88.46719 + }, + "TerritoryId": 131, + "InteractionType": "AttuneAethernetShard", + "Comment": "Alchemists' Guild" + }, + { + "Position": { + "X": 5.7796226, + "Y": 30, + "Z": -21.571625 + }, + "TerritoryId": 131, + "InteractionType": "Jump", + "JumpDestination": { + "Position": { + "X": 3.6504946, + "Y": 14.688499, + "Z": -13.443354 + }, + "StopDistance": 5 + }, + "AethernetShortcut": [ + "[Ul'dah] Alchemists' Guild", + "[Ul'dah] The Chamber of Rule" + ] + }, + { + "DataId": 35, + "Position": { + "X": -53.8269, + "Y": 10.72502, + "Z": 12.24082 + }, + "TerritoryId": 131, + "InteractionType": "AttuneAethernetShard", + "Comment": "Gladiators' Guild" + }, + { + "DataId": 50, + "Position": { + "X": -19.31449, + "Y": 14.63075, + "Z": 72.0533 + }, + "TerritoryId": 131, + "InteractionType": "AttuneAethernetShard", + "Comment": "Goldsmiths' Guild" + }, + { + "DataId": 36, + "Position": { + "X": 33.52188, + "Y": 13.23228, + "Z": 113.2191 + }, + "TerritoryId": 131, + "InteractionType": "AttuneAethernetShard", + "Comment": "Miners' Guild" + }, + { + "DataId": 47, + "Position": { + "X": 89.67633, + "Y": 12.93493, + "Z": 58.2767 + }, + "TerritoryId": 131, + "InteractionType": "AttuneAethernetShard", + "Comment": "Weavers' Guild" + }, + { + "DataId": 125, + "Position": { + "X": 131.9447, + "Y": 4.714966, + "Z": -29.800903 + }, + "TerritoryId": 131, + "InteractionType": "AttuneAethernetShard", + "Comment": "Sapphire Avenue Exchange" + }, + { + "Position": { + "X": 88.335236, + "Y": 4, + "Z": -110.905876 + }, + "TerritoryId": 131, + "InteractionType": "WalkTo", + "TargetTerritoryId": 130 + }, + { + "DataId": 33, + "Position": { + "X": 64.22522, + "Y": 4.5318604, + "Z": -115.31244 + }, + "TerritoryId": 130, + "InteractionType": "AttuneAethernetShard", + "Comment": "Adventurers' Guild" + }, + { + "DataId": 9, + "Position": { + "X": -144.51825, + "Y": -1.3580933, + "Z": -169.6651 + }, + "StopDistance": 10, + "TerritoryId": 130, + "InteractionType": "AttuneAetheryte" + }, + { + "DataId": 34, + "Position": { + "X": -154.83331, + "Y": 14.633362, + "Z": 73.07532 + }, + "TerritoryId": 130, + "InteractionType": "AttuneAethernetShard" + }, + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/689_Men of the Blue Tattoos.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/689_Men of the Blue Tattoos.json new file mode 100644 index 00000000..f2d88a4e --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/689_Men of the Blue Tattoos.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002237, + "Position": { + "X": 167.55933, + "Y": 14.095915, + "Z": 683.92444 + }, + "TerritoryId": 135, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Limsa/690_High Society.json b/QuestPaths/ARealmReborn/MSQ-1/Limsa/690_High Society.json new file mode 100644 index 00000000..ecafd712 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Limsa/690_High Society.json @@ -0,0 +1,109 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003282, + "Position": { + "X": -3.03656, + "Y": 48.168007, + "Z": -261.70752 + }, + "StopDistance": 7, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Limsa Lominsa] Marauders' Guild", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1003597, + "Position": { + "X": 8.194031, + "Y": 39.999973, + "Z": 17.746216 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "TargetTerritoryId": 129, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131094 + } + ] + }, + { + "DataId": 1003355, + "Position": { + "X": -60.868286, + "Y": 18.000334, + "Z": 7.4921875 + }, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003611, + "Position": { + "X": 9.781006, + "Y": 20.999247, + "Z": 15.0911255 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 128, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131093 + } + ] + }, + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/245_It's Probably Pirates.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/245_It's Probably Pirates.json new file mode 100644 index 00000000..369a9edc --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/245_It's Probably Pirates.json @@ -0,0 +1,166 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 1036 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1005411, + "Position": { + "X": 13.412659, + "Y": 40.2, + "Z": -13.260071 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "Comment": "Accepting 'Rising to the Challenge'" + }, + { + "DataId": 1003598, + "Position": { + "X": -12.069946, + "Y": 40.00053, + "Z": 11.459534 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "Comment": "'Rising to the Challenge'" + }, + { + "DataId": 1005410, + "Position": { + "X": -182.45215, + "Y": 1.9999955, + "Z": 208.75867 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "Comment": "'Rising to the Challenge'", + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Fishermens' Guild" + ] + }, + { + "DataId": 1003621, + "Position": { + "X": -192.0653, + "Y": 0.9999907, + "Z": 208.66711 + }, + "TerritoryId": 129, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1000868, + "Position": { + "X": -192.00433, + "Y": 0.9999907, + "Z": 211.68835 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "TargetTerritoryId": 138, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131109 + } + ] + }, + { + "DataId": 14, + "Position": { + "X": 260.94446, + "Y": -19.60791, + "Z": 218.52441 + }, + "StopDistance": 10, + "TerritoryId": 138, + "InteractionType": "AttuneAetheryte" + }, + { + "DataId": 1017075, + "Position": { + "X": 356.5575, + "Y": -15.97664, + "Z": 136.73608 + }, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1004472, + "Position": { + "X": 335.40857, + "Y": 9.635179, + "Z": 17.135864 + }, + "TerritoryId": 138, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "TerritoryId": 138, + "InteractionType": "Duty", + "ContentFinderConditionId": 4 + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/272_Life, Materia and Everything.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/272_Life, Materia and Everything.json new file mode 100644 index 00000000..63542a69 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/272_Life, Materia and Everything.json @@ -0,0 +1,110 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1005116, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1001426, + "Position": { + "X": 123.33862, + "Y": 30.999996, + "Z": -384.9394 + }, + "TerritoryId": 141, + "InteractionType": "Interact", + "Comment": "'Forging the Spirit'" + }, + { + "DataId": 1001426, + "Position": { + "X": 123.33862, + "Y": 30.999996, + "Z": -384.9394 + }, + "TerritoryId": 141, + "InteractionType": "Interact", + "Comment": "Quest Turn-In 'Forging the Spirit'" + }, + { + "DataId": 1001425, + "Position": { + "X": 115.12927, + "Y": 31.876099, + "Z": -392.2027 + }, + "TerritoryId": 141, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "TerritoryId": 145, + "InteractionType": "UseItem", + "ItemId": 30362, + "TargetTerritoryId": 140 + }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo" + }, + { + "DataId": 2001711, + "Position": { + "X": -480.9181, + "Y": 18.00103, + "Z": -386.862 + }, + "TerritoryId": 140, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 2001715, + "Position": { + "X": 23.23944, + "Y": 2.090454, + "Z": -0.015319824 + }, + "TerritoryId": 212, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 1005116, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/343_Lord of the Inferno.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/343_Lord of the Inferno.json new file mode 100644 index 00000000..d6e49ae0 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/343_Lord of the Inferno.json @@ -0,0 +1,139 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 275, + 1045 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1005116, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1004584, + "Position": { + "X": -360.83014, + "Y": -55.35, + "Z": 145.49475 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "AetheryteShortcut": "Eastern Thanalan - Camp Drybone" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2001592, + "Position": { + "X": -356.71014, + "Y": -10.421997, + "Z": -242.51166 + }, + "TerritoryId": 145, + "InteractionType": "SinglePlayerDuty" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1005017, + "Position": { + "X": -63.157104, + "Y": -25.215523, + "Z": -554.6502 + }, + "TerritoryId": 146, + "InteractionType": "Interact", + "DisableNavmesh": true, + "$": "Fun fact: This is underground in Southern Thanalan (including mobs, fates, etc.), and will build the navmesh for the entire zone" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "TerritoryId": 146, + "InteractionType": "Duty", + "ContentFinderConditionId": 56 + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1005156, + "Position": { + "X": -372.73218, + "Y": -57.07999, + "Z": 151.04907 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "TerritoryId": 145, + "InteractionType": "UseItem", + "ItemId": 30362, + "TargetTerritoryId": 140 + }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo" + }, + { + "DataId": 2001711, + "Position": { + "X": -480.9181, + "Y": 18.00103, + "Z": -386.862 + }, + "TerritoryId": 140, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 1005012, + "Position": { + "X": 22.507019, + "Y": 0.9999986, + "Z": -2.02948 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/509_The Scions of the Seventh Dawn.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/509_The Scions of the Seventh Dawn.json new file mode 100644 index 00000000..94290f68 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/509_The Scions of the Seventh Dawn.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1001353, + "Position": { + "X": 21.072632, + "Y": 7.45, + "Z": -78.78235 + }, + "TerritoryId": 130, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1004603, + "Position": { + "X": -489.8299, + "Y": 21.48999, + "Z": -381.97913 + }, + "TerritoryId": 140, + "InteractionType": "Interact", + "AetheryteShortcut": "Western Thanalan - Horizon" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 2001711, + "Position": { + "X": -480.9181, + "Y": 18.00103, + "Z": -386.862 + }, + "TerritoryId": 140, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 1005012, + "Position": { + "X": 22.507019, + "Y": 0.9999986, + "Z": -2.02948 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/510_A Wild Rose By Any Other Name.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/510_A Wild Rose By Any Other Name.json new file mode 100644 index 00000000..818d8a47 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/510_A Wild Rose By Any Other Name.json @@ -0,0 +1,94 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003783, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "StopDistance": 5, + "TerritoryId": 212, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_MANFST207_00510_Q1_000_1", + "Answer": "TEXT_MANFST207_00510_A1_000_1" + } + ] + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1005119, + "Position": { + "X": 33.37146, + "Y": 1.1999971, + "Z": 6.454529 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 53, + "Position": { + "X": -16.159302, + "Y": 0.32037354, + "Z": -166.58276 + }, + "TerritoryId": 141, + "InteractionType": "AttuneAetheryte", + "AetheryteShortcut": "Ul'dah", + "AethernetShortcut": [ + "[Ul'dah] Aetheryte Plaza", + "[Ul'dah] Gate of Nald (Central Thanalan)" + ] + }, + { + "Position": { + "X": 454.0109, + "Y": -17.999832, + "Z": -183.1808 + }, + "TerritoryId": 141, + "InteractionType": "WalkTo", + "TargetTerritoryId": 145 + }, + { + "DataId": 18, + "Position": { + "X": -386.3432, + "Y": -57.1756, + "Z": 142.59558 + }, + "TerritoryId": 145, + "InteractionType": "AttuneAetheryte" + }, + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/511_A Hero in the Making.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/511_A Hero in the Making.json new file mode 100644 index 00000000..59c28f16 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/511_A Hero in the Making.json @@ -0,0 +1,189 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1005116, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2001717, + "Position": { + "X": 25.497803, + "Y": 2.090454, + "Z": -0.015319824 + }, + "TerritoryId": 212, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 2001716, + "Position": { + "X": -15.701599, + "Y": 1.083313, + "Z": -0.015319824 + }, + "TerritoryId": 212, + "InteractionType": "Interact", + "TargetTerritoryId": 140 + }, + { + "DataId": 1003785, + "Position": { + "X": -489.8299, + "Y": 21.48999, + "Z": -381.97913 + }, + "TerritoryId": 140, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2001691, + "Position": { + "X": -5.294922, + "Y": 29.984009, + "Z": 20.675903 + }, + "TerritoryId": 131, + "InteractionType": "Interact", + "AetheryteShortcut": "Ul'dah", + "AethernetShortcut": [ + "[Ul'dah] Aetheryte Plaza", + "[Ul'dah] The Chamber of Rule" + ], + "$.0": "QuestVariables if done first: 16 1 0 64 0 0", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + 64, + null, + null + ] + }, + { + "DataId": 1001029, + "Position": { + "X": 9.170593, + "Y": 20.999403, + "Z": -15.213318 + }, + "TerritoryId": 129, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_MANFST300_00511_Q1_000_1", + "Yes": true + } + ], + "$.0": "QuestVariables if done after Ul'dah: 33 1 0 96 0 0", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + 32, + null, + null + ] + }, + { + "DataId": 2001690, + "Position": { + "X": -49.759705, + "Y": 7.003784, + "Z": -114.82416 + }, + "TerritoryId": 133, + "InteractionType": "Interact", + "AetheryteShortcut": "Gridania", + "AethernetShortcut": [ + "[Gridania] Aetheryte Plaza", + "[Gridania] Mih Khetto's Amphitheatre" + ], + "CompletionQuestVariablesFlags": [ + null, + null, + null, + 128, + null, + null + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "TerritoryId": 145, + "InteractionType": "UseItem", + "ItemId": 30362, + "TargetTerritoryId": 140 + }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo" + }, + { + "DataId": 2001711, + "Position": { + "X": -480.9181, + "Y": 18.00103, + "Z": -386.862 + }, + "TerritoryId": 140, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 2001715, + "Position": { + "X": 23.23944, + "Y": 2.090454, + "Z": -0.015319824 + }, + "TerritoryId": 212, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 1005122, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/513_Sylph-management.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/513_Sylph-management.json new file mode 100644 index 00000000..c05cfaf2 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/513_Sylph-management.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1005128, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000168, + "Position": { + "X": -75.48645, + "Y": -0.5013741, + "Z": -5.081299 + }, + "TerritoryId": 132, + "InteractionType": "Interact", + "AetheryteShortcut": "Gridania" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/574_Dressed to Deceive.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/574_Dressed to Deceive.json new file mode 100644 index 00000000..e69943f1 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/574_Dressed to Deceive.json @@ -0,0 +1,233 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "TerritoryId": 145, + "InteractionType": "EquipItem", + "ItemId": 2995 + }, + { + "TerritoryId": 145, + "InteractionType": "EquipItem", + "ItemId": 3306 + }, + { + "DataId": 1004327, + "Position": { + "X": -412.03937, + "Y": -48.15, + "Z": 102.61682 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "Position": { + "X": -409.44067, + "Y": -48.15, + "Z": 101.391624 + }, + "TerritoryId": 145, + "InteractionType": "Jump", + "JumpDestination": { + "Position": { + "X": -408.8825, + "Y": -55.764168, + "Z": 110.76053 + }, + "StopDistance": 5 + }, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -16 + ] + }, + { + "DataId": 1004506, + "Position": { + "X": -416.64764, + "Y": -54.15, + "Z": 96.42175 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 16 + ] + }, + { + "DataId": 1004325, + "Position": { + "X": -402.45673, + "Y": -57.07999, + "Z": 131.82263 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1004556, + "Position": { + "X": -394.85773, + "Y": -57.30005, + "Z": 173.32715 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 8 + ] + }, + { + "DataId": 1003947, + "Position": { + "X": -369.19202, + "Y": -57.079987, + "Z": 140.0625 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1004324, + "Position": { + "X": -377.6761, + "Y": -55.754112, + "Z": 108.17114 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1004330, + "Position": { + "X": -221.45422, + "Y": -30.074055, + "Z": 200.15259 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "TerritoryId": 145, + "InteractionType": "UseItem", + "ItemId": 30362, + "TargetTerritoryId": 140 + }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo" + }, + { + "DataId": 2001711, + "Position": { + "X": -480.9181, + "Y": 18.00103, + "Z": -386.862 + }, + "TerritoryId": 140, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 2001715, + "Position": { + "X": 23.23944, + "Y": 2.090454, + "Z": -0.015319824 + }, + "TerritoryId": 212, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 1005116, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/618_Unsolved Mystery.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/618_Unsolved Mystery.json new file mode 100644 index 00000000..6684049e --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/618_Unsolved Mystery.json @@ -0,0 +1,111 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": -338.71124, + "Y": -37.497707, + "Z": 243.90338 + }, + "TerritoryId": 145, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [ + 166 + ] + }, + { + "DataId": 1003943, + "Position": { + "X": -335.1645, + "Y": -37.195824, + "Z": 242.20642 + }, + "StopDistance": 7, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1003944, + "Position": { + "X": -335.71375, + "Y": -37.370598, + "Z": 245.31921 + }, + "StopDistance": 7, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1003942, + "Position": { + "X": -341.81738, + "Y": -37.60504, + "Z": 243.42712 + }, + "StopDistance": 7, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/619_What Poor People Think.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/619_What Poor People Think.json new file mode 100644 index 00000000..0bac2d82 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/619_What Poor People Think.json @@ -0,0 +1,127 @@ +{ + + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1003964, + "Position": { + "X": -378.53058, + "Y": -59.3, + "Z": 164.23279 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1003967, + "Position": { + "X": -392.87408, + "Y": -59, + "Z": 131.67004 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1003966, + "Position": { + "X": -373.22046, + "Y": -56.798405, + "Z": 121.99585 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1003965, + "Position": { + "X": -373.89185, + "Y": -55.898407, + "Z": 97.795044 + }, + "StopDistance": 7, + "TerritoryId": 145, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1003964, + "Position": { + "X": -378.53058, + "Y": -59.3, + "Z": 164.23279 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/620_A Proper Burial.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/620_A Proper Burial.json new file mode 100644 index 00000000..688967b8 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/620_A Proper Burial.json @@ -0,0 +1,112 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1005136, + "Position": { + "X": -522.20953, + "Y": -17.077162, + "Z": 18.966919 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2001657, + "Position": { + "X": -541.16125, + "Y": -5.2644043, + "Z": 46.097534 + }, + "TerritoryId": 145, + "InteractionType": "UseItem", + "ItemId": 2000517 + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 2001658, + "Position": { + "X": -541.1918, + "Y": -5.1728516, + "Z": 46.036377 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1005136, + "Position": { + "X": -522.20953, + "Y": -17.077162, + "Z": 18.966919 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1003969, + "Position": { + "X": -504.9363, + "Y": -16.22, + "Z": -3.7080078 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/621_For the Children.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/621_For the Children.json new file mode 100644 index 00000000..a75d44fd --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/621_For the Children.json @@ -0,0 +1,81 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1003976, + "Position": { + "X": -549.0349, + "Y": 4.824463, + "Z": -266.77356 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "Position": { + "X": -421.59717, + "Y": -0.48849356, + "Z": -278.41507 + }, + "TerritoryId": 145, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [ + 18, + 19 + ] + }, + { + "DataId": 1003975, + "Position": { + "X": -418.57025, + "Y": -0.17093202, + "Z": -280.38452 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "AetheryteShortcut": "Eastern Thanalan - Camp Drybone" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/622_Amalj'aa Wrong Places.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/622_Amalj'aa Wrong Places.json new file mode 100644 index 00000000..770b4baa --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/622_Amalj'aa Wrong Places.json @@ -0,0 +1,112 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1003977, + "Position": { + "X": -200.27472, + "Y": -28.350327, + "Z": 324.75757 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2001410, + "Position": { + "X": -95.17059, + "Y": -27.023743, + "Z": 274.00623 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1003977, + "Position": { + "X": -200.27472, + "Y": -28.350327, + "Z": 324.75757 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1004323, + "Position": { + "X": -444.72424, + "Y": -55.558167, + "Z": 92.088135 + }, + "TerritoryId": 145, + "InteractionType": "Interact", + "AetheryteShortcut": "Eastern Thanalan - Camp Drybone" + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1003978, + "Position": { + "X": -442.6795, + "Y": -55.694504, + "Z": 90.92847 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003929, + "Position": { + "X": -378.65265, + "Y": -55.75492, + "Z": 106.79785 + }, + "TerritoryId": 145, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/660_Into a Copper Hell.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/660_Into a Copper Hell.json new file mode 100644 index 00000000..8c9213ee --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/660_Into a Copper Hell.json @@ -0,0 +1,114 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 1038, + 274 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1001353, + "Position": { + "X": 21.072632, + "Y": 7.45, + "Z": -78.78235 + }, + "TerritoryId": 130, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1004621, + "Position": { + "X": 23.11737, + "Y": 6.9999914, + "Z": -86.533936 + }, + "TerritoryId": 130, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 17, + "Position": { + "X": 68.0094, + "Y": 48.203125, + "Z": -227.039 + }, + "TerritoryId": 140, + "InteractionType": "AttuneAetheryte", + "AethernetShortcut": [ + "[Ul'dah] Adventurers' Guild", + "[Ul'dah] Gate of the Sultana (Western Thanalan)" + ] + }, + { + "DataId": 1002285, + "Position": { + "X": 326.46667, + "Y": 63, + "Z": -231.64728 + }, + "TerritoryId": 140, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "TerritoryId": 140, + "InteractionType": "Duty", + "ContentFinderConditionId": 3 + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1004621, + "Position": { + "X": 23.11737, + "Y": 6.9999914, + "Z": -86.533936 + }, + "TerritoryId": 130, + "InteractionType": "SinglePlayerDuty", + "AetheryteShortcut": "Ul'dah", + "AethernetShortcut": [ + "[Ul'dah] Aetheryte Plaza", + "[Ul'dah] Adventurers' Guild" + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1001353, + "Position": { + "X": 21.072632, + "Y": 7.45, + "Z": -78.78235 + }, + "TerritoryId": 130, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/676_Call of the Forest.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/676_Call of the Forest.json new file mode 100644 index 00000000..0314f23e --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/676_Call of the Forest.json @@ -0,0 +1,74 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000972, + "Position": { + "X": 20.279175, + "Y": 40.19993, + "Z": -6.1189575 + }, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003597, + "Position": { + "X": 8.194031, + "Y": 39.999973, + "Z": 17.746216 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "TargetTerritoryId": 128, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131092 + } + ] + }, + { + "DataId": 1002695, + "Position": { + "X": -25.92511, + "Y": 91.999954, + "Z": -3.6774292 + }, + "TerritoryId": 128, + "InteractionType": "Interact", + "TargetTerritoryId": 132, + "DialogueChoices": [ + { + "Type": "List", + "ExcelSheet": "Warp", + "Prompt": null, + "Answer": 131106 + } + ] + }, + { + "DataId": 1000100, + "Position": { + "X": 23.819275, + "Y": -8, + "Z": 115.92273 + }, + "TerritoryId": 132, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/677_Fire in the Gloom.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/677_Fire in the Gloom.json new file mode 100644 index 00000000..88ee8a14 --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/677_Fire in the Gloom.json @@ -0,0 +1,80 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 1037 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000100, + "Position": { + "X": 23.819275, + "Y": -8, + "Z": 115.92273 + }, + "TerritoryId": 132, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 3, + "Position": { + "X": 13.076904, + "Y": 0.56451416, + "Z": 35.90442 + }, + "StopDistance": 10, + "TerritoryId": 148, + "InteractionType": "AttuneAetheryte", + "AethernetShortcut": [ + "[Gridania] Aetheryte Plaza", + "[Gridania] Blue Badger Gate (Central Shroud)" + ] + }, + { + "DataId": 1004612, + "Position": { + "X": -114.94629, + "Y": -39.702168, + "Z": 335.46948 + }, + "TerritoryId": 148, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "TerritoryId": 148, + "InteractionType": "Duty", + "ContentFinderConditionId": 2 + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1000100, + "Position": { + "X": 23.819275, + "Y": -8, + "Z": 115.92273 + }, + "TerritoryId": 132, + "InteractionType": "Interact", + "AetheryteShortcut": "Gridania" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/678_Call of the Desert.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/678_Call of the Desert.json new file mode 100644 index 00000000..1fa53c7d --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/678_Call of the Desert.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000100, + "Position": { + "X": 23.819275, + "Y": -8, + "Z": 115.92273 + }, + "TerritoryId": 132, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1001353, + "Position": { + "X": 21.072632, + "Y": 7.45, + "Z": -78.78235 + }, + "TerritoryId": 130, + "InteractionType": "Interact", + "AetheryteShortcut": "Ul'dah", + "AethernetShortcut": [ + "[Ul'dah] Aetheryte Plaza", + "[Ul'dah] Adventurers' Guild" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/681_The Company You Keep (Maelstrom).json b/QuestPaths/ARealmReborn/MSQ-1/Shared/681_The Company You Keep (Maelstrom).json new file mode 100644 index 00000000..09c9602f --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/681_The Company You Keep (Maelstrom).json @@ -0,0 +1,79 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [], + "Comment": "Quest start is intentionally empty, so you pick a Grand Company" + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1002388, + "Position": { + "X": 95.68933, + "Y": 40.250286, + "Z": 74.54028 + }, + "StopDistance": 5, + "TerritoryId": 128, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ], + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_MANSEA302_00681_Q2_000_1", + "Answer": "TEXT_MANSEA302_00681_A2_000_2" + } + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1004888, + "Position": { + "X": 389.2423, + "Y": 78.360275, + "Z": -349.05017 + }, + "TerritoryId": 135, + "InteractionType": "SinglePlayerDuty", + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002388, + "Position": { + "X": 95.68933, + "Y": 40.250286, + "Z": 74.54028 + }, + "StopDistance": 5, + "TerritoryId": 128, + "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-1/Shared/684_Till Sea Swallows All.json b/QuestPaths/ARealmReborn/MSQ-1/Shared/684_Till Sea Swallows All.json new file mode 100644 index 00000000..d203f80e --- /dev/null +++ b/QuestPaths/ARealmReborn/MSQ-1/Shared/684_Till Sea Swallows All.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002388, + "Position": { + "X": 95.68933, + "Y": 40.250286, + "Z": 74.54028 + }, + "StopDistance": 5, + "TerritoryId": 128, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "TerritoryId": 145, + "InteractionType": "UseItem", + "ItemId": 30362, + "TargetTerritoryId": 140 + }, + { + "Position": { + "X": -492.96475, + "Y": 20.999884, + "Z": -380.82272 + }, + "TerritoryId": 140, + "InteractionType": "WalkTo" + }, + { + "DataId": 2001711, + "Position": { + "X": -480.9181, + "Y": 18.00103, + "Z": -386.862 + }, + "TerritoryId": 140, + "InteractionType": "Interact", + "TargetTerritoryId": 212 + }, + { + "DataId": 1005012, + "Position": { + "X": 22.507019, + "Y": 0.9999986, + "Z": -2.02948 + }, + "TerritoryId": 212, + "InteractionType": "Interact" + } + ] + } + ] +} diff --git a/QuestPaths/ARealmReborn/MSQ-2/.gitkeep b/QuestPaths/ARealmReborn/MSQ-2/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4357_The Next Ship to Sail.json b/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4357_The Next Ship to Sail.json index 6ae5067b..be6e031a 100644 --- a/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4357_The Next Ship to Sail.json +++ b/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4357_The Next Ship to Sail.json @@ -32,7 +32,7 @@ "AetheryteShortcut": "Limsa Lominsa", "AethernetShortcut": [ "[Limsa Lominsa] Aetheryte Plaza", - "[Limsa Lominsa] Arcanist's Guild" + "[Limsa Lominsa] Arcanists' Guild" ] } ] diff --git a/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json b/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json index 86c87dd4..fd5d568c 100644 --- a/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json +++ b/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json @@ -72,6 +72,27 @@ { "Sequence": 255, "Steps": [ + { + "Position": { + "X": -601.1813, + "Y": -24.48022, + "Z": 633.1958 + }, + "TerritoryId": 956, + "InteractionType": "WalkTo", + "Comment": "Avoids aggro + possible navmesh issue", + "Mount": true + }, + { + "Position": { + "X": -596.4733, + "Y": -22.860794, + "Z": 666.64417 + }, + "TerritoryId": 956, + "InteractionType": "WalkTo", + "Comment": "Avoids aggro + possible navmesh issue" + }, { "DataId": 2011985, "Position": { diff --git a/QuestPaths/QuestPaths.csproj b/QuestPaths/QuestPaths.csproj index 631070ba..3ea68608 100644 --- a/QuestPaths/QuestPaths.csproj +++ b/QuestPaths/QuestPaths.csproj @@ -10,6 +10,12 @@ $(SolutionDir)=X:\ + + + + + diff --git a/QuestPaths/README.md b/QuestPaths/README.md new file mode 100644 index 00000000..8538f419 --- /dev/null +++ b/QuestPaths/README.md @@ -0,0 +1,29 @@ +# Quest Paths + +## Folder Structure + +Generally, the folder name is derived from SE's classification of quests. + +### A Realm Reborn + +- `MSQ-1`: All Starting Cities quests up to `Sylph-management` + - Limsa: `ManSea[...]` + - Gridania: `ManFst[...]`, also includes some latter quests (e.g. Ifrit) + - Ul'dah: `ManWil[...]` + - Generally, each starting class quest should be in its own city folder, with all shared quests in the `Shared` + folder +- `MSQ-2`: All quests from `We Come in Peace` until the end of ARR (incl. patches) + - original quests: `GaiUs@[...]`, with `@` being the letter used as part of the folder name + - reworked quests: `Xx[...]`, updated in 5.3 probabbly → see original quest + +### Heavensward + +### Stormblood + +### Shadowbringers + +- `MSQ`: `LucKm@` with `@` being the letter used as part of the folder name + +### Endwalker + +- `MSQ`: `AktKm@` with `@` being the letter used as part of the folder name diff --git a/QuestPaths/Shadowbringers/MSQ/J-5.4/4012_The Admiral's Resolve.json b/QuestPaths/Shadowbringers/MSQ/J-5.4/4012_The Admiral's Resolve.json index 4bd241a9..cd7c09ac 100644 --- a/QuestPaths/Shadowbringers/MSQ/J-5.4/4012_The Admiral's Resolve.json +++ b/QuestPaths/Shadowbringers/MSQ/J-5.4/4012_The Admiral's Resolve.json @@ -62,7 +62,7 @@ "InteractionType": "Interact", "AethernetShortcut": [ "[Limsa Lominsa] Aetheryte Plaza", - "[Limsa Lominsa] Marauder's Guild" + "[Limsa Lominsa] Marauders' Guild" ], "$.1": "QuestVariables if done first: 1 0 0 0 0 128" }, @@ -77,7 +77,7 @@ "TerritoryId": 128, "InteractionType": "Interact", "AethernetShortcut": [ - "[Limsa Lominsa] Marauder's Guild", + "[Limsa Lominsa] Marauders' Guild", "[Limsa Lominsa] The Aftcastle" ] } diff --git a/QuestPaths/Shadowbringers/MSQ/L-5.55/4065_On Official Business.json b/QuestPaths/Shadowbringers/MSQ/L-5.55/4065_On Official Business.json index 6376d9a4..e66a5761 100644 --- a/QuestPaths/Shadowbringers/MSQ/L-5.55/4065_On Official Business.json +++ b/QuestPaths/Shadowbringers/MSQ/L-5.55/4065_On Official Business.json @@ -33,7 +33,7 @@ "AetheryteShortcut": "Gridania", "AethernetShortcut": [ "[Gridania] Aetheryte Plaza", - "[Gridania] Lancer's Guild" + "[Gridania] Lancers' Guild" ] } ] @@ -70,7 +70,7 @@ "AetheryteShortcut": "Gridania", "AethernetShortcut": [ "[Gridania] Aetheryte Plaza", - "[Gridania] Conjurer's Guild" + "[Gridania] Conjurers' Guild" ] } ] diff --git a/QuestPaths/quest-v1.json b/QuestPaths/quest-v1.json index 6968fa21..0cf0ac3f 100644 --- a/QuestPaths/quest-v1.json +++ b/QuestPaths/quest-v1.json @@ -502,6 +502,25 @@ ] } }, + { + "if": { + "properties": { + "InteractionType": { + "const": "UseItem" + }, + "ItemId": { + "not": { + "const": 30362 + } + } + } + }, + "then": { + "required": [ + "Position" + ] + } + }, { "if": { "properties": { @@ -521,7 +540,6 @@ } }, "required": [ - "Position", "ItemId" ] } diff --git a/Questionable/Controller/GameUiController.cs b/Questionable/Controller/GameUiController.cs index e9fd522d..e17b3d64 100644 --- a/Questionable/Controller/GameUiController.cs +++ b/Questionable/Controller/GameUiController.cs @@ -2,12 +2,14 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Text.RegularExpressions; using Dalamud.Game.Addon.Lifecycle; using Dalamud.Game.Addon.Lifecycle.AddonArgTypes; using Dalamud.Game.ClientState.Objects; using Dalamud.Plugin.Services; using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Component.GUI; +using LLib; using LLib.GameUI; using Lumina.Excel.GeneratedSheets; using Microsoft.Extensions.Logging; @@ -26,9 +28,10 @@ internal sealed class GameUiController : IDisposable private readonly IGameGui _gameGui; private readonly ITargetManager _targetManager; private readonly ILogger _logger; + private readonly Regex _returnRegex; public GameUiController(IAddonLifecycle addonLifecycle, IDataManager dataManager, GameFunctions gameFunctions, - QuestController questController, IGameGui gameGui, ITargetManager targetManager, + QuestController questController, IGameGui gameGui, ITargetManager targetManager, IPluginLog pluginLog, ILogger logger) { _addonLifecycle = addonLifecycle; @@ -39,12 +42,16 @@ internal sealed class GameUiController : IDisposable _targetManager = targetManager; _logger = logger; + _returnRegex = _dataManager.GetExcelSheet()!.GetRow(196)!.GetRegex(addon => addon.Text, pluginLog)!; + _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectString", SelectStringPostSetup); _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "CutSceneSelectString", CutsceneSelectStringPostSetup); _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectIconString", SelectIconStringPostSetup); _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup); _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup); _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup); + _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "ContentsTutorial", ContentsTutorialPostSetup); + _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "MultipleHelpWindow", MultipleHelpWindowPostSetup); } internal unsafe void HandleCurrentDialogueChoices() @@ -96,11 +103,7 @@ internal sealed class GameUiController : IDisposable int? answer = HandleListChoice(actualPrompt, answers, checkAllSteps); if (answer != null) - { - if (!checkAllSteps) - _questController.IncreaseDialogueChoicesSelected(); addonSelectString->AtkUnitBase.FireCallbackInt(answer.Value); - } } private unsafe void CutsceneSelectStringPostSetup(AddonEvent type, AddonArgs args) @@ -122,11 +125,7 @@ internal sealed class GameUiController : IDisposable int? answer = HandleListChoice(actualPrompt, answers, checkAllSteps); if (answer != null) - { - if (!checkAllSteps) - _questController.IncreaseDialogueChoicesSelected(); addonCutSceneSelectString->AtkUnitBase.FireCallbackInt(answer.Value); - } } private unsafe void SelectIconStringPostSetup(AddonEvent type, AddonArgs args) @@ -148,9 +147,19 @@ internal sealed class GameUiController : IDisposable int? answer = HandleListChoice(actualPrompt, answers, checkAllSteps); if (answer != null) { - if (!checkAllSteps) - _questController.IncreaseDialogueChoicesSelected(); addonSelectIconString->AtkUnitBase.FireCallbackInt(answer.Value); + return; + } + + var currentQuest = _questController.CurrentQuest; + if (currentQuest != null && actualPrompt == null) + { + // it is possible for this to be a quest selection + string questName = currentQuest.Quest.Name; + int questSelection = answers.FindIndex(x => GameStringEquals(questName, x)); + if (questSelection >= 0) + addonSelectIconString->AtkUnitBase.FireCallbackInt(questSelection); + return; } } @@ -298,8 +307,6 @@ internal sealed class GameUiController : IDisposable } addonSelectYesno->AtkUnitBase.FireCallbackInt(dialogueChoice.Yes ? 0 : 1); - if (!checkAllSteps) - _questController.IncreaseDialogueChoicesSelected(); return true; } @@ -309,6 +316,13 @@ internal sealed class GameUiController : IDisposable private unsafe void HandleTravelYesNo(AddonSelectYesno* addonSelectYesno, QuestController.QuestProgress currentQuest, string actualPrompt) { + if (_gameFunctions.ReturnRequestedAt >= DateTime.Now.AddSeconds(-2) && _returnRegex.IsMatch(actualPrompt)) + { + _logger.LogInformation("Automatically confirming return..."); + addonSelectYesno->AtkUnitBase.FireCallbackInt(0); + return; + } + // this can be triggered either manually (in which case we should increase the step counter), or automatically // (in which case it is ~1 frame later, and the step counter has already been increased) var sequence = currentQuest.Quest.FindSequence(currentQuest.Sequence); @@ -339,8 +353,7 @@ internal sealed class GameUiController : IDisposable } var warps = _dataManager.GetExcelSheet()! - .Where(x => x.RowId > 0 && x.TerritoryType.Row == step.TargetTerritoryId) - .Where(x => x.ConfirmEvent.Row == 0); // unsure if this is needed + .Where(x => x.RowId > 0 && x.TerritoryType.Row == step.TargetTerritoryId); foreach (var entry in warps) { string? excelPrompt = entry.Question?.ToString(); @@ -375,6 +388,29 @@ internal sealed class GameUiController : IDisposable } } + private unsafe void ContentsTutorialPostSetup(AddonEvent type, AddonArgs args) + { + if (_questController.CurrentQuest?.Quest.QuestId == 245) + { + // TODO Test this + _logger.LogInformation("Closing ContentsTutorial"); + AtkUnitBase* addon = (AtkUnitBase*)args.Addon; + //addon->FireCallbackInt(-2); + addon->FireCallbackInt(13); + } + } + + private unsafe void MultipleHelpWindowPostSetup(AddonEvent type, AddonArgs args) + { + if (_questController.CurrentQuest?.Quest.QuestId == 245) + { + _logger.LogInformation("Closing MultipleHelpWindow"); + AtkUnitBase* addon = (AtkUnitBase*)args.Addon; + addon->FireCallbackInt(-2); + addon->FireCallbackInt(-1); + } + } + /// /// Ensures characters like '-' are handled equally in both strings. /// @@ -404,6 +440,8 @@ internal sealed class GameUiController : IDisposable public void Dispose() { + _addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "MultipleHelpWindow", MultipleHelpWindowPostSetup); + _addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "ContentsTutorial", ContentsTutorialPostSetup); _addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup); _addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup); _addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup); diff --git a/Questionable/Controller/MovementController.cs b/Questionable/Controller/MovementController.cs index cd5f9256..7f01ee3a 100644 --- a/Questionable/Controller/MovementController.cs +++ b/Questionable/Controller/MovementController.cs @@ -75,27 +75,6 @@ internal sealed class MovementController : IDisposable } } } - else if (!Destination.IsFlying && !_condition[ConditionFlag.Mounted] && navPoints.Count > 0 && - !_gameFunctions.HasStatusPreventingSprintOrMount(true) && Destination.CanSprint) - { - float actualDistance = 0; - foreach (Vector3 end in navPoints) - { - actualDistance += (start - end).Length(); - start = end; - } - - unsafe - { - // 70 is ~10 seconds of sprint - if (actualDistance > 100f && - ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 4) == 0) - { - _logger.LogInformation("Triggering Sprint"); - ActionManager.Instance()->UseAction(ActionType.GeneralAction, 4); - } - } - } _navmeshIpc.MoveTo(navPoints, Destination.IsFlying); MovementStartedAt = DateTime.Now; @@ -177,6 +156,32 @@ internal sealed class MovementController : IDisposable else Stop(); } + else if (!Destination.IsFlying && !_condition[ConditionFlag.Mounted] && + !_gameFunctions.HasStatusPreventingSprint() && Destination.CanSprint) + { + List navPoints = _navmeshIpc.GetWaypoints(); + Vector3? start = _clientState.LocalPlayer?.Position; + if (start != null) + { + float actualDistance = 0; + foreach (Vector3 end in navPoints) + { + actualDistance += (start.Value - end).Length(); + start = end; + } + + unsafe + { + // 70 is ~10 seconds of sprint + if (actualDistance > 100f && + ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 4) == 0) + { + _logger.LogInformation("Triggering Sprint"); + ActionManager.Instance()->UseAction(ActionType.GeneralAction, 4); + } + } + } + } } } diff --git a/Questionable/Controller/QuestController.cs b/Questionable/Controller/QuestController.cs index 45957fab..494a181e 100644 --- a/Questionable/Controller/QuestController.cs +++ b/Questionable/Controller/QuestController.cs @@ -32,6 +32,8 @@ internal sealed class QuestController private readonly Configuration _configuration; private readonly IReadOnlyList _taskFactories; + private readonly object _lock = new(); + private readonly Queue _taskQueue = new(); private ITask? _currentTask; private bool _automatic; @@ -63,10 +65,13 @@ internal sealed class QuestController public void Reload() { - CurrentQuest = null; - DebugState = null; + lock (_lock) + { + CurrentQuest = null; + DebugState = null; - _questRegistry.Reload(); + _questRegistry.Reload(); + } } public void Update() @@ -88,11 +93,14 @@ internal sealed class QuestController && CurrentQuest is { Sequence: 0, Step: 0 } or { Sequence: 0, Step: 255 } && DateTime.Now >= CurrentQuest.StepProgress.StartedAt.AddSeconds(15)) { - _logger.LogWarning("Quest accept apparently didn't work out, resetting progress"); - CurrentQuest = CurrentQuest with + lock (_lock) { - Step = 0 - }; + _logger.LogWarning("Quest accept apparently didn't work out, resetting progress"); + CurrentQuest = CurrentQuest with + { + Step = 0 + }; + } ExecuteNextStep(true); return; @@ -103,103 +111,106 @@ internal sealed class QuestController private void UpdateCurrentQuest() { - DebugState = null; - - (ushort currentQuestId, byte currentSequence) = _gameFunctions.GetCurrentQuest(); - if (currentQuestId == 0) + lock (_lock) { - if (CurrentQuest != null) + DebugState = null; + + (ushort currentQuestId, byte currentSequence) = _gameFunctions.GetCurrentQuest(); + if (currentQuestId == 0) { - _logger.LogInformation("No current quest, resetting data"); - CurrentQuest = null; - Stop("Resetting current quest"); + if (CurrentQuest != null) + { + _logger.LogInformation("No current quest, resetting data"); + CurrentQuest = null; + Stop("Resetting current quest"); + } } - } - else if (CurrentQuest == null || CurrentQuest.Quest.QuestId != currentQuestId) - { - if (_questRegistry.TryGetQuest(currentQuestId, out var quest)) + else if (CurrentQuest == null || CurrentQuest.Quest.QuestId != currentQuestId) { - _logger.LogInformation("New quest: {QuestName}", quest.Name); - CurrentQuest = new QuestProgress(quest, currentSequence, 0); + if (_questRegistry.TryGetQuest(currentQuestId, out var quest)) + { + _logger.LogInformation("New quest: {QuestName}", quest.Name); + CurrentQuest = new QuestProgress(quest, currentSequence, 0); - bool continueAutomatically = _configuration.General.AutoAcceptNextQuest; + bool continueAutomatically = _configuration.General.AutoAcceptNextQuest; - if (_clientState.LocalPlayer?.Level < quest.Level) - continueAutomatically = false; + if (_clientState.LocalPlayer?.Level < quest.Level) + continueAutomatically = false; - Stop("Different Quest", continueAutomatically); - } - else if (CurrentQuest != null) - { - _logger.LogInformation("No active quest anymore? Not sure what happened..."); - CurrentQuest = null; - Stop("No active Quest"); + Stop("Different Quest", continueAutomatically); + } + else if (CurrentQuest != null) + { + _logger.LogInformation("No active quest anymore? Not sure what happened..."); + CurrentQuest = null; + Stop("No active Quest"); + } + + return; } - return; - } + if (CurrentQuest == null) + { + DebugState = "No quest active"; + Comment = null; + Stop("No quest active"); + return; + } - if (CurrentQuest == null) - { - DebugState = "No quest active"; - Comment = null; - Stop("No quest active"); - return; - } + if (_gameFunctions.IsOccupied()) + { + DebugState = "Occupied"; + return; + } - if (_gameFunctions.IsOccupied()) - { - DebugState = "Occupied"; - return; - } + if (!_movementController.IsNavmeshReady) + { + DebugState = "Navmesh not ready"; + return; + } + else if (_movementController.IsPathfinding || _movementController.IsPathRunning) + { + DebugState = "Path is running"; + return; + } - if (!_movementController.IsNavmeshReady) - { - DebugState = "Navmesh not ready"; - return; - } - else if (_movementController.IsPathfinding || _movementController.IsPathRunning) - { - DebugState = "Path is running"; - return; - } + if (CurrentQuest.Sequence != currentSequence) + { + CurrentQuest = CurrentQuest with { Sequence = currentSequence, Step = 0 }; + Stop("New sequence", continueIfAutomatic: true); + } - if (CurrentQuest.Sequence != currentSequence) - { - CurrentQuest = CurrentQuest with { Sequence = currentSequence, Step = 0 }; - Stop("New sequence", continueIfAutomatic: true); - } + var q = CurrentQuest.Quest; + var sequence = q.FindSequence(CurrentQuest.Sequence); + if (sequence == null) + { + DebugState = "Sequence not found"; + Comment = null; + Stop("Unknown sequence"); + return; + } - var q = CurrentQuest.Quest; - var sequence = q.FindSequence(CurrentQuest.Sequence); - if (sequence == null) - { - DebugState = "Sequence not found"; - Comment = null; - Stop("Unknown sequence"); - return; - } + if (CurrentQuest.Step == 255) + { + DebugState = "Step completed"; + Comment = null; + if (_currentTask != null || _taskQueue.Count > 0) + Stop("Step complete", continueIfAutomatic: true); + return; + } - if (CurrentQuest.Step == 255) - { - DebugState = "Step completed"; - Comment = null; - if (_currentTask != null || _taskQueue.Count > 0) - Stop("Step complete", continueIfAutomatic: true); - return; - } + if (CurrentQuest.Step >= sequence.Steps.Count) + { + DebugState = "Step not found"; + Comment = null; + Stop("Unknown step"); + return; + } - if (CurrentQuest.Step >= sequence.Steps.Count) - { - DebugState = "Step not found"; - Comment = null; - Stop("Unknown step"); - return; + var step = sequence.Steps[CurrentQuest.Step]; + DebugState = null; + Comment = step.Comment ?? sequence.Comment ?? q.Data.Comment; } - - var step = sequence.Steps[CurrentQuest.Step]; - DebugState = null; - Comment = step.Comment ?? sequence.Comment ?? q.Data.Comment; } public (QuestSequence? Sequence, QuestStep? Step) GetNextStep() @@ -218,61 +229,55 @@ internal sealed class QuestController return (seq, seq.Steps[CurrentQuest.Step]); } - public void IncreaseStepCount(bool shouldContinue = false) + public void IncreaseStepCount(ushort? questId, int? sequence, bool shouldContinue = false) { - (QuestSequence? seq, QuestStep? step) = GetNextStep(); - if (CurrentQuest == null || seq == null || step == null) + lock (_lock) { - _logger.LogWarning("Unable to retrieve next quest step, not increasing step count"); - return; - } - - _logger.LogInformation("Increasing step count from {CurrentValue}", CurrentQuest.Step); - if (CurrentQuest.Step + 1 < seq.Steps.Count) - { - CurrentQuest = CurrentQuest with + (QuestSequence? seq, QuestStep? step) = GetNextStep(); + if (CurrentQuest == null || seq == null || step == null) { - Step = CurrentQuest.Step + 1, - StepProgress = new(DateTime.Now), - }; - } - else - { - CurrentQuest = CurrentQuest with - { - Step = 255, - StepProgress = new(DateTime.Now), - }; - } + _logger.LogWarning("Unable to retrieve next quest step, not increasing step count"); + return; + } + if (questId != null && CurrentQuest.Quest.QuestId != questId) + { + _logger.LogWarning( + "Ignoring 'increase step count' for different quest (expected {ExpectedQuestId}, but we are at {CurrentQuestId}", + questId, CurrentQuest.Quest.QuestId); + return; + } + + if (sequence != null && seq.Sequence != sequence.Value) + { + _logger.LogWarning( + "Ignoring 'increase step count' for different sequence (expected {ExpectedSequence}, but we are at {CurrentSequence}", + sequence, seq.Sequence); + } + + _logger.LogInformation("Increasing step count from {CurrentValue}", CurrentQuest.Step); + if (CurrentQuest.Step + 1 < seq.Steps.Count) + { + CurrentQuest = CurrentQuest with + { + Step = CurrentQuest.Step + 1, + StepProgress = new(DateTime.Now), + }; + } + else + { + CurrentQuest = CurrentQuest with + { + Step = 255, + StepProgress = new(DateTime.Now), + }; + } + } if (shouldContinue && _automatic) ExecuteNextStep(true); } - public void IncreaseDialogueChoicesSelected() - { - (QuestSequence? seq, QuestStep? step) = GetNextStep(); - if (CurrentQuest == null || seq == null || step == null) - { - _logger.LogWarning("Unable to retrieve next quest step, not increasing dialogue choice count"); - return; - } - - CurrentQuest = CurrentQuest with - { - StepProgress = CurrentQuest.StepProgress with - { - DialogueChoicesSelected = CurrentQuest.StepProgress.DialogueChoicesSelected + 1 - } - }; - - /* TODO Is this required? - if (CurrentQuest.StepProgress.DialogueChoicesSelected >= step.DialogueChoices.Count) - IncreaseStepCount(); - */ - } - private void ClearTasksInternal() { _currentTask = null; @@ -377,8 +382,10 @@ internal sealed class QuestController case ETaskResult.NextStep: _logger.LogInformation("{Task} → {Result}", _currentTask, result); + + var lastTask = (ILastTask)_currentTask; _currentTask = null; - IncreaseStepCount(true); + IncreaseStepCount(lastTask.QuestId, lastTask.Sequence, true); return; case ETaskResult.End: @@ -461,4 +468,34 @@ internal sealed class QuestController public sealed record StepProgress( DateTime StartedAt, int DialogueChoicesSelected = 0); + + public void Skip(ushort questQuestId, byte currentQuestSequence) + { + lock (_lock) + { + if (_currentTask is ISkippableTask) + _currentTask = null; + else if (_currentTask != null) + { + _currentTask = null; + while (_taskQueue.Count > 0) + { + var task = _taskQueue.Dequeue(); + if (task is ISkippableTask) + return; + } + + if (_taskQueue.Count == 0) + { + Stop("Skip"); + IncreaseStepCount(questQuestId, currentQuestSequence); + } + } + else + { + Stop("SkipNx"); + IncreaseStepCount(questQuestId, currentQuestSequence); + } + } + } } diff --git a/Questionable/Controller/QuestRegistry.cs b/Questionable/Controller/QuestRegistry.cs index e3ddd3ba..1bc3a44e 100644 --- a/Questionable/Controller/QuestRegistry.cs +++ b/Questionable/Controller/QuestRegistry.cs @@ -42,6 +42,7 @@ internal sealed class QuestRegistry new DirectoryInfo(Path.Combine(solutionDirectory.FullName, "QuestPaths")); if (pathProjectDirectory.Exists) { + LoadFromDirectory(new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, "ARealmReborn"))); LoadFromDirectory(new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, "Shadowbringers"))); LoadFromDirectory(new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, "Endwalker"))); } diff --git a/Questionable/Controller/Steps/BaseFactory/AethernetShortcut.cs b/Questionable/Controller/Steps/BaseFactory/AethernetShortcut.cs index 34d26abb..f48dccb7 100644 --- a/Questionable/Controller/Steps/BaseFactory/AethernetShortcut.cs +++ b/Questionable/Controller/Steps/BaseFactory/AethernetShortcut.cs @@ -31,7 +31,7 @@ internal static class AethernetShortcut IClientState clientState, AetheryteData aetheryteData, LifestreamIpc lifestreamIpc, - MovementController movementController) : ITask + MovementController movementController) : ISkippableTask { private bool _moving; private bool _teleported; @@ -117,7 +117,7 @@ internal static class AethernetShortcut else if (aetheryteData.IsCityAetheryte(To)) { if (aetheryteData.CalculateDistance(clientState.LocalPlayer?.Position ?? Vector3.Zero, - clientState.TerritoryType, To) > 11) + clientState.TerritoryType, To) > 20) return ETaskResult.StillRunning; } else diff --git a/Questionable/Controller/Steps/BaseFactory/AetheryteShortcut.cs b/Questionable/Controller/Steps/BaseFactory/AetheryteShortcut.cs index 58ecb128..5a3f76c6 100644 --- a/Questionable/Controller/Steps/BaseFactory/AetheryteShortcut.cs +++ b/Questionable/Controller/Steps/BaseFactory/AetheryteShortcut.cs @@ -37,7 +37,7 @@ internal static class AetheryteShortcut GameFunctions gameFunctions, IClientState clientState, IChatGui chatGui, - AetheryteData aetheryteData) : ITask + AetheryteData aetheryteData) : ISkippableTask { private DateTime _continueAt; diff --git a/Questionable/Controller/Steps/BaseFactory/Move.cs b/Questionable/Controller/Steps/BaseFactory/Move.cs index 61f7957a..5c71dc72 100644 --- a/Questionable/Controller/Steps/BaseFactory/Move.cs +++ b/Questionable/Controller/Steps/BaseFactory/Move.cs @@ -62,8 +62,10 @@ internal static class Move yield return new WaitConditionTask(() => clientState.TerritoryType == Step.TerritoryId, $"Wait(territory: {Step.TerritoryId})"); - yield return new WaitConditionTask(() => movementController.IsNavmeshReady, - "Wait(navmesh ready)"); + + if (!Step.DisableNavmesh) + yield return new WaitConditionTask(() => movementController.IsNavmeshReady, + "Wait(navmesh ready)"); float distance; if (Step.InteractionType == EInteractionType.WalkTo) diff --git a/Questionable/Controller/Steps/BaseFactory/WaitAtEnd.cs b/Questionable/Controller/Steps/BaseFactory/WaitAtEnd.cs index 5c374fad..59f2c0ec 100644 --- a/Questionable/Controller/Steps/BaseFactory/WaitAtEnd.cs +++ b/Questionable/Controller/Steps/BaseFactory/WaitAtEnd.cs @@ -65,12 +65,13 @@ internal static class WaitAtEnd ]; case EInteractionType.Interact when step.TargetTerritoryId != null: + case EInteractionType.UseItem when step.TargetTerritoryId != null: ITask waitInteraction; if (step.TerritoryId != step.TargetTerritoryId) { // interaction moves to a different territory - waitInteraction = new WaitConditionTask(() => clientState.TerritoryType == step.TerritoryId, - $"Wait(tp to territory: {step.TerritoryId})"); + waitInteraction = new WaitConditionTask(() => clientState.TerritoryType == step.TargetTerritoryId, + $"Wait(tp to territory: {step.TargetTerritoryId})"); } else { @@ -82,7 +83,10 @@ internal static class WaitAtEnd return false; // interaction moved to elsewhere in the zone - return (lastPosition - currentPosition.Value).Length() > 20; + // the 'closest' locations are probably + // - waking sands' solar + // - rising stones' solar + dawn's respite + return (lastPosition - currentPosition.Value).Length() > 2; }, $"Wait(tp away from {lastPosition.ToString("G", CultureInfo.InvariantCulture)})"); } @@ -122,7 +126,7 @@ internal static class WaitAtEnd "Wait(questComplete)"); } else - return new NextStep(); + return new NextStep(quest.QuestId, sequence.Sequence); } } @@ -193,8 +197,11 @@ internal static class WaitAtEnd $"WaitObj({DataId} at {Destination.ToString("G", CultureInfo.InvariantCulture)})"; } - internal sealed class NextStep : ILastTask + internal sealed class NextStep(ushort questId, int sequence) : ILastTask { + public ushort QuestId { get; } = questId; + public int Sequence { get; } = sequence; + public bool Start() => true; public ETaskResult Update() => ETaskResult.NextStep; @@ -204,6 +211,9 @@ internal static class WaitAtEnd internal sealed class EndAutomation : ILastTask { + public ushort QuestId => throw new InvalidOperationException(); + public int Sequence => throw new InvalidOperationException(); + public bool Start() => true; public ETaskResult Update() => ETaskResult.End; diff --git a/Questionable/Controller/Steps/BaseTasks/MountTask.cs b/Questionable/Controller/Steps/BaseTasks/MountTask.cs index e9aa7b65..f1e816e7 100644 --- a/Questionable/Controller/Steps/BaseTasks/MountTask.cs +++ b/Questionable/Controller/Steps/BaseTasks/MountTask.cs @@ -33,7 +33,7 @@ internal sealed class MountTask( return false; } - if (gameFunctions.HasStatusPreventingSprintOrMount()) + if (gameFunctions.HasStatusPreventingMount()) { logger.LogInformation("Can't mount due to status preventing sprint or mount"); return false; @@ -60,7 +60,7 @@ internal sealed class MountTask( if (!_mountTriggered) { - if (gameFunctions.HasStatusPreventingSprintOrMount()) + if (gameFunctions.HasStatusPreventingMount()) { logger.LogInformation("Can't mount due to status preventing sprint or mount"); return ETaskResult.TaskComplete; diff --git a/Questionable/Controller/Steps/BaseTasks/WaitConditionTask.cs b/Questionable/Controller/Steps/BaseTasks/WaitConditionTask.cs index 93ad10c5..17565464 100644 --- a/Questionable/Controller/Steps/BaseTasks/WaitConditionTask.cs +++ b/Questionable/Controller/Steps/BaseTasks/WaitConditionTask.cs @@ -4,9 +4,20 @@ namespace Questionable.Controller.Steps.BaseTasks; internal sealed class WaitConditionTask(Func predicate, string description) : ITask { - public bool Start() => predicate(); + private DateTime _continueAt = DateTime.MaxValue; - public ETaskResult Update() => predicate() ? ETaskResult.TaskComplete : ETaskResult.StillRunning; + public bool Start() => !predicate(); + + public ETaskResult Update() + { + if (_continueAt == DateTime.MaxValue) + { + if (predicate()) + _continueAt = DateTime.Now.AddSeconds(0.5); + } + + return DateTime.Now >= _continueAt ? ETaskResult.TaskComplete : ETaskResult.StillRunning; + } public override string ToString() => description; } diff --git a/Questionable/Controller/Steps/ILastTask.cs b/Questionable/Controller/Steps/ILastTask.cs index 66cf214f..f0f99cc4 100644 --- a/Questionable/Controller/Steps/ILastTask.cs +++ b/Questionable/Controller/Steps/ILastTask.cs @@ -2,5 +2,6 @@ internal interface ILastTask : ITask { - + public ushort QuestId { get; } + public int Sequence { get; } } diff --git a/Questionable/Controller/Steps/ISkippableTask.cs b/Questionable/Controller/Steps/ISkippableTask.cs new file mode 100644 index 00000000..1f0ff975 --- /dev/null +++ b/Questionable/Controller/Steps/ISkippableTask.cs @@ -0,0 +1,3 @@ +namespace Questionable.Controller.Steps; + +internal interface ISkippableTask : ITask; diff --git a/Questionable/Controller/Steps/InteractionFactory/Interact.cs b/Questionable/Controller/Steps/InteractionFactory/Interact.cs index 8ab55778..7a2b5f3c 100644 --- a/Questionable/Controller/Steps/InteractionFactory/Interact.cs +++ b/Questionable/Controller/Steps/InteractionFactory/Interact.cs @@ -1,10 +1,12 @@ using System; +using System.Collections.Generic; using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Questionable.Controller.Steps.BaseFactory; using Questionable.Model; using Questionable.Model.V1; @@ -14,16 +16,23 @@ internal static class Interact { internal sealed class Factory(IServiceProvider serviceProvider) : ITaskFactory { - public ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step) + public IEnumerable CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step) { if (step.InteractionType != EInteractionType.Interact) - return null; + yield break; ArgumentNullException.ThrowIfNull(step.DataId); - return serviceProvider.GetRequiredService() + // if we're fast enough, it is possible to get the smalltalk prompt + if (sequence.Sequence == 0 && sequence.Steps.IndexOf(step) == 0) + yield return serviceProvider.GetRequiredService(); + + yield return serviceProvider.GetRequiredService() .With(step.DataId.Value, step.TargetTerritoryId != null); } + + public ITask CreateTask(Quest quest, QuestSequence sequence, QuestStep step) + => throw new InvalidOperationException(); } internal sealed class DoInteract(GameFunctions gameFunctions, ICondition condition, ILogger logger) diff --git a/Questionable/Controller/Steps/InteractionFactory/UseItem.cs b/Questionable/Controller/Steps/InteractionFactory/UseItem.cs index 4289e6f2..7b6d043d 100644 --- a/Questionable/Controller/Steps/InteractionFactory/UseItem.cs +++ b/Questionable/Controller/Steps/InteractionFactory/UseItem.cs @@ -50,18 +50,23 @@ internal static class UseItem private bool _usedItem; private DateTime _continueAt; + public uint ItemId { get; set; } + protected abstract bool UseItem(); public bool Start() { _usedItem = UseItem(); - _continueAt = DateTime.Now.AddSeconds(2); + if (ItemId == 30362) // vesper bay aether ticket + _continueAt = DateTime.Now.AddSeconds(11); + else + _continueAt = DateTime.Now.AddSeconds(2); return true; } public ETaskResult Update() { - if (DateTime.Now > _continueAt) + if (DateTime.Now <= _continueAt) return ETaskResult.StillRunning; if (!_usedItem) @@ -79,7 +84,6 @@ internal static class UseItem internal sealed class UseOnGround(GameFunctions gameFunctions) : UseItemBase { public uint DataId { get; set; } - public uint ItemId { get; set; } public ITask With(uint dataId, uint itemId) { @@ -96,7 +100,6 @@ internal static class UseItem internal sealed class UseOnObject(GameFunctions gameFunctions) : UseItemBase { public uint DataId { get; set; } - public uint ItemId { get; set; } public ITask With(uint dataId, uint itemId) { @@ -112,8 +115,6 @@ internal static class UseItem internal sealed class Use(GameFunctions gameFunctions) : UseItemBase { - public uint ItemId { get; set; } - public ITask With(uint itemId) { ItemId = itemId; diff --git a/Questionable/External/NavmeshIpc.cs b/Questionable/External/NavmeshIpc.cs index 38dc1ddc..cc7bbdd4 100644 --- a/Questionable/External/NavmeshIpc.cs +++ b/Questionable/External/NavmeshIpc.cs @@ -15,6 +15,7 @@ internal sealed class NavmeshIpc private readonly ICallGateSubscriber, bool, object> _pathMoveTo; private readonly ICallGateSubscriber _pathStop; private readonly ICallGateSubscriber _pathIsRunning; + private readonly ICallGateSubscriber> _pathListWaypoints; private readonly ICallGateSubscriber _pathGetTolerance; private readonly ICallGateSubscriber _pathSetTolerance; private readonly ICallGateSubscriber _queryPointOnFloor; @@ -28,6 +29,7 @@ internal sealed class NavmeshIpc _pathMoveTo = pluginInterface.GetIpcSubscriber, bool, object>("vnavmesh.Path.MoveTo"); _pathStop = pluginInterface.GetIpcSubscriber("vnavmesh.Path.Stop"); _pathIsRunning = pluginInterface.GetIpcSubscriber("vnavmesh.Path.IsRunning"); + _pathListWaypoints = pluginInterface.GetIpcSubscriber>("vnavmesh.Path.ListWaypoints"); _pathGetTolerance = pluginInterface.GetIpcSubscriber("vnavmesh.Path.GetTolerance"); _pathSetTolerance = pluginInterface.GetIpcSubscriber("vnavmesh.Path.SetTolerance"); _queryPointOnFloor = @@ -69,4 +71,12 @@ internal sealed class NavmeshIpc public Vector3? GetPointOnFloor(Vector3 position) => _queryPointOnFloor.InvokeFunc(position, true, 1); + + public List GetWaypoints() + { + if (IsPathRunning) + return _pathListWaypoints.InvokeFunc(); + else + return []; + } } diff --git a/Questionable/GameFunctions.cs b/Questionable/GameFunctions.cs index 67fd79b5..3c3da805 100644 --- a/Questionable/GameFunctions.cs +++ b/Questionable/GameFunctions.cs @@ -99,6 +99,8 @@ internal sealed unsafe class GameFunctions .AsReadOnly(); } + public DateTime ReturnRequestedAt { get; set; } = DateTime.MinValue; + public (ushort CurrentQuest, byte Sequence) GetCurrentQuest() { ushort currentQuest; @@ -133,7 +135,12 @@ internal sealed unsafe class GameFunctions currentQuest = scenarioTree->Data->CurrentScenarioQuest; if (currentQuest == 0) + { + if (_clientState.TerritoryType == 181) // Starting Limsa + return (107, 0); + return default; + } return (currentQuest, QuestManager.GetQuestSequence(currentQuest)); } @@ -186,6 +193,15 @@ internal sealed unsafe class GameFunctions if (IsAetheryteUnlocked(aetheryteId, out var subIndex)) { + if (aetheryteId == PlayerState.Instance()->HomeAetheryteId && + ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 8) == 0) + { + ReturnRequestedAt = DateTime.Now; + if (ActionManager.Instance()->UseAction(ActionType.GeneralAction, 8)) + return true; + } + + // fallback if return isn't available or (more likely) on a different aetheryte return Telepo.Instance()->Teleport(aetheryteId, subIndex); } @@ -197,6 +213,9 @@ internal sealed unsafe class GameFunctions public bool IsFlyingUnlocked(ushort territoryId) { + if (_configuration.Advanced.NeverFly) + return false; + var playerState = PlayerState.Instance(); return playerState != null && _territoryToAetherCurrentCompFlgSet.TryGetValue(territoryId, out byte aetherCurrentCompFlgSet) && @@ -360,19 +379,26 @@ internal sealed unsafe class GameFunctions if (gameObject != null) { _logger.LogInformation("Setting target with {DataId} to {ObjectId}", dataId, gameObject.ObjectId); + _targetManager.Target = null; _targetManager.Target = gameObject; - ulong result = TargetSystem.Instance()->InteractWithObject( + long result = (long)TargetSystem.Instance()->InteractWithObject( (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)gameObject.Address, false); - return result != 0; + + _logger.LogInformation("Interact result: {Result}", result); + return result > 0; } + _logger.LogDebug("Game object is null"); return false; } public bool UseItem(uint itemId) { - return AgentInventoryContext.Instance()->UseItem(itemId) == 0; + long result = AgentInventoryContext.Instance()->UseItem(itemId); + _logger.LogInformation("UseItem result: {Result}", result); + + return result == 0; } public bool UseItem(uint dataId, uint itemId) @@ -381,7 +407,10 @@ internal sealed unsafe class GameFunctions if (gameObject != null) { _targetManager.Target = gameObject; - return AgentInventoryContext.Instance()->UseItem(itemId) == 0; + long result = AgentInventoryContext.Instance()->UseItem(itemId); + + _logger.LogInformation("UseItem result on {DataId}: {Result}", dataId, result); + return result == 0; } return false; @@ -420,11 +449,8 @@ internal sealed unsafe class GameFunctions return gameObject != null && (gameObject.Position - position).Length() < 0.05f; } - public bool HasStatusPreventingSprintOrMount(bool skipConfigCheck = false) + public bool HasStatusPreventingMount() { - if (!skipConfigCheck && _configuration.Advanced.NeverFly) - return true; - if (_condition[ConditionFlag.Swimming] && !IsFlyingUnlockedInCurrentZone()) return true; @@ -433,6 +459,13 @@ internal sealed unsafe class GameFunctions if (playerState != null && !playerState->IsMountUnlocked(1)) return true; + return HasCharacterStatusPreventingMountOrSprint(); + } + + public bool HasStatusPreventingSprint() => HasCharacterStatusPreventingMountOrSprint(); + + private bool HasCharacterStatusPreventingMountOrSprint() + { var gameObject = GameObjectManager.GetGameObjectByIndex(0); if (gameObject != null && gameObject->ObjectKind == 1) { @@ -547,6 +580,11 @@ internal sealed unsafe class GameFunctions var questRow = _dataManager.GetExcelSheet()!.GetRow(rowId); return questRow?.Unknown0?.ToString(); } + else if (excelSheet == "Warp") + { + var questRow = _dataManager.GetExcelSheet()!.GetRow(rowId); + return questRow?.Name?.ToString(); + } else if (excelSheet is "ContentTalk" or null) { var questRow = _dataManager.GetExcelSheet()!.GetRow(rowId); diff --git a/Questionable/Questionable.csproj b/Questionable/Questionable.csproj index f249c7fa..d9484247 100644 --- a/Questionable/Questionable.csproj +++ b/Questionable/Questionable.csproj @@ -1,7 +1,7 @@  net8.0-windows - 0.12 + 0.13 12 enable true diff --git a/Questionable/Windows/DebugWindow.cs b/Questionable/Windows/DebugWindow.cs index beaeca6f..468a455f 100644 --- a/Questionable/Windows/DebugWindow.cs +++ b/Questionable/Windows/DebugWindow.cs @@ -6,7 +6,6 @@ using Dalamud.Game.ClientState.Objects; using Dalamud.Interface; using Dalamud.Interface.Colors; using Dalamud.Interface.Components; -using Dalamud.Interface.Windowing; using Dalamud.Plugin; using Dalamud.Plugin.Services; using FFXIVClientStructs.FFXIV.Client.Game; @@ -18,6 +17,7 @@ using LLib.ImGui; using Microsoft.Extensions.Logging; using Questionable.Controller; using Questionable.Controller.Steps.BaseFactory; +using Questionable.External; using Questionable.Model; using Questionable.Model.V1; @@ -34,6 +34,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig private readonly ITargetManager _targetManager; private readonly GameUiController _gameUiController; private readonly Configuration _configuration; + private readonly NavmeshIpc _navmeshIpc; private readonly ILogger _logger; public DebugWindow(DalamudPluginInterface pluginInterface, @@ -45,6 +46,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig ITargetManager targetManager, GameUiController gameUiController, Configuration configuration, + NavmeshIpc navmeshIpc, ILogger logger) : base("Questionable", ImGuiWindowFlags.AlwaysAutoResize) { @@ -57,6 +59,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig _targetManager = targetManager; _gameUiController = gameUiController; _configuration = configuration; + _navmeshIpc = navmeshIpc; _logger = logger; IsOpen = true; @@ -65,6 +68,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig MinimumSize = new Vector2(200, 30), MaximumSize = default }; + RespectCloseHotkey = false; } public WindowConfig WindowConfig => _configuration.DebugWindowConfig; @@ -167,8 +171,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.ArrowCircleRight, "Skip")) { _movementController.Stop(); - _questController.Stop("Manual"); - _questController.IncreaseStepCount(); + _questController.Skip(currentQuest.Quest.QuestId, currentQuest.Sequence); } if (colored) @@ -304,7 +307,8 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig { var map = AgentMap.Instance(); ImGui.BeginDisabled(map == null || map->IsFlagMarkerSet == 0 || - map->FlagMapMarker.TerritoryId != _clientState.TerritoryType); + map->FlagMapMarker.TerritoryId != _clientState.TerritoryType || + !_navmeshIpc.IsReady); if (ImGui.Button("Move to Flag")) _gameFunctions.ExecuteCommand( $"/vnav {(_gameFunctions.IsFlyingUnlockedInCurrentZone() ? "flyflag" : "moveflag")}");