diff --git a/Directory.Build.targets b/Directory.Build.targets
index 4531c415..c6651601 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -1,5 +1,5 @@
- 2.15
+ 2.19
diff --git a/GatheringPaths/4.x - Stormblood/The Ruby Sea/490_Rasen Kaikyo_MIN.json b/GatheringPaths/4.x - Stormblood/The Ruby Sea/490_Rasen Kaikyo_MIN.json
index 81b0c73c..def9bda9 100644
--- a/GatheringPaths/4.x - Stormblood/The Ruby Sea/490_Rasen Kaikyo_MIN.json
+++ b/GatheringPaths/4.x - Stormblood/The Ruby Sea/490_Rasen Kaikyo_MIN.json
@@ -10,7 +10,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
diff --git a/GatheringPaths/4.x - Stormblood/The Ruby Sea/511_Rasen Kaikyo_BTN.json b/GatheringPaths/4.x - Stormblood/The Ruby Sea/511_Rasen Kaikyo_BTN.json
index d9b9f746..ec39be55 100644
--- a/GatheringPaths/4.x - Stormblood/The Ruby Sea/511_Rasen Kaikyo_BTN.json
+++ b/GatheringPaths/4.x - Stormblood/The Ruby Sea/511_Rasen Kaikyo_BTN.json
@@ -10,7 +10,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
diff --git a/GatheringPaths/4.x - Stormblood/The Ruby Sea/529_Rasen Kaikyo_BTN.json b/GatheringPaths/4.x - Stormblood/The Ruby Sea/529_Rasen Kaikyo_BTN.json
index 3a159087..5528393a 100644
--- a/GatheringPaths/4.x - Stormblood/The Ruby Sea/529_Rasen Kaikyo_BTN.json
+++ b/GatheringPaths/4.x - Stormblood/The Ruby Sea/529_Rasen Kaikyo_BTN.json
@@ -10,7 +10,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
diff --git a/GatheringPaths/4.x - Stormblood/The Ruby Sea/730_The Kobayashi Maru_MIN.json b/GatheringPaths/4.x - Stormblood/The Ruby Sea/730_The Kobayashi Maru_MIN.json
index 959b1210..4d8d1589 100644
--- a/GatheringPaths/4.x - Stormblood/The Ruby Sea/730_The Kobayashi Maru_MIN.json
+++ b/GatheringPaths/4.x - Stormblood/The Ruby Sea/730_The Kobayashi Maru_MIN.json
@@ -10,7 +10,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
diff --git a/GatheringPaths/5.x - Shadowbringers/The Tempest/927_The Norvrandt Slope_BTN.json b/GatheringPaths/5.x - Shadowbringers/The Tempest/927_The Norvrandt Slope_BTN.json
index 36a1044b..5eda959e 100644
--- a/GatheringPaths/5.x - Shadowbringers/The Tempest/927_The Norvrandt Slope_BTN.json
+++ b/GatheringPaths/5.x - Shadowbringers/The Tempest/927_The Norvrandt Slope_BTN.json
@@ -4,7 +4,8 @@
"Steps": [
{
"TerritoryId": 818,
- "InteractionType": "None"
+ "InteractionType": "None",
+ "AetheryteShortcut": "Tempest - Ondo Cups"
}
],
"Groups": [
@@ -128,4 +129,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/GatheringPaths/6.x - Endwalker/Ultima Thule/909__MIN.json b/GatheringPaths/6.x - Endwalker/Ultima Thule/909__MIN.json
new file mode 100644
index 00000000..9d3da596
--- /dev/null
+++ b/GatheringPaths/6.x - Endwalker/Ultima Thule/909__MIN.json
@@ -0,0 +1,69 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
+ "Author": "plogon_enjoyer",
+ "Steps": [
+ {
+ "TerritoryId": 960,
+ "InteractionType": "None",
+ "AetheryteShortcut": "Ultima Thule - Reah Tahra"
+ }
+ ],
+ "Groups": [
+ {
+ "Nodes": [
+ {
+ "DataId": 34376,
+ "Locations": [
+ {
+ "Position": {
+ "X": -586.0029,
+ "Y": 84.39367,
+ "Z": 568.1448
+ },
+ "MinimumAngle": -60,
+ "MaximumAngle": 75,
+ "MinimumDistance": 1,
+ "MaximumDistance": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34377,
+ "Locations": [
+ {
+ "Position": {
+ "X": -578.2748,
+ "Y": 86.34826,
+ "Z": 567.2876
+ },
+ "MinimumAngle": -80,
+ "MaximumAngle": 60
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34378,
+ "Locations": [
+ {
+ "Position": {
+ "X": -600.2446,
+ "Y": 86.01588,
+ "Z": 557.4477
+ },
+ "MinimumAngle": -35,
+ "MaximumAngle": 145
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/GatheringPaths/6.x - Endwalker/Ultima Thule/912__BTN.json b/GatheringPaths/6.x - Endwalker/Ultima Thule/912__BTN.json
new file mode 100644
index 00000000..1955433b
--- /dev/null
+++ b/GatheringPaths/6.x - Endwalker/Ultima Thule/912__BTN.json
@@ -0,0 +1,67 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
+ "Author": "plogon_enjoyer",
+ "Steps": [
+ {
+ "TerritoryId": 960,
+ "InteractionType": "None",
+ "AetheryteShortcut": "Ultima Thule - Reah Tahra"
+ }
+ ],
+ "Groups": [
+ {
+ "Nodes": [
+ {
+ "DataId": 34385,
+ "Locations": [
+ {
+ "Position": {
+ "X": 27.77994,
+ "Y": 73.57088,
+ "Z": 695.2364
+ },
+ "MinimumAngle": 0,
+ "MaximumAngle": 135
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34386,
+ "Locations": [
+ {
+ "Position": {
+ "X": 23.20134,
+ "Y": 70.90392,
+ "Z": 698.6194
+ },
+ "MinimumAngle": -10,
+ "MaximumAngle": 145
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34387,
+ "Locations": [
+ {
+ "Position": {
+ "X": 30.69294,
+ "Y": 75.43362,
+ "Z": 688.8371
+ },
+ "MinimumAngle": -5,
+ "MaximumAngle": 120
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/GatheringPaths/7.x - Dawntrail/Shaaloani/978_Pyariyoanaan Plain_MIN.json b/GatheringPaths/7.x - Dawntrail/Shaaloani/978_Pyariyoanaan Plain_MIN.json
index ef7c642e..fbb7675a 100644
--- a/GatheringPaths/7.x - Dawntrail/Shaaloani/978_Pyariyoanaan Plain_MIN.json
+++ b/GatheringPaths/7.x - Dawntrail/Shaaloani/978_Pyariyoanaan Plain_MIN.json
@@ -42,14 +42,18 @@
"X": 419.309,
"Y": -10.25133,
"Z": -784.8259
- }
+ },
+ "MinimumAngle": -25,
+ "MaximumAngle": 85
},
{
"Position": {
"X": 410.6989,
"Y": -10.9656,
"Z": -790.8315
- }
+ },
+ "MinimumAngle": -20,
+ "MaximumAngle": 95
}
]
}
@@ -156,4 +160,4 @@
]
}
]
-}
+}
\ No newline at end of file
diff --git a/GatheringPaths/7.x - Dawntrail/Urqopacha/974_Chabameki_MIN.json b/GatheringPaths/7.x - Dawntrail/Urqopacha/974_Chabameki_MIN.json
index 7dff5fe8..d103a9ea 100644
--- a/GatheringPaths/7.x - Dawntrail/Urqopacha/974_Chabameki_MIN.json
+++ b/GatheringPaths/7.x - Dawntrail/Urqopacha/974_Chabameki_MIN.json
@@ -52,8 +52,8 @@
"Y": -47.86026,
"Z": -394.9654
},
- "MinimumAngle": -120,
- "MaximumAngle": 120
+ "MinimumAngle": -145,
+ "MaximumAngle": -95
}
]
}
@@ -160,4 +160,4 @@
]
}
]
-}
+}
\ No newline at end of file
diff --git a/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs b/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs
index 11cdc214..e5b8eabb 100644
--- a/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs
+++ b/QuestPathGenerator/RoslynElements/QuestStepExtensions.cs
@@ -62,6 +62,9 @@ internal static class QuestStepExtensions
Assignment(nameof(QuestStep.IgnoreDistanceToObject),
step.IgnoreDistanceToObject, emptyStep.IgnoreDistanceToObject)
.AsSyntaxNodeOrToken(),
+ Assignment(nameof(QuestStep.RestartNavigationIfCancelled),
+ step.RestartNavigationIfCancelled, emptyStep.RestartNavigationIfCancelled)
+ .AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Comment), step.Comment, emptyStep.Comment)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Aetheryte), step.Aetheryte, emptyStep.Aetheryte)
diff --git a/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs b/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs
index 87d5e0a2..02084db1 100644
--- a/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs
+++ b/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs
@@ -109,6 +109,9 @@ internal static class SkipConditionsExtensions
.AsSyntaxNodeOrToken(),
Assignment(nameof(NearPositionCondition.MaximumDistance),
nearPositionCondition.MaximumDistance, emptyCondition.MaximumDistance)
+ .AsSyntaxNodeOrToken(),
+ Assignment(nameof(NearPositionCondition.TerritoryId),
+ nearPositionCondition.TerritoryId, emptyCondition.TerritoryId)
.AsSyntaxNodeOrToken()))));
}
@@ -128,6 +131,10 @@ internal static class SkipConditionsExtensions
skipAetheryteCondition.InSameTerritory, emptyAetheryte.InSameTerritory),
AssignmentList(nameof(SkipAetheryteCondition.InTerritory),
skipAetheryteCondition.InTerritory),
+ AssignmentList(nameof(SkipAetheryteCondition.QuestsAccepted),
+ skipAetheryteCondition.QuestsAccepted),
+ AssignmentList(nameof(skipAetheryteCondition.QuestsCompleted),
+ skipAetheryteCondition.QuestsCompleted),
Assignment(nameof(SkipAetheryteCondition.AetheryteLocked),
skipAetheryteCondition.AetheryteLocked, emptyAetheryte.AetheryteLocked)
.AsSyntaxNodeOrToken(),
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/ALC/190_So You Want to Be an Alchemist.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/ALC/190_So You Want to Be an Alchemist.json
index e53954bb..0c9c4a30 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/ALC/190_So You Want to Be an Alchemist.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/ALC/190_So You Want to Be an Alchemist.json
@@ -13,7 +13,7 @@
"Z": 118.88306
},
"TerritoryId": 131,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/186_So You Want to Be an Armorer.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/186_So You Want to Be an Armorer.json
index 7cd043fc..872c6267 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/186_So You Want to Be an Armorer.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/186_So You Want to Be an Armorer.json
@@ -13,7 +13,7 @@
"Z": 190.41736
},
"TerritoryId": 128,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/273_Way of the Armorer.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/273_Way of the Armorer.json
index 93fef75b..955356e2 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/273_Way of the Armorer.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/ARM/273_Way of the Armorer.json
@@ -35,8 +35,7 @@
"Prompt": "TEXT_CLSARM011_00273_Q1_000_1",
"Yes": true
}
- ],
- "NextQuestId": 273
+ ]
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/BLM/183_So You Want to Be a Thaumaturge.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/BLM/183_So You Want to Be a Thaumaturge.json
index fbd68169..e4f58a84 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/BLM/183_So You Want to Be a Thaumaturge.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/BLM/183_So You Want to Be a Thaumaturge.json
@@ -13,7 +13,7 @@
"Z": 59.952637
},
"TerritoryId": 130,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1085_A Song of Bards and Bowmen.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1085_A Song of Bards and Bowmen.json
index 196337ec..e22e5d58 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1085_A Song of Bards and Bowmen.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1085_A Song of Bards and Bowmen.json
@@ -122,7 +122,7 @@
"TerritoryId": 153,
"InteractionType": "CompleteQuest",
"Fly": true,
- "NextQuestId": 1085
+ "NextQuestId": 1086
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1086_The Archer's Anthem.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1086_The Archer's Anthem.json
index 58b792d6..cced8794 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1086_The Archer's Anthem.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/1086_The Archer's Anthem.json
@@ -8,7 +8,14 @@
{
"TerritoryId": 153,
"InteractionType": "EquipItem",
- "ItemId": 4546
+ "ItemId": 4546,
+ "AetheryteShortcut": "South Shroud - Quarrymill",
+ "Fly": true,
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
},
{
"TerritoryId": 153,
@@ -22,14 +29,7 @@
"Z": -7.3396606
},
"TerritoryId": 153,
- "InteractionType": "AcceptQuest",
- "AetheryteShortcut": "South Shroud - Quarrymill",
- "Fly": true,
- "SkipConditions": {
- "AetheryteShortcutIf": {
- "InSameTerritory": true
- }
- }
+ "InteractionType": "AcceptQuest"
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/BSM/291_Way of the Blacksmith.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/BSM/291_Way of the Blacksmith.json
index 8430dab8..087d1faa 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/BSM/291_Way of the Blacksmith.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/BSM/291_Way of the Blacksmith.json
@@ -30,7 +30,7 @@
"DialogueChoices": [
{
"Type": "YesNo",
- "Prompt": "TEXT_CLSBSM001_00185_Q1_000_1",
+ "Prompt": "TEXT_CLSBSM011_00291_Q1_000_1",
"Yes": true
}
]
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/BTN/3_Way of the Botanist.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/BTN/3_Way of the Botanist.json
index aa2443e8..1a5f96dc 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/BTN/3_Way of the Botanist.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/BTN/3_Way of the Botanist.json
@@ -13,7 +13,20 @@
"Z": -142.93127
},
"TerritoryId": 133,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Gridania",
+ "AethernetShortcut": [
+ "[Gridania] Aetheryte Plaza",
+ "[Gridania] Botanists' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 133
+ ]
+ }
+ }
}
]
},
@@ -35,8 +48,7 @@
"Prompt": "TEXT_CLSHRV001_00003_Q1_000_1",
"Yes": true
}
- ],
- "NextQuestId": 3
+ ]
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/191_So You Want to Be a Culinarian.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/191_So You Want to Be a Culinarian.json
index 95d5ecf9..7a46a5c5 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/191_So You Want to Be a Culinarian.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/191_So You Want to Be a Culinarian.json
@@ -13,7 +13,7 @@
"Z": -164.0498
},
"TerritoryId": 128,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/271_Way of the Culinarian.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/271_Way of the Culinarian.json
index 2a7bd1a3..500efc80 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/271_Way of the Culinarian.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/CUL/271_Way of the Culinarian.json
@@ -35,8 +35,7 @@
"Prompt": "TEXT_CLSCUL011_00271_Q1_000_1",
"Yes": true
}
- ],
- "NextQuestId": 271
+ ]
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/DRG/180_So You Want to Be a Lancer.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/DRG/180_So You Want to Be a Lancer.json
index f1b94278..fa199bd5 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/DRG/180_So You Want to Be a Lancer.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/DRG/180_So You Want to Be a Lancer.json
@@ -24,7 +24,7 @@
"Yes": true
}
],
- "InteractionType": "Interact"
+ "InteractionType": "AcceptQuest"
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1107_Way of the Fisher.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1107_Way of the Fisher.json
index 3cc4d179..5a771ddd 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1107_Way of the Fisher.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1107_Way of the Fisher.json
@@ -13,7 +13,7 @@
"Z": 150.04187
},
"TerritoryId": 129,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1134_So You Want to Be a Fisher.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1134_So You Want to Be a Fisher.json
index d9fcf3c1..3b810ba4 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1134_So You Want to Be a Fisher.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/FSH/1134_So You Want to Be a Fisher.json
@@ -38,22 +38,6 @@
"InteractionType": "AcceptQuest"
}
]
- },
- {
- "Sequence": 255,
- "Steps": [
- {
- "DataId": 1000857,
- "Position": {
- "X": -165.27051,
- "Y": 5.2500057,
- "Z": 164.29382
- },
- "TerritoryId": 129,
- "InteractionType": "CompleteQuest",
- "NextQuestId": 1108
- }
- ]
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/187_So You Want to Be a Goldsmith.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/187_So You Want to Be a Goldsmith.json
index a66a332f..bb79e28f 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/187_So You Want to Be a Goldsmith.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/187_So You Want to Be a Goldsmith.json
@@ -13,7 +13,7 @@
"Z": 97.24573
},
"TerritoryId": 131,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/608_Way of the Goldsmith.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/608_Way of the Goldsmith.json
index 2ba0018c..3e9017a1 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/608_Way of the Goldsmith.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/GSM/608_Way of the Goldsmith.json
@@ -35,8 +35,7 @@
"Prompt": "TEXT_CLSGLD011_00608_A1_000_1",
"Yes": true
}
- ],
- "NextQuestId": 608
+ ]
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/105_Way of the Leatherworker.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/105_Way of the Leatherworker.json
index c263bfda..101c9595 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/105_Way of the Leatherworker.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/105_Way of the Leatherworker.json
@@ -35,8 +35,7 @@
"Prompt": "TEXT_CLSTAN000_00105_Q1_000_1",
"Yes": true
}
- ],
- "NextQuestId": 105
+ ]
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/188_So You Want to Be a Leatherworker.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/188_So You Want to Be a Leatherworker.json
index 4412c8f6..6928be6d 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/188_So You Want to Be a Leatherworker.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/LTW/188_So You Want to Be a Leatherworker.json
@@ -13,7 +13,7 @@
"Z": -147.41742
},
"TerritoryId": 133,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/192_So You Want to Be a Miner.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/192_So You Want to Be a Miner.json
index faaf1166..ea8b8257 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/192_So You Want to Be a Miner.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/192_So You Want to Be a Miner.json
@@ -14,6 +14,19 @@
},
"TerritoryId": 131,
"InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Miners' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ },
"DialogueChoices": [
{
"Type": "YesNo",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/597_Way of the Miner.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/597_Way of the Miner.json
index ab55d722..5ab37fe6 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/597_Way of the Miner.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/597_Way of the Miner.json
@@ -13,7 +13,20 @@
"Z": 153.2157
},
"TerritoryId": 131,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Miners' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/599_My First Pickaxe.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/599_My First Pickaxe.json
index c9bcf377..07dd8fbf 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/599_My First Pickaxe.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/599_My First Pickaxe.json
@@ -13,7 +13,20 @@
"Z": 157.42725
},
"TerritoryId": 131,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Miners' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/600_Know Thy Land.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/600_Know Thy Land.json
index ae8417c0..50ff25c8 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/600_Know Thy Land.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/MIN/600_Know Thy Land.json
@@ -13,7 +13,20 @@
"Z": 157.42725
},
"TerritoryId": 131,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Miners' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/178_So You Want to Be a Pugilist.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/178_So You Want to Be a Pugilist.json
index 8494b698..b75d1e75 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/178_So You Want to Be a Pugilist.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/178_So You Want to Be a Pugilist.json
@@ -13,7 +13,7 @@
"Z": -51.163513
},
"TerritoryId": 130,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"SkipConditions": {
"AetheryteShortcutIf": {
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/532_Way of the Pugilist.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/532_Way of the Pugilist.json
index 2e25eb22..130b69e0 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/532_Way of the Pugilist.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/532_Way of the Pugilist.json
@@ -13,7 +13,13 @@
"Z": -51.163513
},
"TerritoryId": 130,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/533_Way of the Pugilist.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/533_Way of the Pugilist.json
index cbbb57c3..8c00e6a2 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/533_Way of the Pugilist.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/533_Way of the Pugilist.json
@@ -14,7 +14,13 @@
"Z": -51.163513
},
"TerritoryId": 130,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/1055_Paladin's Pledge.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/1055_Paladin's Pledge.json
index eba6e305..d7d54815 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/1055_Paladin's Pledge.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/1055_Paladin's Pledge.json
@@ -14,6 +14,7 @@
},
"TerritoryId": 131,
"InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
"[Ul'dah] Gladiators' Guild"
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/256_Kicking the Hornet's Nest.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/256_Kicking the Hornet's Nest.json
index 88320c09..e12a5e43 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/256_Kicking the Hornet's Nest.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/PLD/256_Kicking the Hornet's Nest.json
@@ -13,7 +13,20 @@
"Z": 39.81079
},
"TerritoryId": 131,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Gladiators' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1097_Forgotten but Not Gone.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1097_Forgotten but Not Gone.json
index 615cf8be..5d4a5b35 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1097_Forgotten but Not Gone.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1097_Forgotten but Not Gone.json
@@ -12,7 +12,13 @@
"Z": 4.017052
},
"TerritoryId": 129,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
},
{
"DataId": 1000895,
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1098_The Last Remnants.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1098_The Last Remnants.json
index 66e6af53..19cbfbe7 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1098_The Last Remnants.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1098_The Last Remnants.json
@@ -8,7 +8,20 @@
{
"TerritoryId": 128,
"InteractionType": "EquipItem",
- "ItemId": 4550
+ "ItemId": 4550,
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 128
+ ]
+ }
+ }
},
{
"DataId": 1006757,
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1099_The Consequences of Anger.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1099_The Consequences of Anger.json
index 2fbe65db..18257f45 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1099_The Consequences of Anger.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1099_The Consequences of Anger.json
@@ -13,7 +13,20 @@
"Z": -250.56848
},
"TerritoryId": 128,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 128
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1100_In the Image of the Ancients.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1100_In the Image of the Ancients.json
index 8e87dd8b..aa5a054f 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1100_In the Image of the Ancients.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1100_In the Image of the Ancients.json
@@ -13,7 +13,20 @@
"Z": -250.56848
},
"TerritoryId": 128,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 128
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1101_For Your Fellow Man.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1101_For Your Fellow Man.json
index a2b64690..270a798d 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1101_For Your Fellow Man.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1101_For Your Fellow Man.json
@@ -13,7 +13,20 @@
"Z": -250.56848
},
"TerritoryId": 128,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 128
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1102_The Beast Within.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1102_The Beast Within.json
index 8169dfbd..06d12fb3 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1102_The Beast Within.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1102_The Beast Within.json
@@ -13,7 +13,20 @@
"Z": -250.56848
},
"TerritoryId": 128,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 128
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/SMN/451_So You Want to Be an Arcanist.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/SMN/451_So You Want to Be an Arcanist.json
index b134aff7..4c4c38fc 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/SMN/451_So You Want to Be an Arcanist.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/SMN/451_So You Want to Be an Arcanist.json
@@ -1,18 +1,19 @@
{
- "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "Cacahuetes",
- "QuestSequence": [
- {
- "Sequence": 255,
- "Steps": [
- { "DataId": 1000895,
-"Position": {
- "X": -335.74432,
- "Y": 12.899764,
- "Z": 1.3884888
-},
-"TerritoryId": 129,
-"InteractionType": "AcceptQuest",
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000895,
+ "Position": {
+ "X": -335.74432,
+ "Y": 12.899764,
+ "Z": 1.3884888
+ },
+ "TerritoryId": 129,
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
@@ -35,8 +36,7 @@
],
"NextQuestId": 452
}
- ]
- }
- ]
- }
-
\ No newline at end of file
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/179_So You Want to Be a Marauder.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/179_So You Want to Be a Marauder.json
index eaa718ee..b9522c79 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/179_So You Want to Be a Marauder.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/179_So You Want to Be a Marauder.json
@@ -13,7 +13,7 @@
"Z": -245.80762
},
"TerritoryId": 128,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/310_Way of the Marauder.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/310_Way of the Marauder.json
index e2cb02fc..fd759a6a 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/310_Way of the Marauder.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/310_Way of the Marauder.json
@@ -28,7 +28,7 @@
"Z": -255.8786
},
"TerritoryId": 128,
- "InteractionType": "AcceptQuest",
+ "InteractionType": "CompleteQuest",
"DialogueChoices": [
{
"Type": "YesNo",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json
index 729b4b3f..7ebd65e2 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json
@@ -35,7 +35,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
@@ -150,7 +151,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1081_O Brother, Where Art Thou.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1081_O Brother, Where Art Thou.json
index 48d669d2..8f55a98e 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1081_O Brother, Where Art Thou.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1081_O Brother, Where Art Thou.json
@@ -35,7 +35,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
@@ -157,7 +158,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json
index 4be0c9df..5b4cd824 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json
@@ -35,7 +35,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
@@ -202,7 +203,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
@@ -293,7 +295,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
@@ -409,7 +412,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json
index c71f25c4..af438098 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json
@@ -35,7 +35,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
@@ -194,7 +195,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json
index 727f1685..77a1c616 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json
@@ -35,7 +35,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
@@ -117,7 +118,8 @@
"Y": 8.712891,
"Z": 281.69678
},
- "MaximumDistance": 3
+ "MaximumDistance": 3,
+ "TerritoryId": 153
}
}
}
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/189_So You Want to Be a Weaver.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/189_So You Want to Be a Weaver.json
index 66ab5a05..50cad2af 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/189_So You Want to Be a Weaver.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/189_So You Want to Be a Weaver.json
@@ -13,7 +13,7 @@
"Z": 98.039185
},
"TerritoryId": 131,
- "InteractionType": "Interact",
+ "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/534_Way of the Weaver.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/534_Way of the Weaver.json
index 0388389f..8e517afb 100644
--- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/534_Way of the Weaver.json
+++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WVR/534_Way of the Weaver.json
@@ -35,8 +35,7 @@
"Prompt": "TEXT_CLSWVR011_00534_SYSTEM_Q0",
"Yes": true
}
- ],
- "NextQuestId": 534
+ ]
}
]
}
diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/427_The Parting Glass.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/427_The Parting Glass.json
index c02faa3e..28fc2c1b 100644
--- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/427_The Parting Glass.json
+++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/427_The Parting Glass.json
@@ -53,6 +53,7 @@
"Y": -0.63573146,
"Z": -166.33862
},
+ "StopDistance": 5,
"TerritoryId": 141,
"InteractionType": "Interact"
}
diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/428_Before the Dawn.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/428_Before the Dawn.json
index a502544c..0db03bd8 100644
--- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/428_Before the Dawn.json
+++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/E6-2.55/428_Before the Dawn.json
@@ -35,6 +35,7 @@
},
"TerritoryId": 155,
"InteractionType": "CompleteQuest",
+ "Mount": true,
"DialogueChoices": [
{
"Type": "YesNo",
diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json
index 687fc403..1e363fb4 100644
--- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json
+++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json
@@ -337,16 +337,6 @@
"InteractionType": "WalkTo",
"Fly": true
},
- {
- "Position": {
- "X": 233.0817,
- "Y": 8,
- "Z": -21.83023
- },
- "TerritoryId": 146,
- "InteractionType": "WalkTo",
- "Fly": true
- },
{
"DataId": 2000077,
"Position": {
@@ -360,18 +350,16 @@
"KillEnemyDataIds": [
9489
],
- "$": "0 0 0 0 0 0 -> 16 17 0 0 0 128"
- },
- {
- "Position": {
- "X": 614.4023,
- "Y": 301.81046,
- "Z": -101.94888
- },
- "TerritoryId": 155,
- "InteractionType": "WalkTo",
- "Fly": true,
- "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead"
+ "$": "0 0 0 0 0 0 -> 16 17 0 0 0 128",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ],
+ "Fly": true
},
{
"DataId": 2000078,
@@ -386,7 +374,17 @@
"KillEnemyDataIds": [
9490
],
- "$": "16 17 0 0 0 128 -> 0 17 0 0 0 0"
+ "Fly": true,
+ "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
+ "$": "16 17 0 0 0 128 -> 0 17 0 0 0 0",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json
index 71199ea0..f6dce677 100644
--- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json
+++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json
@@ -1,6 +1,9 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": ["liza", "JerryWester"],
+ "Author": [
+ "liza",
+ "JerryWester"
+ ],
"QuestSequence": [
{
"Sequence": 0,
@@ -95,14 +98,19 @@
"AethernetShard": "[Gold Saucer] Chocobo Square"
},
{
- "TerritoryId": 144,
- "InteractionType": "AttuneAetheryte",
- "Aetheryte": "Gold Saucer",
+ "TerritoryId": 388,
+ "InteractionType": "None",
"AethernetShortcut": [
"[Gold Saucer] Chocobo Square",
"[Gold Saucer] Entrance & Card Squares"
]
},
+ {
+ "TerritoryId": 144,
+ "InteractionType": "AttuneAetheryte",
+ "Aetheryte": "Gold Saucer",
+ "DelaySecondsAtStart": 3
+ },
{
"DataId": 1011080,
"Position": {
@@ -156,7 +164,8 @@
{
"TerritoryId": 144,
"InteractionType": "AttuneAethernetShard",
- "AethernetShard": "[Gold Saucer] Event Square"
+ "AethernetShard": "[Gold Saucer] Event Square",
+ "DelaySecondsAtStart": 3
},
{
"Position": {
@@ -182,6 +191,15 @@
"AethernetShard": "[Gold Saucer] Cactpot Board",
"DelaySecondsAtStart": 3
},
+ {
+ "Position": {
+ "X": 111.36922,
+ "Y": 13.000123,
+ "Z": -24.209782
+ },
+ "TerritoryId": 144,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 1011079,
"Position": {
@@ -198,6 +216,23 @@
{
"Sequence": 6,
"Steps": [
+ {
+ "Position": {
+ "X": 111.36922,
+ "Y": 13.000123,
+ "Z": -24.209782
+ },
+ "TerritoryId": 144,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "TerritoryId": 144,
+ "InteractionType": "None",
+ "AethernetShortcut": [
+ "[Gold Saucer] Cactpot Board",
+ "[Gold Saucer] Aetheryte Plaza"
+ ]
+ },
{
"DataId": 1011084,
"Position": {
@@ -207,10 +242,7 @@
},
"TerritoryId": 144,
"InteractionType": "Interact",
- "AethernetShortcut": [
- "[Gold Saucer] Cactpot Board",
- "[Gold Saucer] Aetheryte Plaza"
- ]
+ "DelaySecondsAtStart": 3
}
]
},
@@ -222,6 +254,14 @@
"InteractionType": "AttuneAethernetShard",
"AethernetShard": "[Gold Saucer] Round Square"
},
+ {
+ "TerritoryId": 144,
+ "InteractionType": "None",
+ "AethernetShortcut": [
+ "[Gold Saucer] Round Square",
+ "[Gold Saucer] Entrance & Card Squares"
+ ]
+ },
{
"DataId": 1010448,
"Position": {
@@ -232,10 +272,7 @@
"StopDistance": 5,
"TerritoryId": 144,
"InteractionType": "CompleteQuest",
- "AethernetShortcut": [
- "[Gold Saucer] Round Square",
- "[Gold Saucer] Entrance & Card Squares"
- ]
+ "DelaySecondsAtStart": 3
}
]
}
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Churning Mists/1828_Hide Your Moogles.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Churning Mists/1828_Hide Your Moogles.json
index 7d7043cf..be32d328 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Churning Mists/1828_Hide Your Moogles.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Churning Mists/1828_Hide Your Moogles.json
@@ -196,6 +196,17 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "Position": {
+ "X": -465.66104,
+ "Y": 43.041187,
+ "Z": 380.90747
+ },
+ "TerritoryId": 400,
+ "InteractionType": "WalkTo",
+ "Mount": true,
+ "DisableNavmesh": true
+ },
{
"DataId": 1013420,
"Position": {
@@ -204,8 +215,7 @@
"Z": 347.0968
},
"TerritoryId": 400,
- "InteractionType": "CompleteQuest",
- "DisableNavmesh": true
+ "InteractionType": "CompleteQuest"
}
]
}
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1771_Some Bad News.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1771_Some Bad News.json
index c584f07b..e3a5e7b5 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1771_Some Bad News.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1771_Some Bad News.json
@@ -111,6 +111,7 @@
},
"TerritoryId": 398,
"InteractionType": "WalkTo",
+ "Mount": true,
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1790_Stolen Munitions.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1790_Stolen Munitions.json
index 5e217fc9..17d022f2 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1790_Stolen Munitions.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1790_Stolen Munitions.json
@@ -20,6 +20,15 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 67.682434,
+ "Y": -49.685223,
+ "Z": -148.21802
+ },
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 4001,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1797_The Hunter Becomes the Kweh.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1797_The Hunter Becomes the Kweh.json
index 2deff7b9..1ccc2ef4 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1797_The Hunter Becomes the Kweh.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1797_The Hunter Becomes the Kweh.json
@@ -118,6 +118,7 @@
},
"TerritoryId": 398,
"InteractionType": "WalkTo",
+ "Mount": true,
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1802_A Lesson in Humility.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1802_A Lesson in Humility.json
index 2c5c6b23..fd7ed9c5 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1802_A Lesson in Humility.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1802_A Lesson in Humility.json
@@ -152,7 +152,8 @@
"Z": 22.9953
},
"TerritoryId": 398,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
]
}
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1945_Ebb and Aetherflow.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1945_Ebb and Aetherflow.json
index 64cbba1e..1d32b15e 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1945_Ebb and Aetherflow.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1945_Ebb and Aetherflow.json
@@ -98,6 +98,7 @@
"Y": 205.6815,
"Z": 31.631958
},
+ "StopDistance": 5,
"TerritoryId": 478,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Idyllshire"
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1963_Taking Stock.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1963_Taking Stock.json
index b67d5cd7..338a7da4 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1963_Taking Stock.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Hinterlands/1963_Taking Stock.json
@@ -30,6 +30,17 @@
"InteractionType": "WalkTo",
"TargetTerritoryId": 399
},
+ {
+ "DataId": 2006210,
+ "Position": {
+ "X": -487.48004,
+ "Y": 144.64026,
+ "Z": -285.359
+ },
+ "TerritoryId": 399,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818088
+ },
{
"DataId": 1013651,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1909_Sleepless in Ok' Zundu.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1909_Sleepless in Ok' Zundu.json
index e6fd0f6c..ef0f8a4a 100644
--- a/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1909_Sleepless in Ok' Zundu.json
+++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1909_Sleepless in Ok' Zundu.json
@@ -20,6 +20,15 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": -44.83911,
+ "Y": -1.6023016,
+ "Z": -655.73804
+ },
+ "TerritoryId": 401,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 2005824,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WAR/588_The Bear Necessity.json b/QuestPaths/3.x - Heavensward/Class Quests/WAR/588_The Bear Necessity.json
index f3ce1fe7..559d211e 100644
--- a/QuestPaths/3.x - Heavensward/Class Quests/WAR/588_The Bear Necessity.json
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WAR/588_The Bear Necessity.json
@@ -135,6 +135,20 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "Position": {
+ "X": 423.53406,
+ "Y": -26.253891,
+ "Z": -550.60297
+ },
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Unlocked"
+ }
+ }
+ },
{
"DataId": 2005573,
"Position": {
@@ -177,7 +191,8 @@
"StepIf": {
"Flying": "Unlocked"
}
- }
+ },
+ "DisableNavmesh": true
}
]
},
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1719_Taint Misbehaving.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1719_Taint Misbehaving.json
new file mode 100644
index 00000000..7843c2cf
--- /dev/null
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1719_Taint Misbehaving.json
@@ -0,0 +1,248 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "Position": {
+ "X": -146.86935,
+ "Y": 8.006159,
+ "Z": 268.78055
+ },
+ "StopDistance": 0.25,
+ "TerritoryId": 153,
+ "AetheryteShortcut": "South Shroud - Camp Tranquil",
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": -137.77051,
+ "Y": 7.7094107,
+ "Z": 275.28036
+ },
+ "DelaySeconds": 0.75
+ },
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ },
+ "StepIf": {
+ "Flying": "Unlocked",
+ "NearPosition": {
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "MaximumDistance": 3,
+ "TerritoryId": 153
+ }
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": -139.04318,
+ "Y": 8.522301,
+ "Z": 280.0128
+ },
+ "TerritoryId": 153,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "DataId": 1006751,
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "TerritoryId": 153,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1013606,
+ "Position": {
+ "X": -317.1283,
+ "Y": 21.686531,
+ "Z": 183.03198
+ },
+ "TerritoryId": 148,
+ "Fly": true,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Central Shroud - Bentbranch Meadows"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1006245,
+ "Position": {
+ "X": 4.9591064,
+ "Y": -46.518013,
+ "Z": 248.49304
+ },
+ "TerritoryId": 154,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "North Shroud - Fallgourd Float",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1007092,
+ "Position": {
+ "X": -59.31189,
+ "Y": -40.90982,
+ "Z": 232.62378
+ },
+ "TerritoryId": 154,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1002804,
+ "Position": {
+ "X": -26.260803,
+ "Y": -40.705082,
+ "Z": 172.74731
+ },
+ "TerritoryId": 154,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "Position": {
+ "X": 108.506836,
+ "Y": 7.167203,
+ "Z": -47.01306
+ },
+ "Fly": true,
+ "TerritoryId": 154,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [4683],
+ "CompletionQuestVariablesFlags": [
+ 2,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 1013605,
+ "Position": {
+ "X": 108.506836,
+ "Y": 7.167203,
+ "Z": -47.01306
+ },
+ "TerritoryId": 154,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1013605,
+ "Position": {
+ "X": 108.506836,
+ "Y": 7.167203,
+ "Z": -47.01306
+ },
+ "TerritoryId": 154,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1013606,
+ "Position": {
+ "X": -317.1283,
+ "Y": 21.686531,
+ "Z": 183.03198
+ },
+ "TerritoryId": 148,
+ "Fly": true,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Central Shroud - Bentbranch Meadows"
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 1013608,
+ "Position": {
+ "X": -314.9615,
+ "Y": 21.609262,
+ "Z": 182.8794
+ },
+ "TerritoryId": 148,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1013609,
+ "Position": {
+ "X": -44.480103,
+ "Y": -40.949986,
+ "Z": 187.7622
+ },
+ "AetheryteShortcut": "North Shroud - Fallgourd Float",
+ "TerritoryId": 154,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 1720
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1720_A Journey of Purification.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1720_A Journey of Purification.json
new file mode 100644
index 00000000..be678168
--- /dev/null
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1720_A Journey of Purification.json
@@ -0,0 +1,92 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1013609,
+ "Position": {
+ "X": -44.480103,
+ "Y": -40.949986,
+ "Z": 187.7622
+ },
+ "AetheryteShortcut": "North Shroud - Fallgourd Float",
+ "TerritoryId": 154,
+ "InteractionType": "AcceptQuest",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1013610,
+ "Position": {
+ "X": 209.21643,
+ "Y": 302,
+ "Z": -204.85242
+ },
+ "TerritoryId": 155,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
+ "Mount": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1013663,
+ "Position": {
+ "X": 161.91345,
+ "Y": 275.37952,
+ "Z": 16.403442
+ },
+ "TerritoryId": 155,
+ "Fly": true,
+ "InteractionType": "SinglePlayerDuty"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2005889,
+ "Position": {
+ "X": 143.78564,
+ "Y": 280.0183,
+ "Z": 19.882507
+ },
+ "TerritoryId": 155,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1013610,
+ "Position": {
+ "X": 209.21643,
+ "Y": 302,
+ "Z": -204.85242
+ },
+ "TerritoryId": 155,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
+ "NextQuestId": 1721
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1721_The Girl with the Dragon Tissue.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1721_The Girl with the Dragon Tissue.json
new file mode 100644
index 00000000..c219c397
--- /dev/null
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1721_The Girl with the Dragon Tissue.json
@@ -0,0 +1,185 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1013610,
+ "Position": {
+ "X": 209.21643,
+ "Y": 302,
+ "Z": -204.85242
+ },
+ "TerritoryId": 155,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1013613,
+ "Position": {
+ "X": 479.91138,
+ "Y": 226.62401,
+ "Z": 817.0442
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1011232,
+ "Position": {
+ "X": 506.8589,
+ "Y": 217.95148,
+ "Z": 792.4772
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1011237,
+ "Position": {
+ "X": 447.3181,
+ "Y": 212.53984,
+ "Z": 725.00183
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1013614,
+ "Position": {
+ "X": 463.5232,
+ "Y": 200.23772,
+ "Z": 651.911
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1013617,
+ "Position": {
+ "X": -513.0846,
+ "Y": 101.57904,
+ "Z": -653.3456
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "Position": {
+ "X": -336.4157,
+ "Y": 89.00586,
+ "Z": -586.5721
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 4677
+ ],
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ 2,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2005855,
+ "Position": {
+ "X": -336.4157,
+ "Y": 89.00586,
+ "Z": -586.5721
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 1013618,
+ "Position": {
+ "X": -402.12103,
+ "Y": 90.9028,
+ "Z": -688.53284
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1013614,
+ "Position": {
+ "X": 463.5232,
+ "Y": 200.23772,
+ "Z": 651.911
+ },
+ "TerritoryId": 397,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest",
+ "NextQuestId": 1722
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1722_The Dark Blight Writhes.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1722_The Dark Blight Writhes.json
new file mode 100644
index 00000000..8cc13327
--- /dev/null
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1722_The Dark Blight Writhes.json
@@ -0,0 +1,113 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1013614,
+ "Position": {
+ "X": 463.5232,
+ "Y": 200.23772,
+ "Z": 651.911
+ },
+ "TerritoryId": 397,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1013619,
+ "Position": {
+ "X": -274.49457,
+ "Y": 125.33218,
+ "Z": -13.870483
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1013620,
+ "Position": {
+ "X": -275.2575,
+ "Y": 125.596924,
+ "Z": -11.215393
+ },
+ "StopDistance": 5,
+ "TerritoryId": 397,
+ "InteractionType": "Action",
+ "Action": "Cure II"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2005857,
+ "Position": {
+ "X": -336.4157,
+ "Y": 89.00586,
+ "Z": -586.5721
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [4690],
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ 4,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2005857,
+ "Position": {
+ "X": -336.4157,
+ "Y": 89.00586,
+ "Z": -586.5721
+ },
+ "TerritoryId": 397,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1013623,
+ "Position": {
+ "X": 486.93054,
+ "Y": -51.1414,
+ "Z": 25.986084
+ },
+ "TerritoryId": 398,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "The Dravanian Forelands - Tailfeather",
+ "NextQuestId": 1723
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1723_In the Wake of Death.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1723_In the Wake of Death.json
new file mode 100644
index 00000000..d96e1d70
--- /dev/null
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1723_In the Wake of Death.json
@@ -0,0 +1,144 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1013623,
+ "Position": {
+ "X": 486.93054,
+ "Y": -51.1414,
+ "Z": 25.986084
+ },
+ "TerritoryId": 398,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "The Dravanian Forelands - Tailfeather",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1013624,
+ "Position": {
+ "X": -183.61182,
+ "Y": -104.708206,
+ "Z": 505.60767
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -561.82196,
+ "Y": -46.707886,
+ "Z": 300.46533
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [4691, 4692],
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ 4,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2005859,
+ "Position": {
+ "X": -561.82196,
+ "Y": -46.707886,
+ "Z": 300.46533
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1013625,
+ "Position": {
+ "X": -679.9573,
+ "Y": -100.52397,
+ "Z": 775.1736
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1013625,
+ "Position": {
+ "X": -679.9573,
+ "Y": -100.52397,
+ "Z": 775.1736
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [4690, 4691]
+ },
+ {
+ "DataId": 2005861,
+ "Position": {
+ "X": -678.4009,
+ "Y": -100.60278,
+ "Z": 778.13367
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1013625,
+ "Position": {
+ "X": -679.9573,
+ "Y": -100.52397,
+ "Z": 775.1736
+ },
+ "TerritoryId": 398,
+ "InteractionType": "CompleteQuest",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_JOBWHM580_01723_Q1_000_000",
+ "Answer": "TEXT_JOBWHM580_01723_A1_000_001"
+ }
+ ],
+ "NextQuestId": 1724
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1724_Trials of the Padjals.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1724_Trials of the Padjals.json
new file mode 100644
index 00000000..a109c03c
--- /dev/null
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1724_Trials of the Padjals.json
@@ -0,0 +1,94 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1013627,
+ "Position": {
+ "X": -679.9573,
+ "Y": -100.52397,
+ "Z": 775.1736
+ },
+ "TerritoryId": 398,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "The Dravanian Forelands - Tailfeather",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": -146.86935,
+ "Y": 8.006159,
+ "Z": 268.78055
+ },
+ "StopDistance": 0.25,
+ "TerritoryId": 153,
+ "AetheryteShortcut": "South Shroud - Camp Tranquil",
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": -137.77051,
+ "Y": 7.7094107,
+ "Z": 275.28036
+ },
+ "DelaySeconds": 0.75
+ },
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ },
+ "StepIf": {
+ "Flying": "Unlocked",
+ "NearPosition": {
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "MaximumDistance": 3,
+ "TerritoryId": 153
+ }
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": -139.04318,
+ "Y": 8.522301,
+ "Z": 280.0128
+ },
+ "TerritoryId": 153,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "DataId": 1006751,
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "TerritoryId": 153,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 1725
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1725_Hands of Healing.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1725_Hands of Healing.json
new file mode 100644
index 00000000..e5222cab
--- /dev/null
+++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1725_Hands of Healing.json
@@ -0,0 +1,284 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "Position": {
+ "X": -146.86935,
+ "Y": 8.006159,
+ "Z": 268.78055
+ },
+ "StopDistance": 0.25,
+ "TerritoryId": 153,
+ "AetheryteShortcut": "South Shroud - Camp Tranquil",
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": -137.77051,
+ "Y": 7.7094107,
+ "Z": 275.28036
+ },
+ "DelaySeconds": 0.75
+ },
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ },
+ "StepIf": {
+ "Flying": "Unlocked",
+ "NearPosition": {
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "MaximumDistance": 3,
+ "TerritoryId": 153
+ }
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": -139.04318,
+ "Y": 8.522301,
+ "Z": 280.0128
+ },
+ "TerritoryId": 153,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "DataId": 1006751,
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "TerritoryId": 153,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1013609,
+ "Position": {
+ "X": -44.480103,
+ "Y": -40.949986,
+ "Z": 187.7622
+ },
+ "TerritoryId": 154,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "North Shroud - Fallgourd Float"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -146.86935,
+ "Y": 8.006159,
+ "Z": 268.78055
+ },
+ "StopDistance": 0.25,
+ "TerritoryId": 153,
+ "AetheryteShortcut": "South Shroud - Camp Tranquil",
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": -137.77051,
+ "Y": 7.7094107,
+ "Z": 275.28036
+ },
+ "DelaySeconds": 0.75
+ },
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ },
+ "StepIf": {
+ "Flying": "Unlocked",
+ "NearPosition": {
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "MaximumDistance": 3,
+ "TerritoryId": 153
+ }
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": -139.04318,
+ "Y": 8.522301,
+ "Z": 280.0128
+ },
+ "TerritoryId": 153,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "DataId": 1006751,
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "TerritoryId": 153,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1013632,
+ "Position": {
+ "X": 491.38623,
+ "Y": -51.091385,
+ "Z": 34.561646
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1013635,
+ "Position": {
+ "X": -122.453674,
+ "Y": 0.72138774,
+ "Z": -615.80835
+ },
+ "TerritoryId": 398,
+ "InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "The Dravanian Forelands - Anyx Trine",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1013639,
+ "Position": {
+ "X": -120.74469,
+ "Y": 0.555462,
+ "Z": -616.6323
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 1013639,
+ "Position": {
+ "X": -120.74469,
+ "Y": 0.555462,
+ "Z": -616.6323
+ },
+ "TerritoryId": 398,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": -146.86935,
+ "Y": 8.006159,
+ "Z": 268.78055
+ },
+ "StopDistance": 0.25,
+ "TerritoryId": 153,
+ "AetheryteShortcut": "South Shroud - Camp Tranquil",
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": -137.77051,
+ "Y": 7.7094107,
+ "Z": 275.28036
+ },
+ "DelaySeconds": 0.75
+ },
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ },
+ "StepIf": {
+ "Flying": "Unlocked",
+ "NearPosition": {
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "MaximumDistance": 3,
+ "TerritoryId": 153
+ }
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": -139.04318,
+ "Y": 8.522301,
+ "Z": 280.0128
+ },
+ "TerritoryId": 153,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "DataId": 1006751,
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "TerritoryId": 153,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 2414
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1580_Coming to Ishgard.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1580_Coming to Ishgard.json
index 6bd29e33..e051a689 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1580_Coming to Ishgard.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1580_Coming to Ishgard.json
@@ -12,6 +12,7 @@
"Y": 0.014982708,
"Z": -0.07635498
},
+ "StopDistance": 7,
"TerritoryId": 395,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1592_Meeting the Neighbors.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1592_Meeting the Neighbors.json
index c7215e44..b5ff5887 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1592_Meeting the Neighbors.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1592_Meeting the Neighbors.json
@@ -114,8 +114,7 @@
"Z": 761.01306
},
"TerritoryId": 401,
- "InteractionType": "CompleteQuest",
- "AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop"
+ "InteractionType": "CompleteQuest"
}
]
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1593_Sense of Urgency.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1593_Sense of Urgency.json
index 4a8d50ac..75b0b6bb 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1593_Sense of Urgency.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1593_Sense of Urgency.json
@@ -83,6 +83,15 @@
128
]
},
+ {
+ "Position": {
+ "X": -368.08698,
+ "Y": -185.05266,
+ "Z": 792.836
+ },
+ "TerritoryId": 401,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 1012360,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1599_Flame General Affairs.json b/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1599_Flame General Affairs.json
index 6dfd7035..d80572cb 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1599_Flame General Affairs.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1599_Flame General Affairs.json
@@ -20,6 +20,23 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1011952,
+ "Position": {
+ "X": -277.63788,
+ "Y": -184.59735,
+ "Z": 741.60376
+ },
+ "TerritoryId": 401,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop",
+ "PickUpQuestId": 1748,
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ },
{
"DataId": 1001029,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1602_To Siege or Not to Siege.json b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1602_To Siege or Not to Siege.json
index 967dc514..90526401 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1602_To Siege or Not to Siege.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1602_To Siege or Not to Siege.json
@@ -47,6 +47,7 @@
"Y": 16.009666,
"Z": -9.567444
},
+ "StopDistance": 7,
"TerritoryId": 419,
"InteractionType": "Interact",
"TargetTerritoryId": 433
@@ -63,6 +64,7 @@
"Y": 0.022254243,
"Z": -4.409851
},
+ "StopDistance": 5,
"TerritoryId": 433,
"InteractionType": "CompleteQuest",
"DialogueChoices": [
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1603_Alphinaud's Way.json b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1603_Alphinaud's Way.json
index 7c2298f3..05414fb3 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1603_Alphinaud's Way.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1603_Alphinaud's Way.json
@@ -12,6 +12,7 @@
"Y": 0.022254243,
"Z": -4.409851
},
+ "StopDistance": 5,
"TerritoryId": 433,
"InteractionType": "AcceptQuest"
}
@@ -27,7 +28,6 @@
"Y": 1.1443481,
"Z": 13.199036
},
- "StopDistance": 7,
"TerritoryId": 433,
"InteractionType": "Interact",
"TargetTerritoryId": 419
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1604_In Search of Iceheart.json b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1604_In Search of Iceheart.json
index efa5f07f..e03fc6ea 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1604_In Search of Iceheart.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1604_In Search of Iceheart.json
@@ -87,6 +87,17 @@
{
"Sequence": 4,
"Steps": [
+ {
+ "DataId": 1011240,
+ "Position": {
+ "X": 493.15625,
+ "Y": 200.2377,
+ "Z": 663.01965
+ },
+ "TerritoryId": 397,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1744
+ },
{
"DataId": 2005536,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1608_Purple Flame, Purple Flame.json b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1608_Purple Flame, Purple Flame.json
index 058fb527..ab4de151 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1608_Purple Flame, Purple Flame.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1608_Purple Flame, Purple Flame.json
@@ -20,6 +20,39 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1011910,
+ "Position": {
+ "X": -298.26813,
+ "Y": 126.67049,
+ "Z": -1.4191895
+ },
+ "TerritoryId": 397,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1759
+ },
+ {
+ "DataId": 1011907,
+ "Position": {
+ "X": -288.8686,
+ "Y": 127.06639,
+ "Z": 13.199036
+ },
+ "TerritoryId": 397,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1760
+ },
+ {
+ "DataId": 1011911,
+ "Position": {
+ "X": -279.56055,
+ "Y": 127.08131,
+ "Z": 13.595764
+ },
+ "TerritoryId": 397,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2111
+ },
{
"Position": {
"X": -365.48965,
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1609_Where the Chocobos Roam.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1609_Where the Chocobos Roam.json
index 82bc7486..cf8bc885 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1609_Where the Chocobos Roam.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1609_Where the Chocobos Roam.json
@@ -20,6 +20,16 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": -826.9342,
+ "Y": 117.95439,
+ "Z": -642.92413
+ },
+ "TerritoryId": 397,
+ "InteractionType": "WalkTo",
+ "Fly": true
+ },
{
"Position": {
"X": -850.3646,
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1610_Worse than Dragons.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1610_Worse than Dragons.json
index d1790954..18b0e19b 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1610_Worse than Dragons.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1610_Worse than Dragons.json
@@ -35,6 +35,17 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "DataId": 1011916,
+ "Position": {
+ "X": 470.02356,
+ "Y": -49.89133,
+ "Z": 20.370789
+ },
+ "TerritoryId": 398,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1771
+ },
{
"Position": {
"X": 634.0371,
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1614_A Gnathic Deity.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1614_A Gnathic Deity.json
index 9ee5317f..766d64ac 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1614_A Gnathic Deity.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1614_A Gnathic Deity.json
@@ -105,6 +105,17 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "DataId": 1011929,
+ "Position": {
+ "X": 70.81714,
+ "Y": -49.2083,
+ "Z": -141.55798
+ },
+ "TerritoryId": 398,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1790
+ },
{
"Position": {
"X": 70.535545,
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1616_Lord of the Hive.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1616_Lord of the Hive.json
index cf0d154e..f73fbe9b 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1616_Lord of the Hive.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1616_Lord of the Hive.json
@@ -90,13 +90,52 @@
"Sequence": 255,
"Steps": [
{
+ "DataId": 1011916,
"Position": {
- "X": 123.44939,
- "Y": -60.88712,
- "Z": -118.79085
+ "X": 470.02356,
+ "Y": -49.89133,
+ "Z": 20.370789
},
"TerritoryId": 398,
- "InteractionType": "WalkTo"
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1797,
+ "AetheryteShortcut": "The Dravanian Forelands - Tailfeather",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 1797
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 1011937,
+ "Position": {
+ "X": -305.56195,
+ "Y": 39.04307,
+ "Z": 22.9953
+ },
+ "TerritoryId": 398,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1802,
+ "AetheryteShortcut": "The Dravanian Forelands - Anyx Trine",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 1802
+ ]
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": 22.235865,
+ "Y": -24.754946,
+ "Z": -119.65716
+ },
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
},
{
"DataId": 1014544,
@@ -106,7 +145,8 @@
"Z": -142.50409
},
"TerritoryId": 398,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "DisableNavmesh": true
}
]
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1617_Mourn in Passing.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1617_Mourn in Passing.json
index 449e0aaa..78abed7d 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1617_Mourn in Passing.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1617_Mourn in Passing.json
@@ -12,7 +12,7 @@
"Y": -50.325172,
"Z": -146.95972
},
- "StopDistance": 5,
+ "StopDistance": 7,
"TerritoryId": 398,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1620_Moghan's Trial.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1620_Moghan's Trial.json
index 46aac443..284166c7 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1620_Moghan's Trial.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1620_Moghan's Trial.json
@@ -12,7 +12,7 @@
"Y": -69.42934,
"Z": 693.5072
},
- "StopDistance": 5,
+ "StopDistance": 6.5,
"TerritoryId": 400,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1621_Mogmug's Trial.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1621_Mogmug's Trial.json
index 89f3196d..3c314d00 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1621_Mogmug's Trial.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1621_Mogmug's Trial.json
@@ -31,6 +31,17 @@
"DisableNavmesh": true,
"Mount": true
},
+ {
+ "DataId": 1012284,
+ "Position": {
+ "X": 363.24097,
+ "Y": -73.25598,
+ "Z": 678.4314
+ },
+ "TerritoryId": 400,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1819
+ },
{
"Position": {
"X": 286.46622,
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1623_Moglin's Judgment.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1623_Moglin's Judgment.json
index 3379cf91..9f9f298d 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1623_Moglin's Judgment.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1623_Moglin's Judgment.json
@@ -155,7 +155,7 @@
"Y": -69.42934,
"Z": 693.5072
},
- "StopDistance": 5,
+ "StopDistance": 7,
"TerritoryId": 400,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1624_Leaving Moghome.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1624_Leaving Moghome.json
index 13b0b022..6fb671d3 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1624_Leaving Moghome.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1624_Leaving Moghome.json
@@ -12,7 +12,7 @@
"Y": -69.42934,
"Z": 693.5072
},
- "StopDistance": 5,
+ "StopDistance": 7,
"TerritoryId": 400,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1625_The Road to Zenith.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1625_The Road to Zenith.json
index 9b3ed0f6..5b023de8 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1625_The Road to Zenith.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1625_The Road to Zenith.json
@@ -58,6 +58,25 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 1012285,
+ "Position": {
+ "X": 247.11987,
+ "Y": -42.33362,
+ "Z": 565.3314
+ },
+ "TerritoryId": 400,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1823,
+ "AetheryteShortcut": "The Churning Mists - Moghome",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 1823
+ ]
+ }
+ }
+ },
{
"DataId": 1013202,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1627_Heart of Ice.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1627_Heart of Ice.json
index bfbead82..9712eb9d 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1627_Heart of Ice.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1627_Heart of Ice.json
@@ -85,6 +85,7 @@
"Y": 123.72873,
"Z": 210.74231
},
+ "StopDistance": 7,
"TerritoryId": 400,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1628_The Wyrm's Lair.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1628_The Wyrm's Lair.json
index b6e26f82..31d0bfdb 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1628_The Wyrm's Lair.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1628_The Wyrm's Lair.json
@@ -12,6 +12,7 @@
"Y": 123.72873,
"Z": 210.74231
},
+ "StopDistance": 7,
"TerritoryId": 400,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1629_New Winds, Old Friends.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1629_New Winds, Old Friends.json
index 61be6d80..1a39a37d 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1629_New Winds, Old Friends.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1629_New Winds, Old Friends.json
@@ -20,6 +20,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1013434,
+ "Position": {
+ "X": 517.9064,
+ "Y": -1.1917055,
+ "Z": -354.63495
+ },
+ "TerritoryId": 400,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1835
+ },
{
"DataId": 1012720,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1630_A General Summons.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1630_A General Summons.json
index 362321a5..61828e2c 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1630_A General Summons.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1630_A General Summons.json
@@ -12,6 +12,7 @@
"Y": 16.979584,
"Z": -37.521973
},
+ "StopDistance": 7,
"TerritoryId": 418,
"InteractionType": "AcceptQuest"
}
@@ -58,6 +59,7 @@
"Y": 0,
"Z": -3.1281738
},
+ "StopDistance": 7,
"TerritoryId": 212,
"InteractionType": "Interact"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1635_The Song Begins.json b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1635_The Song Begins.json
index 81bf09c6..7e8fcdb3 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1635_The Song Begins.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A3.3-The Churning Mists/1635_The Song Begins.json
@@ -21,6 +21,25 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 1013420,
+ "Position": {
+ "X": -511.46716,
+ "Y": 50,
+ "Z": 347.0968
+ },
+ "TerritoryId": 400,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "The Churning Mists - Zenith",
+ "PickUpQuestId": 1828,
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 1828
+ ]
+ }
+ }
+ },
{
"DataId": 1013172,
"Position": {
@@ -30,7 +49,6 @@
},
"TerritoryId": 400,
"InteractionType": "CompleteQuest",
- "AetheryteShortcut": "The Churning Mists - Zenith",
"Fly": true
}
]
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A4-Ishgard/1641_The Sins of Antiquity.json b/QuestPaths/3.x - Heavensward/MSQ/A4-Ishgard/1641_The Sins of Antiquity.json
index 8450034b..c586d7d2 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A4-Ishgard/1641_The Sins of Antiquity.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A4-Ishgard/1641_The Sins of Antiquity.json
@@ -21,6 +21,18 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 1014720,
+ "Position": {
+ "X": 13.809326,
+ "Y": 15.96505,
+ "Z": -13.870483
+ },
+ "StopDistance": 7,
+ "TerritoryId": 419,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1874
+ },
{
"DataId": 1011223,
"Position": {
@@ -37,8 +49,9 @@
"Yes": true
}
],
+ "AetheryteShortcut": "Ishgard",
"AethernetShortcut": [
- "[Ishgard] The Last Vigil",
+ "[Ishgard] Aetheryte Plaza",
"[Ishgard] The Forgotten Knight"
]
},
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1644_Familiar Faces.json b/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1644_Familiar Faces.json
index 822f3dde..c65d6815 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1644_Familiar Faces.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1644_Familiar Faces.json
@@ -38,7 +38,7 @@
"Z": 113.54166
},
"TerritoryId": 401,
- "InteractionType": "SinglePlayerDuty",
+ "InteractionType": "Emote",
"Emote": "lookout",
"StopDistance": 0.25
}
@@ -54,10 +54,9 @@
"Z": 77.39858
},
"TerritoryId": 401,
- "InteractionType": "Emote",
+ "InteractionType": "SinglePlayerDuty",
"Emote": "lookout",
- "StopDistance": 0.25,
- "Comment": "Solo Duty triggered by emoting?"
+ "StopDistance": 0.25
}
]
},
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1647_Bolt, Chain, and Island.json b/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1647_Bolt, Chain, and Island.json
index e83bee3d..25028e99 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1647_Bolt, Chain, and Island.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1647_Bolt, Chain, and Island.json
@@ -20,6 +20,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1012069,
+ "Position": {
+ "X": -647.0283,
+ "Y": -51.05719,
+ "Z": -417.74628
+ },
+ "TerritoryId": 401,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1909
+ },
{
"DataId": 1012064,
"Position": {
@@ -35,6 +46,17 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "DataId": 1012068,
+ "Position": {
+ "X": -597.0398,
+ "Y": -51.05185,
+ "Z": -387.0451
+ },
+ "TerritoryId": 401,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1910
+ },
{
"DataId": 2006231,
"Position": {
@@ -68,6 +90,7 @@
"Y": -14.730623,
"Z": -537.56006
},
+ "StopDistance": 7,
"TerritoryId": 401,
"InteractionType": "Interact",
"DialogueChoices": [
@@ -100,7 +123,7 @@
"Y": -14.153766,
"Z": -543.0228
},
- "StopDistance": 5,
+ "StopDistance": 7,
"TerritoryId": 401,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1648_A Difference of Opinion.json b/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1648_A Difference of Opinion.json
index f4924843..27c692ab 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1648_A Difference of Opinion.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1648_A Difference of Opinion.json
@@ -12,7 +12,7 @@
"Y": -14.153766,
"Z": -543.0228
},
- "StopDistance": 5,
+ "StopDistance": 7,
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1653_Tataru's Surprise.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1653_Tataru's Surprise.json
index 9285d55a..96b7dec9 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1653_Tataru's Surprise.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1653_Tataru's Surprise.json
@@ -21,6 +21,15 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 43.620056,
+ "Y": -7.9655867,
+ "Z": 103.63884
+ },
+ "TerritoryId": 132,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 1000691,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1654_Onward to Sharlayan.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1654_Onward to Sharlayan.json
index 92e5a36f..9d70443d 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1654_Onward to Sharlayan.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1654_Onward to Sharlayan.json
@@ -45,7 +45,8 @@
},
"TerritoryId": 398,
"InteractionType": "CompleteQuest",
- "AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
+ "AetheryteShortcut": "The Dravanian Forelands - Tailfeather",
+ "Fly": true
}
]
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1656_Golems Begone.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1656_Golems Begone.json
index 28768729..55c9f0b5 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1656_Golems Begone.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1656_Golems Begone.json
@@ -27,6 +27,7 @@
"Y": 205.62819,
"Z": 26.901611
},
+ "StopDistance": 7,
"TerritoryId": 478,
"InteractionType": "Interact"
}
@@ -47,7 +48,15 @@
"$": "0 0 0 0 0 0 -> 1 0 0 0 0 64",
"ChatMessage": {
"Key": "TEXT_HEAVNA607_01656_SAYTODO_000"
- }
+ },
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
},
{
"DataId": 1012413,
@@ -60,7 +69,15 @@
"InteractionType": "Say",
"ChatMessage": {
"Key": "TEXT_HEAVNA607_01656_SAYTODO_000"
- }
+ },
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
}
]
},
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1657_An Illuminati Incident.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1657_An Illuminati Incident.json
index f8924a38..9f25ebda 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1657_An Illuminati Incident.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1657_An Illuminati Incident.json
@@ -20,6 +20,21 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1012287,
+ "Position": {
+ "X": -28.397034,
+ "Y": 100.969696,
+ "Z": -186.4195
+ },
+ "TerritoryId": 399,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1936,
+ "AethernetShortcut": [
+ "[Idyllshire] Aetheryte Plaza",
+ "[Idyllshire] Epilogue Gate (Eastern Hinterlands)"
+ ]
+ },
{
"DataId": 1012416,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1658_Leaving Idyllshire.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1658_Leaving Idyllshire.json
index 973360b2..d4516d63 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1658_Leaving Idyllshire.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1658_Leaving Idyllshire.json
@@ -20,6 +20,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1012102,
+ "Position": {
+ "X": 72.40405,
+ "Y": 205.6815,
+ "Z": 31.631958
+ },
+ "TerritoryId": 478,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1945
+ },
{
"DataId": 1012419,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1659_Matoya's Cave.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1659_Matoya's Cave.json
index 3c27ba55..c13a7192 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1659_Matoya's Cave.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1659_Matoya's Cave.json
@@ -21,6 +21,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1012133,
+ "Position": {
+ "X": -26.840637,
+ "Y": 206.49944,
+ "Z": 28.67163
+ },
+ "TerritoryId": 478,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1963
+ },
{
"Position": {
"X": 71.86769,
@@ -29,18 +40,15 @@
},
"TerritoryId": 478,
"InteractionType": "WalkTo",
- "TargetTerritoryId": 399
- },
- {
- "DataId": 2006210,
- "Position": {
- "X": -487.48004,
- "Y": 144.64026,
- "Z": -285.359
+ "TargetTerritoryId": 399,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 399
+ ]
+ }
},
- "TerritoryId": 399,
- "InteractionType": "AttuneAetherCurrent",
- "AetherCurrentId": 2818088
+ "$": "Skipped if already in the Hinterlands, since 'Taking Stock' already leaves you closer to the entrance to Matoya's cave"
},
{
"DataId": 2006214,
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1660_Forbidden Knowledge.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1660_Forbidden Knowledge.json
index 1a656cdf..cf7fe15e 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1660_Forbidden Knowledge.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1660_Forbidden Knowledge.json
@@ -44,7 +44,7 @@
"Y": 38.43,
"Z": 3.5552979
},
- "StopDistance": 7,
+ "StopDistance": 6,
"TerritoryId": 463,
"InteractionType": "Interact"
}
@@ -53,6 +53,17 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "DataId": 1012141,
+ "Position": {
+ "X": 35.690796,
+ "Y": 38.43,
+ "Z": 12.985352
+ },
+ "TerritoryId": 463,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 1966
+ },
{
"DataId": 2005337,
"Position": {
@@ -114,7 +125,8 @@
},
"TerritoryId": 399,
"InteractionType": "WalkTo",
- "DisableNavmesh": true
+ "DisableNavmesh": true,
+ "Mount": true
},
{
"DataId": 2005336,
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1662_Hour of Departure.json b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1662_Hour of Departure.json
index ddf0e6ea..85aaee24 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1662_Hour of Departure.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1662_Hour of Departure.json
@@ -28,6 +28,7 @@
"Y": -14.52896,
"Z": 41.153564
},
+ "StopDistance": 7,
"TerritoryId": 419,
"InteractionType": "Interact"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1663_The First Flight of the Excelsior.json b/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1663_The First Flight of the Excelsior.json
index 910a94e5..d5325ed2 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1663_The First Flight of the Excelsior.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1663_The First Flight of the Excelsior.json
@@ -61,7 +61,8 @@
"Z": -659.2356
},
"TerritoryId": 402,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "DisableNavmesh": true
}
]
},
diff --git a/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1666_Chimerical Maintenance.json b/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1666_Chimerical Maintenance.json
index f1727762..06fed283 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1666_Chimerical Maintenance.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1666_Chimerical Maintenance.json
@@ -35,6 +35,15 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "Position": {
+ "X": 642.1002,
+ "Y": -32.964188,
+ "Z": -532.8383
+ },
+ "TerritoryId": 402,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 2005568,
"Position": {
diff --git a/QuestPaths/3.x - Heavensward/MSQ/B-3.1/2163_As Goes Light, So Goes Darkness.json b/QuestPaths/3.x - Heavensward/MSQ/B-3.1/2163_As Goes Light, So Goes Darkness.json
index f720da44..3b1d87a7 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/B-3.1/2163_As Goes Light, So Goes Darkness.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/B-3.1/2163_As Goes Light, So Goes Darkness.json
@@ -94,6 +94,7 @@
"Y": 0.022254243,
"Z": 4.623413
},
+ "StopDistance": 7,
"TerritoryId": 433,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/D-3.3/2247_Litany of Peace.json b/QuestPaths/3.x - Heavensward/MSQ/D-3.3/2247_Litany of Peace.json
index 192cc0cb..ee1c758c 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/D-3.3/2247_Litany of Peace.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/D-3.3/2247_Litany of Peace.json
@@ -27,6 +27,7 @@
"Y": 24.458836,
"Z": 0.62561035
},
+ "StopDistance": 4,
"TerritoryId": 418,
"InteractionType": "Interact",
"DialogueChoices": [
@@ -79,6 +80,7 @@
"Y": 0.022254243,
"Z": 4.623413
},
+ "StopDistance": 7,
"TerritoryId": 433,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/3.x - Heavensward/MSQ/E-3.4/2348_Honorable Heroes.json b/QuestPaths/3.x - Heavensward/MSQ/E-3.4/2348_Honorable Heroes.json
index e3a1b231..6be02d16 100644
--- a/QuestPaths/3.x - Heavensward/MSQ/E-3.4/2348_Honorable Heroes.json
+++ b/QuestPaths/3.x - Heavensward/MSQ/E-3.4/2348_Honorable Heroes.json
@@ -78,6 +78,10 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "TerritoryId": 146,
+ "InteractionType": "EquipRecommended"
+ },
{
"DataId": 1017762,
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2771_Sheep Snatcher.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2771_Sheep Snatcher.json
index 923643c0..3d3167ab 100644
--- a/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2771_Sheep Snatcher.json
+++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2771_Sheep Snatcher.json
@@ -28,7 +28,7 @@
"Z": -210.22363
},
"TerritoryId": 622,
- "InteractionType": "WaitForManualProgress",
+ "InteractionType": "Instruction",
"Comment": "Snipe sheep"
}
]
diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2782_Forty Years and Counting.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2782_Forty Years and Counting.json
index 549b7566..98a16015 100644
--- a/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2782_Forty Years and Counting.json
+++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Azim Steppe/2782_Forty Years and Counting.json
@@ -50,18 +50,15 @@
},
"TerritoryId": 622,
"InteractionType": "Interact",
- "$": "QW: 0 0 0 0 0 0 -> QW: 1 16 0 0 0 128"
- },
- {
- "DataId": 2008926,
- "Position": {
- "X": 27.634033,
- "Y": 115.464966,
- "Z": -48.05072
- },
- "TerritoryId": 622,
- "InteractionType": "Interact",
- "$": "QW: 1 16 0 0 0 128 -> QW: 2 32 0 0 0 192"
+ "$": "QW: 0 0 0 0 0 0 -> QW: 1 16 0 0 0 128",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
},
{
"DataId": 2008927,
@@ -71,7 +68,35 @@
"Z": -49.5766
},
"TerritoryId": 622,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 2008926,
+ "Position": {
+ "X": 27.634033,
+ "Y": 115.464966,
+ "Z": -48.05072
+ },
+ "StopDistance": 4,
+ "TerritoryId": 622,
+ "InteractionType": "Interact",
+ "$": "QW: 1 16 0 0 0 128 -> QW: 2 32 0 0 0 192",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
@@ -91,4 +116,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2639_Magiteknical Failure.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2639_Magiteknical Failure.json
index 7f1657a2..ce26036a 100644
--- a/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2639_Magiteknical Failure.json
+++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2639_Magiteknical Failure.json
@@ -49,8 +49,7 @@
},
"StopDistance": 0.5,
"TerritoryId": 612,
- "InteractionType": "Instruction",
- "Comment": "Manual combat",
+ "InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
7504
@@ -69,8 +68,7 @@
},
"StopDistance": 2,
"TerritoryId": 612,
- "InteractionType": "Instruction",
- "Comment": "Manual combat",
+ "InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
7505
diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2661_The Hidden Truth.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2661_The Hidden Truth.json
index 62b1a0e5..e3c62d59 100644
--- a/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2661_The Hidden Truth.json
+++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Fringes/2661_The Hidden Truth.json
@@ -83,6 +83,7 @@
"Y": 74.88393,
"Z": -118.30322
},
+ "StopDistance": 5,
"TerritoryId": 612,
"InteractionType": "Interact"
}
@@ -98,10 +99,11 @@
"Y": 75.3867,
"Z": -124.712036
},
+ "StopDistance": 7,
"TerritoryId": 612,
"InteractionType": "CompleteQuest"
}
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2632_The Palace of Lost Souls.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2632_The Palace of Lost Souls.json
index 7425f2d3..ab947e9d 100644
--- a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2632_The Palace of Lost Souls.json
+++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2632_The Palace of Lost Souls.json
@@ -50,7 +50,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "$": "Sui-no-Sato, NE inside"
+ "$": "Sui-no-Sato, NE inside",
+ "RestartNavigationIfCancelled": false
},
{
"Position": {
@@ -112,7 +113,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RestartNavigationIfCancelled": false
},
{
"Position": {
@@ -122,7 +124,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "$": "Sui-no-Sato, NE outside"
+ "$": "Sui-no-Sato, NE outside",
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1023280,
diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2693_The Sword in the Stone.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2693_The Sword in the Stone.json
index b6c9665f..b3985897 100644
--- a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2693_The Sword in the Stone.json
+++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2693_The Sword in the Stone.json
@@ -20,15 +20,6 @@
{
"Sequence": 1,
"Steps": [
- {
- "Position": {
- "X": 566.1683,
- "Y": -60.550995,
- "Z": -134.80696
- },
- "TerritoryId": 613,
- "InteractionType": "WalkTo"
- },
{
"DataId": 1023358,
"Position": {
@@ -87,9 +78,9 @@
"Steps": [
{
"Position": {
- "X": 617.86127,
- "Y": -29.12958,
- "Z": -129.81326
+ "X": 617.17053,
+ "Y": -29.302427,
+ "Z": -130.22484
},
"TerritoryId": 613,
"InteractionType": "Jump",
@@ -137,30 +128,13 @@
"Steps": [
{
"Position": {
- "X": 593.3238,
- "Y": -45.048393,
- "Z": -152.89952
- },
- "TerritoryId": 613,
- "InteractionType": "Jump",
- "StopDistance": 0.25,
- "JumpDestination": {
- "Position": {
- "X": 566.00684,
- "Y": -61.995552,
- "Z": -146.04814
- }
- }
- },
- {
- "Position": {
- "X": 566.1683,
- "Y": -60.550995,
- "Z": -134.80696
+ "X": 570.09125,
+ "Y": -62.583626,
+ "Z": -145.46727
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "Mount": true
+ "DisableNavmesh": true
},
{
"DataId": 1023358,
@@ -175,4 +149,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/Yanxia/2724_Something Smells.json b/QuestPaths/4.x - Stormblood/Aether Currents/Yanxia/2724_Something Smells.json
index 7e6bc815..cab3da14 100644
--- a/QuestPaths/4.x - Stormblood/Aether Currents/Yanxia/2724_Something Smells.json
+++ b/QuestPaths/4.x - Stormblood/Aether Currents/Yanxia/2724_Something Smells.json
@@ -126,6 +126,17 @@
4
]
},
+ {
+ "Position": {
+ "X": 445.11514,
+ "Y": 40.55606,
+ "Z": -51.57855
+ },
+ "TerritoryId": 614,
+ "InteractionType": "WalkTo",
+ "DisableNavmesh": true,
+ "Mount": true
+ },
{
"DataId": 2008465,
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3050_A Signal for the Senses.json b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3050_A Signal for the Senses.json
index 2ff0c260..2c59b09b 100644
--- a/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3050_A Signal for the Senses.json
+++ b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3050_A Signal for the Senses.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "liza",
- "Disabled": true,
+ "Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
@@ -22,7 +21,35 @@
{
"Sequence": 1,
"Steps": [
-
+ {
+ "DataId": 2009341,
+ "Position": {
+ "X": 333.1808,
+ "Y": 61.17334,
+ "Z": -362.41705
+ },
+ "TerritoryId": 612,
+ "InteractionType": "UseItem",
+ "ItemId": 2002437,
+ "AetheryteShortcut": "Rhalgr's Reach",
+ "AethernetShortcut": [
+ "[Rhalgr's Reach] Aetheryte Plaza",
+ "[Rhalgr's Reach] Fringes Gate"
+ ],
+ "Fly": true
+ },
+ {
+ "DataId": 2009340,
+ "Position": {
+ "X": 90.01294,
+ "Y": 74.44873,
+ "Z": -566.03345
+ },
+ "TerritoryId": 612,
+ "InteractionType": "UseItem",
+ "ItemId": 2002437,
+ "Fly": true
+ }
]
},
{
@@ -36,6 +63,7 @@
},
"TerritoryId": 612,
"InteractionType": "WalkTo",
+ "AetheryteShortcut": "Fringes - Peering Stones",
"Fly": true
},
{
diff --git a/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3051_Criminal Crossings.json b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3051_Criminal Crossings.json
index 2ff0c260..2283a975 100644
--- a/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3051_Criminal Crossings.json
+++ b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3051_Criminal Crossings.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "liza",
- "Disabled": true,
+ "Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
@@ -22,7 +21,94 @@
{
"Sequence": 1,
"Steps": [
-
+ {
+ "DataId": 1025062,
+ "Position": {
+ "X": -345.7237,
+ "Y": 43.09622,
+ "Z": 177.84387
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Combat",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANANA402_03051_Q1_000_000",
+ "Answer": "TEXT_BANANA402_03051_A1_000_002"
+ }
+ ],
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [8587]
+ },
+ {
+ "DataId": 1025061,
+ "Position": {
+ "X": -488.18192,
+ "Y": 81.128265,
+ "Z": -191.33289
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Combat",
+ "SkipConditions": {
+ "StepIf": {
+ "NotTargetable": true
+ }
+ },
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANANA402_03051_Q1_000_000",
+ "Answer": "TEXT_BANANA402_03051_A1_000_002"
+ }
+ ],
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [8586],
+ "$": "This NPC will become an enemy"
+ },
+ {
+ "DataId": 1025119,
+ "Position": {
+ "X": -488.18192,
+ "Y": 81.128265,
+ "Z": -191.33289
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "SkipConditions": {
+ "StepIf": {
+ "NotTargetable": true
+ }
+ },
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANANA402_03051_Q1_000_000",
+ "Answer": "TEXT_BANANA402_03051_A1_000_001"
+ }
+ ],
+ "$": "This NPC will not become an enemy"
+ },
+ {
+ "DataId": 1025118,
+ "Position": {
+ "X": -572.96106,
+ "Y": 112.436066,
+ "Z": -229.29736
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANANA402_03051_Q1_000_000",
+ "Answer": "TEXT_BANANA402_03051_A1_000_001"
+ }
+ ]
+ }
]
},
{
diff --git a/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3052_When Feathers Fly.json b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3052_When Feathers Fly.json
index 2ff0c260..85e5f32c 100644
--- a/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3052_When Feathers Fly.json
+++ b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Dailies/3052_When Feathers Fly.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "liza",
- "Disabled": true,
+ "Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
@@ -22,7 +21,30 @@
{
"Sequence": 1,
"Steps": [
-
+ {
+ "DataId": 1025063,
+ "Position": {
+ "X": 291.73718,
+ "Y": 73.622604,
+ "Z": -496.87955
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Emote",
+ "Emote": "soothe",
+ "Fly": true
+ },
+ {
+ "DataId": 1025065,
+ "Position": {
+ "X": -73.04492,
+ "Y": 62.044453,
+ "Z": -878.78235
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Emote",
+ "Emote": "rally",
+ "Fly": true
+ }
]
},
{
diff --git a/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Story/3037_Griffins Rampant.json b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Story/3037_Griffins Rampant.json
new file mode 100644
index 00000000..aa55efd9
--- /dev/null
+++ b/QuestPaths/4.x - Stormblood/Allied Societies/Ananta/Story/3037_Griffins Rampant.json
@@ -0,0 +1,159 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "plogon_enjoyer",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1024771,
+ "Position": {
+ "X": 12.008789,
+ "Y": 55.97821,
+ "Z": 237.96448
+ },
+ "TerritoryId": 612,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1024896,
+ "Position": {
+ "X": -630.2129,
+ "Y": 130.26343,
+ "Z": -452.20117
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1024897,
+ "Position": {
+ "X": -76.40198,
+ "Y": -5.32758e-12,
+ "Z": -48.233826
+ },
+ "TerritoryId": 635,
+ "InteractionType": "Interact",
+ "Mount": true,
+ "AetheryteShortcut": "Rhalgr's Reach",
+ "AethernetShortcut": [
+ "[Rhalgr's Reach] Aetheryte Plaza",
+ "[Rhalgr's Reach] Western Rhalgr's Reach"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1024952,
+ "Position": {
+ "X": 12.008789,
+ "Y": 55.97821,
+ "Z": 237.96448
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Fringes - Peering Stones",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1024900,
+ "Position": {
+ "X": -50.980408,
+ "Y": 56.02146,
+ "Z": 218.46338
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1024901,
+ "Position": {
+ "X": -80.52191,
+ "Y": 56.021286,
+ "Z": 231.40308
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Action",
+ "Action": "Buffet (Griffin)",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 1024901,
+ "Position": {
+ "X": -80.52191,
+ "Y": 56.021286,
+ "Z": 231.40308
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Action",
+ "Action": "Buffet (Griffin)",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 7,
+ "Steps": [
+ {
+ "DataId": 1024901,
+ "Position": {
+ "X": -80.52191,
+ "Y": 56.021286,
+ "Z": 231.40308
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Action",
+ "Action": "Buffet (Griffin)",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1024901,
+ "Position": {
+ "X": -80.52191,
+ "Y": 56.021286,
+ "Z": 231.40308
+ },
+ "TerritoryId": 612,
+ "InteractionType": "CompleteQuest",
+ "Mount": false
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json b/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json
index c4710dc4..f3cb71d0 100644
--- a/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json
+++ b/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json
@@ -13,7 +13,21 @@
"Z": 403.3722
},
"TerritoryId": 622,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Azim Steppe - Reunion",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "NearPosition": {
+ "Position": {
+ "X": 525.10876,
+ "Y": -19.50681,
+ "Z": 403.3722
+ },
+ "MaximumDistance": 100,
+ "TerritoryId": 622
+ }
+ }
+ }
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WHM/2414_Unease in East End.json b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2414_Unease in East End.json
new file mode 100644
index 00000000..c7385a02
--- /dev/null
+++ b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2414_Unease in East End.json
@@ -0,0 +1,158 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "Position": {
+ "X": -146.86935,
+ "Y": 8.006159,
+ "Z": 268.78055
+ },
+ "StopDistance": 0.25,
+ "TerritoryId": 153,
+ "AetheryteShortcut": "South Shroud - Camp Tranquil",
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": -137.77051,
+ "Y": 7.7094107,
+ "Z": 275.28036
+ },
+ "DelaySeconds": 0.75
+ },
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ },
+ "StepIf": {
+ "Flying": "Unlocked",
+ "NearPosition": {
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "MaximumDistance": 3,
+ "TerritoryId": 153
+ }
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": -139.04318,
+ "Y": 8.522301,
+ "Z": 280.0128
+ },
+ "TerritoryId": 153,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "DataId": 1006751,
+ "Position": {
+ "X": -139.45221,
+ "Y": 8.712891,
+ "Z": 281.69678
+ },
+ "TerritoryId": 153,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1000692,
+ "Position": {
+ "X": -258.8083,
+ "Y": -5.7735243,
+ "Z": -27.267883
+ },
+ "TerritoryId": 133,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Gridania",
+ "AethernetShortcut": [
+ "[Gridania] Aetheryte Plaza",
+ "[Gridania] Conjurers' Guild"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1018744,
+ "Position": {
+ "X": 87.96814,
+ "Y": 5.9457893,
+ "Z": 490.56213
+ },
+ "TerritoryId": 152,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "East Shroud - Hawthorne Hut",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1018746,
+ "Position": {
+ "X": -651.3619,
+ "Y": 130,
+ "Z": -527.8248
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Fringes - Castrum Oriens"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 2007687,
+ "Position": {
+ "X": -640.8331,
+ "Y": 120.3479,
+ "Z": -291.52362
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1018752,
+ "Position": {
+ "X": -622.5834,
+ "Y": 130.26505,
+ "Z": -473.7469
+ },
+ "TerritoryId": 612,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "NextQuestId": 2415
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WHM/2415_An Aura for Trouble.json b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2415_An Aura for Trouble.json
new file mode 100644
index 00000000..ce6f9b65
--- /dev/null
+++ b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2415_An Aura for Trouble.json
@@ -0,0 +1,108 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1018753,
+ "Position": {
+ "X": -623.621,
+ "Y": 130.24214,
+ "Z": -474.72345
+ },
+ "TerritoryId": 612,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1018757,
+ "Position": {
+ "X": -437.2168,
+ "Y": 73.07981,
+ "Z": -100.23657
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -586.0533,
+ "Y": 54.95936,
+ "Z": 204.82178
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 612,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [7214],
+ "Fly": true
+ },
+ {
+ "DataId": 1018758,
+ "Position": {
+ "X": -586.0533,
+ "Y": 54.95936,
+ "Z": 204.82178
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1000692,
+ "Position": {
+ "X": -258.8083,
+ "Y": -5.7735243,
+ "Z": -27.267883
+ },
+ "TerritoryId": 133,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Gridania",
+ "AethernetShortcut": [
+ "[Gridania] Aetheryte Plaza",
+ "[Gridania] Conjurers' Guild"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1018753,
+ "Position": {
+ "X": -623.621,
+ "Y": 130.24214,
+ "Z": -474.72345
+ },
+ "TerritoryId": 612,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "NextQuestId": 2416
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WHM/2416_A Beacon for Bad Things.json b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2416_A Beacon for Bad Things.json
new file mode 100644
index 00000000..b9e8d1b6
--- /dev/null
+++ b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2416_A Beacon for Bad Things.json
@@ -0,0 +1,115 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1018753,
+ "Position": {
+ "X": -623.621,
+ "Y": 130.24214,
+ "Z": -474.72345
+ },
+ "TerritoryId": 612,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2007711,
+ "Position": {
+ "X": -488.0293,
+ "Y": 50.94983,
+ "Z": 86.96118
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2007712,
+ "Position": {
+ "X": -461.63123,
+ "Y": 57.14502,
+ "Z": 186.08374
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2007713,
+ "Position": {
+ "X": -529.9306,
+ "Y": 36.88098,
+ "Z": 451.16345
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1019090,
+ "Position": {
+ "X": -638.3002,
+ "Y": 38.30705,
+ "Z": 374.92932
+ },
+ "TerritoryId": 612,
+ "InteractionType": "SinglePlayerDuty",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1018753,
+ "Position": {
+ "X": -623.621,
+ "Y": 130.24214,
+ "Z": -474.72345
+ },
+ "TerritoryId": 612,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_JOBWHM650_02416_Q1_000_000",
+ "Answer": "TEXT_JOBWHM650_02416_A1_000_001"
+ }
+ ],
+ "NextQuestId": 2417
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WHM/2417_The Problem with Padjals.json b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2417_The Problem with Padjals.json
new file mode 100644
index 00000000..b34f17f2
--- /dev/null
+++ b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2417_The Problem with Padjals.json
@@ -0,0 +1,112 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1018753,
+ "Position": {
+ "X": -623.621,
+ "Y": 130.24214,
+ "Z": -474.72345
+ },
+ "TerritoryId": 612,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1019125,
+ "Position": {
+ "X": -651.81964,
+ "Y": 40.067055,
+ "Z": 370.80945
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -175.06683,
+ "Y": 59.779804,
+ "Z": -558.8312
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [7215],
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "Fly": true
+ },
+ {
+ "DataId": 1019128,
+ "Position": {
+ "X": -175.06683,
+ "Y": 59.779804,
+ "Z": -558.8312
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "Position": {
+ "X": -650.58673,
+ "Y": 39.856243,
+ "Z": 371.54846
+ },
+ "TerritoryId": 612,
+ "InteractionType": "WalkTo",
+ "Fly": true
+ },
+ {
+ "DataId": 1019131,
+ "Position": {
+ "X": -663.7522,
+ "Y": 43.594555,
+ "Z": 363.75977
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1019132,
+ "Position": {
+ "X": -655.02405,
+ "Y": 40.43195,
+ "Z": 375.96704
+ },
+ "TerritoryId": 612,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 2418
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WHM/2418_What She Always Wanted.json b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2418_What She Always Wanted.json
new file mode 100644
index 00000000..eec344e8
--- /dev/null
+++ b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2418_What She Always Wanted.json
@@ -0,0 +1,139 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1019132,
+ "Position": {
+ "X": -655.02405,
+ "Y": 40.43195,
+ "Z": 375.96704
+ },
+ "TerritoryId": 612,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Fringes - Castrum Oriens",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1018759,
+ "Position": {
+ "X": -636.8048,
+ "Y": 130,
+ "Z": -528.6183
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Fringes - Castrum Oriens"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -650.58673,
+ "Y": 39.856243,
+ "Z": 371.54846
+ },
+ "TerritoryId": 612,
+ "InteractionType": "WalkTo",
+ "Fly": true
+ },
+ {
+ "DataId": 1019130,
+ "Position": {
+ "X": -665.3696,
+ "Y": 43.594574,
+ "Z": 364.40063
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1019130,
+ "Position": {
+ "X": -665.3696,
+ "Y": 43.594574,
+ "Z": 364.40063
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Emote",
+ "Emote": "soothe",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_JOBWHM700_02418_Q1_000_000",
+ "Answer": "TEXT_JOBWHM700_02418_A1_000_001"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "Position": {
+ "X": -381.88757,
+ "Y": 40.283813,
+ "Z": 484.82483
+ },
+ "TerritoryId": 612,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [7216],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1019127,
+ "Position": {
+ "X": -381.88757,
+ "Y": 40.283813,
+ "Z": 484.82483
+ },
+ "TerritoryId": 612,
+ "InteractionType": "UseItem",
+ "ItemId": 2002053
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1019588,
+ "Position": {
+ "X": -382.71155,
+ "Y": 40.275818,
+ "Z": 484.36694
+ },
+ "TerritoryId": 612,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2704_Fathoms Below.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2704_Fathoms Below.json
index ef577617..21aa856c 100644
--- a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2704_Fathoms Below.json
+++ b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2704_Fathoms Below.json
@@ -13,7 +13,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RestartNavigationIfCancelled": false
},
{
"Position": {
@@ -23,7 +24,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "$": "Sui-no-Sato, NE outside"
+ "$": "Sui-no-Sato, NE outside",
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1023280,
diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2705_A Part of Your World.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2705_A Part of Your World.json
index 834a2cc1..d44e7aae 100644
--- a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2705_A Part of Your World.json
+++ b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2705_A Part of Your World.json
@@ -75,7 +75,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RestartNavigationIfCancelled": false
},
{
"Position": {
@@ -85,7 +86,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "$": "Sui-no-Sato, NE outside"
+ "$": "Sui-no-Sato, NE outside",
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1023280,
diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2706_The Elixir of Life.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2706_The Elixir of Life.json
index fed711ae..0976654b 100644
--- a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2706_The Elixir of Life.json
+++ b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2706_The Elixir of Life.json
@@ -80,7 +80,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "Mount": true
+ "Mount": true,
+ "RestartNavigationIfCancelled": false
},
{
"Position": {
@@ -91,6 +92,7 @@
"TerritoryId": 613,
"InteractionType": "WalkTo",
"$": "Exile, outside",
+ "RestartNavigationIfCancelled": false,
"Fly": true
},
{
@@ -164,6 +166,7 @@
"TerritoryId": 613,
"InteractionType": "WalkTo",
"$": "Sui-no-Sato, SW outside",
+ "RestartNavigationIfCancelled": false,
"Fly": true
},
{
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.1-Peaks 1/2453_Best Served with Cold Steel.json b/QuestPaths/4.x - Stormblood/MSQ/A1.1-Peaks 1/2453_Best Served with Cold Steel.json
index 822d5bc0..598dd113 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.1-Peaks 1/2453_Best Served with Cold Steel.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.1-Peaks 1/2453_Best Served with Cold Steel.json
@@ -26,6 +26,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1019517,
+ "Position": {
+ "X": -653.0099,
+ "Y": 129.91537,
+ "Z": -510.67374
+ },
+ "TerritoryId": 612,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2639
+ },
{
"DataId": 2007955,
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2456_The Prodigal Daughter.json b/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2456_The Prodigal Daughter.json
index dd5c736b..802baf24 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2456_The Prodigal Daughter.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2456_The Prodigal Daughter.json
@@ -44,7 +44,8 @@
"Z": -730.4951
},
"TerritoryId": 620,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Peaks - Ala Gannha"
}
]
},
@@ -64,4 +65,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2955_Death by a Thousand Rocks.json b/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2955_Death by a Thousand Rocks.json
index 2f754049..d91c52ca 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2955_Death by a Thousand Rocks.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.2-Fringes 1/2955_Death by a Thousand Rocks.json
@@ -34,7 +34,12 @@
"Z": -300.8011
},
"TerritoryId": 620,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Rhalgr's Reach",
+ "AethernetShortcut": [
+ "[Rhalgr's Reach] Aetheryte Plaza",
+ "[Rhalgr's Reach] Peaks Gate"
+ ]
}
]
},
@@ -70,4 +75,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2461_Where Men Go as One.json b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2461_Where Men Go as One.json
index 25a91e36..dc90a555 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2461_Where Men Go as One.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2461_Where Men Go as One.json
@@ -34,6 +34,7 @@
"Y": 13.02367,
"Z": -88.91437
},
+ "StopDistance": 5,
"TerritoryId": 635,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2466_Divide and Conquer.json b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2466_Divide and Conquer.json
index b82b0faa..26c349b9 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2466_Divide and Conquer.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2466_Divide and Conquer.json
@@ -46,6 +46,25 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "DataId": 1020841,
+ "Position": {
+ "X": 146.01355,
+ "Y": 118.1921,
+ "Z": -730.4951
+ },
+ "TerritoryId": 620,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2655,
+ "AetheryteShortcut": "Peaks - Ala Gannha",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 2655
+ ]
+ }
+ }
+ },
{
"DataId": 1020432,
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2467_Lies, Damn Lies, and Pirates.json b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2467_Lies, Damn Lies, and Pirates.json
index d506cfda..a60bafac 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2467_Lies, Damn Lies, and Pirates.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2467_Lies, Damn Lies, and Pirates.json
@@ -26,6 +26,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1019519,
+ "Position": {
+ "X": -613.1228,
+ "Y": 130,
+ "Z": -529.839
+ },
+ "TerritoryId": 612,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2661
+ },
{
"DataId": 1020434,
"Position": {
@@ -59,4 +70,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2469_Not without Incident.json b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2469_Not without Incident.json
index 31f911bf..214a764a 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2469_Not without Incident.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2469_Not without Incident.json
@@ -101,7 +101,7 @@
"Y": -6.9999976,
"Z": -58.884644
},
- "StopDistance": 5,
+ "StopDistance": 6,
"TerritoryId": 628,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2635_Future Rust, Future Dust.json b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2635_Future Rust, Future Dust.json
index e0a4faba..9ee072bd 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2635_Future Rust, Future Dust.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2635_Future Rust, Future Dust.json
@@ -86,6 +86,25 @@
}
}
},
+ {
+ "DataId": 1019486,
+ "Position": {
+ "X": -116.746826,
+ "Y": 0.6342248,
+ "Z": -55.832825
+ },
+ "TerritoryId": 635,
+ "InteractionType": "Interact",
+ "$": "2 16 0 0 0 160 -> 3 16 0 0 0 176",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
+ },
{
"Position": {
"X": -42.27211,
@@ -107,25 +126,6 @@
}
}
},
- {
- "DataId": 1019486,
- "Position": {
- "X": -116.746826,
- "Y": 0.6342248,
- "Z": -55.832825
- },
- "TerritoryId": 635,
- "InteractionType": "Interact",
- "$": "2 16 0 0 0 160 -> 3 16 0 0 0 176",
- "CompletionQuestVariablesFlags": [
- null,
- null,
- null,
- null,
- null,
- 16
- ]
- },
{
"DataId": 1019490,
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2637_Ye Wayward Brothers.json b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2637_Ye Wayward Brothers.json
index c19ea6c2..c4665b5c 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2637_Ye Wayward Brothers.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A1.3-Rhalgr's Reach 2/2637_Ye Wayward Brothers.json
@@ -144,8 +144,9 @@
},
"TerritoryId": 635,
"InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Rhalgr's Reach",
"AethernetShortcut": [
- "[Rhalgr's Reach] Northeastern Rhalgr's Reach",
+ "[Rhalgr's Reach] Aetheryte Plaza",
"[Rhalgr's Reach] Western Rhalgr's Reach"
]
}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2470_The Man from Ul'dah.json b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2470_The Man from Ul'dah.json
index 18ae1d01..ce42de96 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2470_The Man from Ul'dah.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2470_The Man from Ul'dah.json
@@ -12,7 +12,7 @@
"Y": -6.9999976,
"Z": -55.832825
},
- "StopDistance": 5,
+ "StopDistance": 6,
"TerritoryId": 628,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2475_Making the Catfish Sing.json b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2475_Making the Catfish Sing.json
index 138f5594..e4731239 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2475_Making the Catfish Sing.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2475_Making the Catfish Sing.json
@@ -30,6 +30,7 @@
"Y": 0,
"Z": -2.3041382
},
+ "StopDistance": 7,
"TerritoryId": 639,
"InteractionType": "Interact"
}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2479_To Bend with the Wind.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2479_To Bend with the Wind.json
index 991de741..178c88a4 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2479_To Bend with the Wind.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2479_To Bend with the Wind.json
@@ -35,6 +35,17 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "DataId": 1019168,
+ "Position": {
+ "X": 501.33508,
+ "Y": 34.0062,
+ "Z": 781.70435
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2673
+ },
{
"Position": {
"X": 553.3004,
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2481_Alisaie's Stones.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2481_Alisaie's Stones.json
index fbe35d07..41434e28 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2481_Alisaie's Stones.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2481_Alisaie's Stones.json
@@ -56,7 +56,15 @@
6676
],
"ItemId": 2002093,
- "$": "0 2 0 0 0 0 -> 16 17 0 0 0 128"
+ "$": "0 2 0 0 0 0 -> 16 17 0 0 0 128",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
},
{
"DataId": 2007913,
@@ -71,7 +79,15 @@
"KillEnemyDataIds": [
6676
],
- "ItemId": 2002093
+ "ItemId": 2002093,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
@@ -103,6 +119,7 @@
"Y": 9.2068815,
"Z": -661.21924
},
+ "StopDistance": 7,
"TerritoryId": 613,
"InteractionType": "Interact"
}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2482_Under the Sea.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2482_Under the Sea.json
index ff2d8b3d..f7c0381d 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2482_Under the Sea.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2482_Under the Sea.json
@@ -26,6 +26,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1022102,
+ "Position": {
+ "X": 97.8866,
+ "Y": 2.096308,
+ "Z": -617.79205
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2687
+ },
{
"DataId": 1019951,
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2484_In Soroban We Trust.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2484_In Soroban We Trust.json
index b3a2e566..3d9e4611 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2484_In Soroban We Trust.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2484_In Soroban We Trust.json
@@ -26,6 +26,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1023357,
+ "Position": {
+ "X": 565.0873,
+ "Y": -62.272896,
+ "Z": -147.84473
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2693
+ },
{
"DataId": 1019969,
"Position": {
@@ -34,7 +45,8 @@
"Z": -300.5265
},
"TerritoryId": 613,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ruby Sea - Tamamizu"
}
]
},
@@ -49,7 +61,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "$": "Sui-no-Sato, NE outside"
+ "$": "Sui-no-Sato, NE outside",
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1019970,
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2486_In Darkness the Magatama Dreams.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2486_In Darkness the Magatama Dreams.json
index 9b97dfe0..a3179dd5 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2486_In Darkness the Magatama Dreams.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2486_In Darkness the Magatama Dreams.json
@@ -20,6 +20,25 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2632,
+ "DialogueChoices": [
+ {
+ "ExcelSheet": "quest/026/StmBdy001_02632",
+ "Type": "List",
+ "Prompt": "TEXT_STMBDY001_02632_Q1_000_050",
+ "Answer": "TEXT_STMBDY001_02632_A1_000_051"
+ }
+ ]
+ },
{
"Position": {
"X": 21.067955,
@@ -28,7 +47,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "$": "Sui-no-Sato, NE inside"
+ "$": "Sui-no-Sato, NE inside",
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1019978,
@@ -71,7 +91,8 @@
"Z": 221.51514
},
"TerritoryId": 613,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Mount": false
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2488_Breaking and Delivering.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2488_Breaking and Delivering.json
index 9727c165..99b65195 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2488_Breaking and Delivering.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2488_Breaking and Delivering.json
@@ -40,7 +40,8 @@
"Z": -314.00232
},
"TerritoryId": 613,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1019981,
@@ -60,14 +61,26 @@
"Steps": [
{
"Position": {
- "X": -659.02277,
- "Y": -21.210977,
- "Z": 270.70654
+ "X": -583.7968,
+ "Y": -58.207996,
+ "Z": 244.92668
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
"Fly": true,
- "StopDistance": 0.25
+ "Mount": true
+ },
+ {
+ "Position": {
+ "X": -655.3086,
+ "Y": 0,
+ "Z": 270.4341
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "DisableNavmesh": true,
+ "RestartNavigationIfCancelled": false
},
{
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2489_The Lord of the Revel.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2489_The Lord of the Revel.json
index be1b52ee..18066fc0 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2489_The Lord of the Revel.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2489_The Lord of the Revel.json
@@ -65,7 +65,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "DisableNavmesh": true
+ "DisableNavmesh": true,
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1019987,
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2490_Tide Goes in, Imperials Go Out.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2490_Tide Goes in, Imperials Go Out.json
index a78c4ffa..73209be2 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2490_Tide Goes in, Imperials Go Out.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2490_Tide Goes in, Imperials Go Out.json
@@ -20,6 +20,27 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": -780.3967,
+ "Y": 7.9621,
+ "Z": -446.48938
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "SkipConditions": {
+ "StepIf": {
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ }
+ }
+ },
{
"DataId": 1019991,
"Position": {
@@ -47,6 +68,7 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
+ "Mount": true,
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2491_A Silence in Three Parts.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2491_A Silence in Three Parts.json
index 07fe24aa..a61964a7 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2491_A Silence in Three Parts.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2491_A Silence in Three Parts.json
@@ -29,7 +29,8 @@
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
- "TargetTerritoryId": 614
+ "TargetTerritoryId": 614,
+ "Fly": true
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2953_The Arrows of Misfortune.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2953_The Arrows of Misfortune.json
index 84d1d3f5..07c4e990 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2953_The Arrows of Misfortune.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2953_The Arrows of Misfortune.json
@@ -61,6 +61,7 @@
"Y": 3.3707767,
"Z": -534.4778
},
+ "StopDistance": 7,
"TerritoryId": 613,
"InteractionType": "Interact"
}
@@ -76,6 +77,7 @@
"Y": 3.3707767,
"Z": -534.4778
},
+ "StopDistance": 7,
"TerritoryId": 613,
"InteractionType": "Interact"
}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2492_Life after Doma.json b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2492_Life after Doma.json
index 67d15aaa..35e78862 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2492_Life after Doma.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2492_Life after Doma.json
@@ -99,7 +99,8 @@
"TerritoryId": 614,
"InteractionType": "WalkTo",
"Fly": true,
- "StopDistance": 0.25
+ "StopDistance": 0.25,
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1020007,
@@ -114,4 +115,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2494_The Ones We Leave Behind.json b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2494_The Ones We Leave Behind.json
index c3549b73..9f7df38e 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2494_The Ones We Leave Behind.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2494_The Ones We Leave Behind.json
@@ -26,6 +26,28 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1019314,
+ "Position": {
+ "X": 421.77454,
+ "Y": -0.3000138,
+ "Z": -293.9651
+ },
+ "TerritoryId": 614,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2724
+ },
+ {
+ "DataId": 1019263,
+ "Position": {
+ "X": 451.56018,
+ "Y": 58.77665,
+ "Z": -188.3421
+ },
+ "TerritoryId": 614,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2728
+ },
{
"Position": {
"X": 508.4545,
@@ -51,6 +73,7 @@
"Y": 83.5696,
"Z": 94.92627
},
+ "StopDistance": 7,
"TerritoryId": 614,
"InteractionType": "Interact"
}
@@ -134,4 +157,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2495_A New Ruby Tithe.json b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2495_A New Ruby Tithe.json
index 44420f7a..b86394da 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2495_A New Ruby Tithe.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2495_A New Ruby Tithe.json
@@ -66,6 +66,28 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "DataId": 1019316,
+ "Position": {
+ "X": 434.89734,
+ "Y": 68.02076,
+ "Z": -125.01721
+ },
+ "TerritoryId": 614,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2733
+ },
+ {
+ "DataId": 1019313,
+ "Position": {
+ "X": 465.26282,
+ "Y": 58.52148,
+ "Z": -171.09949
+ },
+ "TerritoryId": 614,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2730
+ },
{
"DataId": 1020024,
"Position": {
@@ -89,7 +111,8 @@
"Z": 147.23425
},
"TerritoryId": 614,
- "InteractionType": "Interact"
+ "InteractionType": "Instruction",
+ "Comment": "Snipe soldiers"
}
]
},
@@ -104,7 +127,8 @@
"Z": 237.04883
},
"TerritoryId": 614,
- "InteractionType": "Interact"
+ "InteractionType": "Instruction",
+ "Comment": "Snipe soldiers"
}
]
},
@@ -134,7 +158,8 @@
"Z": 603.2959
},
"TerritoryId": 614,
- "InteractionType": "Interact"
+ "InteractionType": "Instruction",
+ "Comment": "Snipe soldiers"
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2496_The Will to Live.json b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2496_The Will to Live.json
index 040ec25b..9747cd69 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2496_The Will to Live.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2496_The Will to Live.json
@@ -77,6 +77,7 @@
"Y": 14.6418705,
"Z": 620.35547
},
+ "StopDistance": 4,
"TerritoryId": 614,
"InteractionType": "Interact"
}
@@ -92,6 +93,7 @@
"Y": 14.64187,
"Z": 619.8672
},
+ "StopDistance": 4,
"TerritoryId": 614,
"InteractionType": "Interact"
}
@@ -135,7 +137,15 @@
"TerritoryId": 614,
"InteractionType": "Emote",
"Emote": "imperialsalute",
- "$": "0 0 0 0 0 0 -> 17 0 0 0 0 64"
+ "$": "0 0 0 0 0 0 -> 17 0 0 0 0 64",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
},
{
"DataId": 1020040,
@@ -146,13 +156,25 @@
},
"TerritoryId": 614,
"InteractionType": "Emote",
- "Emote": "imperialsalute"
+ "Emote": "imperialsalute",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
}
]
},
{
"Sequence": 6,
"Steps": [
+ {
+ "TerritoryId": 614,
+ "InteractionType": "EquipRecommended"
+ },
{
"DataId": 1020042,
"Position": {
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2497_Daughter of the Deep.json b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2497_Daughter of the Deep.json
index 0ca80fb5..1802bb77 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2497_Daughter of the Deep.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A3.2-Yanxia 1/2497_Daughter of the Deep.json
@@ -20,10 +20,6 @@
{
"Sequence": 1,
"Steps": [
- {
- "TerritoryId": 614,
- "InteractionType": "EquipRecommended"
- },
{
"DataId": 2008011,
"Position": {
@@ -35,6 +31,15 @@
"InteractionType": "AttuneAetherCurrent",
"AetherCurrentId": 2818199
},
+ {
+ "Position": {
+ "X": 453.69717,
+ "Y": 14.463846,
+ "Z": 663.386
+ },
+ "TerritoryId": 614,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 1020047,
"Position": {
@@ -172,7 +177,8 @@
"TerritoryId": 614,
"InteractionType": "WalkTo",
"Fly": true,
- "StopDistance": 0.25
+ "StopDistance": 0.25,
+ "RestartNavigationIfCancelled": false
},
{
"DataId": 1023787,
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2501_A Season for War.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2501_A Season for War.json
index f48043a4..533d8913 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2501_A Season for War.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2501_A Season for War.json
@@ -38,9 +38,9 @@
},
{
"Position": {
- "X": 259.30197,
- "Y": 1.436653,
- "Z": 337.41043
+ "X": 395.68478,
+ "Y": -8.147073,
+ "Z": 299.55774
},
"TerritoryId": 622,
"InteractionType": "Combat",
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2502_An Impossible Dream.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2502_An Impossible Dream.json
index de26918f..deac66c3 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2502_An Impossible Dream.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2502_An Impossible Dream.json
@@ -26,6 +26,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1019347,
+ "Position": {
+ "X": 575.2803,
+ "Y": -19.505632,
+ "Z": 343.74
+ },
+ "TerritoryId": 622,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2760
+ },
{
"DataId": 1020279,
"Position": {
@@ -54,4 +65,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2505_The Heart of Nations.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2505_The Heart of Nations.json
index 55cb19b0..572207cb 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2505_The Heart of Nations.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2505_The Heart of Nations.json
@@ -69,25 +69,6 @@
128
]
},
- {
- "DataId": 2008246,
- "Position": {
- "X": 641.7792,
- "Y": 5.996765,
- "Z": -355.6115
- },
- "TerritoryId": 622,
- "InteractionType": "Interact",
- "$": "1 16 0 0 0 128 -> 2 32 0 0 0 192",
- "CompletionQuestVariablesFlags": [
- null,
- null,
- null,
- null,
- null,
- 64
- ]
- },
{
"DataId": 2008247,
"Position": {
@@ -124,6 +105,25 @@
null,
16
]
+ },
+ {
+ "DataId": 2008246,
+ "Position": {
+ "X": 641.7792,
+ "Y": 5.996765,
+ "Z": -355.6115
+ },
+ "TerritoryId": 622,
+ "InteractionType": "Interact",
+ "$": "1 16 0 0 0 128 -> 2 32 0 0 0 192",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2506_A Trial Before the Trial.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2506_A Trial Before the Trial.json
index 170a0045..b0302b05 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2506_A Trial Before the Trial.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2506_A Trial Before the Trial.json
@@ -35,6 +35,17 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "DataId": 1019405,
+ "Position": {
+ "X": 343.58728,
+ "Y": 26.261887,
+ "Z": -326.55835
+ },
+ "TerritoryId": 622,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2771
+ },
{
"DataId": 1020671,
"Position": {
@@ -119,4 +130,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2509_The Labors of Magnai.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2509_The Labors of Magnai.json
index 626bfa6d..7c762d51 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2509_The Labors of Magnai.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2509_The Labors of Magnai.json
@@ -160,6 +160,24 @@
16
]
},
+ {
+ "DataId": 2008257,
+ "Position": {
+ "X": -194.2627,
+ "Y": -57.66388,
+ "Z": 105.97388
+ },
+ "TerritoryId": 622,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 1
+ ]
+ },
{
"DataId": 2008256,
"Position": {
@@ -216,24 +234,6 @@
null,
8
]
- },
- {
- "DataId": 2008257,
- "Position": {
- "X": -194.2627,
- "Y": -57.66388,
- "Z": 105.97388
- },
- "TerritoryId": 622,
- "InteractionType": "Interact",
- "CompletionQuestVariablesFlags": [
- null,
- null,
- null,
- null,
- null,
- 1
- ]
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2511_Sworn Enemies of the Sun.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2511_Sworn Enemies of the Sun.json
index 6474f1e8..8f209934 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2511_Sworn Enemies of the Sun.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2511_Sworn Enemies of the Sun.json
@@ -42,15 +42,15 @@
"Sequence": 2,
"Steps": [
{
- "DataId": 1019424,
+ "DataId": 1023348,
"Position": {
- "X": 66.056274,
- "Y": 114.904976,
- "Z": -8.377258
+ "X": 79.24011,
+ "Y": 114.90497,
+ "Z": 95.994385
},
"TerritoryId": 622,
- "InteractionType": "Interact",
- "TargetTerritoryId": 622
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2782
},
{
"Position": {
@@ -61,7 +61,8 @@
"TerritoryId": 622,
"InteractionType": "Emote",
"Emote": "lookout",
- "StopDistance": 0.25
+ "StopDistance": 0.25,
+ "AetheryteShortcut": "Azim Steppe - Reunion"
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2513_A Final Peace.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2513_A Final Peace.json
index 2b902ebc..894c0392 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2513_A Final Peace.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2513_A Final Peace.json
@@ -20,6 +20,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1023193,
+ "Position": {
+ "X": -434.0429,
+ "Y": 2.5501096,
+ "Z": 650.01904
+ },
+ "TerritoryId": 622,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 2791
+ },
{
"DataId": 1020280,
"Position": {
@@ -76,4 +87,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2515_Naadam.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2515_Naadam.json
index c419c628..a37bb517 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2515_Naadam.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2515_Naadam.json
@@ -20,6 +20,25 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1019386,
+ "Position": {
+ "X": 501.21313,
+ "Y": 40.836082,
+ "Z": -505.9129
+ },
+ "StopDistance": 7,
+ "TerritoryId": 622,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
{
"DataId": 1019388,
"Position": {
@@ -90,24 +109,6 @@
null,
16
]
- },
- {
- "DataId": 1019386,
- "Position": {
- "X": 501.21313,
- "Y": 40.836082,
- "Z": -505.9129
- },
- "TerritoryId": 622,
- "InteractionType": "Interact",
- "CompletionQuestVariablesFlags": [
- null,
- null,
- null,
- null,
- null,
- 128
- ]
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2517_In Crimson They Walked.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2517_In Crimson They Walked.json
index 171c5596..3ed1759e 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2517_In Crimson They Walked.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2517_In Crimson They Walked.json
@@ -30,7 +30,8 @@
},
"TerritoryId": 622,
"InteractionType": "Interact",
- "AetheryteShortcut": "Azim Steppe - Dawn Throne"
+ "AetheryteShortcut": "Azim Steppe - Dawn Throne",
+ "Fly": true
}
]
},
@@ -39,13 +40,14 @@
"Steps": [
{
"Position": {
- "X": 51.873592,
- "Y": 114.90497,
- "Z": 64.512596
+ "X": 12.142036,
+ "Y": 121,
+ "Z": 63.4195
},
"TerritoryId": 622,
"InteractionType": "WalkTo",
- "Mount": true
+ "Mount": true,
+ "Fly": true
},
{
"DataId": 1019424,
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2518_The Hour of Reckoning.json b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2518_The Hour of Reckoning.json
index 7102bd78..f9feca1a 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2518_The Hour of Reckoning.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A4-Azim Steppe/2518_The Hour of Reckoning.json
@@ -75,4 +75,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2519_The Room Where It Happened.json b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2519_The Room Where It Happened.json
index b2ba2d76..58b462dd 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2519_The Room Where It Happened.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2519_The Room Where It Happened.json
@@ -84,4 +84,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2520_Seeds of Despair.json b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2520_Seeds of Despair.json
index 02e832e7..f4276125 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2520_Seeds of Despair.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2520_Seeds of Despair.json
@@ -34,7 +34,8 @@
"Z": -382.8031
},
"TerritoryId": 614,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Fly": true
}
]
},
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2521_The Limits of Our Endurance.json b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2521_The Limits of Our Endurance.json
index af3d50b3..9dbfffe8 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2521_The Limits of Our Endurance.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2521_The Limits of Our Endurance.json
@@ -34,7 +34,8 @@
"Z": -414.99963
},
"TerritoryId": 614,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Fly": true
}
]
},
@@ -72,4 +73,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2523_On the Eve of Destiny.json b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2523_On the Eve of Destiny.json
index 1786d198..5350174a 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2523_On the Eve of Destiny.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2523_On the Eve of Destiny.json
@@ -106,6 +106,7 @@
},
"TerritoryId": 614,
"InteractionType": "CompleteQuest",
+ "Fly": true,
"DialogueChoices": [
{
"Type": "List",
diff --git a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2946_How Tataru Got Her Groove Back.json b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2946_How Tataru Got Her Groove Back.json
index 3b1adc94..bd5aa51e 100644
--- a/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2946_How Tataru Got Her Groove Back.json
+++ b/QuestPaths/4.x - Stormblood/MSQ/A5-Yanxia 2/2946_How Tataru Got Her Groove Back.json
@@ -89,9 +89,10 @@
},
"TerritoryId": 614,
"InteractionType": "CompleteQuest",
- "AetheryteShortcut": "Yanxia - House of the Fierce"
+ "AetheryteShortcut": "Yanxia - House of the Fierce",
+ "Fly": true
}
]
}
]
-}
\ No newline at end of file
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Allied Societies/Dwarves/Dailies/3925_Fast and Loud.json b/QuestPaths/5.x - Shadowbringers/Allied Societies/Dwarves/Dailies/3925_Fast and Loud.json
index d73c93ee..f11fc566 100644
--- a/QuestPaths/5.x - Shadowbringers/Allied Societies/Dwarves/Dailies/3925_Fast and Loud.json
+++ b/QuestPaths/5.x - Shadowbringers/Allied Societies/Dwarves/Dailies/3925_Fast and Loud.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -30,13 +29,28 @@
{
"Sequence": 1,
"Steps": [
-
-
+ {
+ "DataId": 1034071,
+ "Position": {
+ "X": -171.4046,
+ "Y": 5.779212,
+ "Z": -110.27698
+ },
+ "TerritoryId": 813,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
]
},
{
"Sequence": 255,
"Steps": [
+ {
+ "TerritoryId": 813,
+ "InteractionType": "Craft",
+ "ItemId": 31179,
+ "ItemCount": 3
+ },
{
"Position": {
"X": -615.73865,
diff --git a/QuestPaths/5.x - Shadowbringers/Allied Societies/Pixies/Story/3684_Sustenance for the Soul.json b/QuestPaths/5.x - Shadowbringers/Allied Societies/Pixies/Story/3684_Sustenance for the Soul.json
index a60a9eb8..75b26eac 100644
--- a/QuestPaths/5.x - Shadowbringers/Allied Societies/Pixies/Story/3684_Sustenance for the Soul.json
+++ b/QuestPaths/5.x - Shadowbringers/Allied Societies/Pixies/Story/3684_Sustenance for the Soul.json
@@ -88,7 +88,14 @@
"TerritoryId": 814,
"InteractionType": "Interact",
"AetheryteShortcut": "Kholusia - Wright",
- "Fly": true
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANPIX002_03684_Q1_000_000",
+ "Answer": "TEXT_BANPIX002_03684_A1_000_001"
+ }
+ ]
}
]
},
diff --git a/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3829_Eggspotting.json b/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3829_Eggspotting.json
index 5b359ba6..6fc790bd 100644
--- a/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3829_Eggspotting.json
+++ b/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3829_Eggspotting.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -18,6 +17,54 @@
}
]
},
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1032830,
+ "Position": {
+ "X": -134.02002,
+ "Y": -18.460577,
+ "Z": 303.5476
+ },
+ "TerritoryId": 817,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Rak'tika - Slitherbough"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1032831,
+ "Position": {
+ "X": -54.795166,
+ "Y": 0.7328947,
+ "Z": 217.09009
+ },
+ "TerritoryId": 817,
+ "InteractionType": "UseItem",
+ "ItemId": 2002980,
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1032830,
+ "Position": {
+ "X": -134.02002,
+ "Y": -18.460577,
+ "Z": 303.5476
+ },
+ "TerritoryId": 817,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
{
"Sequence": 255,
"Steps": [
@@ -30,12 +77,7 @@
"TerritoryId": 817,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Rak'tika - Fanow",
- "Fly": true,
- "RequiredGatheredItems": [
-
-
-
- ]
+ "Fly": true
},
{
"DataId": 1032643,
diff --git a/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3830_Safety Is No Accident.json b/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3830_Safety Is No Accident.json
index 5b359ba6..deded4f5 100644
--- a/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3830_Safety Is No Accident.json
+++ b/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3830_Safety Is No Accident.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -32,9 +31,16 @@
"AetheryteShortcut": "Rak'tika - Fanow",
"Fly": true,
"RequiredGatheredItems": [
-
-
-
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 29535,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 29561,
+ "ItemCount": 3
+ }
]
},
{
diff --git a/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3831_One Fish, Two Fish, Bread Fish, Stew Fish.json b/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3831_One Fish, Two Fish, Bread Fish, Stew Fish.json
index 5b359ba6..17c44e90 100644
--- a/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3831_One Fish, Two Fish, Bread Fish, Stew Fish.json
+++ b/QuestPaths/5.x - Shadowbringers/Allied Societies/Qitari/Dailies/3831_One Fish, Two Fish, Bread Fish, Stew Fish.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -32,9 +31,16 @@
"AetheryteShortcut": "Rak'tika - Fanow",
"Fly": true,
"RequiredGatheredItems": [
-
-
-
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 29536,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 29562,
+ "ItemCount": 3
+ }
]
},
{
diff --git a/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3250_Gamboling for Gil.json b/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3250_Gamboling for Gil.json
index 18979d0a..cc2dcd85 100644
--- a/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3250_Gamboling for Gil.json
+++ b/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3250_Gamboling for Gil.json
@@ -13,7 +13,13 @@
"Z": 195.94104
},
"TerritoryId": 129,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3283_A Still Tide.json b/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3283_A Still Tide.json
index e5761913..d83e144c 100644
--- a/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3283_A Still Tide.json
+++ b/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3283_A Still Tide.json
@@ -23,9 +23,9 @@
"Steps": [
{
"Position": {
- "X": 643.7624,
- "Y": 0.35477543,
- "Z": 541.9913
+ "X": 639.3296,
+ "Y": 0.52189386,
+ "Z": 533.5061
},
"TerritoryId": 814,
"InteractionType": "WalkTo"
diff --git a/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3284_Open Arms, Closed Gate.json b/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3284_Open Arms, Closed Gate.json
index ced10209..9bb25b11 100644
--- a/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3284_Open Arms, Closed Gate.json
+++ b/QuestPaths/5.x - Shadowbringers/MSQ/A2-Kholusia 1/3284_Open Arms, Closed Gate.json
@@ -35,6 +35,21 @@
},
{
"Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": 338.49463,
+ "Y": 31.93622,
+ "Z": 203.53125
+ },
+ "StopDistance": 1,
+ "TerritoryId": 814,
+ "InteractionType": "WalkTo"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
"Steps": [
{
"Position": {
@@ -48,8 +63,7 @@
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
10859
- ],
- "Comment": "TODO Either this step is incorrect OR the next one is missing"
+ ]
}
]
},
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3267_Traditions and Travails.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3267_Traditions and Travails.json
index 10e0e76d..15fc4534 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3267_Traditions and Travails.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3267_Traditions and Travails.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "liza",
- "Disabled": true,
+ "Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
@@ -14,7 +13,87 @@
"Z": 209.88782
},
"TerritoryId": 819,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1029999,
+ "Position": {
+ "X": 346.66968,
+ "Y": 3.2878497,
+ "Z": 177.17249
+ },
+ "TerritoryId": 813,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Lakeland - Fort Jobb",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": 340.6667,
+ "Y": 3.0521033,
+ "Z": 208.3552
+ },
+ "TerritoryId": 813,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [10865]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1030000,
+ "Position": {
+ "X": 341.02393,
+ "Y": 3.5819468,
+ "Z": 198.32141
+ },
+ "TerritoryId": 813,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ },
+ "NextQuestId": 3268
}
]
}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3268_Affronts and Allies.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3268_Affronts and Allies.json
new file mode 100644
index 00000000..ad7d1e23
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3268_Affronts and Allies.json
@@ -0,0 +1,121 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030004,
+ "Position": {
+ "X": 689.1127,
+ "Y": 30.11682,
+ "Z": 278.85852
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Kholusia - Stilltide"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2009999,
+ "Position": {
+ "X": 529.3812,
+ "Y": 11.9782715,
+ "Z": 370.83997
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10866],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2010000,
+ "Position": {
+ "X": 342.48877,
+ "Y": 16.55597,
+ "Z": 454.24573
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10867],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1030006,
+ "Position": {
+ "X": 181.59753,
+ "Y": 33.636906,
+ "Z": 177.47766
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ },
+ "NextQuestId": 3269
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3269_The Scientific Method.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3269_The Scientific Method.json
new file mode 100644
index 00000000..a1c6b7cb
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3269_The Scientific Method.json
@@ -0,0 +1,124 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030012,
+ "Position": {
+ "X": 279.469,
+ "Y": 1.4685827,
+ "Z": -281.94098
+ },
+ "TerritoryId": 815,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Amh Araeng - Mord Souq"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010002,
+ "Position": {
+ "X": 279.65198,
+ "Y": 1.4800415,
+ "Z": -282.7345
+ },
+ "StopDistance": 4,
+ "TerritoryId": 815,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_LUCKBA221_03269_Q1_000_000",
+ "Answer": "TEXT_LUCKBA221_03269_A1_000_002"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1030013,
+ "Position": {
+ "X": 612.3292,
+ "Y": -25.655535,
+ "Z": -36.66742
+ },
+ "TerritoryId": 815,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1030014,
+ "Position": {
+ "X": 614.46545,
+ "Y": -25.7535,
+ "Z": -35.6604
+ },
+ "StopDistance": 4,
+ "TerritoryId": 815,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ },
+ "NextQuestId": 3270
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3270_The Lost and the Found.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3270_The Lost and the Found.json
new file mode 100644
index 00000000..9fbd36cd
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3270_The Lost and the Found.json
@@ -0,0 +1,121 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "AUTHOR",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030015,
+ "Position": {
+ "X": -83.05487,
+ "Y": -19.061518,
+ "Z": 309.83435
+ },
+ "TerritoryId": 817,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Rak'tika - Slitherbough"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010003,
+ "Position": {
+ "X": 263.9048,
+ "Y": 12.436096,
+ "Z": 103.990234
+ },
+ "TerritoryId": 817,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10950],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2010004,
+ "Position": {
+ "X": 446.0669,
+ "Y": 8.041443,
+ "Z": 123.03345
+ },
+ "TerritoryId": 817,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10869],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1030017,
+ "Position": {
+ "X": 633.99695,
+ "Y": 24.12675,
+ "Z": 59.861084
+ },
+ "TerritoryId": 817,
+ "InteractionType": "SinglePlayerDuty",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ },
+ "NextQuestId": 3271
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3271_Never to Return.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3271_Never to Return.json
new file mode 100644
index 00000000..5e306be5
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3271_Never to Return.json
@@ -0,0 +1,78 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "AUTHOR",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1031158,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030021,
+ "Position": {
+ "X": -456.6568,
+ "Y": 417.12558,
+ "Z": -597.1008
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Kholusia - Tomra"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1030022,
+ "Position": {
+ "X": -355.55048,
+ "Y": 415.2497,
+ "Z": -677.9431
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030021,
+ "Position": {
+ "X": -456.6568,
+ "Y": 417.12558,
+ "Z": -597.1008
+ },
+ "TerritoryId": 814,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Kholusia - Tomra",
+ "NextQuestId": 3272
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3272_The Soul of Temperance.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3272_The Soul of Temperance.json
new file mode 100644
index 00000000..f951018d
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3272_The Soul of Temperance.json
@@ -0,0 +1,130 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Cacahuetes",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1030021,
+ "Position": {
+ "X": -456.6568,
+ "Y": 417.12558,
+ "Z": -597.1008
+ },
+ "TerritoryId": 814,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Kholusia - Tomra",
+ "SkipConditions": {
+ "AethernetShortcutIf": { "InSameTerritory": true }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2010006,
+ "Position": {
+ "X": -115.31244,
+ "Y": 428.18335,
+ "Z": -621.4542
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10870],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010007,
+ "Position": {
+ "X": 21.194763,
+ "Y": 348.89746,
+ "Z": -251.88074
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10871],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1030035,
+ "Position": {
+ "X": -650.35474,
+ "Y": 352.45102,
+ "Z": -129.01508
+ },
+ "TerritoryId": 814,
+ "InteractionType": "SinglePlayerDuty",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1030038,
+ "Position": {
+ "X": -650.35474,
+ "Y": 352.45102,
+ "Z": -129.01508
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1030038,
+ "Position": {
+ "X": -650.35474,
+ "Y": 352.45102,
+ "Z": -129.01508
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030039,
+ "Position": {
+ "X": -26.657532,
+ "Y": 3.999815,
+ "Z": 209.88782
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": { "InSameTerritory": true }
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3623_Hollow Pursuits.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3623_Hollow Pursuits.json
index 212b5074..83dc2b97 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3623_Hollow Pursuits.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3623_Hollow Pursuits.json
@@ -13,7 +13,17 @@
"Z": 201.9226
},
"TerritoryId": 819,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json
index c2dced21..5d58303b 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json
@@ -23,7 +23,8 @@
"Y": 7.1558266,
"Z": -249.1341
},
- "MaximumDistance": 100
+ "MaximumDistance": 100,
+ "TerritoryId": 815
}
}
}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json
index 9b7b8dde..2eeb073d 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json
@@ -23,7 +23,8 @@
"Y": 7.1558266,
"Z": -249.1341
},
- "MaximumDistance": 100
+ "MaximumDistance": 100,
+ "TerritoryId": 815
}
}
}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json
index 43368dbd..ca1f720b 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json
@@ -23,7 +23,8 @@
"Y": 7.1558266,
"Z": -249.1341
},
- "MaximumDistance": 100
+ "MaximumDistance": 100,
+ "TerritoryId": 815
}
}
}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json
index 370c4fc1..45c3f672 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json
@@ -23,7 +23,8 @@
"Y": 7.1558266,
"Z": -249.1341
},
- "MaximumDistance": 100
+ "MaximumDistance": 100,
+ "TerritoryId": 815
}
}
}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json
index 1895ba16..f5e70ecf 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json
@@ -23,7 +23,8 @@
"Y": 7.1558266,
"Z": -249.1341
},
- "MaximumDistance": 100
+ "MaximumDistance": 100,
+ "TerritoryId": 815
}
}
}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3273_No Greater Sport.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3273_No Greater Sport.json
new file mode 100644
index 00000000..7d69c7c5
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3273_No Greater Sport.json
@@ -0,0 +1,121 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Fifi",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1030126,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030127,
+ "Position": {
+ "X": 200.12195,
+ "Y": -0.39141315,
+ "Z": 389.45593
+ },
+ "TerritoryId": 813,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Crystarium] The Pendants",
+ "[Crystarium] Tessellation (Lakeland)"
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010396,
+ "Position": {
+ "X": 195.48328,
+ "Y": -0.7477417,
+ "Z": 370.93152
+ },
+ "TerritoryId": 813,
+ "InteractionType": "UseItem",
+ "ItemId": 2002718
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2010397,
+ "Position": {
+ "X": 203.90625,
+ "Y": -0.5340576,
+ "Z": 389.82214
+ },
+ "TerritoryId": 813,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10872]
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1031013,
+ "Position": {
+ "X": 200.09155,
+ "Y": -0.39049676,
+ "Z": 389.4254
+ },
+ "StopDistance": 5,
+ "TerritoryId": 813,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030964,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 3274,
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3274_Vengeance in Defeat.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3274_Vengeance in Defeat.json
new file mode 100644
index 00000000..b99fbbff
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3274_Vengeance in Defeat.json
@@ -0,0 +1,119 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Fifi",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1030964,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030130,
+ "Position": {
+ "X": 469.0775,
+ "Y": -32.782784,
+ "Z": -288.44135
+ },
+ "TerritoryId": 815,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Amh Araeng - Mord Souq",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010399,
+ "Position": {
+ "X": 613.39734,
+ "Y": -33.585205,
+ "Z": -180.95679
+ },
+ "TerritoryId": 815,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2010400,
+ "Position": {
+ "X": 536.9192,
+ "Y": -33.737732,
+ "Z": 38.83423
+ },
+ "TerritoryId": 815,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [10873],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 2010401,
+ "Position": {
+ "X": 469.0775,
+ "Y": -32.791687,
+ "Z": -288.44135
+ },
+ "TerritoryId": 815,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030964,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 3275,
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3275_Freedom from Privilege.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3275_Freedom from Privilege.json
new file mode 100644
index 00000000..8ee624bf
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3275_Freedom from Privilege.json
@@ -0,0 +1,140 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Fifi",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1030964,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030135,
+ "Position": {
+ "X": -251.42291,
+ "Y": 22.19962,
+ "Z": 325.7953
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Kholusia - Wright",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010402,
+ "Position": {
+ "X": -550.7744,
+ "Y": 29.160034,
+ "Z": 363.4851
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2010403,
+ "Position": {
+ "X": -550.98804,
+ "Y": 41.33667,
+ "Z": 252.24683
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1030136,
+ "Position": {
+ "X": -192.58417,
+ "Y": 26.771265,
+ "Z": 248.46265
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1030140,
+ "Position": {
+ "X": 67.64319,
+ "Y": 82.001656,
+ "Z": -53.330322
+ },
+ "TerritoryId": 820,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Eulmore"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030964,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ],
+ "NextQuestId": 3276,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_LUCKBA321_03275_Q1_000_000",
+ "Answer": "TEXT_LUCKBA321_03275_A1_000_001"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3276_The Hunter's Legacy.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3276_The Hunter's Legacy.json
new file mode 100644
index 00000000..011fde1c
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3276_The Hunter's Legacy.json
@@ -0,0 +1,83 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Fifi",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1030964,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1030144,
+ "Position": {
+ "X": 94.68213,
+ "Y": 37.377014,
+ "Z": 611.1085
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "AetheryteShortcut": "Kholusia - Wright"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1030146,
+ "Position": {
+ "X": -190.1427,
+ "Y": 12.748831,
+ "Z": 591.6686
+ },
+ "TerritoryId": 817,
+ "InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "Rak'tika - Slitherbough",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030144,
+ "Position": {
+ "X": 94.68213,
+ "Y": 37.377014,
+ "Z": 611.1085
+ },
+ "TerritoryId": 814,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Kholusia - Wright",
+ "Fly": true,
+ "NextQuestId": 3277
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3277_Fellowship Restored.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3277_Fellowship Restored.json
new file mode 100644
index 00000000..d020cd4c
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3277_Fellowship Restored.json
@@ -0,0 +1,119 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Fifi",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1030145,
+ "Position": {
+ "X": 93.461426,
+ "Y": 37.43559,
+ "Z": 611.50525
+ },
+ "TerritoryId": 814,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Kholusia - Wright",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ },
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2010405,
+ "Position": {
+ "X": -33.707214,
+ "Y": 3.982544,
+ "Z": 205.70679
+ },
+ "TerritoryId": 819,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1027323,
+ "Position": {
+ "X": -42.893127,
+ "Y": 3.9998171,
+ "Z": 242.08435
+ },
+ "TerritoryId": 819,
+ "InteractionType": "Interact"
+ },
+ {
+ "DataId": 1027238,
+ "Position": {
+ "X": -15.487976,
+ "Y": 3.9998171,
+ "Z": 215.3811
+ },
+ "TerritoryId": 819,
+ "InteractionType": "Interact"
+ },
+ {
+ "DataId": 1030147,
+ "Position": {
+ "X": 0.59503174,
+ "Y": 3.9998174,
+ "Z": 209.27734
+ },
+ "TerritoryId": 819,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1030148,
+ "Position": {
+ "X": -246.57056,
+ "Y": 10.152376,
+ "Z": 678.21765
+ },
+ "TerritoryId": 817,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Rak'tika - Slitherbough",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030145,
+ "Position": {
+ "X": 93.461426,
+ "Y": 37.43559,
+ "Z": 611.50525
+ },
+ "StopDistance": 1,
+ "TerritoryId": 814,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Kholusia - Wright",
+ "Fly": true,
+ "NextQuestId": 3278
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3278_Courage Born of Fear.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3278_Courage Born of Fear.json
new file mode 100644
index 00000000..342e2ade
--- /dev/null
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Physical/3278_Courage Born of Fear.json
@@ -0,0 +1,122 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Fifi",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1030144,
+ "Position": {
+ "X": 94.68213,
+ "Y": 37.377014,
+ "Z": 611.1085
+ },
+ "TerritoryId": 814,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Kholusia - Wright",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ },
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1027253,
+ "Position": {
+ "X": 17.502075,
+ "Y": 19.999794,
+ "Z": -190.41736
+ },
+ "TerritoryId": 819,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Crystalline Mean"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010406,
+ "Position": {
+ "X": -17.013855,
+ "Y": 4.470825,
+ "Z": 234.97363
+ },
+ "TerritoryId": 819,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Crystarium] The Crystalline Mean",
+ "[Crystarium] The Pendants"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1030990,
+ "Position": {
+ "X": -246.57056,
+ "Y": 10.152376,
+ "Z": 678.21765
+ },
+ "TerritoryId": 817,
+ "InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "Rak'tika - Slitherbough",
+ "Fly": true
+ }
+ ]
+ },
+ { "Sequence": 4, "Steps": [] },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1030145,
+ "Position": {
+ "X": 93.461426,
+ "Y": 37.43559,
+ "Z": 611.50525
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "AetheryteShortcut": "Kholusia - Wright"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1030964,
+ "Position": {
+ "X": -18.143005,
+ "Y": 3.9998174,
+ "Z": 235.40088
+ },
+ "TerritoryId": 819,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] The Pendants"
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Tank/3243_The Man with Too Many Scars.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Tank/3243_The Man with Too Many Scars.json
index be65d1d6..02adab4a 100644
--- a/QuestPaths/5.x - Shadowbringers/Role Quests/Tank/3243_The Man with Too Many Scars.json
+++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Tank/3243_The Man with Too Many Scars.json
@@ -14,7 +14,17 @@
"Z": 251.75854
},
"TerritoryId": 819,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Crystarium",
+ "AethernetShortcut": [
+ "[Crystarium] Aetheryte Plaza",
+ "[Crystarium] Musica Universalis Markets"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
}
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4705_Whisks for Whiskers.json b/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4705_Whisks for Whiskers.json
index d731dcbc..8fc84f3e 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4705_Whisks for Whiskers.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4705_Whisks for Whiskers.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -30,11 +29,28 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1044592,
+ "Position": {
+ "X": -493.40048,
+ "Y": -158.89024,
+ "Z": -384.29846
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
]
},
{
"Sequence": 255,
"Steps": [
+ {
+ "TerritoryId": 959,
+ "InteractionType": "Craft",
+ "ItemId": 38879,
+ "ItemCount": 2
+ },
{
"Position": {
"X": -201.42024,
@@ -42,7 +58,9 @@
"Z": -273.68756
},
"TerritoryId": 959,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
+ "Fly": true
},
{
"DataId": 1044403,
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4706_Sets, Reps, and Loporrits.json b/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4706_Sets, Reps, and Loporrits.json
index d731dcbc..343a44a3 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4706_Sets, Reps, and Loporrits.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4706_Sets, Reps, and Loporrits.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -30,6 +29,38 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1044412,
+ "Position": {
+ "X": -181.56714,
+ "Y": -49.19972,
+ "Z": -304.76843
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "TerritoryId": 959,
+ "InteractionType": "Craft",
+ "ItemId": 38881,
+ "ItemCount": 1
+ },
+ {
+ "DataId": 1044602,
+ "Position": {
+ "X": 463.0349,
+ "Y": -167.81126,
+ "Z": -490.13504
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
]
},
{
@@ -42,7 +73,9 @@
"Z": -273.68756
},
"TerritoryId": 959,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
+ "Fly": true
},
{
"DataId": 1044403,
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4710_Clean Paws Make Good Artists.json b/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4710_Clean Paws Make Good Artists.json
index d731dcbc..4bd89209 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4710_Clean Paws Make Good Artists.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Loporrits/Dailies/4710_Clean Paws Make Good Artists.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -30,11 +29,29 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1044610,
+ "Position": {
+ "X": 588.281,
+ "Y": -161.13907,
+ "Z": -761.0742
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
+ "Fly": true
+ }
]
},
{
"Sequence": 255,
"Steps": [
+ {
+ "TerritoryId": 959,
+ "InteractionType": "Craft",
+ "ItemId": 38885,
+ "ItemCount": 1
+ },
{
"Position": {
"X": -201.42024,
@@ -42,7 +59,9 @@
"Z": -273.68756
},
"TerritoryId": 959,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
+ "Fly": true
},
{
"DataId": 1044403,
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json
index 1e9036a2..8834ff36 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json
@@ -157,7 +157,8 @@
"Y": 437.5829,
"Z": 333.63843
},
- "MaximumDistance": 100
+ "MaximumDistance": 100,
+ "TerritoryId": 960
}
}
}
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4612_A Fertile Blend.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4612_A Fertile Blend.json
index 368803c3..298df76d 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4612_A Fertile Blend.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4612_A Fertile Blend.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -21,6 +20,30 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "AetheryteShortcut": "Ultima Thule - Base Omicron",
+ "RequiredGatheredItems": [
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 38283,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 38307,
+ "ItemCount": 3
+ }
+ ]
+ },
{
"DataId": 1043417,
"Position": {
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4613_The Hunger Pangs.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4613_The Hunger Pangs.json
index 368803c3..e8779c33 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4613_The Hunger Pangs.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4613_The Hunger Pangs.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -18,9 +17,66 @@
}
]
},
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1044048,
+ "Position": {
+ "X": -347.70734,
+ "Y": 263.0844,
+ "Z": -463.73694
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Abode of the Ea",
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1044049,
+ "Position": {
+ "X": -376.21124,
+ "Y": 266.08542,
+ "Z": -551.90356
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ }
+ ]
+ },
{
"Sequence": 255,
"Steps": [
+ {
+
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "AetheryteShortcut": "Ultima Thule - Base Omicron"
+ },
{
"DataId": 1043417,
"Position": {
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4623_I, Omicron.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4623_I, Omicron.json
index 368803c3..ee549563 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4623_I, Omicron.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4623_I, Omicron.json
@@ -1,7 +1,6 @@
-{
+{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "liza",
- "Disabled": true,
+ "Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
@@ -18,9 +17,65 @@
}
]
},
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "$": "Without this step, there are times where it doesn't confirm automatically"
+ },
+ {
+ "TerritoryId": 1073,
+ "InteractionType": "None",
+ "RequiredGatheredItems": [
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 38291,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 38315,
+ "ItemCount": 3
+ }
+ ]
+ },
+ {
+ "DataId": 1044065,
+ "Position": {
+ "X": 478.9348,
+ "Y": 437.0016,
+ "Z": 340.505
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Base Omicron"
+ }
+ ]
+ },
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "Mount": true
+ },
{
"DataId": 1043417,
"Position": {
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4624_Guardians of the Galaxy.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4624_Guardians of the Galaxy.json
index 368803c3..780945ad 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4624_Guardians of the Galaxy.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4624_Guardians of the Galaxy.json
@@ -1,7 +1,6 @@
-{
+{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "liza",
- "Disabled": true,
+ "Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
@@ -18,9 +17,79 @@
}
]
},
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2013073,
+ "Position": {
+ "X": 334.37085,
+ "Y": 483.17688,
+ "Z": 158.28174
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "Mount": true
+ },
+ {
+ "DataId": 1044066,
+ "Position": {
+ "X": 493.58362,
+ "Y": 436.99985,
+ "Z": 317.09766
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1044068,
+ "Position": {
+ "X": 638.5748,
+ "Y": 438.6276,
+ "Z": 260.3341
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Action",
+ "Action": "Electric Flux",
+ "Fly": true
+ },
+ {
+ "DataId": 1044069,
+ "Position": {
+ "X": 668.0552,
+ "Y": 440.4633,
+ "Z": 360.79956
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Action",
+ "Action": "Electric Flux",
+ "Fly": true
+ }
+ ]
+ },
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "AetheryteShortcut": "Ultima Thule - Base Omicron",
+ "Mount": true
+ },
{
"DataId": 1043417,
"Position": {
@@ -29,7 +98,8 @@
"Z": 148.11926
},
"TerritoryId": 960,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "Mount": true
}
]
}
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4630_Reclaiming the Taste of Home.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4630_Reclaiming the Taste of Home.json
index 368803c3..91ba26b4 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4630_Reclaiming the Taste of Home.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4630_Reclaiming the Taste of Home.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -18,9 +17,73 @@
}
]
},
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073
+ },
+ {
+ "DataId": 1044075,
+ "Position": {
+ "X": -64.4389,
+ "Y": 493.32922,
+ "Z": -4.409851
+ },
+ "TerritoryId": 1073,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1044075,
+ "Position": {
+ "X": -64.4389,
+ "Y": 493.32922,
+ "Z": -4.409851
+ },
+ "TerritoryId": 1073,
+ "InteractionType": "Interact",
+ "RequiredGatheredItems": [
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 38296,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 38320,
+ "ItemCount": 3
+ }
+ ]
+ }
+ ]
+ },
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 1043421,
+ "Position": {
+ "X": 2.4261475,
+ "Y": 499.87805,
+ "Z": 46.036377
+ },
+ "TerritoryId": 1073,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960
+ },
{
"DataId": 1043417,
"Position": {
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4632_Checking for Cavities.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4632_Checking for Cavities.json
index 368803c3..fdec020c 100644
--- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4632_Checking for Cavities.json
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4632_Checking for Cavities.json
@@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@@ -18,9 +17,49 @@
}
]
},
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1044081,
+ "Position": {
+ "X": -503.99023,
+ "Y": 74.16917,
+ "Z": 261.82947
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Reah Tahra",
+ "RequiredGatheredItems": [
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 38299,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 38323,
+ "ItemCount": 3
+ }
+ ]
+ }
+ ]
+ },
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "AetheryteShortcut": "Ultima Thule - Base Omicron"
+ },
{
"DataId": 1043417,
"Position": {
diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Story/4603_And Another Question.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Story/4603_And Another Question.json
new file mode 100644
index 00000000..7d907484
--- /dev/null
+++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Story/4603_And Another Question.json
@@ -0,0 +1,229 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "plogon_enjoyer",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043951,
+ "Position": {
+ "X": 303.8529,
+ "Y": 481.99442,
+ "Z": 154.83325
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1043865,
+ "Position": {
+ "X": 301.8081,
+ "Y": 482.13644,
+ "Z": 165.02625
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_BANOMI003_04603_Q9_000_000",
+ "Yes": true
+ }
+ ],
+ "Mount": true
+ },
+ {
+ "DataId": 1043539,
+ "Position": {
+ "X": 205.92041,
+ "Y": 566,
+ "Z": 257.2517
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1043547,
+ "Position": {
+ "X": 110.30737,
+ "Y": 269.03677,
+ "Z": -626.7338
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Abode of the Ea",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1043552,
+ "Position": {
+ "X": 103.837524,
+ "Y": 269.41934,
+ "Z": -514.6105
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true
+ },
+ {
+ "DataId": 1043549,
+ "Position": {
+ "X": 46.219482,
+ "Y": 269.597,
+ "Z": -474.60138
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1043547,
+ "Position": {
+ "X": 110.30737,
+ "Y": 269.03677,
+ "Z": -626.7338
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1043549,
+ "Position": {
+ "X": 46.219482,
+ "Y": 269.597,
+ "Z": -474.60138
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_BANOMI003_04603_Q2_000_000",
+ "Yes": true
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "TerritoryId": 960,
+ "InteractionType": "None",
+ "RequiredGatheredItems": [
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 38278,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 38302,
+ "ItemCount": 3
+ }
+ ],
+ "Fly": true
+ },
+ {
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Base Omicron",
+ "TargetTerritoryId": 960,
+ "Mount": true
+ },
+ {
+ "DataId": 1043865,
+ "Position": {
+ "X": 301.8081,
+ "Y": 482.13644,
+ "Z": 165.02625
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "Fly": true
+ },
+ {
+ "DataId": 1043585,
+ "Position": {
+ "X": 203.84521,
+ "Y": 567.4998,
+ "Z": 246.87573
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043864,
+ "Position": {
+ "X": 244.83093,
+ "Y": 564.8203,
+ "Z": 261.76843
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_BANOMI003_04603_Q8_000_000",
+ "Yes": true
+ }
+ ]
+ },
+ {
+ "DataId": 1043951,
+ "Position": {
+ "X": 303.8529,
+ "Y": 481.99442,
+ "Z": 154.83325
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5159_He Who Remembers.json b/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5159_He Who Remembers.json
index 55270650..7fdb2f05 100644
--- a/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5159_He Who Remembers.json
+++ b/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5159_He Who Remembers.json
@@ -20,6 +20,15 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": -392.35907,
+ "Y": -14.000012,
+ "Z": 635.3141
+ },
+ "TerritoryId": 1191,
+ "InteractionType": "WalkTo"
+ },
{
"Position": {
"X": -415.87146,
diff --git a/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5160_Auntie Knows Best.json b/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5160_Auntie Knows Best.json
index 47d856fe..6957d154 100644
--- a/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5160_Auntie Knows Best.json
+++ b/QuestPaths/7.x - Dawntrail/Aether Currents/Heritage Found/5160_Auntie Knows Best.json
@@ -55,6 +55,24 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "Position": {
+ "X": 184.68884,
+ "Y": 99.24859,
+ "Z": -171.97504
+ },
+ "TerritoryId": 1191,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "Position": {
+ "X": 148.14713,
+ "Y": 100.07344,
+ "Z": -135.20776
+ },
+ "TerritoryId": 1191,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 2013966,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/Aether Currents/Kozama'uka/5085_All Good Potpacts Must Come to an End.json b/QuestPaths/7.x - Dawntrail/Aether Currents/Kozama'uka/5085_All Good Potpacts Must Come to an End.json
index dfb62125..8e4b42da 100644
--- a/QuestPaths/7.x - Dawntrail/Aether Currents/Kozama'uka/5085_All Good Potpacts Must Come to an End.json
+++ b/QuestPaths/7.x - Dawntrail/Aether Currents/Kozama'uka/5085_All Good Potpacts Must Come to an End.json
@@ -102,7 +102,8 @@
"Z": 342.85498
},
"TerritoryId": 1188,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "Mount": true
}
]
}
diff --git a/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5138_Rroneek Seeker.json b/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5138_Rroneek Seeker.json
index 9db9564a..92d92c8f 100644
--- a/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5138_Rroneek Seeker.json
+++ b/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5138_Rroneek Seeker.json
@@ -20,6 +20,15 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 323.5058,
+ "Y": -16.330368,
+ "Z": -254.18399
+ },
+ "TerritoryId": 1190,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 1050656,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5140_When the Bill Comes Due.json b/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5140_When the Bill Comes Due.json
index 49204d8c..912043e1 100644
--- a/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5140_When the Bill Comes Due.json
+++ b/QuestPaths/7.x - Dawntrail/Aether Currents/Shaaloani/5140_When the Bill Comes Due.json
@@ -28,7 +28,8 @@
"Z": 427.2068
},
"TerritoryId": 1190,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Mount": true
}
]
},
@@ -50,6 +51,27 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "Position": {
+ "X": 369.3906,
+ "Y": 5.9371996,
+ "Z": 417.16574
+ },
+ "TerritoryId": 1190,
+ "InteractionType": "WalkTo",
+ "$": "Shaaloani Hhusatahwi Saloon Stairs (top)"
+ },
+ {
+ "Position": {
+ "X": 359.11545,
+ "Y": 1.9823306,
+ "Z": 419.5714
+ },
+ "TerritoryId": 1190,
+ "InteractionType": "WalkTo",
+ "$": "Shaaloani Hhusatahwi Saloon Stairs (bottom)",
+ "DisableNavmesh": true
+ },
{
"DataId": 1051286,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/Aether Currents/Yak T'el/5094_Secrets in the Cinderfield.json b/QuestPaths/7.x - Dawntrail/Aether Currents/Yak T'el/5094_Secrets in the Cinderfield.json
index 4357cd5d..a3e6ab87 100644
--- a/QuestPaths/7.x - Dawntrail/Aether Currents/Yak T'el/5094_Secrets in the Cinderfield.json
+++ b/QuestPaths/7.x - Dawntrail/Aether Currents/Yak T'el/5094_Secrets in the Cinderfield.json
@@ -174,6 +174,17 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 2013948,
+ "Position": {
+ "X": 610.7728,
+ "Y": 9.597839,
+ "Z": 233.05103
+ },
+ "TerritoryId": 1189,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818440
+ },
{
"DataId": 1051073,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4854_The Joy of Pictomancy.json b/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4854_The Joy of Pictomancy.json
index 86f5071c..4423e4d1 100644
--- a/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4854_The Joy of Pictomancy.json
+++ b/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4854_The Joy of Pictomancy.json
@@ -20,7 +20,20 @@
"Prompt": "TEXT_KINGBB201_04854_Q1_000_000",
"Answer": "TEXT_KINGBB201_04854_A1_000_002"
}
- ]
+ ],
+ "AetheryteShortcut": "Gridania",
+ "AethernetShortcut": [
+ "[Gridania] Aetheryte Plaza",
+ "[Gridania] Conjurers' Guild"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 133
+ ]
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4855_Mind over Manor.json b/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4855_Mind over Manor.json
index d134ace3..abc4342a 100644
--- a/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4855_Mind over Manor.json
+++ b/QuestPaths/7.x - Dawntrail/Class Quests/PCT/4855_Mind over Manor.json
@@ -14,11 +14,15 @@
"TerritoryId": 132,
"InteractionType": "UseItem",
"ItemId": 43538,
+ "AetheryteShortcut": "Gridania",
"SkipConditions": {
"StepIf": {
"Item": {
"NotInInventory": true
}
+ },
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
}
}
},
diff --git a/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4848_Enter the Viper.json b/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4848_Enter the Viper.json
index 6e246198..2a3451f3 100644
--- a/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4848_Enter the Viper.json
+++ b/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4848_Enter the Viper.json
@@ -13,7 +13,13 @@
"Z": -99.321045
},
"TerritoryId": 130,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4849_Fangs of the Viper.json b/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4849_Fangs of the Viper.json
index ccf61580..dec630ec 100644
--- a/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4849_Fangs of the Viper.json
+++ b/QuestPaths/7.x - Dawntrail/Class Quests/VPR/4849_Fangs of the Viper.json
@@ -17,16 +17,27 @@
"TerritoryId": 131,
"InteractionType": "UseItem",
"ItemId": 43537,
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Weavers' Guild"
+ ],
"SkipConditions": {
"StepIf": {
"Item": {
"NotInInventory": true
}
+ },
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
}
}
},
{
- "TerritoryId": 131,
+ "TerritoryId": 131,
"InteractionType": "EquipItem",
"ItemId": 41808,
"SkipConditions": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4868_A Well-mannered Shipwright.json b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4868_A Well-mannered Shipwright.json
index 4a550c01..28bd626b 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4868_A Well-mannered Shipwright.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4868_A Well-mannered Shipwright.json
@@ -151,13 +151,21 @@
"Steps": [
{
"Position": {
- "X": -510.96463,
- "Y": -0.47684515,
- "Z": -305.96155
+ "X": -510.37933,
+ "Y": -0.39999998,
+ "Z": -277.78192
},
"TerritoryId": 1188,
- "InteractionType": "WalkTo",
- "Comment": "Waypoint after swimming through the river"
+ "InteractionType": "WalkTo"
+ },
+ {
+ "Position": {
+ "X": -521.0261,
+ "Y": -0.40000004,
+ "Z": -329.19336
+ },
+ "TerritoryId": 1188,
+ "InteractionType": "WalkTo"
},
{
"DataId": 2013936,
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4870_Knowing the Hanuhanu.json b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4870_Knowing the Hanuhanu.json
index 83eb0953..d54e499a 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4870_Knowing the Hanuhanu.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4870_Knowing the Hanuhanu.json
@@ -12,7 +12,7 @@
"Y": 9.773315,
"Z": -533.135
},
- "StopDistance": 5,
+ "StopDistance": 7,
"TerritoryId": 1188,
"InteractionType": "AcceptQuest"
}
@@ -135,6 +135,28 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 1048782,
+ "Position": {
+ "X": -68.52832,
+ "Y": 6.536739,
+ "Z": -486.53394
+ },
+ "TerritoryId": 1188,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5064
+ },
+ {
+ "DataId": 1051237,
+ "Position": {
+ "X": -251.20929,
+ "Y": 5.5572896,
+ "Z": -554.89435
+ },
+ "TerritoryId": 1188,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5081
+ },
{
"DataId": 1046537,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4872_Traders of Happiness.json b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4872_Traders of Happiness.json
index 7ce2e342..d1e8367e 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4872_Traders of Happiness.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4872_Traders of Happiness.json
@@ -21,6 +21,11 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "TerritoryId": 1187,
+ "InteractionType": "AttuneAetheryte",
+ "Aetheryte": "Urqopacha - Wachunpelo"
+ },
{
"DataId": 1046557,
"Position": {
@@ -39,11 +44,6 @@
128
]
},
- {
- "TerritoryId": 1187,
- "InteractionType": "AttuneAetheryte",
- "Aetheryte": "Urqopacha - Wachunpelo"
- },
{
"DataId": 1046559,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4877_Knowing the Pelupelu.json b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4877_Knowing the Pelupelu.json
index 7166e4a6..879ca750 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4877_Knowing the Pelupelu.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4877_Knowing the Pelupelu.json
@@ -52,6 +52,30 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "DataId": 1050684,
+ "Position": {
+ "X": 391.37854,
+ "Y": -156.07434,
+ "Z": -388.50995
+ },
+ "TerritoryId": 1187,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5039,
+ "Comment": "Traveler to the Rescue"
+ },
+ {
+ "DataId": 1051195,
+ "Position": {
+ "X": 383.29138,
+ "Y": -154.50243,
+ "Z": -420.49292
+ },
+ "TerritoryId": 1187,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5051,
+ "Comment": "Crisis of Corruption"
+ },
{
"DataId": 1046537,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4878_The Success of Others.json b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4878_The Success of Others.json
index 3d40ae97..b6f50a5c 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4878_The Success of Others.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4878_The Success of Others.json
@@ -100,7 +100,7 @@
"Y": -19.725424,
"Z": 203.72314
},
- "StopDistance": 5,
+ "StopDistance": 7,
"TerritoryId": 1185,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4879_For All Turali.json b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4879_For All Turali.json
index 7c803180..9a983943 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4879_For All Turali.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/A-Kozama'uka1-Urqopacha1/4879_For All Turali.json
@@ -15,6 +15,7 @@
"Y": -19.725424,
"Z": 203.72314
},
+ "StopDistance": 7,
"TerritoryId": 1185,
"InteractionType": "AcceptQuest"
}
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4884_The Shape of Peace.json b/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4884_The Shape of Peace.json
index e5d6be1e..32e96d54 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4884_The Shape of Peace.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4884_The Shape of Peace.json
@@ -63,6 +63,28 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "DataId": 1051263,
+ "Position": {
+ "X": -521.0193,
+ "Y": 121.63345,
+ "Z": 319.38647
+ },
+ "TerritoryId": 1188,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5085
+ },
+ {
+ "DataId": 1048855,
+ "Position": {
+ "X": -491.63043,
+ "Y": 121.63846,
+ "Z": 271.50366
+ },
+ "TerritoryId": 1188,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5074
+ },
{
"DataId": 1046876,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4889_History's Keepers.json b/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4889_History's Keepers.json
index eb22764c..60df9000 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4889_History's Keepers.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4889_History's Keepers.json
@@ -12,6 +12,7 @@
"Y": 119.49004,
"Z": 190.72253
},
+ "StopDistance": 5,
"TerritoryId": 1188,
"InteractionType": "AcceptQuest"
}
@@ -29,7 +30,8 @@
},
"TerritoryId": 1188,
"InteractionType": "Interact",
- "AetheryteShortcut": "Kozama'uka - Earthenshire"
+ "AetheryteShortcut": "Kozama'uka - Earthenshire",
+ "Fly": true
}
]
},
@@ -44,7 +46,8 @@
},
"TerritoryId": 1188,
"InteractionType": "WalkTo",
- "TargetTerritoryId": 1187
+ "TargetTerritoryId": 1187,
+ "Fly": true
},
{
"DataId": 1046814,
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4896_The Promise of Peace.json b/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4896_The Promise of Peace.json
index 300238e9..03eed811 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4896_The Promise of Peace.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4896_The Promise of Peace.json
@@ -21,6 +21,30 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1051207,
+ "Position": {
+ "X": 425.07043,
+ "Y": 118.935005,
+ "Z": 606.13403
+ },
+ "StopDistance": 5,
+ "TerritoryId": 1187,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5055
+ },
+ {
+ "DataId": 1048730,
+ "Position": {
+ "X": 399.0692,
+ "Y": 122.53533,
+ "Z": 542.9922
+ },
+ "StopDistance": 5,
+ "TerritoryId": 1187,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5047
+ },
{
"DataId": 1046926,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4903_Into the Traverse.json b/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4903_Into the Traverse.json
index 52a6b9a8..f6cca46e 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4903_Into the Traverse.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4903_Into the Traverse.json
@@ -21,6 +21,36 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1050872,
+ "Position": {
+ "X": -408.71295,
+ "Y": 20.420113,
+ "Z": -398.8861
+ },
+ "TerritoryId": 1189,
+ "InteractionType": "AcceptQuest",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "quest/051/KinGzd201_05110",
+ "Prompt": "TEXT_KINGZD201_05110_Q1_000_000",
+ "Answer": "TEXT_KINGZD201_05110_A1_000_001"
+ }
+ ],
+ "PickUpQuestId": 5110
+ },
+ {
+ "DataId": 1051073,
+ "Position": {
+ "X": 41.09253,
+ "Y": 8.205902,
+ "Z": -629.8467
+ },
+ "TerritoryId": 1189,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5094
+ },
{
"DataId": 1047577,
"Position": {
@@ -36,28 +66,6 @@
{
"Sequence": 2,
"Steps": [
- {
- "DataId": 2013948,
- "Position": {
- "X": 610.7728,
- "Y": 9.597839,
- "Z": 233.05103
- },
- "TerritoryId": 1189,
- "InteractionType": "AttuneAetherCurrent",
- "AetherCurrentId": 2818440
- },
- {
- "Position": {
- "X": 614.25964,
- "Y": -29.554798,
- "Z": 202.75368
- },
- "TerritoryId": 1189,
- "InteractionType": "WalkTo",
- "DisableNavmesh": true,
- "Mount": false
- },
{
"DataId": 1048230,
"Position": {
@@ -66,8 +74,7 @@
"Z": 214.83167
},
"TerritoryId": 1189,
- "InteractionType": "Interact",
- "DisableNavmesh": true
+ "InteractionType": "Interact"
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4909_Road to the Golden City.json b/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4909_Road to the Golden City.json
index c959a428..39387ac5 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4909_Road to the Golden City.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4909_Road to the Golden City.json
@@ -24,6 +24,28 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1051052,
+ "Position": {
+ "X": 585.90063,
+ "Y": -142.49187,
+ "Z": 510.21594
+ },
+ "TerritoryId": 1189,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5103
+ },
+ {
+ "DataId": 1050884,
+ "Position": {
+ "X": 531.0597,
+ "Y": -142.49185,
+ "Z": 492.0271
+ },
+ "TerritoryId": 1189,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5114
+ },
{
"DataId": 1047701,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4919_And the Land Would Tremble.json b/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4919_And the Land Would Tremble.json
index 16c8605f..30d005a1 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4919_And the Land Would Tremble.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4919_And the Land Would Tremble.json
@@ -52,6 +52,62 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "DataId": 1050655,
+ "Position": {
+ "X": 289.02112,
+ "Y": -15.566031,
+ "Z": -478.78235
+ },
+ "TerritoryId": 1190,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5138
+ },
+ {
+ "Position": {
+ "X": 386.84927,
+ "Y": -0.84392637,
+ "Z": 435.0579
+ },
+ "TerritoryId": 1190,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Shaaloani - Hhusatahwi",
+ "SkipConditions": {
+ "StepIf": {
+ "QuestsCompleted": [
+ 5140
+ ]
+ },
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 5140
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 1051283,
+ "Position": {
+ "X": 374.19702,
+ "Y": -0.24794838,
+ "Z": 437.2472
+ },
+ "StopDistance": 6,
+ "TerritoryId": 1190,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5140
+ },
+ {
+ "DataId": 1049324,
+ "Position": {
+ "X": -108.659546,
+ "Y": 4.055336,
+ "Z": 319.5697
+ },
+ "TerritoryId": 1190,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5130
+ },
{
"DataId": 1047001,
"Position": {
@@ -61,6 +117,7 @@
},
"TerritoryId": 1190,
"InteractionType": "Interact",
+ "AetheryteShortcut": "Shaaloani - Sheshenewezi Springs",
"DialogueChoices": [
{
"Type": "YesNo",
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4923_In Yyasulani's Shadow.json b/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4923_In Yyasulani's Shadow.json
index edaedfc9..1bf3b839 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4923_In Yyasulani's Shadow.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4923_In Yyasulani's Shadow.json
@@ -161,6 +161,17 @@
{
"Sequence": 7,
"Steps": [
+ {
+ "DataId": 1051316,
+ "Position": {
+ "X": -380.30066,
+ "Y": 18.718708,
+ "Z": -114.24432
+ },
+ "TerritoryId": 1190,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5144
+ },
{
"DataId": 1047082,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4932_Embracing Oblivion.json b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4932_Embracing Oblivion.json
index a039a85a..0bdf93e8 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4932_Embracing Oblivion.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4932_Embracing Oblivion.json
@@ -69,6 +69,7 @@
"Y": 0.003171,
"Z": 1.296936
},
+ "StopDistance": 5,
"TerritoryId": 1171,
"InteractionType": "CompleteQuest"
}
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4933_Solution Nine.json b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4933_Solution Nine.json
index 67d31b9b..747faf16 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4933_Solution Nine.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4933_Solution Nine.json
@@ -21,6 +21,34 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1049443,
+ "Position": {
+ "X": -177.56934,
+ "Y": 29.999998,
+ "Z": -601.15967
+ },
+ "TerritoryId": 1191,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5153,
+ "AetheryteShortcut": "Heritage Found - The Outskirts",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ },
+ {
+ "DataId": 1050805,
+ "Position": {
+ "X": -153.09375,
+ "Y": 34.946026,
+ "Z": -581.0178
+ },
+ "TerritoryId": 1191,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5160
+ },
{
"DataId": 1048053,
"Position": {
@@ -29,8 +57,7 @@
"Z": -828.58014
},
"TerritoryId": 1191,
- "InteractionType": "Interact",
- "AetheryteShortcut": "Heritage Found - The Outskirts"
+ "InteractionType": "Interact"
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4941_At a Crossroads.json b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4941_At a Crossroads.json
index 08e1e1a9..b48c78ef 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4941_At a Crossroads.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4941_At a Crossroads.json
@@ -37,6 +37,17 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "DataId": 1049505,
+ "Position": {
+ "X": -209.85736,
+ "Y": 7.49638,
+ "Z": 595.9104
+ },
+ "TerritoryId": 1191,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5159
+ },
{
"DataId": 1048099,
"Position": {
@@ -53,6 +64,17 @@
{
"Sequence": 3,
"Steps": [
+ {
+ "DataId": 1049501,
+ "Position": {
+ "X": -592.7062,
+ "Y": -2.4803436,
+ "Z": -489.28055
+ },
+ "TerritoryId": 1191,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5156
+ },
{
"DataId": 1048116,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4945_The Resilient Son.json b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4945_The Resilient Son.json
index b912c8bd..bb4681d7 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4945_The Resilient Son.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/E-SolutionNine-HeritageFound2/4945_The Resilient Son.json
@@ -32,7 +32,8 @@
"Z": -565.48413
},
"TerritoryId": 1191,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Fly": true
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4951_The Land of Dreams.json b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4951_The Land of Dreams.json
index ae4ec158..15de1328 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4951_The Land of Dreams.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4951_The Land of Dreams.json
@@ -21,6 +21,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1050617,
+ "Position": {
+ "X": -631.4031,
+ "Y": 2.9305653E-07,
+ "Z": 497.12354
+ },
+ "TerritoryId": 1192,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5174
+ },
{
"DataId": 1047884,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4953_The Sanctuary of the Strong.json b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4953_The Sanctuary of the Strong.json
index 3c29861a..5f5a5c57 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4953_The Sanctuary of the Strong.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4953_The Sanctuary of the Strong.json
@@ -21,6 +21,41 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1048243,
+ "Position": {
+ "X": 57.87744,
+ "Y": 53.200012,
+ "Z": 772.03015
+ },
+ "TerritoryId": 1192,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Living Memory - Leynode Mnemo",
+ "TargetTerritoryId": 1192,
+ "SkipConditions": {
+ "StepIf": {
+ "QuestsCompleted": [
+ 5176
+ ]
+ },
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 5176
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 1050621,
+ "Position": {
+ "X": 477.1344,
+ "Y": -0.034497976,
+ "Z": 711.6654
+ },
+ "TerritoryId": 1192,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5176
+ },
{
"DataId": 1047917,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4956_An Explorer's Delight.json b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4956_An Explorer's Delight.json
index 146b118c..2c708162 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4956_An Explorer's Delight.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4956_An Explorer's Delight.json
@@ -21,6 +21,44 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1050625,
+ "Position": {
+ "X": 628.6869,
+ "Y": 24.99949,
+ "Z": -283.3753
+ },
+ "TerritoryId": 1192,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5178,
+ "AetheryteShortcut": "Living Memory - Leynode Pyro",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 5178
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 1050632,
+ "Position": {
+ "X": 538.9944,
+ "Y": 25.001822,
+ "Z": -194.3847
+ },
+ "TerritoryId": 1192,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 5179,
+ "AetheryteShortcut": "Living Memory - Leynode Pyro",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "QuestsCompleted": [
+ 5179
+ ]
+ }
+ }
+ },
{
"DataId": 1047971,
"Position": {
diff --git a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json
index 87c4c82b..68e4c7bf 100644
--- a/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json
+++ b/QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4959_Dawntrail.json
@@ -33,8 +33,12 @@
},
"TerritoryId": 1192,
"InteractionType": "WalkTo",
- "AetheryteShortcut": "Living Memory - Leynode Mnemo",
- "$": "Leynode Mnemo to Meso Terminal waypoint"
+ "$": "Leynode Mnemo to Meso Terminal waypoint",
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Unlocked"
+ }
+ }
},
{
"DataId": 1048014,
@@ -44,7 +48,8 @@
"Z": 363.05774
},
"TerritoryId": 1192,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Fly": true
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4842_Power Forgotten.json b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4842_Power Forgotten.json
index 33df55b7..c04f2dc7 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4842_Power Forgotten.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4842_Power Forgotten.json
@@ -13,7 +13,13 @@
"Z": 194.72034
},
"TerritoryId": 1185,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Tuliyollal",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4843_A Brand of Justice.json b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4843_A Brand of Justice.json
index 6b6425ea..a26a9fca 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4843_A Brand of Justice.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4843_A Brand of Justice.json
@@ -13,7 +13,13 @@
"Z": 628.3817
},
"TerritoryId": 957,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4844_The Seeds of Popularity.json b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4844_The Seeds of Popularity.json
index 40af8b55..5542bd4b 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4844_The Seeds of Popularity.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4844_The Seeds of Popularity.json
@@ -13,7 +13,13 @@
"Z": 628.3817
},
"TerritoryId": 957,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4845_Floundering Fame.json b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4845_Floundering Fame.json
index cbe6d957..0150bd00 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4845_Floundering Fame.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4845_Floundering Fame.json
@@ -14,6 +14,12 @@
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ },
"DialogueChoices": [
{
"Type": "List",
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4846_Behind the Helm.json b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4846_Behind the Helm.json
index 9b581e94..49373025 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4846_Behind the Helm.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4846_Behind the Helm.json
@@ -13,7 +13,13 @@
"Z": 628.3817
},
"TerritoryId": 957,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4847_Heroes and Pretenders.json b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4847_Heroes and Pretenders.json
index feff8b34..73a1350d 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4847_Heroes and Pretenders.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Magical Ranged/4847_Heroes and Pretenders.json
@@ -16,7 +16,13 @@
"Z": 628.3817
},
"TerritoryId": 957,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4838_Take Me to Your Leader.json b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4838_Take Me to Your Leader.json
index ed65c14d..9fd43410 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4838_Take Me to Your Leader.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4838_Take Me to Your Leader.json
@@ -13,7 +13,13 @@
"Z": -3.6469727
},
"TerritoryId": 621,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Lochs - Porta Praetoria",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4839_The Milk of Mamool Ja Kindness.json b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4839_The Milk of Mamool Ja Kindness.json
index 90b8d6de..e51f3ef2 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4839_The Milk of Mamool Ja Kindness.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4839_The Milk of Mamool Ja Kindness.json
@@ -13,7 +13,13 @@
"Z": 739.4979
},
"TerritoryId": 620,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Peaks - Ala Ghiri",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4840_Ally in the Alley.json b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4840_Ally in the Alley.json
index d73e1be9..0e23cedd 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4840_Ally in the Alley.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4840_Ally in the Alley.json
@@ -13,7 +13,13 @@
"Z": 739.4979
},
"TerritoryId": 620,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Peaks - Ala Ghiri",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4841_The Mightiest Shield.json b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4841_The Mightiest Shield.json
index cba86057..599b3b17 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4841_The Mightiest Shield.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Physical Ranged/4841_The Mightiest Shield.json
@@ -16,7 +16,13 @@
"Z": 618.09717
},
"TerritoryId": 621,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Lochs - Ala Mhigan Quarter",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4818_The Narwhal Beckons.json b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4818_The Narwhal Beckons.json
index ab8d951a..960d2233 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4818_The Narwhal Beckons.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4818_The Narwhal Beckons.json
@@ -13,7 +13,13 @@
"Z": 203.14331
},
"TerritoryId": 1185,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Tuliyollal",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4819_Sleepless in Ishgard.json b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4819_Sleepless in Ishgard.json
index 69caf918..668b23af 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4819_Sleepless in Ishgard.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4819_Sleepless in Ishgard.json
@@ -13,7 +13,13 @@
"Z": -48.05072
},
"TerritoryId": 418,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ishgard",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4820_Between Sleep and Death.json b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4820_Between Sleep and Death.json
index 09bfe8e2..9b08c1c9 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4820_Between Sleep and Death.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4820_Between Sleep and Death.json
@@ -14,6 +14,12 @@
},
"TerritoryId": 418,
"InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ishgard",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ },
"DialogueChoices": [
{
"Type": "List",
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4821_Beacon in the Darkness.json b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4821_Beacon in the Darkness.json
index 67f58ebb..4691ec7c 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4821_Beacon in the Darkness.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4821_Beacon in the Darkness.json
@@ -13,7 +13,13 @@
"Z": -1.7243042
},
"TerritoryId": 418,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ishgard",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4822_Awakened, not Stirred.json b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4822_Awakened, not Stirred.json
index 544b366f..a29c5a66 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4822_Awakened, not Stirred.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4822_Awakened, not Stirred.json
@@ -14,7 +14,13 @@
},
"StopDistance": 5,
"TerritoryId": 418,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ishgard",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4823_Dreams of a New Day.json b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4823_Dreams of a New Day.json
index 1fe65e91..db15f8e2 100644
--- a/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4823_Dreams of a New Day.json
+++ b/QuestPaths/7.x - Dawntrail/Role Quests/Tank/4823_Dreams of a New Day.json
@@ -16,7 +16,13 @@
"Z": -48.17273
},
"TerritoryId": 418,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ishgard",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
diff --git a/QuestPaths/7.x - Dawntrail/Seasonal Events/Rising (2024)/5015_Rising to the Call.json b/QuestPaths/7.x - Dawntrail/Seasonal Events/Rising (2024)/5015_Rising to the Call.json
new file mode 100644
index 00000000..dc0b144b
--- /dev/null
+++ b/QuestPaths/7.x - Dawntrail/Seasonal Events/Rising (2024)/5015_Rising to the Call.json
@@ -0,0 +1,188 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1050998,
+ "Position": {
+ "X": 4.0131226,
+ "Y": 44.499996,
+ "Z": 126.17676
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 128
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1050999,
+ "Position": {
+ "X": 4.837097,
+ "Y": 31.47563,
+ "Z": -256.97723
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] The Aftcastle",
+ "[Limsa Lominsa] Marauders' Guild"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1051000,
+ "Position": {
+ "X": -100.175476,
+ "Y": 18.00033,
+ "Z": -15.030151
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Marauders' Guild",
+ "[Limsa Lominsa] Aetheryte Plaza"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1001217,
+ "Position": {
+ "X": -140.85602,
+ "Y": 18.199999,
+ "Z": 17.013733
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1051003,
+ "Position": {
+ "X": -188.12854,
+ "Y": 16,
+ "Z": 33.37146
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 1051002,
+ "Position": {
+ "X": -205.005,
+ "Y": 15.999994,
+ "Z": 71.97681
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1051004,
+ "Position": {
+ "X": -243.03046,
+ "Y": 16.199997,
+ "Z": 40.97046
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 2014209,
+ "Position": {
+ "X": -385.1225,
+ "Y": 5.996765,
+ "Z": 33.707153
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Hawkers' Alley",
+ "[Limsa Lominsa] Arcanists' Guild"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1051001,
+ "Position": {
+ "X": 3.7994385,
+ "Y": 44.499992,
+ "Z": 126.05469
+ },
+ "TerritoryId": 128,
+ "InteractionType": "CompleteQuest",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Arcanists' Guild",
+ "[Limsa Lominsa] The Aftcastle"
+ ],
+ "NextQuestId": 5016
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/7.x - Dawntrail/Seasonal Events/Rising (2024)/5016_We Who Are About to Set Sail Salute You.json b/QuestPaths/7.x - Dawntrail/Seasonal Events/Rising (2024)/5016_We Who Are About to Set Sail Salute You.json
new file mode 100644
index 00000000..3d92545a
--- /dev/null
+++ b/QuestPaths/7.x - Dawntrail/Seasonal Events/Rising (2024)/5016_We Who Are About to Set Sail Salute You.json
@@ -0,0 +1,128 @@
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1051007,
+ "Position": {
+ "X": 2.2735596,
+ "Y": 44.499992,
+ "Z": 125.200195
+ },
+ "StopDistance": 5,
+ "TerritoryId": 128,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 128
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1051008,
+ "Position": {
+ "X": 2.5481567,
+ "Y": 43.999977,
+ "Z": -206.71399
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] The Aftcastle",
+ "[Limsa Lominsa] Marauders' Guild"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1051009,
+ "Position": {
+ "X": 1.5106201,
+ "Y": 44,
+ "Z": -205.8595
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "StopDistance": 5
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2014210,
+ "Position": {
+ "X": -176.62323,
+ "Y": 40.97046,
+ "Z": 185.35132
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Marauders' Guild",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1051010,
+ "Position": {
+ "X": -178.11859,
+ "Y": 40.999958,
+ "Z": 184.67993
+ },
+ "StopDistance": 5,
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1051011,
+ "Position": {
+ "X": -178.63745,
+ "Y": 40.999916,
+ "Z": 186.3584
+ },
+ "StopDistance": 7,
+ "TerritoryId": 128,
+ "InteractionType": "CompleteQuest",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_FESANX002_05016_Q52_000_082",
+ "Yes": true
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/QuestPaths/quest-v1.json b/QuestPaths/quest-v1.json
index ff535a8f..ad911e72 100644
--- a/QuestPaths/quest-v1.json
+++ b/QuestPaths/quest-v1.json
@@ -92,6 +92,10 @@
"type": "boolean",
"description": "Most interactions with objects are checked for a Y (height) difference of 2 in-game units. If set to true, the game won't attempt to get any closer if the height difference is larger than this."
},
+ "RestartNavigationIfCancelled": {
+ "type": "boolean",
+ "description": "For some specific loading screen transitions (e.g. when entering/leaving the water through the portals in the ruby sea), setting this to 'false' means it won't re-attempt to move to the portal after the loading animation"
+ },
"TerritoryId": {
"type": "integer",
"description": "The territory id associated with the location",
@@ -234,13 +238,13 @@
"QuestsAccepted": {
"type": "array",
"items": {
- "type": "number"
+ "type": ["number", "string"]
}
},
"QuestsCompleted": {
"type": "array",
"items": {
- "type": "number"
+ "type": ["number", "string"]
}
},
"AetheryteLocked": {
@@ -257,11 +261,15 @@
},
"MaximumDistance": {
"type": "number"
+ },
+ "TerritoryId": {
+ "type": "number"
}
},
"required": [
"Position",
- "MaximumDistance"
+ "MaximumDistance",
+ "TerritoryId"
],
"additionalProperties": false
},
@@ -290,6 +298,18 @@
"type": "integer"
}
},
+ "QuestsAccepted": {
+ "type": "array",
+ "items": {
+ "type": ["number", "string"]
+ }
+ },
+ "QuestsCompleted": {
+ "type": "array",
+ "items": {
+ "type": ["number", "string"]
+ }
+ },
"AetheryteLocked": {
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
},
@@ -307,11 +327,15 @@
},
"MaximumDistance": {
"type": "number"
+ },
+ "TerritoryId": {
+ "type": "number"
}
},
"required": [
"Position",
- "MaximumDistance"
+ "MaximumDistance",
+ "TerritoryId"
],
"additionalProperties": false
}
@@ -568,6 +592,7 @@
"AutoOnEnterArea",
"AfterInteraction",
"AfterItemUse",
+ "AfterAction",
"OverworldEnemies"
]
},
@@ -840,6 +865,7 @@
"Heavy Swing",
"Heavy Shot",
"Cure",
+ "Cure II",
"Esuna",
"Physick",
"Buffet (Sanuwa)",
diff --git a/Questionable.Model/Questing/Converter/ActionConverter.cs b/Questionable.Model/Questing/Converter/ActionConverter.cs
index 42e6e384..5c6bea0a 100644
--- a/Questionable.Model/Questing/Converter/ActionConverter.cs
+++ b/Questionable.Model/Questing/Converter/ActionConverter.cs
@@ -10,6 +10,7 @@ public sealed class ActionConverter() : EnumConverter(Values)
{ EAction.HeavySwing, "Heavy Swing" },
{ EAction.HeavyShot, "Heavy Shot" },
{ EAction.Cure, "Cure" },
+ { EAction.Cure2, "Cure II" },
{ EAction.Esuna, "Esuna" },
{ EAction.Physick, "Physick" },
{ EAction.BuffetSanuwa, "Buffet (Sanuwa)" },
diff --git a/Questionable.Model/Questing/Converter/ElementIdListConverter.cs b/Questionable.Model/Questing/Converter/ElementIdListConverter.cs
new file mode 100644
index 00000000..25dd688d
--- /dev/null
+++ b/Questionable.Model/Questing/Converter/ElementIdListConverter.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Questionable.Model.Questing.Converter;
+
+public sealed class ElementIdListConverter : JsonConverter>
+{
+ public override List Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ if (reader.TokenType != JsonTokenType.StartArray)
+ throw new JsonException();
+
+ reader.Read();
+
+ List values = [];
+ while (reader.TokenType != JsonTokenType.EndArray)
+ {
+
+ if (reader.TokenType == JsonTokenType.Number)
+ values.Add(new QuestId(reader.GetUInt16()));
+ else
+ values.Add(ElementId.FromString(reader.GetString() ?? throw new JsonException()));
+
+ reader.Read();
+ }
+
+ return values;
+ }
+
+ public override void Write(Utf8JsonWriter writer, List value, JsonSerializerOptions options)
+ {
+ throw new NotImplementedException();
+ }
+}
diff --git a/Questionable.Model/Questing/Converter/EnemySpawnTypeConverter.cs b/Questionable.Model/Questing/Converter/EnemySpawnTypeConverter.cs
index e97faa4f..d37c5b7c 100644
--- a/Questionable.Model/Questing/Converter/EnemySpawnTypeConverter.cs
+++ b/Questionable.Model/Questing/Converter/EnemySpawnTypeConverter.cs
@@ -9,6 +9,7 @@ public sealed class EnemySpawnTypeConverter() : EnumConverter(V
{
{ EEnemySpawnType.AfterInteraction, "AfterInteraction" },
{ EEnemySpawnType.AfterItemUse, "AfterItemUse" },
+ { EEnemySpawnType.AfterAction, "AfterAction" },
{ EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
{ EEnemySpawnType.OverworldEnemies, "OverworldEnemies" },
};
diff --git a/Questionable.Model/Questing/EAction.cs b/Questionable.Model/Questing/EAction.cs
index 15e7f842..89605e87 100644
--- a/Questionable.Model/Questing/EAction.cs
+++ b/Questionable.Model/Questing/EAction.cs
@@ -9,11 +9,14 @@ public enum EAction
HeavySwing = 31,
HeavyShot = 97,
Cure = 120,
+ Cure2 = 135,
Esuna = 7568,
Physick = 190,
BuffetSanuwa = 4931,
BuffetGriffin = 4583,
Fumigate = 5872,
+ MagitekPulse = 8624,
+ MagitekThunder = 8625,
SiphonSnout = 18187,
Cannonfire = 20121,
RedGulal = 29382,
diff --git a/Questionable.Model/Questing/EEnemySpawnType.cs b/Questionable.Model/Questing/EEnemySpawnType.cs
index 3c42b9f4..f119ea08 100644
--- a/Questionable.Model/Questing/EEnemySpawnType.cs
+++ b/Questionable.Model/Questing/EEnemySpawnType.cs
@@ -9,6 +9,7 @@ public enum EEnemySpawnType
None = 0,
AfterInteraction,
AfterItemUse,
+ AfterAction,
AutoOnEnterArea,
OverworldEnemies,
}
diff --git a/Questionable.Model/Questing/NearPositionCondition.cs b/Questionable.Model/Questing/NearPositionCondition.cs
index 7c5885ed..ecfba871 100644
--- a/Questionable.Model/Questing/NearPositionCondition.cs
+++ b/Questionable.Model/Questing/NearPositionCondition.cs
@@ -9,4 +9,5 @@ public sealed class NearPositionCondition
[JsonConverter(typeof(VectorConverter))]
public Vector3 Position { get; set; }
public float MaximumDistance { get; set; }
+ public ushort TerritoryId { get; set; }
}
diff --git a/Questionable.Model/Questing/QuestStep.cs b/Questionable.Model/Questing/QuestStep.cs
index a09386bc..8ee496bf 100644
--- a/Questionable.Model/Questing/QuestStep.cs
+++ b/Questionable.Model/Questing/QuestStep.cs
@@ -12,6 +12,7 @@ namespace Questionable.Model.Questing;
public sealed class QuestStep
{
public const float DefaultStopDistance = 3f;
+ public const int VesperBayAetheryteTicket = 30362;
public uint? DataId { get; set; }
@@ -36,6 +37,7 @@ public sealed class QuestStep
public bool? Land { get; set; }
public bool? Sprint { get; set; }
public bool? IgnoreDistanceToObject { get; set; }
+ public bool? RestartNavigationIfCancelled { get; set; }
public string? Comment { get; set; }
///
@@ -109,4 +111,19 @@ public sealed class QuestStep
else
return StopDistance ?? DefaultStopDistance;
}
+
+ ///
+ /// Only relevant for the step 0 in sequence 0: Whether this step is valid for teleporting to it.
+ ///
+ ///
+ public bool IsTeleportableForPriorityQuests()
+ {
+ if (AetheryteShortcut != null)
+ return true;
+
+ if (InteractionType == EInteractionType.UseItem && ItemId == VesperBayAetheryteTicket)
+ return true;
+
+ return false;
+ }
}
diff --git a/Questionable.Model/Questing/SkipAetheryteCondition.cs b/Questionable.Model/Questing/SkipAetheryteCondition.cs
index 573c3e2e..70e13474 100644
--- a/Questionable.Model/Questing/SkipAetheryteCondition.cs
+++ b/Questionable.Model/Questing/SkipAetheryteCondition.cs
@@ -1,5 +1,7 @@
using System.Collections.Generic;
+using System.Text.Json.Serialization;
using Questionable.Model.Common;
+using Questionable.Model.Questing.Converter;
namespace Questionable.Model.Questing;
@@ -8,6 +10,13 @@ public sealed class SkipAetheryteCondition
public bool Never { get; set; }
public bool InSameTerritory { get; set; }
public List InTerritory { get; set; } = new();
+
+ [JsonConverter(typeof(ElementIdListConverter))]
+ public List QuestsAccepted { get; set; } = new();
+
+ [JsonConverter(typeof(ElementIdListConverter))]
+ public List QuestsCompleted { get; set; } = new();
+
public EAetheryteLocation? AetheryteLocked { get; set; }
public EAetheryteLocation? AetheryteUnlocked { get; set; }
public bool RequiredQuestVariablesNotMet { get; set; }
diff --git a/Questionable.Model/Questing/SkipStepConditions.cs b/Questionable.Model/Questing/SkipStepConditions.cs
index 323a0dc0..bfb8fcfc 100644
--- a/Questionable.Model/Questing/SkipStepConditions.cs
+++ b/Questionable.Model/Questing/SkipStepConditions.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using System.Linq;
+using System.Text.Json.Serialization;
using Questionable.Model.Common;
+using Questionable.Model.Questing.Converter;
namespace Questionable.Model.Questing;
@@ -14,8 +16,13 @@ public sealed class SkipStepConditions
public List InTerritory { get; set; } = new();
public List NotInTerritory { get; set; } = new();
public SkipItemConditions? Item { get; set; }
+
+ [JsonConverter(typeof(ElementIdListConverter))]
public List QuestsAccepted { get; set; } = new();
+
+ [JsonConverter(typeof(ElementIdListConverter))]
public List QuestsCompleted { get; set; } = new();
+
public EAetheryteLocation? AetheryteLocked { get; set; }
public EAetheryteLocation? AetheryteUnlocked { get; set; }
public NearPositionCondition? NearPosition { get; set; }
diff --git a/Questionable/Controller/CombatController.cs b/Questionable/Controller/CombatController.cs
index 2a7c08d9..d1ff66be 100644
--- a/Questionable/Controller/CombatController.cs
+++ b/Questionable/Controller/CombatController.cs
@@ -191,6 +191,9 @@ internal sealed class CombatController : IDisposable
{
if (gameObject is IBattleNpc battleNpc)
{
+ if (_currentFight != null && !_currentFight.Module.CanAttack(battleNpc))
+ return 0;
+
// TODO this works as somewhat of a delay between killing enemies if certain items/flags are checked
// but also delays killing the next enemy a little
if (_currentFight == null || _currentFight.Data.SpawnType != EEnemySpawnType.OverworldEnemies ||
diff --git a/Questionable/Controller/CombatModules/ICombatModule.cs b/Questionable/Controller/CombatModules/ICombatModule.cs
index 1aec57cc..542e2d6f 100644
--- a/Questionable/Controller/CombatModules/ICombatModule.cs
+++ b/Questionable/Controller/CombatModules/ICombatModule.cs
@@ -13,4 +13,6 @@ internal interface ICombatModule
void Update(IGameObject nextTarget);
void MoveToTarget(IGameObject nextTarget);
+
+ bool CanAttack(IBattleNpc target);
}
diff --git a/Questionable/Controller/CombatModules/Mount128Module.cs b/Questionable/Controller/CombatModules/Mount128Module.cs
new file mode 100644
index 00000000..39ef13cc
--- /dev/null
+++ b/Questionable/Controller/CombatModules/Mount128Module.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Numerics;
+using Dalamud.Game.ClientState.Objects.Types;
+using Questionable.Functions;
+using Questionable.Model;
+using Questionable.Model.Questing;
+
+namespace Questionable.Controller.CombatModules;
+
+///
+/// Commandeered Magitek Armor; used in 'Magiteknical Failure' quest.
+///
+internal sealed class Mount128Module : ICombatModule
+{
+ public const ushort MountId = 128;
+ private readonly EAction[] _actions = [EAction.MagitekThunder, EAction.MagitekPulse];
+
+ private readonly MovementController _movementController;
+ private readonly GameFunctions _gameFunctions;
+
+
+ public Mount128Module(MovementController movementController, GameFunctions gameFunctions)
+ {
+ _movementController = movementController;
+ _gameFunctions = gameFunctions;
+ }
+
+ public bool IsLoaded => _gameFunctions.GetMountId() == MountId;
+
+ public bool Start() => true;
+
+ public bool Stop() => true;
+
+ public void Update(IGameObject gameObject)
+ {
+ if (_movementController.IsPathfinding || _movementController.IsPathRunning)
+ return;
+
+ foreach (EAction action in _actions)
+ {
+ if (_gameFunctions.UseAction(gameObject, action, checkCanUse: false))
+ return;
+ }
+ }
+
+ public void MoveToTarget(IGameObject gameObject)
+ {
+ }
+
+ public bool CanAttack(IBattleNpc target) => target.DataId is 7504 or 7505;
+}
diff --git a/Questionable/Controller/CombatModules/RotationSolverRebornModule.cs b/Questionable/Controller/CombatModules/RotationSolverRebornModule.cs
index 0af5fda4..72e13ae7 100644
--- a/Questionable/Controller/CombatModules/RotationSolverRebornModule.cs
+++ b/Questionable/Controller/CombatModules/RotationSolverRebornModule.cs
@@ -85,7 +85,7 @@ internal sealed class RotationSolverRebornModule : ICombatModule, IDisposable
float hitboxOffset = player.HitboxRadius + gameObject.HitboxRadius;
float actualDistance = Vector3.Distance(player.Position, gameObject.Position);
- float maxDistance = player.ClassJob.GameData?.Role is 3 or 4 ? 20f : 3f;
+ float maxDistance = player.ClassJob.GameData?.Role is 3 or 4 ? 20f : 2.9f;
if (actualDistance - hitboxOffset >= maxDistance)
{
if (actualDistance - hitboxOffset <= 5)
@@ -119,6 +119,8 @@ internal sealed class RotationSolverRebornModule : ICombatModule, IDisposable
}
}
+ public bool CanAttack(IBattleNpc target) => true;
+
public void Dispose() => Stop();
[PublicAPI]
diff --git a/Questionable/Controller/CommandHandler.cs b/Questionable/Controller/CommandHandler.cs
index dbf8ade5..776f615a 100644
--- a/Questionable/Controller/CommandHandler.cs
+++ b/Questionable/Controller/CommandHandler.cs
@@ -3,16 +3,20 @@ using System.Linq;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.Command;
using Dalamud.Plugin.Services;
+using Lumina.Excel.GeneratedSheets;
using Questionable.Functions;
-using Questionable.Model;
using Questionable.Model.Questing;
using Questionable.Windows;
using Questionable.Windows.QuestComponents;
+using Quest = Questionable.Model.Quest;
namespace Questionable.Controller;
internal sealed class CommandHandler : IDisposable
{
+ private const string MessageTag = "Questionable";
+ private const ushort TagColor = 576;
+
private readonly ICommandManager _commandManager;
private readonly IChatGui _chatGui;
private readonly QuestController _questController;
@@ -24,6 +28,8 @@ internal sealed class CommandHandler : IDisposable
private readonly QuestSelectionWindow _questSelectionWindow;
private readonly ITargetManager _targetManager;
private readonly QuestFunctions _questFunctions;
+ private readonly GameFunctions _gameFunctions;
+ private readonly IDataManager _dataManager;
public CommandHandler(
ICommandManager commandManager,
@@ -36,7 +42,9 @@ internal sealed class CommandHandler : IDisposable
QuestWindow questWindow,
QuestSelectionWindow questSelectionWindow,
ITargetManager targetManager,
- QuestFunctions questFunctions)
+ QuestFunctions questFunctions,
+ GameFunctions gameFunctions,
+ IDataManager dataManager)
{
_commandManager = commandManager;
_chatGui = chatGui;
@@ -49,6 +57,8 @@ internal sealed class CommandHandler : IDisposable
_questSelectionWindow = questSelectionWindow;
_targetManager = targetManager;
_questFunctions = questFunctions;
+ _gameFunctions = gameFunctions;
+ _dataManager = dataManager;
_commandManager.AddHandler("/qst", new CommandInfo(ProcessCommand)
{
@@ -108,12 +118,16 @@ internal sealed class CommandHandler : IDisposable
_questSelectionWindow.OpenForCurrentZone();
break;
+ case "mountid":
+ PrintMountId();
+ break;
+
case "":
_questWindow.Toggle();
break;
default:
- _chatGui.PrintError($"Unknown subcommand {parts[0]}", "Questionable");
+ _chatGui.PrintError($"Unknown subcommand {parts[0]}", MessageTag, TagColor);
break;
}
}
@@ -122,7 +136,7 @@ internal sealed class CommandHandler : IDisposable
{
if (!_debugOverlay.DrawConditions())
{
- _chatGui.PrintError("[Questionable] You don't have the debug overlay enabled.");
+ _chatGui.PrintError("You don't have the debug overlay enabled.", MessageTag, TagColor);
return;
}
@@ -131,15 +145,15 @@ internal sealed class CommandHandler : IDisposable
if (_questRegistry.TryGetQuest(questId, out Quest? quest))
{
_debugOverlay.HighlightedQuest = quest.Id;
- _chatGui.Print($"[Questionable] Set highlighted quest to {questId} ({quest.Info.Name}).");
+ _chatGui.Print($"Set highlighted quest to {questId} ({quest.Info.Name}).", MessageTag, TagColor);
}
else
- _chatGui.PrintError($"[Questionable] Unknown quest {questId}.");
+ _chatGui.PrintError($"Unknown quest {questId}.", MessageTag, TagColor);
}
else
{
_debugOverlay.HighlightedQuest = null;
- _chatGui.Print("[Questionable] Cleared highlighted quest.");
+ _chatGui.Print("Cleared highlighted quest.", MessageTag, TagColor);
}
}
@@ -148,21 +162,21 @@ internal sealed class CommandHandler : IDisposable
if (arguments.Length >= 1 && ElementId.TryFromString(arguments[0], out ElementId? questId) && questId != null)
{
if (_questFunctions.IsQuestLocked(questId))
- _chatGui.PrintError($"[Questionable] Quest {questId} is locked.");
+ _chatGui.PrintError($"Quest {questId} is locked.", MessageTag, TagColor);
else if (_questRegistry.TryGetQuest(questId, out Quest? quest))
{
_questController.SetNextQuest(quest);
- _chatGui.Print($"[Questionable] Set next quest to {questId} ({quest.Info.Name}).");
+ _chatGui.Print($"Set next quest to {questId} ({quest.Info.Name}).", MessageTag, TagColor);
}
else
{
- _chatGui.PrintError($"[Questionable] Unknown quest {questId}.");
+ _chatGui.PrintError($"Unknown quest {questId}.", MessageTag, TagColor);
}
}
else
{
_questController.SetNextQuest(null);
- _chatGui.Print("[Questionable] Cleared next quest.");
+ _chatGui.Print("Cleared next quest.", MessageTag, TagColor);
}
}
@@ -173,18 +187,32 @@ internal sealed class CommandHandler : IDisposable
if (_questRegistry.TryGetQuest(questId, out Quest? quest))
{
_questController.SimulateQuest(quest);
- _chatGui.Print($"[Questionable] Simulating quest {questId} ({quest.Info.Name}).");
+ _chatGui.Print($"Simulating quest {questId} ({quest.Info.Name}).", MessageTag, TagColor);
}
else
- _chatGui.PrintError($"[Questionable] Unknown quest {questId}.");
+ _chatGui.PrintError($"Unknown quest {questId}.", MessageTag, TagColor);
}
else
{
_questController.SimulateQuest(null);
- _chatGui.Print("[Questionable] Cleared simulated quest.");
+ _chatGui.Print("Cleared simulated quest.", MessageTag, TagColor);
}
}
+ private void PrintMountId()
+ {
+ ushort? mountId = _gameFunctions.GetMountId();
+ if (mountId != null)
+ {
+ var row = _dataManager.GetExcelSheet()!.GetRow(mountId.Value);
+ _chatGui.Print(
+ $"Mount ID: {mountId}, Name: {row?.Singular}, Obtainable: {(row?.Order == -1 ? "No" : "Yes")}",
+ MessageTag, TagColor);
+ }
+ else
+ _chatGui.Print("You are not mounted.", MessageTag, TagColor);
+ }
+
public void Dispose()
{
_commandManager.RemoveHandler("/qst");
diff --git a/Questionable/Controller/ContextMenuController.cs b/Questionable/Controller/ContextMenuController.cs
index f8441e63..509d8372 100644
--- a/Questionable/Controller/ContextMenuController.cs
+++ b/Questionable/Controller/ContextMenuController.cs
@@ -99,7 +99,7 @@ internal sealed class ContextMenuController : IDisposable
if (agentSatisfactionSupply->IsAgentActive())
{
int maxTurnIns = agentSatisfactionSupply->NpcInfo.SatisfactionRank == 1 ? 3 : 6;
- quantityToGather = Math.Min(agentSatisfactionSupply->RemainingAllowances,
+ quantityToGather = Math.Min(agentSatisfactionSupply->NpcData.RemainingAllowances,
((AgentSatisfactionSupply2*)agentSatisfactionSupply)->CalculateTurnInsToNextRank(maxTurnIns));
}
}
diff --git a/Questionable/Controller/GameUi/InteractionUiController.cs b/Questionable/Controller/GameUi/InteractionUiController.cs
index 64c17832..21c95d29 100644
--- a/Questionable/Controller/GameUi/InteractionUiController.cs
+++ b/Questionable/Controller/GameUi/InteractionUiController.cs
@@ -42,6 +42,7 @@ internal sealed class InteractionUiController : IDisposable
private readonly GatheringPointRegistry _gatheringPointRegistry;
private readonly QuestRegistry _questRegistry;
private readonly QuestData _questData;
+ private readonly TerritoryData _territoryData;
private readonly IGameGui _gameGui;
private readonly ITargetManager _targetManager;
private readonly IClientState _clientState;
@@ -61,6 +62,7 @@ internal sealed class InteractionUiController : IDisposable
GatheringPointRegistry gatheringPointRegistry,
QuestRegistry questRegistry,
QuestData questData,
+ TerritoryData territoryData,
IGameGui gameGui,
ITargetManager targetManager,
IPluginLog pluginLog,
@@ -77,6 +79,7 @@ internal sealed class InteractionUiController : IDisposable
_gatheringPointRegistry = gatheringPointRegistry;
_questRegistry = questRegistry;
_questData = questData;
+ _territoryData = territoryData;
_gameGui = gameGui;
_targetManager = targetManager;
_clientState = clientState;
@@ -101,7 +104,9 @@ internal sealed class InteractionUiController : IDisposable
}
}
- private bool ShouldHandleUiInteractions => _isInitialCheck || _questController.IsRunning;
+ private bool ShouldHandleUiInteractions => _isInitialCheck ||
+ _questController.IsRunning ||
+ _territoryData.IsQuestBattleInstance(_clientState.TerritoryType);
internal unsafe void HandleCurrentDialogueChoices()
{
@@ -230,6 +235,16 @@ internal sealed class InteractionUiController : IDisposable
_logger.LogInformation("Checking if current quest {Name} is on the list", currentQuest.Quest.Info.Name);
if (CheckQuestSelection(addonSelectIconString, currentQuest.Quest, answers))
return;
+
+ var sequence = currentQuest.Quest.FindSequence(currentQuest.Sequence);
+ QuestStep? step = sequence?.FindStep(currentQuest.Step);
+ if (step is { InteractionType: EInteractionType.AcceptQuest, PickUpQuestId: not null } &&
+ _questRegistry.TryGetQuest(step.PickUpQuestId, out Quest? pickupQuest))
+ {
+ _logger.LogInformation("Checking if current picked-up {Name} is on the list", pickupQuest.Info.Name);
+ if (CheckQuestSelection(addonSelectIconString, pickupQuest, answers))
+ return;
+ }
}
var nextQuest = _questController.NextQuest;
diff --git a/Questionable/Controller/MovementController.cs b/Questionable/Controller/MovementController.cs
index 6809c9f1..676d51d0 100644
--- a/Questionable/Controller/MovementController.cs
+++ b/Questionable/Controller/MovementController.cs
@@ -151,7 +151,7 @@ internal sealed class MovementController : IDisposable
if (IsPathRunning && Destination != null)
{
- if (_gameFunctions.IsLoadingScreenVisible(false))
+ if (_gameFunctions.IsLoadingScreenVisible())
{
_logger.LogInformation("Stopping movement, loading screen visible");
Stop();
diff --git a/Questionable/Controller/QuestController.cs b/Questionable/Controller/QuestController.cs
index 529b4603..2fcef5eb 100644
--- a/Questionable/Controller/QuestController.cs
+++ b/Questionable/Controller/QuestController.cs
@@ -724,7 +724,7 @@ internal sealed class QuestController : MiniTaskController, IDi
return false;
var (currentQuest, type) = details.Value;
- if (type != ECurrentQuestType.Normal)
+ if (type != ECurrentQuestType.Normal || currentQuest.Sequence == 0)
return false;
if (currentQuest.Quest.Info.AlliedSociety != EAlliedSociety.None)
@@ -735,7 +735,9 @@ internal sealed class QuestController : MiniTaskController, IDi
return false;
QuestStep? currentStep = currentSequence?.FindStep(currentQuest.Step);
- return currentStep?.AetheryteShortcut != null;
+ return currentStep?.AetheryteShortcut != null &&
+ (currentStep.SkipConditions?.AetheryteShortcutIf?.QuestsCompleted.Count ?? 0) == 0 &&
+ (currentStep.SkipConditions?.AetheryteShortcutIf?.QuestsAccepted.Count ?? 0) == 0;
}
public bool TryPickPriorityQuest()
diff --git a/Questionable/Controller/Steps/Common/Mount.cs b/Questionable/Controller/Steps/Common/Mount.cs
index 144de5ba..9502455c 100644
--- a/Questionable/Controller/Steps/Common/Mount.cs
+++ b/Questionable/Controller/Steps/Common/Mount.cs
@@ -29,7 +29,7 @@ internal static class Mount
public ITask Unmount()
{
- return new UnmountTask(condition, loggerFactory.CreateLogger(), gameFunctions);
+ return new UnmountTask(condition, loggerFactory.CreateLogger(), gameFunctions, clientState);
}
}
@@ -119,7 +119,11 @@ internal static class Mount
public override string ToString() => "Mount";
}
- private sealed class UnmountTask(ICondition condition, ILogger logger, GameFunctions gameFunctions)
+ private sealed class UnmountTask(
+ ICondition condition,
+ ILogger logger,
+ GameFunctions gameFunctions,
+ IClientState clientState)
: ITask
{
private bool _unmountTriggered;
@@ -148,6 +152,9 @@ internal static class Mount
if (_continueAt >= DateTime.Now)
return ETaskResult.StillRunning;
+ if (IsUnmounting())
+ return ETaskResult.StillRunning;
+
if (!_unmountTriggered)
{
// if still flying, we still need to land
@@ -172,6 +179,8 @@ internal static class Mount
: ETaskResult.TaskComplete;
}
+ private unsafe bool IsUnmounting() => **(byte**)(clientState.LocalPlayer!.Address + 1432) == 1;
+
public override string ToString() => "Unmount";
}
diff --git a/Questionable/Controller/Steps/Common/NextQuest.cs b/Questionable/Controller/Steps/Common/NextQuest.cs
index e7fd2b62..574c76ae 100644
--- a/Questionable/Controller/Steps/Common/NextQuest.cs
+++ b/Questionable/Controller/Steps/Common/NextQuest.cs
@@ -20,6 +20,10 @@ internal static class NextQuest
if (step.NextQuestId == quest.Id)
return null;
+ // probably irrelevant, since pick up is handled elsewhere (and, in particular, checks for aetherytes and stuff)
+ if (questFunctions.GetPriorityQuests().Contains(step.NextQuestId))
+ return null;
+
return new SetQuest(step.NextQuestId, quest.Id, questRegistry, questController, questFunctions, loggerFactory.CreateLogger());
}
}
diff --git a/Questionable/Controller/Steps/Gathering/TurnInDelivery.cs b/Questionable/Controller/Steps/Gathering/TurnInDelivery.cs
index ca6a93d8..08da1440 100644
--- a/Questionable/Controller/Steps/Gathering/TurnInDelivery.cs
+++ b/Questionable/Controller/Steps/Gathering/TurnInDelivery.cs
@@ -44,7 +44,7 @@ internal static class TurnInDelivery
if (addon == null || !LAddon.IsAddonReady(addon))
return ETaskResult.StillRunning;
- ushort remainingAllowances = agentSatisfactionSupply->RemainingAllowances;
+ ushort remainingAllowances = agentSatisfactionSupply->NpcData.RemainingAllowances;
if (remainingAllowances == 0)
{
logger.LogInformation("No remaining weekly allowances");
diff --git a/Questionable/Controller/Steps/Interactions/Action.cs b/Questionable/Controller/Steps/Interactions/Action.cs
index a91983b3..6d4da220 100644
--- a/Questionable/Controller/Steps/Interactions/Action.cs
+++ b/Questionable/Controller/Steps/Interactions/Action.cs
@@ -24,13 +24,18 @@ internal static class Action
ArgumentNullException.ThrowIfNull(step.Action);
- var task = new UseOnObject(step.DataId, step.Action.Value, gameFunctions,
- loggerFactory.CreateLogger());
+ var task = OnObject(step.DataId, step.Action.Value);
if (step.Action.Value.RequiresMount())
return [task];
else
return [mountFactory.Unmount(), task];
}
+
+ public ITask OnObject(uint? dataId, EAction action)
+ {
+ return new UseOnObject(dataId, action, gameFunctions,
+ loggerFactory.CreateLogger());
+ }
}
private sealed class UseOnObject(
diff --git a/Questionable/Controller/Steps/Interactions/Combat.cs b/Questionable/Controller/Steps/Interactions/Combat.cs
index 8776280a..eab500dd 100644
--- a/Questionable/Controller/Steps/Interactions/Combat.cs
+++ b/Questionable/Controller/Steps/Interactions/Combat.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Microsoft.Extensions.DependencyInjection;
+using Questionable.Controller.CombatModules;
using Questionable.Controller.Steps.Common;
using Questionable.Controller.Steps.Shared;
using Questionable.Controller.Utils;
@@ -18,7 +18,9 @@ internal static class Combat
Interact.Factory interactFactory,
Mount.Factory mountFactory,
UseItem.Factory useItemFactory,
- QuestFunctions questFunctions) : ITaskFactory
+ Action.Factory actionFactory,
+ QuestFunctions questFunctions,
+ GameFunctions gameFunctions) : ITaskFactory
{
public IEnumerable CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{
@@ -27,7 +29,8 @@ internal static class Combat
ArgumentNullException.ThrowIfNull(step.EnemySpawnType);
- yield return mountFactory.Unmount();
+ if (gameFunctions.GetMountId() != Mount128Module.MountId)
+ yield return mountFactory.Unmount();
if (step.CombatDelaySecondsAtStart != null)
{
@@ -41,6 +44,7 @@ internal static class Combat
ArgumentNullException.ThrowIfNull(step.DataId);
yield return interactFactory.Interact(step.DataId.Value, quest, EInteractionType.None, true);
+ yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
@@ -52,11 +56,28 @@ internal static class Combat
yield return useItemFactory.OnObject(quest.Id, step.DataId.Value, step.ItemId.Value,
step.CompletionQuestVariablesFlags, true);
+ yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
+ yield return CreateTask(quest, sequence, step);
+ break;
+ }
+
+ case EEnemySpawnType.AfterAction:
+ {
+ ArgumentNullException.ThrowIfNull(step.DataId);
+ ArgumentNullException.ThrowIfNull(step.Action);
+
+ if (!step.Action.Value.RequiresMount())
+ yield return mountFactory.Unmount();
+ yield return actionFactory.OnObject(step.DataId.Value, step.Action.Value);
+ yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
case EEnemySpawnType.AutoOnEnterArea:
+ if (step.CombatDelaySecondsAtStart == null)
+ yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
+
// automatically triggered when entering area, i.e. only unmount
yield return CreateTask(quest, sequence, step);
break;
diff --git a/Questionable/Controller/Steps/Interactions/Emote.cs b/Questionable/Controller/Steps/Interactions/Emote.cs
index 940aabb1..8a5db80e 100644
--- a/Questionable/Controller/Steps/Interactions/Emote.cs
+++ b/Questionable/Controller/Steps/Interactions/Emote.cs
@@ -14,7 +14,8 @@ internal static class Emote
{
public IEnumerable CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{
- if (step.InteractionType is EInteractionType.AcceptQuest or EInteractionType.CompleteQuest)
+ if (step.InteractionType is EInteractionType.AcceptQuest or EInteractionType.CompleteQuest
+ or EInteractionType.SinglePlayerDuty)
{
if (step.Emote == null)
return [];
diff --git a/Questionable/Controller/Steps/Interactions/Interact.cs b/Questionable/Controller/Steps/Interactions/Interact.cs
index 0482d88b..b79fa904 100644
--- a/Questionable/Controller/Steps/Interactions/Interact.cs
+++ b/Questionable/Controller/Steps/Interactions/Interact.cs
@@ -28,6 +28,9 @@ internal static class Interact
if (step.Emote != null)
yield break;
+ if (step.ChatMessage != null)
+ yield break;
+
if (step.DataId == null)
yield break;
}
@@ -174,6 +177,14 @@ internal static class Interact
logger.LogInformation("Interaction was most likely triggered");
_interactionState = EInteractionState.InteractionConfirmed;
}
+ else if (dataId is >= 1047901 and <= 1047905 &&
+ condition[ConditionFlag.Disguised] &&
+ flag == ConditionFlag.Mounting71 && // why the fuck is this the flag that's used, instead of OccupiedIn[Quest]Event
+ value)
+ {
+ logger.LogInformation("(A Knight of Alexandria) Interaction was most likely triggered");
+ _interactionState = EInteractionState.InteractionConfirmed;
+ }
}
private enum EInteractionState
diff --git a/Questionable/Controller/Steps/Interactions/Say.cs b/Questionable/Controller/Steps/Interactions/Say.cs
index 7b8855a1..3d917b33 100644
--- a/Questionable/Controller/Steps/Interactions/Say.cs
+++ b/Questionable/Controller/Steps/Interactions/Say.cs
@@ -17,7 +17,12 @@ internal static class Say
{
public IEnumerable CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{
- if (step.InteractionType != EInteractionType.Say)
+ if (step.InteractionType is EInteractionType.AcceptQuest or EInteractionType.CompleteQuest)
+ {
+ if (step.ChatMessage == null)
+ return [];
+ }
+ else if (step.InteractionType != EInteractionType.Say)
return [];
diff --git a/Questionable/Controller/Steps/Interactions/UseItem.cs b/Questionable/Controller/Steps/Interactions/UseItem.cs
index 2481e8f5..1e5d51bd 100644
--- a/Questionable/Controller/Steps/Interactions/UseItem.cs
+++ b/Questionable/Controller/Steps/Interactions/UseItem.cs
@@ -23,8 +23,6 @@ namespace Questionable.Controller.Steps.Interactions;
internal static class UseItem
{
- public const int VesperBayAetheryteTicket = 30362;
-
internal sealed class Factory(
Mount.Factory mountFactory,
MoveTo.Factory moveFactory,
@@ -47,7 +45,7 @@ internal static class UseItem
ArgumentNullException.ThrowIfNull(step.ItemId);
- if (step.ItemId == VesperBayAetheryteTicket)
+ if (step.ItemId == QuestStep.VesperBayAetheryteTicket)
{
unsafe
{
@@ -196,7 +194,7 @@ internal static class UseItem
if (StartingCombat && condition[ConditionFlag.InCombat])
return ETaskResult.TaskComplete;
- if (ItemId == VesperBayAetheryteTicket && _usedItem)
+ if (ItemId == QuestStep.VesperBayAetheryteTicket && _usedItem)
{
InventoryManager* inventoryManager = InventoryManager.Instance();
if (inventoryManager == null)
@@ -228,7 +226,7 @@ internal static class UseItem
private TimeSpan GetRetryDelay()
{
- if (ItemId == VesperBayAetheryteTicket)
+ if (ItemId == QuestStep.VesperBayAetheryteTicket)
return TimeSpan.FromSeconds(11);
else
return TimeSpan.FromSeconds(5);
diff --git a/Questionable/Controller/Steps/Shared/AethernetShortcut.cs b/Questionable/Controller/Steps/Shared/AethernetShortcut.cs
index 9297297e..8df6c49a 100644
--- a/Questionable/Controller/Steps/Shared/AethernetShortcut.cs
+++ b/Questionable/Controller/Steps/Shared/AethernetShortcut.cs
@@ -24,6 +24,7 @@ internal static class AethernetShortcut
MovementController movementController,
AetheryteFunctions aetheryteFunctions,
GameFunctions gameFunctions,
+ QuestFunctions questFunctions,
IClientState clientState,
AetheryteData aetheryteData,
TerritoryData territoryData,
@@ -46,8 +47,8 @@ internal static class AethernetShortcut
public ITask Use(EAetheryteLocation from, EAetheryteLocation to, SkipAetheryteCondition? skipConditions = null)
{
return new UseAethernetShortcut(from, to, skipConditions ?? new(),
- loggerFactory.CreateLogger(), aetheryteFunctions, gameFunctions, clientState,
- aetheryteData, territoryData, lifestreamIpc, movementController, condition);
+ loggerFactory.CreateLogger(), aetheryteFunctions, gameFunctions, questFunctions,
+ clientState, aetheryteData, territoryData, lifestreamIpc, movementController, condition);
}
}
@@ -58,6 +59,7 @@ internal static class AethernetShortcut
ILogger logger,
AetheryteFunctions aetheryteFunctions,
GameFunctions gameFunctions,
+ QuestFunctions questFunctions,
IClientState clientState,
AetheryteData aetheryteData,
TerritoryData territoryData,
@@ -90,6 +92,20 @@ internal static class AethernetShortcut
return false;
}
+ if (skipConditions.QuestsCompleted.Count > 0 &&
+ skipConditions.QuestsCompleted.All(questFunctions.IsQuestComplete))
+ {
+ logger.LogInformation("Skipping aethernet shortcut, all prequisite quests are complete");
+ return true;
+ }
+
+ if (skipConditions.QuestsAccepted.Count > 0 &&
+ skipConditions.QuestsAccepted.All(questFunctions.IsQuestAccepted))
+ {
+ logger.LogInformation("Skipping aethernet shortcut, all prequisite quests are accepted");
+ return true;
+ }
+
if (skipConditions.AetheryteLocked != null &&
!aetheryteFunctions.IsAetheryteUnlocked(skipConditions.AetheryteLocked.Value))
{
@@ -126,10 +142,10 @@ internal static class AethernetShortcut
logger.LogInformation("Moving to S9 aetheryte");
List nearbyPoints =
[
- new(7.225532f, 8.467899f, -7.1670876f),
- new(7.177844f, 8.467899f, 7.2216787f),
- new(-7.0762224f, 8.467898f, 7.1924725f),
- new(-7.1289554f, 8.467898f, -7.0594683f)
+ new(0, 8.442986f, 9),
+ new(9, 8.442986f, 0),
+ new(-9, 8.442986f, 0),
+ new(0, 8.442986f, -9),
];
Vector3 closestPoint = nearbyPoints.MinBy(x => (playerPosition - x).Length());
diff --git a/Questionable/Controller/Steps/Shared/AetheryteShortcut.cs b/Questionable/Controller/Steps/Shared/AetheryteShortcut.cs
index 2d72afd1..0ac347a2 100644
--- a/Questionable/Controller/Steps/Shared/AetheryteShortcut.cs
+++ b/Questionable/Controller/Steps/Shared/AetheryteShortcut.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Numerics;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
@@ -93,6 +94,20 @@ internal static class AetheryteShortcut
return true;
}
+ if (skipConditions.QuestsCompleted.Count > 0 &&
+ skipConditions.QuestsCompleted.All(questFunctions.IsQuestComplete))
+ {
+ logger.LogInformation("Skipping aetheryte, all prequisite quests are complete");
+ return true;
+ }
+
+ if (skipConditions.QuestsAccepted.Count > 0 &&
+ skipConditions.QuestsAccepted.All(questFunctions.IsQuestAccepted))
+ {
+ logger.LogInformation("Skipping aetheryte, all prequisite quests are accepted");
+ return true;
+ }
+
if (skipConditions.AetheryteLocked != null &&
!aetheryteFunctions.IsAetheryteUnlocked(skipConditions.AetheryteLocked.Value))
{
@@ -122,7 +137,7 @@ internal static class AetheryteShortcut
if (skipConditions.NearPosition is { } nearPosition &&
- clientState.TerritoryType == step.TerritoryId)
+ clientState.TerritoryType == nearPosition.TerritoryId)
{
if (Vector3.Distance(nearPosition.Position, clientState.LocalPlayer!.Position) <=
nearPosition.MaximumDistance)
diff --git a/Questionable/Controller/Steps/Shared/GatheringRequiredItems.cs b/Questionable/Controller/Steps/Shared/GatheringRequiredItems.cs
index 6e821e6a..b500046b 100644
--- a/Questionable/Controller/Steps/Shared/GatheringRequiredItems.cs
+++ b/Questionable/Controller/Steps/Shared/GatheringRequiredItems.cs
@@ -82,6 +82,7 @@ internal static class GatheringRequiredItems
"Wait(navmesh ready)");
yield return CreateStartGatheringTask(gatheringPointId, requiredGatheredItems);
+ yield return new WaitAtEnd.WaitDelay();
}
}
diff --git a/Questionable/Controller/Steps/Shared/MoveTo.cs b/Questionable/Controller/Steps/Shared/MoveTo.cs
index a24fb2f0..28562a0b 100644
--- a/Questionable/Controller/Steps/Shared/MoveTo.cs
+++ b/Questionable/Controller/Steps/Shared/MoveTo.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Numerics;
using Dalamud.Game.ClientState.Conditions;
@@ -67,7 +68,7 @@ internal static class MoveTo
public ITask Move(MoveParams moveParams)
{
return new MoveInternal(moveParams, movementController, gameFunctions,
- loggerFactory.CreateLogger(), condition, dataManager);
+ loggerFactory.CreateLogger(), clientState, dataManager);
}
public ITask Land()
@@ -162,21 +163,23 @@ internal static class MoveTo
private readonly string _cannotExecuteAtThisTime;
private readonly MovementController _movementController;
private readonly ILogger _logger;
- private readonly ICondition _condition;
+ private readonly IClientState _clientState;
private readonly Action _startAction;
private readonly Vector3 _destination;
+ private readonly MoveParams _moveParams;
+ private bool _canRestart;
public MoveInternal(MoveParams moveParams,
MovementController movementController,
GameFunctions gameFunctions,
ILogger logger,
- ICondition condition,
+ IClientState clientState,
IDataManager dataManager)
{
_movementController = movementController;
_logger = logger;
- _condition = condition;
+ _clientState = clientState;
_cannotExecuteAtThisTime = dataManager.GetString(579, x => x.Text)!;
_destination = moveParams.Destination;
@@ -206,6 +209,9 @@ internal static class MoveTo
ignoreDistanceToObject: moveParams.IgnoreDistanceToObject,
land: moveParams.Land);
}
+
+ _moveParams = moveParams;
+ _canRestart = moveParams.RestartNavigation;
}
public bool Start()
@@ -224,6 +230,22 @@ internal static class MoveTo
if (movementStartedAt == DateTime.MaxValue || movementStartedAt.AddSeconds(2) >= DateTime.Now)
return ETaskResult.StillRunning;
+ if (_canRestart &&
+ Vector3.Distance(_clientState.LocalPlayer!.Position, _destination) >
+ (_moveParams.StopDistance ?? QuestStep.DefaultStopDistance) + 5f)
+ {
+ _canRestart = false;
+ if (_clientState.TerritoryType == _moveParams.TerritoryId)
+ {
+ _logger.LogInformation("Looks like movement was interrupted, re-attempting to move");
+ _startAction();
+ return ETaskResult.StillRunning;
+ }
+ else
+ _logger.LogInformation(
+ "Looks like movement was interrupted, do nothing since we're in a different territory now");
+ }
+
return ETaskResult.TaskComplete;
}
@@ -231,8 +253,7 @@ internal static class MoveTo
public bool OnErrorToast(SeString message)
{
- if (GameFunctions.GameStringEquals(_cannotExecuteAtThisTime, message.TextValue) &&
- _condition[ConditionFlag.Diving])
+ if (GameFunctions.GameStringEquals(_cannotExecuteAtThisTime, message.TextValue))
return true;
return false;
@@ -248,7 +269,8 @@ internal static class MoveTo
bool Sprint = true,
bool Fly = false,
bool Land = false,
- bool IgnoreDistanceToObject = false)
+ bool IgnoreDistanceToObject = false,
+ bool RestartNavigation = true)
{
public MoveParams(QuestStep step, Vector3 destination)
: this(step.TerritoryId,
@@ -259,7 +281,8 @@ internal static class MoveTo
step.Sprint != false,
step.Fly == true,
step.Land == true,
- step.IgnoreDistanceToObject == true)
+ step.IgnoreDistanceToObject == true,
+ step.RestartNavigationIfCancelled != false)
{
}
}
diff --git a/Questionable/Controller/Steps/Shared/SkipCondition.cs b/Questionable/Controller/Steps/Shared/SkipCondition.cs
index 1d2420cf..1c8a3fa3 100644
--- a/Questionable/Controller/Steps/Shared/SkipCondition.cs
+++ b/Questionable/Controller/Steps/Shared/SkipCondition.cs
@@ -204,7 +204,7 @@ internal static class SkipCondition
}
}
- if (skipConditions.NearPosition is { } nearPosition && clientState.TerritoryType == step.TerritoryId)
+ if (skipConditions.NearPosition is { } nearPosition && clientState.TerritoryType == nearPosition.TerritoryId)
{
if (Vector3.Distance(nearPosition.Position, clientState.LocalPlayer!.Position) <=
nearPosition.MaximumDistance)
diff --git a/Questionable/Data/QuestData.cs b/Questionable/Data/QuestData.cs
index 3a5f64ac..c2a8aba3 100644
--- a/Questionable/Data/QuestData.cs
+++ b/Questionable/Data/QuestData.cs
@@ -8,7 +8,8 @@ using LLib.GameData;
using Lumina.Excel.GeneratedSheets;
using Questionable.Model;
using Questionable.Model.Questing;
-using Quest = Lumina.Excel.GeneratedSheets.Quest;
+using Leve = Lumina.Excel.GeneratedSheets2.Leve;
+using Quest = Lumina.Excel.GeneratedSheets2.Quest;
namespace Questionable.Data;
@@ -62,7 +63,7 @@ internal sealed class QuestData
// workaround because the game doesn't require completion of the CT questline through normal means
QuestInfo aTimeToEveryPurpose = (QuestInfo)_quests[new QuestId(425)];
- aTimeToEveryPurpose.AddPreviousQuest(new QuestId(495));
+ aTimeToEveryPurpose.AddPreviousQuest(new QuestInfo.PreviousQuestInfo(new QuestId(495)));
}
public IQuestInfo GetQuestInfo(ElementId elementId)
diff --git a/Questionable/Data/TerritoryData.cs b/Questionable/Data/TerritoryData.cs
index 0175cf6d..0b20d9a9 100644
--- a/Questionable/Data/TerritoryData.cs
+++ b/Questionable/Data/TerritoryData.cs
@@ -12,7 +12,7 @@ internal sealed class TerritoryData
{
private readonly ImmutableDictionary _territoryNames;
private readonly ImmutableHashSet _territoriesWithMount;
- private readonly ImmutableHashSet _dutyTerritories;
+ private readonly ImmutableDictionary _dutyTerritories;
private readonly ImmutableDictionary _instanceNames;
public TerritoryData(IDataManager dataManager)
@@ -35,8 +35,7 @@ internal sealed class TerritoryData
_dutyTerritories = dataManager.GetExcelSheet()!
.Where(x => x.RowId > 0 && x.ContentFinderCondition.Row != 0)
- .Select(x => (ushort)x.RowId)
- .ToImmutableHashSet();
+ .ToImmutableDictionary(x => (ushort)x.RowId, x => x.ContentFinderCondition.Value!.ContentType.Row);
_instanceNames = dataManager.GetExcelSheet()!
.Where(x => x.RowId > 0 && x.Content != 0 && x.ContentLinkType == 1 && x.ContentType.Row != 6)
@@ -56,7 +55,10 @@ internal sealed class TerritoryData
public bool CanUseMount(ushort territoryId) => _territoriesWithMount.Contains(territoryId);
- public bool IsDutyInstance(ushort territoryId) => _dutyTerritories.Contains(territoryId);
+ public bool IsDutyInstance(ushort territoryId) => _dutyTerritories.ContainsKey(territoryId);
+
+ public bool IsQuestBattleInstance(ushort territoryId) =>
+ _dutyTerritories.TryGetValue(territoryId, out uint contentType) && contentType == 7;
public string? GetInstanceName(ushort instanceId) => _instanceNames.GetValueOrDefault(instanceId);
}
diff --git a/Questionable/External/QuestionableIpc.cs b/Questionable/External/QuestionableIpc.cs
new file mode 100644
index 00000000..e73053ef
--- /dev/null
+++ b/Questionable/External/QuestionableIpc.cs
@@ -0,0 +1,31 @@
+using System;
+using Dalamud.Plugin;
+using Dalamud.Plugin.Ipc;
+using Questionable.Controller;
+
+namespace Questionable.External;
+
+internal sealed class QuestionableIpc : IDisposable
+{
+ private const string IpcIsRunning = "Questionable.IsRunning";
+ private const string IpcGetCurrentQuestId = "Questionable.GetCurrentQuestId";
+
+ private readonly ICallGateProvider _isRunning;
+ private readonly ICallGateProvider _getCurrentQuestId;
+
+ public QuestionableIpc(QuestController questController, IDalamudPluginInterface pluginInterface)
+ {
+ _isRunning = pluginInterface.GetIpcProvider(IpcIsRunning);
+ _isRunning.RegisterFunc(() => questController.IsRunning);
+
+ _getCurrentQuestId = pluginInterface.GetIpcProvider(IpcGetCurrentQuestId);
+ _getCurrentQuestId.RegisterFunc(() => questController.CurrentQuest?.Quest.Id.ToString());
+ }
+
+
+ public void Dispose()
+ {
+ _getCurrentQuestId.UnregisterFunc();
+ _isRunning.UnregisterFunc();
+ }
+}
diff --git a/Questionable/Functions/GameFunctions.cs b/Questionable/Functions/GameFunctions.cs
index fda0c60d..90703500 100644
--- a/Questionable/Functions/GameFunctions.cs
+++ b/Questionable/Functions/GameFunctions.cs
@@ -81,8 +81,9 @@ internal sealed unsafe class GameFunctions
if (_questFunctions.IsQuestAccepted(new QuestId(3304)) && _condition[ConditionFlag.Mounted])
{
- BattleChara* battleChara = (BattleChara*)(_clientState.LocalPlayer?.Address ?? 0);
- if (battleChara != null && battleChara->Mount.MountId == 198) // special quest amaro, not the normal one
+ // special quest amaro, not the normal one
+ // TODO Check if this also applies to beast tribe mounts
+ if (GetMountId() == 198)
return true;
}
@@ -92,6 +93,15 @@ internal sealed unsafe class GameFunctions
playerState->IsAetherCurrentZoneComplete(aetherCurrentCompFlgSet);
}
+ public ushort? GetMountId()
+ {
+ BattleChara* battleChara = (BattleChara*)(_clientState.LocalPlayer?.Address ?? 0);
+ if (battleChara != null && battleChara->Mount.MountId != 0)
+ return battleChara->Mount.MountId;
+ else
+ return null;
+ }
+
public bool IsFlyingUnlockedInCurrentZone() => IsFlyingUnlocked(_clientState.TerritoryType);
public bool IsAetherCurrentUnlocked(uint aetherCurrentId)
@@ -210,10 +220,10 @@ internal sealed unsafe class GameFunctions
return false;
}
- public bool UseAction(IGameObject gameObject, EAction action)
+ public bool UseAction(IGameObject gameObject, EAction action, bool checkCanUse = true)
{
var actionRow = _dataManager.GetExcelSheet()!.GetRow((uint)action)!;
- if (!ActionManager.CanUseActionOnTarget((uint)action, (GameObject*)gameObject.Address))
+ if (checkCanUse && !ActionManager.CanUseActionOnTarget((uint)action, (GameObject*)gameObject.Address))
{
_logger.LogWarning("Can not use action {Action} on target {Target}", action, gameObject);
return false;
@@ -398,7 +408,7 @@ internal sealed unsafe class GameFunctions
if (!_clientState.IsLoggedIn || _clientState.LocalPlayer == null)
return true;
- if (IsLoadingScreenVisible(true))
+ if (IsLoadingScreenVisible())
return true;
if (_condition[ConditionFlag.Crafting])
@@ -431,25 +441,23 @@ internal sealed unsafe class GameFunctions
if (!AgentSatisfactionSupply.Instance()->IsAgentActive())
return false;
- var flags = _condition.AsReadOnlySet();
+ var flags = _condition.AsReadOnlySet().ToHashSet();
+ flags.Remove(ConditionFlag.InDutyQueue); // irrelevant
return flags.Count == 2 &&
flags.Contains(ConditionFlag.NormalConditions) &&
flags.Contains(ConditionFlag.OccupiedInQuestEvent);
}
- public bool IsLoadingScreenVisible(bool all)
+ public bool IsLoadingScreenVisible()
{
if (_gameGui.TryGetAddonByName("FadeMiddle", out AtkUnitBase* fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
return true;
- if (all)
- {
- if (_gameGui.TryGetAddonByName("FadeBack", out fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
- return true;
+ if (_gameGui.TryGetAddonByName("FadeBack", out fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
+ return true;
- if (_gameGui.TryGetAddonByName("NowLoading", out fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
- return true;
- }
+ if (_gameGui.TryGetAddonByName("NowLoading", out fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
+ return true;
return false;
}
diff --git a/Questionable/Functions/QuestFunctions.cs b/Questionable/Functions/QuestFunctions.cs
index 7e360cd6..3f48db39 100644
--- a/Questionable/Functions/QuestFunctions.cs
+++ b/Questionable/Functions/QuestFunctions.cs
@@ -135,17 +135,14 @@ internal sealed unsafe class QuestFunctions
currentQuest = new QuestId(questManager->NormalQuests[trackedQuest.Index].QuestId);
if (_questRegistry.IsKnownQuest(currentQuest))
return (currentQuest, QuestManager.GetQuestSequence(currentQuest.Value));
- break;
+ continue;
case 2: // leve
currentQuest = new LeveId(questManager->LeveQuests[trackedQuest.Index].LeveId);
if (_questRegistry.IsKnownQuest(currentQuest))
return (currentQuest, questManager->GetLeveQuestById(currentQuest.Value)->Sequence);
- break;
+ continue;
}
-
- if (_questRegistry.IsKnownQuest(currentQuest))
- return (currentQuest, QuestManager.GetQuestSequence(currentQuest.Value));
}
ElementId? priorityQuest = GetNextPriorityQuestThatCanBeAccepted();
@@ -254,7 +251,8 @@ internal sealed unsafe class QuestFunctions
InventoryManager* inventoryManager = InventoryManager.Instance();
int gil = inventoryManager->GetItemCountInContainer(1, InventoryType.Currency);
- return GetPriorityQuestsThatCanBeAccepted()
+ return GetPriorityQuests()
+ .Where(IsReadyToAcceptQuest)
.Where(x =>
{
if (!_questRegistry.TryGetQuest(x, out Quest? quest))
@@ -264,14 +262,7 @@ internal sealed unsafe class QuestFunctions
if (firstStep == null)
return false;
- if (firstStep.AetheryteShortcut != null)
- return true;
-
- if (firstStep is
- { InteractionType: EInteractionType.UseItem, ItemId: UseItem.VesperBayAetheryteTicket })
- return true;
-
- return false;
+ return firstStep.IsTeleportableForPriorityQuests();
})
.FirstOrDefault(x =>
{
@@ -311,7 +302,7 @@ internal sealed unsafe class QuestFunctions
return 1000 * quest.AllSteps().Count(x => x.Step.AetheryteShortcut != null);
}
- private List GetPriorityQuestsThatCanBeAccepted()
+ public List GetPriorityQuests()
{
List priorityQuests =
[
@@ -349,7 +340,6 @@ internal sealed unsafe class QuestFunctions
return priorityQuests
.Where(_questRegistry.IsKnownQuest)
- .Where(IsReadyToAcceptQuest)
.ToList();
}
@@ -360,6 +350,9 @@ internal sealed unsafe class QuestFunctions
{
if (IsQuestAccepted(questId))
return false;
+
+ if (QuestManager.Instance()->IsDailyQuestCompleted(questId.Value))
+ return false;
}
else
{
@@ -494,7 +487,8 @@ internal sealed unsafe class QuestFunctions
if (questInfo.PreviousQuests.Count == 0)
return true;
- var completedQuests = questInfo.PreviousQuests.Count(x => IsQuestComplete(x) || x.Equals(extraCompletedQuest));
+ var completedQuests = questInfo.PreviousQuests.Count(x =>
+ HasEnoughProgressOnPreviousQuest(x) || x.QuestId.Equals(extraCompletedQuest));
if (questInfo.PreviousQuestJoin == QuestInfo.QuestJoin.All &&
questInfo.PreviousQuests.Count == completedQuests)
return true;
@@ -504,6 +498,20 @@ internal sealed unsafe class QuestFunctions
return false;
}
+ private bool HasEnoughProgressOnPreviousQuest(QuestInfo.PreviousQuestInfo previousQuestInfo)
+ {
+ if (IsQuestComplete(previousQuestInfo.QuestId))
+ return true;
+
+ if (previousQuestInfo.Sequence != 0 && IsQuestAccepted(previousQuestInfo.QuestId))
+ {
+ var progress = GetQuestProgressInfo(previousQuestInfo.QuestId);
+ return progress != null && progress.Sequence >= previousQuestInfo.Sequence;
+ }
+
+ return false;
+ }
+
private static bool HasCompletedPreviousInstances(QuestInfo questInfo)
{
if (questInfo.PreviousInstanceContent.Count == 0)
diff --git a/Questionable/Model/LeveInfo.cs b/Questionable/Model/LeveInfo.cs
index b446da9a..d50ac82e 100644
--- a/Questionable/Model/LeveInfo.cs
+++ b/Questionable/Model/LeveInfo.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
using LLib.GameData;
-using Lumina.Excel.GeneratedSheets;
+using Lumina.Excel.GeneratedSheets2;
using Questionable.Model.Questing;
namespace Questionable.Model;
@@ -14,7 +14,7 @@ internal sealed class LeveInfo : IQuestInfo
Level = leve.ClassJobLevel;
JournalGenre = leve.JournalGenre.Row;
SortKey = QuestId.Value;
- IssuerDataId = leve.LevelLevemete.Value!.Object;
+ IssuerDataId = leve.LevelLevemete.Value!.Object.Row;
ClassJobs = QuestInfoUtils.AsList(leve.ClassJobCategory.Value!);
Expansion = (EExpansionVersion)leve.LevelLevemete.Value.Territory.Value!.ExVersion.Row;
}
diff --git a/Questionable/Model/QuestInfo.cs b/Questionable/Model/QuestInfo.cs
index 2c9c2951..9b1214b9 100644
--- a/Questionable/Model/QuestInfo.cs
+++ b/Questionable/Model/QuestInfo.cs
@@ -5,7 +5,7 @@ using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using JetBrains.Annotations;
using LLib.GameData;
using Questionable.Model.Questing;
-using ExcelQuest = Lumina.Excel.GeneratedSheets.Quest;
+using ExcelQuest = Lumina.Excel.GeneratedSheets2.Quest;
namespace Questionable.Model;
@@ -31,13 +31,18 @@ internal sealed class QuestInfo : IQuestInfo
};
Name = $"{quest.Name}{suffix}";
- Level = quest.ClassJobLevel0;
- IssuerDataId = quest.IssuerStart;
+ Level = quest.ClassJobLevel[0];
+ IssuerDataId = quest.IssuerStart.Row;
IsRepeatable = quest.IsRepeatable;
- PreviousQuests = quest.PreviousQuest
- .Select(x => new QuestId((ushort)(x.Row & 0xFFFF)))
- .Where(x => x.Value != 0)
- .ToImmutableList();
+ PreviousQuests =
+ new List
+ {
+ new(new QuestId((ushort)(quest.PreviousQuest[0].Row & 0xFFFF)), quest.Unknown7),
+ new(new QuestId((ushort)(quest.PreviousQuest[1].Row & 0xFFFF))),
+ new(new QuestId((ushort)(quest.PreviousQuest[2].Row & 0xFFFF)))
+ }
+ .Where(x => x.QuestId.Value != 0)
+ .ToImmutableList();
PreviousQuestJoin = (QuestJoin)quest.PreviousQuestJoin;
QuestLocks = quest.QuestLock
.Select(x => new QuestId((ushort)(x.Row & 0xFFFFF)))
@@ -47,7 +52,7 @@ internal sealed class QuestInfo : IQuestInfo
JournalGenre = quest.JournalGenre?.Row;
SortKey = quest.SortKey;
IsMainScenarioQuest = quest.JournalGenre?.Value?.JournalCategory?.Value?.JournalSection?.Row is 0 or 1;
- CompletesInstantly = quest.ToDoCompleteSeq[0] == 0;
+ CompletesInstantly = quest.TodoParams[0].ToDoCompleteSeq == 0;
PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.Row).Where(x => x != 0).ToList();
PreviousInstanceContentJoin = (QuestJoin)quest.InstanceContentJoin;
GrandCompany = (GrandCompany)quest.GrandCompany.Row;
@@ -64,7 +69,7 @@ internal sealed class QuestInfo : IQuestInfo
public ushort Level { get; }
public uint IssuerDataId { get; }
public bool IsRepeatable { get; }
- public ImmutableList PreviousQuests { get; set; }
+ public ImmutableList PreviousQuests { get; set; }
public QuestJoin PreviousQuestJoin { get; }
public ImmutableList QuestLocks { get; }
public QuestJoin QuestLockJoin { get; }
@@ -89,8 +94,10 @@ internal sealed class QuestInfo : IQuestInfo
AtLeastOne = 2,
}
- public void AddPreviousQuest(QuestId questId)
+ public void AddPreviousQuest(PreviousQuestInfo questId)
{
PreviousQuests = [..PreviousQuests, questId];
}
+
+ public sealed record PreviousQuestInfo(QuestId QuestId, byte Sequence = 0);
}
diff --git a/Questionable/Model/QuestInfoUtils.cs b/Questionable/Model/QuestInfoUtils.cs
index 68845884..4f44fd4a 100644
--- a/Questionable/Model/QuestInfoUtils.cs
+++ b/Questionable/Model/QuestInfoUtils.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using LLib.GameData;
-using Lumina.Excel.GeneratedSheets;
+using Lumina.Excel.GeneratedSheets2;
namespace Questionable.Model;
@@ -57,8 +57,8 @@ internal static class QuestInfoUtils
{ EClassJob.Dancer, classJobCategory.DNC },
{ EClassJob.Reaper, classJobCategory.RPR },
{ EClassJob.Sage, classJobCategory.SGE },
- { EClassJob.Viper, classJobCategory.VPR },
- { EClassJob.Pictomancer, classJobCategory.PCT }
+ { EClassJob.Viper, classJobCategory.Unknown1 },
+ { EClassJob.Pictomancer, classJobCategory.Unknown2 }
}
.Where(y => y.Value)
.Select(y => y.Key)
diff --git a/Questionable/QuestionablePlugin.cs b/Questionable/QuestionablePlugin.cs
index 207cf2b1..5c74c00b 100644
--- a/Questionable/QuestionablePlugin.cs
+++ b/Questionable/QuestionablePlugin.cs
@@ -120,6 +120,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
+ serviceCollection.AddSingleton();
}
private static void AddTaskFactories(ServiceCollection serviceCollection)
@@ -184,6 +185,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
+ serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
}
@@ -221,6 +223,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
+ serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
serviceCollection.AddSingleton(sp => sp.GetRequiredService());
}
@@ -235,6 +238,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceProvider.GetRequiredService();
serviceProvider.GetRequiredService();
serviceProvider.GetRequiredService();
+ serviceProvider.GetRequiredService();
serviceProvider.GetRequiredService();
}
diff --git a/Questionable/Validation/EIssueType.cs b/Questionable/Validation/EIssueType.cs
index 0f51ce6b..75512481 100644
--- a/Questionable/Validation/EIssueType.cs
+++ b/Questionable/Validation/EIssueType.cs
@@ -17,4 +17,5 @@ public enum EIssueType
UnexpectedCompleteQuestStep,
InvalidAethernetShortcut,
InvalidExcelRef,
+ ClassQuestWithoutAetheryteShortcut,
}
diff --git a/Questionable/Validation/Validators/ClassQuestShouldHaveShortcutValidator.cs b/Questionable/Validation/Validators/ClassQuestShouldHaveShortcutValidator.cs
new file mode 100644
index 00000000..680ef124
--- /dev/null
+++ b/Questionable/Validation/Validators/ClassQuestShouldHaveShortcutValidator.cs
@@ -0,0 +1,51 @@
+using System.Collections.Generic;
+using LLib.GameData;
+using Questionable.Data;
+using Questionable.Model;
+using Questionable.Model.Questing;
+
+namespace Questionable.Validation.Validators;
+
+internal sealed class ClassQuestShouldHaveShortcutValidator : IQuestValidator
+{
+ private readonly HashSet _classJobQuests = [];
+
+ public ClassQuestShouldHaveShortcutValidator(QuestData questData)
+ {
+ foreach (EClassJob classJob in typeof(EClassJob).GetEnumValues())
+ {
+ if (classJob == EClassJob.Adventurer)
+ continue;
+
+ foreach (var questInfo in questData.GetClassJobQuests(classJob))
+ {
+ // TODO maybe remove the level check
+ if (questInfo.Level > 1)
+ _classJobQuests.Add(questInfo.QuestId);
+ }
+ }
+ }
+
+ public IEnumerable Validate(Quest quest)
+ {
+ if (!_classJobQuests.Contains(quest.Id))
+ yield break;
+
+ var firstStep = quest.FindSequence(0)?.FindStep(0);
+ if (firstStep == null)
+ yield break;
+
+ if (firstStep.IsTeleportableForPriorityQuests())
+ yield break;
+
+ yield return new ValidationIssue
+ {
+ ElementId = quest.Id,
+ Sequence = 0,
+ Step = 0,
+ Type = EIssueType.ClassQuestWithoutAetheryteShortcut,
+ Severity = EIssueSeverity.Error,
+ Description = "Class quest should have an aetheryte shortcut to be done automatically",
+ };
+ }
+}
diff --git a/Questionable/Windows/DebugOverlay.cs b/Questionable/Windows/DebugOverlay.cs
index e629fe01..c41daf60 100644
--- a/Questionable/Windows/DebugOverlay.cs
+++ b/Questionable/Windows/DebugOverlay.cs
@@ -45,6 +45,8 @@ internal sealed class DebugOverlay : Window
Size = ImGui.GetIO().DisplaySize;
SizeCondition = ImGuiCond.Always;
IsOpen = true;
+ ShowCloseButton = false;
+ RespectCloseHotkey = false;
}
public ElementId? HighlightedQuest { get; set; }
diff --git a/Questionable/Windows/QuestComponents/ActiveQuestComponent.cs b/Questionable/Windows/QuestComponents/ActiveQuestComponent.cs
index 6d4a4384..b1ffd40b 100644
--- a/Questionable/Windows/QuestComponents/ActiveQuestComponent.cs
+++ b/Questionable/Windows/QuestComponents/ActiveQuestComponent.cs
@@ -177,7 +177,7 @@ internal sealed partial class ActiveQuestComponent
{
using var _ = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudYellow);
ImGui.TextUnformatted(
- $"Next Quest: {Shorten(currentQuest.Quest.Info.Name)} / {currentQuest.Sequence} / {currentQuest.Step}");
+ $"Next Quest: {Shorten(nextQuest.Quest.Info.Name)} / {nextQuest.Sequence} / {nextQuest.Step}");
}
}
}
diff --git a/Questionable/Windows/QuestComponents/CreationUtilsComponent.cs b/Questionable/Windows/QuestComponents/CreationUtilsComponent.cs
index 33fa831c..ab73c25d 100644
--- a/Questionable/Windows/QuestComponents/CreationUtilsComponent.cs
+++ b/Questionable/Windows/QuestComponents/CreationUtilsComponent.cs
@@ -110,6 +110,18 @@ internal sealed class CreationUtilsComponent
}
#endif
+#if false
+ var questManager = QuestManager.Instance();
+ if (questManager != null)
+ {
+ for (int i = 0; i < questManager->DailyQuests.Length; ++i)
+ {
+ var dailyQuest = questManager->DailyQuests[i];
+ ImGui.Text($"Daily Quest {i}: {dailyQuest.QuestId}, {dailyQuest.IsCompleted}");
+ }
+ }
+#endif
+
#if false
var director = UIState.Instance()->DirectorTodo.Director;
if (director != null)
diff --git a/Questionable/Windows/QuestComponents/EventInfoComponent.cs b/Questionable/Windows/QuestComponents/EventInfoComponent.cs
index 12e3f497..fa94117d 100644
--- a/Questionable/Windows/QuestComponents/EventInfoComponent.cs
+++ b/Questionable/Windows/QuestComponents/EventInfoComponent.cs
@@ -20,8 +20,7 @@ internal sealed class EventInfoComponent
{
private readonly List _eventQuests =
[
- new EventQuest("Moonfire Faire", [new(5182), new(5183)],
- new DateTime(new DateOnly(2024, 8, 26), new TimeOnly(14, 59), DateTimeKind.Utc)),
+ new("The Rising", [new(5015), new(5016)], AtDailyReset(new(2024, 9, 11))),
];
private readonly QuestData _questData;
@@ -47,6 +46,11 @@ internal sealed class EventInfoComponent
_pluginInterface = pluginInterface;
}
+ private static DateTime AtDailyReset(DateOnly date)
+ {
+ return new DateTime(date, new TimeOnly(14, 59), DateTimeKind.Utc);
+ }
+
public bool ShouldDraw => _configuration.General.ShowIncompleteSeasonalEvents && _eventQuests.Any(IsIncomplete);
public void Draw()
@@ -75,10 +79,10 @@ internal sealed class EventInfoComponent
width -= ImGui.CalcTextSize(FontAwesomeIcon.Check.ToIconString()).X;
List startableQuests = eventQuest.QuestIds.Where(x =>
- _questRegistry.IsKnownQuest(x) &&
- _questFunctions.IsReadyToAcceptQuest(x) &&
- x != _questController.StartedQuest?.Quest.Id &&
- x != _questController.NextQuest?.Quest.Id)
+ _questRegistry.IsKnownQuest(x) &&
+ _questFunctions.IsReadyToAcceptQuest(x) &&
+ x != _questController.StartedQuest?.Quest.Id &&
+ x != _questController.NextQuest?.Quest.Id)
.ToList();
if (startableQuests.Count == 0)
width = 0;
diff --git a/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs b/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs
index d181d45a..4fac3f95 100644
--- a/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs
+++ b/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs
@@ -19,19 +19,22 @@ internal sealed class QuestTooltipComponent
private readonly TerritoryData _territoryData;
private readonly QuestFunctions _questFunctions;
private readonly UiUtils _uiUtils;
+ private readonly Configuration _configuration;
public QuestTooltipComponent(
QuestRegistry questRegistry,
QuestData questData,
TerritoryData territoryData,
QuestFunctions questFunctions,
- UiUtils uiUtils)
+ UiUtils uiUtils,
+ Configuration configuration)
{
_questRegistry = questRegistry;
_questData = questData;
_territoryData = territoryData;
_questFunctions = questFunctions;
_uiUtils = uiUtils;
+ _configuration = configuration;
}
public void Draw(IQuestInfo quest)
@@ -105,13 +108,13 @@ internal sealed class QuestTooltipComponent
foreach (var q in quest.PreviousQuests)
{
- if (_questData.TryGetQuestInfo(q, out var qInfo))
+ if (_questData.TryGetQuestInfo(q.QuestId, out var qInfo))
{
- var (iconColor, icon, _) = _uiUtils.GetQuestStyle(q);
+ var (iconColor, icon, _) = _uiUtils.GetQuestStyle(q.QuestId);
if (!_questRegistry.IsKnownQuest(qInfo.QuestId))
iconColor = ImGuiColors.DalamudGrey;
- _uiUtils.ChecklistItem(FormatQuestUnlockName(qInfo), iconColor, icon);
+ _uiUtils.ChecklistItem(FormatQuestUnlockName(qInfo, _questFunctions.IsQuestComplete(q.QuestId) ? byte.MinValue : q.Sequence), iconColor, icon);
if (qInfo is QuestInfo qstInfo && (counter <= 2 || icon != FontAwesomeIcon.Check))
DrawQuestUnlocks(qstInfo, counter + 1);
@@ -188,11 +191,17 @@ internal sealed class QuestTooltipComponent
ImGui.Unindent();
}
- private static string FormatQuestUnlockName(IQuestInfo questInfo)
+ private string FormatQuestUnlockName(IQuestInfo questInfo, byte sequence = 0)
{
+ string name = questInfo.Name;
+ if (_configuration.Advanced.AdditionalStatusInformation && sequence != 0)
+ name += $" {SeIconChar.ItemLevel.ToIconString()}";
+
if (questInfo.IsMainScenarioQuest)
- return $"{questInfo.Name} ({questInfo.QuestId}, MSQ)";
+ name += $" ({questInfo.QuestId}, MSQ)";
else
- return $"{questInfo.Name} ({questInfo.QuestId})";
+ name += $" ({questInfo.QuestId})";
+
+ return name;
}
}
diff --git a/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs b/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs
index 6704b594..4860f687 100644
--- a/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs
+++ b/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs
@@ -7,6 +7,7 @@ using Dalamud.Interface.Colors;
using Dalamud.Interface.Components;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
+using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using ImGuiNET;
@@ -28,6 +29,7 @@ internal sealed class QuickAccessButtonsComponent
private readonly IClientState _clientState;
private readonly ICondition _condition;
private readonly ICommandManager _commandManager;
+ private readonly IDalamudPluginInterface _pluginInterface;
public QuickAccessButtonsComponent(
MovementController movementController,
@@ -39,7 +41,8 @@ internal sealed class QuickAccessButtonsComponent
JournalProgressWindow journalProgressWindow,
IClientState clientState,
ICondition condition,
- ICommandManager commandManager)
+ ICommandManager commandManager,
+ IDalamudPluginInterface pluginInterface)
{
_movementController = movementController;
_gameFunctions = gameFunctions;
@@ -51,6 +54,7 @@ internal sealed class QuickAccessButtonsComponent
_clientState = clientState;
_condition = condition;
_commandManager = commandManager;
+ _pluginInterface = pluginInterface;
}
public event EventHandler? Reload;
@@ -109,12 +113,14 @@ internal sealed class QuickAccessButtonsComponent
int partsToRender = errorCount == 0 || infoCount == 0 ? 1 : 2;
using var id = ImRaii.PushId("validationissues");
- ImGui.PushFont(UiBuilder.IconFont);
var icon1 = FontAwesomeIcon.TimesCircle;
var icon2 = FontAwesomeIcon.InfoCircle;
- Vector2 iconSize1 = errorCount > 0 ? ImGui.CalcTextSize(icon1.ToIconString()) : Vector2.Zero;
- Vector2 iconSize2 = infoCount > 0 ? ImGui.CalcTextSize(icon2.ToIconString()) : Vector2.Zero;
- ImGui.PopFont();
+ Vector2 iconSize1, iconSize2;
+ using (var _ = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
+ {
+ iconSize1 = errorCount > 0 ? ImGui.CalcTextSize(icon1.ToIconString()) : Vector2.Zero;
+ iconSize2 = infoCount > 0 ? ImGui.CalcTextSize(icon2.ToIconString()) : Vector2.Zero;
+ }
string text1 = errorCount > 0 ? errorCount.ToString(CultureInfo.InvariantCulture) : string.Empty;
string text2 = infoCount > 0 ? infoCount.ToString(CultureInfo.InvariantCulture) : string.Empty;
@@ -136,9 +142,11 @@ internal sealed class QuickAccessButtonsComponent
cursor.Y + ImGui.GetStyle().FramePadding.Y);
if (errorCount > 0)
{
- ImGui.PushFont(UiBuilder.IconFont);
- dl.AddText(position, ImGui.GetColorU32(ImGuiColors.DalamudRed), icon1.ToIconString());
- ImGui.PopFont();
+ using (var _ = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
+ {
+ dl.AddText(position, ImGui.GetColorU32(ImGuiColors.DalamudRed), icon1.ToIconString());
+ }
+
position = position with { X = position.X + iconSize1.X + iconPadding };
// Draw the text on the window drawlist
@@ -148,9 +156,11 @@ internal sealed class QuickAccessButtonsComponent
if (infoCount > 0)
{
- ImGui.PushFont(UiBuilder.IconFont);
- dl.AddText(position, ImGui.GetColorU32(ImGuiColors.ParsedBlue), icon2.ToIconString());
- ImGui.PopFont();
+ using (var _ = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
+ {
+ dl.AddText(position, ImGui.GetColorU32(ImGuiColors.ParsedBlue), icon2.ToIconString());
+ }
+
position = position with { X = position.X + iconSize2.X + iconPadding };
// Draw the text on the window drawlist
diff --git a/Questionable/Windows/QuestSelectionWindow.cs b/Questionable/Windows/QuestSelectionWindow.cs
index ba9b5ee1..a53b79e9 100644
--- a/Questionable/Windows/QuestSelectionWindow.cs
+++ b/Questionable/Windows/QuestSelectionWindow.cs
@@ -226,9 +226,7 @@ internal sealed class QuestSelectionWindow : LWindow
if (knownQuest != null &&
knownQuest.FindSequence(0)?.LastStep()?.InteractionType is EInteractionType.AcceptQuest
or EInteractionType.AcceptLeve &&
- !_questFunctions.IsQuestAccepted(quest.QuestId) &&
- !_questFunctions.IsQuestLocked(quest.QuestId) &&
- (quest.IsRepeatable || !_questFunctions.IsQuestAcceptedOrComplete(quest.QuestId)))
+ _questFunctions.IsReadyToAcceptQuest(quest.QuestId))
{
ImGui.BeginDisabled(_questController.NextQuest != null || _questController.SimulatedQuest != null);