Limsa start unil Sylph Management; various fixes v0.13
authorLiza Carvelli <liza@carvel.li>
Thu, 13 Jun 2024 23:10:05 +0000 (01:10 +0200)
committerLiza Carvelli <liza@carvel.li>
Thu, 13 Jun 2024 23:11:48 +0000 (01:11 +0200)
70 files changed:
QuestPaths/ARealmReborn/MSQ-1/Limsa/107_Coming to Limsa Lominsa.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/108_MRD_Close to Home.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/109_ACN_Close to Home.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/397_Sky-high.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/402_Thanks a Million.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/403_Relighting the Torch.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/406_On to the Drydocks.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/412_Without a Doubt.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/413_Do Angry Pirates Dream.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/414_Victory in Peril.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/415_Righting the Shipwright.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/462_On to Summerford.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/463_Dressed to Call.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/465_Washed Up.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/466_Double Dealing.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/467_Loam Maintenance.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/468_Plowshares to Swords.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/469_Just Deserts.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/543_Lurkers in the Grotto.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/544_Feint and Strike.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/545_A Mizzenmast Repast.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/546_The Lominsan Envoy.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/674_Call of the Sea.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/689_Men of the Blue Tattoos.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Limsa/690_High Society.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/245_It's Probably Pirates.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/272_Life, Materia and Everything.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/343_Lord of the Inferno.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/509_The Scions of the Seventh Dawn.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/510_A Wild Rose By Any Other Name.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/511_A Hero in the Making.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/513_Sylph-management.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/574_Dressed to Deceive.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/618_Unsolved Mystery.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/619_What Poor People Think.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/620_A Proper Burial.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/621_For the Children.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/622_Amalj'aa Wrong Places.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/660_Into a Copper Hell.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/676_Call of the Forest.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/677_Fire in the Gloom.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/678_Call of the Desert.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/681_The Company You Keep (Maelstrom).json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-1/Shared/684_Till Sea Swallows All.json [new file with mode: 0644]
QuestPaths/ARealmReborn/MSQ-2/.gitkeep [new file with mode: 0644]
QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4357_The Next Ship to Sail.json
QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json
QuestPaths/QuestPaths.csproj
QuestPaths/README.md [new file with mode: 0644]
QuestPaths/Shadowbringers/MSQ/J-5.4/4012_The Admiral's Resolve.json
QuestPaths/Shadowbringers/MSQ/L-5.55/4065_On Official Business.json
QuestPaths/quest-v1.json
Questionable/Controller/GameUiController.cs
Questionable/Controller/MovementController.cs
Questionable/Controller/QuestController.cs
Questionable/Controller/QuestRegistry.cs
Questionable/Controller/Steps/BaseFactory/AethernetShortcut.cs
Questionable/Controller/Steps/BaseFactory/AetheryteShortcut.cs
Questionable/Controller/Steps/BaseFactory/Move.cs
Questionable/Controller/Steps/BaseFactory/WaitAtEnd.cs
Questionable/Controller/Steps/BaseTasks/MountTask.cs
Questionable/Controller/Steps/BaseTasks/WaitConditionTask.cs
Questionable/Controller/Steps/ILastTask.cs
Questionable/Controller/Steps/ISkippableTask.cs [new file with mode: 0644]
Questionable/Controller/Steps/InteractionFactory/Interact.cs
Questionable/Controller/Steps/InteractionFactory/UseItem.cs
Questionable/External/NavmeshIpc.cs
Questionable/GameFunctions.cs
Questionable/Questionable.csproj
Questionable/Windows/DebugWindow.cs

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 (file)
index 0000000..273d8f9
--- /dev/null
@@ -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 (file)
index 0000000..8e72271
--- /dev/null
@@ -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 (file)
index 0000000..11813c9
--- /dev/null
@@ -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 (file)
index 0000000..df64c84
--- /dev/null
@@ -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 (file)
index 0000000..4ae9678
--- /dev/null
@@ -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 (file)
index 0000000..02ac161
--- /dev/null
@@ -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 (file)
index 0000000..5c5385d
--- /dev/null
@@ -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 (file)
index 0000000..2acd2c1
--- /dev/null
@@ -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 (file)
index 0000000..8b20019
--- /dev/null
@@ -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 (file)
index 0000000..2539f4d
--- /dev/null
@@ -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 (file)
index 0000000..f4bf1e9
--- /dev/null
@@ -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 (file)
index 0000000..8579964
--- /dev/null
@@ -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 (file)
index 0000000..ff79aec
--- /dev/null
@@ -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 (file)
index 0000000..37e2762
--- /dev/null
@@ -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 (file)
index 0000000..fb15bb9
--- /dev/null
@@ -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 (file)
index 0000000..f2ca99f
--- /dev/null
@@ -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 (file)
index 0000000..f363ea5
--- /dev/null
@@ -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 (file)
index 0000000..76a1f68
--- /dev/null
@@ -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 (file)
index 0000000..2a475c0
--- /dev/null
@@ -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 (file)
index 0000000..5992b00
--- /dev/null
@@ -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 (file)
index 0000000..9db04c7
--- /dev/null
@@ -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 (file)
index 0000000..5beb7ab
--- /dev/null
@@ -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 (file)
index 0000000..d72c645
--- /dev/null
@@ -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 (file)
index 0000000..f2d88a4
--- /dev/null
@@ -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 (file)
index 0000000..ecafd71
--- /dev/null
@@ -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 (file)
index 0000000..369a9ed
--- /dev/null
@@ -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 (file)
index 0000000..63542a6
--- /dev/null
@@ -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 (file)
index 0000000..d6e49ae
--- /dev/null
@@ -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 (file)
index 0000000..94290f6
--- /dev/null
@@ -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 (file)
index 0000000..818d8a4
--- /dev/null
@@ -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 (file)
index 0000000..59c28f1
--- /dev/null
@@ -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 (file)
index 0000000..c05cfaf
--- /dev/null
@@ -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 (file)
index 0000000..e69943f
--- /dev/null
@@ -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 (file)
index 0000000..6684049
--- /dev/null
@@ -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 (file)
index 0000000..0bac2d8
--- /dev/null
@@ -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 (file)
index 0000000..688967b
--- /dev/null
@@ -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 (file)
index 0000000..a75d44f
--- /dev/null
@@ -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 (file)
index 0000000..770b4ba
--- /dev/null
@@ -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 (file)
index 0000000..8c9213e
--- /dev/null
@@ -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 (file)
index 0000000..0314f23
--- /dev/null
@@ -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 (file)
index 0000000..88ee8a1
--- /dev/null
@@ -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 (file)
index 0000000..1fa53c7
--- /dev/null
@@ -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 (file)
index 0000000..09c9602
--- /dev/null
@@ -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 (file)
index 0000000..d203f80
--- /dev/null
@@ -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 (file)
index 0000000..e69de29
index 6ae5067b879b27a1a844fafc90bb29528ed4c980..be6e031ab8df6b4d549af75223ad2b3d48029ae2 100644 (file)
@@ -32,7 +32,7 @@
           "AetheryteShortcut": "Limsa Lominsa",
           "AethernetShortcut": [
             "[Limsa Lominsa] Aetheryte Plaza",
-            "[Limsa Lominsa] Arcanist's Guild"
+            "[Limsa Lominsa] Arcanists' Guild"
           ]
         }
       ]
