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