index 86c87dd452d64587c49f7e3ec1cb7a9634a64a71..fd5d568cca62df35673521f079324ccaa6509e1f 100644 (file)
     {
       "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": {
index 631070ba1789016f0ae51086b5b8d5df0aa0f12d..3ea68608c5623c3fef8d250ba7ee45dc6dd6a481 100644 (file)
         <PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
     </PropertyGroup>
 
+    <Target Name="ZipARealmReborn" BeforeTargets="BeforeResGen" Condition="'$(Configuration)' == 'Release'">
+        <ZipDirectory SourceDirectory="$(ProjectDir)\ARealmReborn"
+                      DestinationFile="$(TargetDir)\ARealmReborn.zip"
+                      Overwrite="true"/>
+    </Target>
+
     <Target Name="ZipShadowbringers" BeforeTargets="BeforeResGen" Condition="'$(Configuration)' == 'Release'">
         <ZipDirectory SourceDirectory="$(ProjectDir)\Shadowbringers"
                       DestinationFile="$(TargetDir)\Shadowbringers.zip"
@@ -23,6 +29,7 @@
     </Target>
 
     <ItemGroup Condition="'$(Configuration)' == 'Release'">
+        <EmbeddedResource Include="$(TargetDir)\ARealmReborn.zip"/>
         <EmbeddedResource Include="$(TargetDir)\Shadowbringers.zip"/>
         <EmbeddedResource Include="$(TargetDir)\Endwalker.zip"/>
     </ItemGroup>
diff --git a/QuestPaths/README.md b/QuestPaths/README.md
new file mode 100644 (file)
index 0000000..8538f41
--- /dev/null
@@ -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
index 4bd241a9f5515425676ed31e81af483596f99406..cd7c09ac95c16f39c6995a41d06bf5e25df03b90 100644 (file)
@@ -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"
           ]
         }
index 6376d9a4d829a2093bd9a0f6bf553ba33983f8b2..e66a57611f1dcf7e45d45b79802e7ed122d7eeef 100644 (file)
@@ -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"
           ]
         }
       ]
index 6968fa2108e7b74346df363123b8b04cb886428a..0cf0ac3fcfd81740ace5392846022a079b0e8d8d 100644 (file)
                     ]
                   }
                 },
+                {
+                  "if": {
+                    "properties": {
+                      "InteractionType": {
+                        "const": "UseItem"
+                      },
+                      "ItemId": {
+                        "not": {
+                          "const": 30362
+                        }
+                      }
+                    }
+                  },
+                  "then": {
+                    "required": [
+                      "Position"
+                    ]
+                  }
+                },
                 {
                   "if": {
                     "properties": {
                       }
                     },
                     "required": [
-                      "Position",
                       "ItemId"
                     ]
                   }
index e9fd522d4fc5ef132e9aeb7a24a64434ad951f50..e17b3d644f3950ef1997dc11db4043a57a9510c8 100644 (file)
@@ -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<GameUiController> _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<GameUiController> logger)
     {
         _addonLifecycle = addonLifecycle;
@@ -39,12 +42,16 @@ internal sealed class GameUiController : IDisposable
         _targetManager = targetManager;
         _logger = logger;
 
+        _returnRegex = _dataManager.GetExcelSheet<Addon>()!.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<Warp>()!
-            .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);
+        }
+    }
+
     /// <summary>
     /// Ensures characters like '-' are handled equally in both strings.
     /// </summary>
@@ -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);
index cd5f92563e61598c04d98815a226c2b58c9cb679..7f01ee3afa545c4e956519fcdc45f57fe0c9932c 100644 (file)
@@ -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<Vector3> 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);
+                        }
+                    }
+                }
+            }
         }
     }
 
index 45957fab750f42c0ce0898febab22f1acba7eb7f..494a181e6c31c7f22491f57eefc10b9b172ad847 100644 (file)
@@ -32,6 +32,8 @@ internal sealed class QuestController
     private readonly Configuration _configuration;
     private readonly IReadOnlyList<ITaskFactory> _taskFactories;
 
+    private readonly object _lock = new();
+
     private readonly Queue<ITask> _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);
+                return;
             }
-            else if (CurrentQuest != null)
+
+            if (CurrentQuest == null)
             {
-                _logger.LogInformation("No active quest anymore? Not sure what happened...");
-                CurrentQuest = null;
-                Stop("No active Quest");
+                DebugState = "No quest active";
+                Comment = null;
+                Stop("No quest active");
+                return;
             }
 
-            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,59 +229,53 @@ 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)
-        {
-            _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
-            {
-                Step = CurrentQuest.Step + 1,
-                StepProgress = new(DateTime.Now),
-            };
-        }
-        else
+        lock (_lock)
         {
-            CurrentQuest = CurrentQuest with
+            (QuestSequence? seq, QuestStep? step) = GetNextStep();
+            if (CurrentQuest == null || seq == null || step == null)
             {
-                Step = 255,
-                StepProgress = new(DateTime.Now),
-            };
-        }
-
+                _logger.LogWarning("Unable to retrieve next quest step, not increasing step count");
+                return;
+            }
 
-        if (shouldContinue && _automatic)
-            ExecuteNextStep(true);
-    }
+            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;
+            }
 
-    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;
-        }
+            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);
+            }
 
-        CurrentQuest = CurrentQuest with
-        {
-            StepProgress = CurrentQuest.StepProgress with
+            _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
             {
-                DialogueChoicesSelected = CurrentQuest.StepProgress.DialogueChoicesSelected + 1
+                CurrentQuest = CurrentQuest with
+                {
+                    Step = 255,
+                    StepProgress = new(DateTime.Now),
+                };
             }
-        };
+        }
 
-        /* TODO Is this required?
-        if (CurrentQuest.StepProgress.DialogueChoicesSelected >= step.DialogueChoices.Count)
-            IncreaseStepCount();
-            */
+        if (shouldContinue && _automatic)
+            ExecuteNextStep(true);
     }
 
     private void ClearTasksInternal()
@@ -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);
+            }
+        }
+    }
 }
index e3ddd3bada1de35e8f61198dcf1b4b2fe5a4053b..1bc3a44efda41eb96878c9b937f8e252fd7de97d 100644 (file)
@@ -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")));
             }
index 34d26abbf027ae605c1de5494046ce2701fab1f7..f48dccb793571b0094022c3a5f08323e2d518c20 100644 (file)
@@ -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
index 58ecb1280e3ee49a0138028b5fd49767df32d91e..5a3f76c661d33074df3fbdbac0b64f652e80f7d7 100644 (file)
@@ -37,7 +37,7 @@ internal static class AetheryteShortcut
         GameFunctions gameFunctions,
         IClientState clientState,
         IChatGui chatGui,
-        AetheryteData aetheryteData) : ITask
+        AetheryteData aetheryteData) : ISkippableTask
     {
         private DateTime _continueAt;
 
index 61f7957a22a0bb2e595ff153f98fee137c842419..5c71dc72470b89972edc776fb089fc431051227c 100644 (file)
@@ -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)
index 5c374fad42cb3b2dd929c463f424bb4ab6fc82b1..59f2c0ec7591acbd1014d6153ac04da1e056d5f3 100644 (file)
@@ -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;
index e9aa7b654f5dabb40609f925b67b5df682658ebf..f1e816e797388b82d32e3632ccdb30a6f1cd3d3f 100644 (file)
@@ -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;
index 93ad10c556ff65e8a1e454074644988a7a60ec14..175654645cdf2e644ac0ddf73a7f39db6ad4d155 100644 (file)
@@ -4,9 +4,20 @@ namespace Questionable.Controller.Steps.BaseTasks;
 
 internal sealed class WaitConditionTask(Func<bool> 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;
 }
index 66cf214f4067a6085cd8237ce06c9022b19fb982..f0f99cc47d5652bf5159a1f304d9adc510aadb3b 100644 (file)
@@ -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 (file)
index 0000000..1f0ff97
--- /dev/null
@@ -0,0 +1,3 @@
+namespace Questionable.Controller.Steps;
+
+internal interface ISkippableTask : ITask;
index 8ab55778ec5d3643db8cd40ee1c718a24c4fb7f3..7a2b5f3c5b4a411781d42ea2bebe29e9bb4f308f 100644 (file)
@@ -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<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
         {
             if (step.InteractionType != EInteractionType.Interact)
-                return null;
+                yield break;
 
             ArgumentNullException.ThrowIfNull(step.DataId);
 
-            return serviceProvider.GetRequiredService<DoInteract>()
+            // 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<WaitAtEnd.WaitDelay>();
+
+            yield return serviceProvider.GetRequiredService<DoInteract>()
                 .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<DoInteract> logger)
index 4289e6f226646f24ef0f34115d18df0f9a967168..7b6d043dc869a8cfa09b95aca4088ca6a98d86af 100644 (file)
@@ -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;
index 38dc1ddcabccaaf621bce2aab2a089f977861a3e..cc7bbdd46439be5cf2d30aabe3613eb37aeea80c 100644 (file)
@@ -15,6 +15,7 @@ internal sealed class NavmeshIpc
     private readonly ICallGateSubscriber<List<Vector3>, bool, object> _pathMoveTo;
     private readonly ICallGateSubscriber<object> _pathStop;
     private readonly ICallGateSubscriber<bool> _pathIsRunning;
+    private readonly ICallGateSubscriber<List<Vector3>> _pathListWaypoints;
     private readonly ICallGateSubscriber<float> _pathGetTolerance;
     private readonly ICallGateSubscriber<float, object> _pathSetTolerance;
     private readonly ICallGateSubscriber<Vector3, bool, float, Vector3?> _queryPointOnFloor;
@@ -28,6 +29,7 @@ internal sealed class NavmeshIpc
         _pathMoveTo = pluginInterface.GetIpcSubscriber<List<Vector3>, bool, object>("vnavmesh.Path.MoveTo");
         _pathStop = pluginInterface.GetIpcSubscriber<object>("vnavmesh.Path.Stop");
         _pathIsRunning = pluginInterface.GetIpcSubscriber<bool>("vnavmesh.Path.IsRunning");
+        _pathListWaypoints = pluginInterface.GetIpcSubscriber<List<Vector3>>("vnavmesh.Path.ListWaypoints");
         _pathGetTolerance = pluginInterface.GetIpcSubscriber<float>("vnavmesh.Path.GetTolerance");
         _pathSetTolerance = pluginInterface.GetIpcSubscriber<float, object>("vnavmesh.Path.SetTolerance");
         _queryPointOnFloor =
@@ -69,4 +71,12 @@ internal sealed class NavmeshIpc
 
     public Vector3? GetPointOnFloor(Vector3 position)
         => _queryPointOnFloor.InvokeFunc(position, true, 1);
+
+    public List<Vector3> GetWaypoints()
+    {
+        if (IsPathRunning)
+            return _pathListWaypoints.InvokeFunc();
+        else
+            return [];
+    }
 }
index 67fd79b589c0f3e076ffecf3e375a9a975112868..3c3da8052bf94610fb1f8116a5b35c1da44227c2 100644 (file)
@@ -99,6 +99,8 @@ internal sealed unsafe class GameFunctions
             .AsReadOnly();
     }
 
+    public DateTime ReturnRequestedAt { get; set; } = DateTime.MinValue;
+
     public (ushort CurrentQuest, byte Sequence) GetCurrentQuest()
     {
         ushort currentQuest;
@@ -133,7 +135,12 @@ internal sealed unsafe class GameFunctions
 
         currentQuest = scenarioTree->Data->CurrentScenarioQuest;
         if (currentQuest == 0)
+        {
+            if (_clientState.TerritoryType == 181) // Starting Limsa
+                return (107, 0);
+
             return default;
+        }
 
         return (currentQuest, QuestManager.GetQuestSequence(currentQuest));
     }
@@ -186,6 +193,15 @@ internal sealed unsafe class GameFunctions
 
         if (IsAetheryteUnlocked(aetheryteId, out var subIndex))
         {
+            if (aetheryteId == PlayerState.Instance()->HomeAetheryteId &&
+                ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 8) == 0)
+            {
+                ReturnRequestedAt = DateTime.Now;
+                if (ActionManager.Instance()->UseAction(ActionType.GeneralAction, 8))
+                    return true;
+            }
+
+            // fallback if return isn't available or (more likely) on a different aetheryte
             return Telepo.Instance()->Teleport(aetheryteId, subIndex);
         }
 
@@ -197,6 +213,9 @@ internal sealed unsafe class GameFunctions
 
     public bool IsFlyingUnlocked(ushort territoryId)
     {
+        if (_configuration.Advanced.NeverFly)
+            return false;
+
         var playerState = PlayerState.Instance();
         return playerState != null &&
                _territoryToAetherCurrentCompFlgSet.TryGetValue(territoryId, out byte aetherCurrentCompFlgSet) &&
@@ -360,19 +379,26 @@ internal sealed unsafe class GameFunctions
         if (gameObject != null)
         {
             _logger.LogInformation("Setting target with {DataId} to {ObjectId}", dataId, gameObject.ObjectId);
+            _targetManager.Target = null;
             _targetManager.Target = gameObject;
 
-            ulong result = TargetSystem.Instance()->InteractWithObject(
+            long result = (long)TargetSystem.Instance()->InteractWithObject(
                 (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)gameObject.Address, false);
-            return result != 0;
+
+            _logger.LogInformation("Interact result: {Result}", result);
+            return result > 0;
         }
 
+        _logger.LogDebug("Game object is null");
         return false;
     }
 
     public bool UseItem(uint itemId)
     {
-        return AgentInventoryContext.Instance()->UseItem(itemId) == 0;
+        long result = AgentInventoryContext.Instance()->UseItem(itemId);
+        _logger.LogInformation("UseItem result: {Result}", result);
+
+        return result == 0;
     }
 
     public bool UseItem(uint dataId, uint itemId)
@@ -381,7 +407,10 @@ internal sealed unsafe class GameFunctions
         if (gameObject != null)
         {
             _targetManager.Target = gameObject;
-            return AgentInventoryContext.Instance()->UseItem(itemId) == 0;
+            long result = AgentInventoryContext.Instance()->UseItem(itemId);
+
+            _logger.LogInformation("UseItem result on {DataId}: {Result}", dataId, result);
+            return result == 0;
         }
 
         return false;
@@ -420,11 +449,8 @@ internal sealed unsafe class GameFunctions
         return gameObject != null && (gameObject.Position - position).Length() < 0.05f;
     }
 
-    public bool HasStatusPreventingSprintOrMount(bool skipConfigCheck = false)
+    public bool HasStatusPreventingMount()
     {
-        if (!skipConfigCheck && _configuration.Advanced.NeverFly)
-            return true;
-
         if (_condition[ConditionFlag.Swimming] && !IsFlyingUnlockedInCurrentZone())
             return true;
 
@@ -433,6 +459,13 @@ internal sealed unsafe class GameFunctions
         if (playerState != null && !playerState->IsMountUnlocked(1))
             return true;
 
+        return HasCharacterStatusPreventingMountOrSprint();
+    }
+
+    public bool HasStatusPreventingSprint() => HasCharacterStatusPreventingMountOrSprint();
+
+    private bool HasCharacterStatusPreventingMountOrSprint()
+    {
         var gameObject = GameObjectManager.GetGameObjectByIndex(0);
         if (gameObject != null && gameObject->ObjectKind == 1)
         {
@@ -547,6 +580,11 @@ internal sealed unsafe class GameFunctions
             var questRow = _dataManager.GetExcelSheet<GimmickYesNo>()!.GetRow(rowId);
             return questRow?.Unknown0?.ToString();
         }
+        else if (excelSheet == "Warp")
+        {
+            var questRow = _dataManager.GetExcelSheet<Warp>()!.GetRow(rowId);
+            return questRow?.Name?.ToString();
+        }
         else if (excelSheet is "ContentTalk" or null)
         {
             var questRow = _dataManager.GetExcelSheet<ContentTalk>()!.GetRow(rowId);
index f249c7fa22e65a8b06b3b78f2e2997089a83857d..d9484247670ba7132a1bf18e1a1b38a04ad32e87 100644 (file)
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
     <PropertyGroup>
         <TargetFramework>net8.0-windows</TargetFramework>
-        <Version>0.12</Version>
+        <Version>0.13</Version>
         <LangVersion>12</LangVersion>
         <Nullable>enable</Nullable>
         <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
index beaeca6f7c6a507ed066ac2b3f7acafaafc013b0..468a455f137c6214afb5ac26958b265058c24995 100644 (file)
@@ -6,7 +6,6 @@ using Dalamud.Game.ClientState.Objects;
 using Dalamud.Interface;
 using Dalamud.Interface.Colors;
 using Dalamud.Interface.Components;
-using Dalamud.Interface.Windowing;
 using Dalamud.Plugin;
 using Dalamud.Plugin.Services;
 using FFXIVClientStructs.FFXIV.Client.Game;
@@ -18,6 +17,7 @@ using LLib.ImGui;
 using Microsoft.Extensions.Logging;
 using Questionable.Controller;
 using Questionable.Controller.Steps.BaseFactory;
+using Questionable.External;
 using Questionable.Model;
 using Questionable.Model.V1;
 
@@ -34,6 +34,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig
     private readonly ITargetManager _targetManager;
     private readonly GameUiController _gameUiController;
     private readonly Configuration _configuration;
+    private readonly NavmeshIpc _navmeshIpc;
     private readonly ILogger<DebugWindow> _logger;
 
     public DebugWindow(DalamudPluginInterface pluginInterface,
@@ -45,6 +46,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig
         ITargetManager targetManager,
         GameUiController gameUiController,
         Configuration configuration,
+        NavmeshIpc navmeshIpc,
         ILogger<DebugWindow> logger)
         : base("Questionable", ImGuiWindowFlags.AlwaysAutoResize)
     {
@@ -57,6 +59,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig
         _targetManager = targetManager;
         _gameUiController = gameUiController;
         _configuration = configuration;
+        _navmeshIpc = navmeshIpc;
         _logger = logger;
 
         IsOpen = true;
@@ -65,6 +68,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig
             MinimumSize = new Vector2(200, 30),
             MaximumSize = default
         };
+        RespectCloseHotkey = false;
     }
 
     public WindowConfig WindowConfig => _configuration.DebugWindowConfig;
@@ -167,8 +171,7 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig
             if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.ArrowCircleRight, "Skip"))
             {
                 _movementController.Stop();
-                _questController.Stop("Manual");
-                _questController.IncreaseStepCount();
+                _questController.Skip(currentQuest.Quest.QuestId, currentQuest.Sequence);
             }
 
             if (colored)
@@ -304,7 +307,8 @@ internal sealed class DebugWindow : LWindow, IPersistableWindowConfig
     {
         var map = AgentMap.Instance();
         ImGui.BeginDisabled(map == null || map->IsFlagMarkerSet == 0 ||
-                            map->FlagMapMarker.TerritoryId != _clientState.TerritoryType);
+                            map->FlagMapMarker.TerritoryId != _clientState.TerritoryType ||
+                            !_navmeshIpc.IsReady);
         if (ImGui.Button("Move to Flag"))
             _gameFunctions.ExecuteCommand(
                 $"/vnav {(_gameFunctions.IsFlyingUnlockedInCurrentZone() ? "flyflag" : "moveflag")}");