From 8beb6d4a5735fa247e378150a8dc411dd808610b Mon Sep 17 00:00:00 2001 From: alydev Date: Mon, 27 Jul 2026 06:49:58 +1000 Subject: [PATCH 1/4] paths --- .../Dailies/1499_Larboard and Lodging.json | 2 +- .../Dailies/1500_Right-wing Aeronautics.json | 2 +- .../Ixal/Dailies/1509_Crazy Like the Pox.json | 2 +- .../Ixal/Dailies/1510_A Hard Knock Life.json | 2 +- .../Ixal/Dailies/1511_Manual Labor.json | 2 +- .../Dailies/1518_A Long Way to the Top.json | 2 +- .../Dailies/1366_Glutton for Punishment.json | 2 +- .../Kobolds/Dailies/1367_Genius at Work.json | 2 +- .../Dailies/1382_A Taste for Paste.json | 2 +- .../Dailies/1385_Violence of the Clams.json | 2 +- .../Dailies/1392_Get a Lode of This.json | 2 +- .../1313_Another Turn in the Coil.json | 2 +- .../Raid Quests/1314_Alisaie's Resolve.json | 2 +- .../Raid Quests/43_Fragments of Truth.json | 2 +- .../Raid Quests/44_Alisaie's Path.json | 2 +- ...1196_Quake Me Up Before You O'Ghomoro.json | 2 +- .../Trial Quests/1197_Ifrit Ain't Broke.json | 2 +- .../1198_To Tussle with Gods.json | 2 +- .../434_It Could Happen to You.json | 2 +- .../Gold Saucer/435_World of Wonders.json | 2 +- .../436_So You Want to Be a Jockey.json | 2 +- ...o You Think You Can Ride This Chocobo.json | 2 +- .../Unlocks/Misc/162_A Sight to Behold.json | 2 +- .../1744_Bridge over Frozen Water.json | 2 +- .../1759_Protecting What's Important.json | 2 +- .../1760_Baby Steps.json | 2 +- .../2111_For All the Nights to Come.json | 2 +- .../1771_Some Bad News.json | 2 +- .../1790_Stolen Munitions.json | 2 +- .../The Sea of Clouds/1748_Clipped Wings.json | 2 +- .../PLD/2033_The Paladin Who Cried Wolf.json | 2 +- .../PLD/2034_Big Sollerets to Fill.json | 2 +- .../PLD/2035_Hey Soul Crystal.json | 2 +- .../PLD/2036_All According to Plan.json | 355 ++++++++++-------- .../PLD/2037_This Little Sword of Mine.json | 2 +- .../1582_The Better Half.json | 2 +- .../1583_Over the Wall.json | 2 +- .../1584_Work in Progress.json | 2 +- .../1585_The First and Foremost.json | 2 +- .../1586_From on High.json | 2 +- .../1587_Reconnaissance Lost.json | 2 +- .../1588_At the End of Our Hope.json | 2 +- .../1589_Knights Be Not Proud.json | 2 +- .../1590_Onwards and Upwards.json | 2 +- .../1591_An Indispensable Ally.json | 2 +- .../1592_Meeting the Neighbors.json | 2 +- .../1593_Sense of Urgency.json | 2 +- .../1594_Hope Springs Eternal.json | 2 +- .../1595_A Series of Unfortunate Events.json | 2 +- .../1596_A Reward Long in Coming.json | 2 +- .../1597_Divine Intervention.json | 2 +- .../1598_Disclosure.json | 2 +- .../1599_Flame General Affairs.json | 2 +- .../A2-Raubahn/1600_In Search of Raubahn.json | 2 +- .../1601_Keeping the Flame Alive.json | 2 +- .../1602_To Siege or Not to Siege.json | 2 +- .../1603_Alphinaud's Way.json | 2 +- .../1604_In Search of Iceheart.json | 2 +- .../1605_From One Heretic to Another.json | 2 +- .../1606_Sounding Out the Amphitheatre.json | 2 +- .../1607_Camp of the Convictors.json | 2 +- .../1608_Purple Flame, Purple Flame.json | 2 +- .../1609_Where the Chocobos Roam.json | 2 +- .../1610_Worse than Dragons.json | 2 +- .../1611_The Trine Towers.json | 2 +- .../1612_Gifts for the Outcasts.json | 5 +- .../1613_The Nonmind.json | 2 +- .../1614_A Gnathic Deity.json | 2 +- .../Class Quests/RDM/2576_Taking the Red.json | 2 +- .../RDM/2577_The Crimson Duelist.json | 2 +- 70 files changed, 263 insertions(+), 233 deletions(-) diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1499_Larboard and Lodging.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1499_Larboard and Lodging.json index dbfe14368..875ff15cf 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1499_Larboard and Lodging.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1499_Larboard and Lodging.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Censored", - "LastChecked": {"Username": "alydev", "Date": "2026-06-27"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1500_Right-wing Aeronautics.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1500_Right-wing Aeronautics.json index e4c5d224e..f8abebb29 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1500_Right-wing Aeronautics.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1500_Right-wing Aeronautics.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Censored", - "LastChecked": {"Username": "alydev", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1509_Crazy Like the Pox.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1509_Crazy Like the Pox.json index 59b1d7004..95fe0709e 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1509_Crazy Like the Pox.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1509_Crazy Like the Pox.json @@ -2,7 +2,7 @@ "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "alydev", "Comment": "99 Moth Pupa will be bought from vendor at\nNorth Shroud 28.1, 28.1", - "LastChecked": {"Username": "alydev", "Date": "2026-06-27"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1510_A Hard Knock Life.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1510_A Hard Knock Life.json index 702bac83b..260b82c6b 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1510_A Hard Knock Life.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1510_A Hard Knock Life.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Censored", - "LastChecked": {"Username": "alydev", "Date": "2026-06-27"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1511_Manual Labor.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1511_Manual Labor.json index 67e1b8bd6..ed106cb44 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1511_Manual Labor.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1511_Manual Labor.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Censored", - "LastChecked": {"Username": "alydev", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1518_A Long Way to the Top.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1518_A Long Way to the Top.json index 8cbeaff0f..4f0fb7c3e 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1518_A Long Way to the Top.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Ixal/Dailies/1518_A Long Way to the Top.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Censored", - "LastChecked": {"Username": "Iskierka", "Date": "2026-06-27"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1366_Glutton for Punishment.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1366_Glutton for Punishment.json index fcd0ffeb7..25ef10987 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1366_Glutton for Punishment.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1366_Glutton for Punishment.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "Iskierka", "Date": "2026-06-26"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1367_Genius at Work.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1367_Genius at Work.json index 432d6f0f8..cc81fa36e 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1367_Genius at Work.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Kobolds/Dailies/1367_Genius at Work.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Censored", - "LastChecked": {"Username": "Iskierka", "Date": "2026-06-27"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1382_A Taste for Paste.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1382_A Taste for Paste.json index f071d0b21..08d0f6293 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1382_A Taste for Paste.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1382_A Taste for Paste.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "alydev", - "LastChecked": {"Username": "alydev", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1385_Violence of the Clams.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1385_Violence of the Clams.json index 48fbc64b9..91c7437df 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1385_Violence of the Clams.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1385_Violence of the Clams.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "alydev", - "LastChecked": {"Username": "alydev", "Date": "2026-06-22"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1392_Get a Lode of This.json b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1392_Get a Lode of This.json index 5c3425152..85e326a8b 100644 --- a/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1392_Get a Lode of This.json +++ b/QuestPaths/2.x - A Realm Reborn/Allied Societies/Sahagin/Dailies/1392_Get a Lode of This.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Censored", - "LastChecked": {"Username": "alydev", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1313_Another Turn in the Coil.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1313_Another Turn in the Coil.json index 3dbda5c4e..2b961e2c2 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1313_Another Turn in the Coil.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1313_Another Turn in the Coil.json @@ -2,7 +2,7 @@ "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", "Comment": "Only Turn 9 is required for the next quest to unlock", - "LastChecked": {"Username": "alydev", "Date": "2026-06-18"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1314_Alisaie's Resolve.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1314_Alisaie's Resolve.json index bc8b2928d..62c554373 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1314_Alisaie's Resolve.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1314_Alisaie's Resolve.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "alydev", "Date": "2026-06-18"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/43_Fragments of Truth.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/43_Fragments of Truth.json index c759e1d51..874c9424b 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/43_Fragments of Truth.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/43_Fragments of Truth.json @@ -2,7 +2,7 @@ "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", "Comment": "Only Turn 13 is required for the next quest to unlock", - "LastChecked": {"Username": "alydev", "Date": "2026-06-18"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/44_Alisaie's Path.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/44_Alisaie's Path.json index bc569e91d..b6ba6eca8 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/44_Alisaie's Path.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/44_Alisaie's Path.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "alydev", "Date": "2026-06-18"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Trial Quests/1196_Quake Me Up Before You O'Ghomoro.json b/QuestPaths/2.x - A Realm Reborn/Trial Quests/1196_Quake Me Up Before You O'Ghomoro.json index 443417c8f..77c5f0c3e 100644 --- a/QuestPaths/2.x - A Realm Reborn/Trial Quests/1196_Quake Me Up Before You O'Ghomoro.json +++ b/QuestPaths/2.x - A Realm Reborn/Trial Quests/1196_Quake Me Up Before You O'Ghomoro.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "Iskierka", "Date": "2026-07-04"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Trial Quests/1197_Ifrit Ain't Broke.json b/QuestPaths/2.x - A Realm Reborn/Trial Quests/1197_Ifrit Ain't Broke.json index 342ce3677..fc4007d0b 100644 --- a/QuestPaths/2.x - A Realm Reborn/Trial Quests/1197_Ifrit Ain't Broke.json +++ b/QuestPaths/2.x - A Realm Reborn/Trial Quests/1197_Ifrit Ain't Broke.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "goopy_brain", "Date": "2026-06-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Trial Quests/1198_To Tussle with Gods.json b/QuestPaths/2.x - A Realm Reborn/Trial Quests/1198_To Tussle with Gods.json index 36e6bed3c..df4c1125e 100644 --- a/QuestPaths/2.x - A Realm Reborn/Trial Quests/1198_To Tussle with Gods.json +++ b/QuestPaths/2.x - A Realm Reborn/Trial Quests/1198_To Tussle with Gods.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "goopy_brain", "Date": "2026-06-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/434_It Could Happen to You.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/434_It Could Happen to You.json index fa2d59003..c4575a3d8 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/434_It Could Happen to You.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/434_It Could Happen to You.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "jigain", "Date": "2026-07-17"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 bf4629c6c..4ea273ed4 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 @@ -4,7 +4,7 @@ "liza", "JerryWester" ], - "LastChecked": {"Username": "jigain", "Date": "2026-07-17"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/436_So You Want to Be a Jockey.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/436_So You Want to Be a Jockey.json index ebe5b4838..a71bee62f 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/436_So You Want to Be a Jockey.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/436_So You Want to Be a Jockey.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Starr", - "LastChecked": {"Username": "alydev", "Date": "2026-06-05"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/565_So You Think You Can Ride This Chocobo.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/565_So You Think You Can Ride This Chocobo.json index eb8f68b17..a012abdfe 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/565_So You Think You Can Ride This Chocobo.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/565_So You Think You Can Ride This Chocobo.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Starr", - "LastChecked": {"Username": "alydev", "Date": "2026-06-05"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/162_A Sight to Behold.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/162_A Sight to Behold.json index 3e29c3f52..347a07877 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/162_A Sight to Behold.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Misc/162_A Sight to Behold.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "alydev", - "LastChecked": {"Username": "goopy_brain", "Date": "2026-06-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1744_Bridge over Frozen Water.json b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1744_Bridge over Frozen Water.json index 7e8a23a8e..bd652b0e6 100644 --- a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1744_Bridge over Frozen Water.json +++ b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1744_Bridge over Frozen Water.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-11"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1759_Protecting What's Important.json b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1759_Protecting What's Important.json index 59b788e7c..43c80fff8 100644 --- a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1759_Protecting What's Important.json +++ b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1759_Protecting What's Important.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-11"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1760_Baby Steps.json b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1760_Baby Steps.json index 0ab3abb93..d036404ab 100644 --- a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1760_Baby Steps.json +++ b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/1760_Baby Steps.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-11"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/2111_For All the Nights to Come.json b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/2111_For All the Nights to Come.json index f7f6385db..49ab307af 100644 --- a/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/2111_For All the Nights to Come.json +++ b/QuestPaths/3.x - Heavensward/Aether Currents/Coerthas Western Highlands/2111_For All the Nights to Come.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-11"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 9f8859119..54e5af6c5 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-11"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 33fdd7031..cac0e61af 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-11"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1748_Clipped Wings.json b/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1748_Clipped Wings.json index 2c87e9402..e9eb79707 100644 --- a/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1748_Clipped Wings.json +++ b/QuestPaths/3.x - Heavensward/Aether Currents/The Sea of Clouds/1748_Clipped Wings.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-12"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2033_The Paladin Who Cried Wolf.json b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2033_The Paladin Who Cried Wolf.json index 610531c39..5acc9f0cd 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2033_The Paladin Who Cried Wolf.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2033_The Paladin Who Cried Wolf.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "goatzone", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-15"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2034_Big Sollerets to Fill.json b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2034_Big Sollerets to Fill.json index 17c9f1983..474903784 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2034_Big Sollerets to Fill.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2034_Big Sollerets to Fill.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "goatzone", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-15"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2035_Hey Soul Crystal.json b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2035_Hey Soul Crystal.json index 75a31e4a7..3253af29b 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2035_Hey Soul Crystal.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2035_Hey Soul Crystal.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "goatzone", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-15"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2036_All According to Plan.json b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2036_All According to Plan.json index 87d6811bb..4a1d97247 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2036_All According to Plan.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2036_All According to Plan.json @@ -1,172 +1,201 @@ { - "$schema": "https://qstxiv.github.io/schema/quest-v1.json", - "Author": "goatzone", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-15"}, + "$schema": "https://qstxiv.github.io/schema/quest-v1.json", + "Author": "goatzone", + "LastChecked": { "Username": "okonomiyaki", "Date": "2026-07-15" }, "QuestSequence": [ - { - "Sequence": 0, - "Steps": [ - { - "DataId": 1014068, - "Position": { - "X": 51.132935, - "Y": 124.95631, - "Z": 178.69836 - }, - "TerritoryId": 397, - "InteractionType": "AcceptQuest", - "Fly": true, - "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest" - } - ] - }, - { - "Sequence": 1, - "Steps": [ - { - "DataId": 1014069, - "Position": { - "X": 460.5935, - "Y": 200.23763, - "Z": 658.56396 - }, - "TerritoryId": 397, - "InteractionType": "Interact", - "Fly": true, - "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest" - } - ] - }, - { - "Sequence": 2, - "Steps": [ - { - "DataId": 1011233, - "Position": { + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1014068, + "Position": { + "X": 51.132935, + "Y": 124.95631, + "Z": 178.69836 + }, + "TerritoryId": 397, + "InteractionType": "AcceptQuest", + "Fly": true, + "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1014069, + "Position": { + "X": 460.5935, + "Y": 200.23763, + "Z": 658.56396 + }, + "TerritoryId": 397, + "InteractionType": "Interact", + "Fly": true, + "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1011233, + "Position": { "X": 517.557, "Y": 217.95152, "Z": 770.0725 }, "TerritoryId": 397, "StopDistance": 1, - "InteractionType": "Interact", - "Fly": true - } - ] - }, - { - "Sequence": 3, - "Steps": [ - { - "DataId": 1014073, - "Position": { - "X": -693.8125, - "Y": -109.83532, - "Z": 490.95898 - }, - "TerritoryId": 401, - "InteractionType": "Interact", - "Fly": true, - "AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop" - } - ] - }, - { - "Sequence": 4, - "Steps": [ - { - "DataId": 1014075, - "Position": { - "X": -272.17517, - "Y": -184.2003, - "Z": 736.0493 - }, - "TerritoryId": 401, - "InteractionType": "Interact", - "Fly": true - } - ] - }, - { - "Sequence": 5, - "Steps": [ - { - "Position": { - "X": -43.012157, - "Y": -176.80112, - "Z": 753.7885 - }, - "TerritoryId": 401, - "InteractionType": "Combat", - "Fly": true, - "EnemySpawnType": "AutoOnEnterArea", - "KillEnemyDataIds": [5048, 5049] - } - ] - }, - { - "Sequence": 6, - "Steps": [ - { - "Position": { - "X": 207.48586, - "Y": -176.39336, - "Z": 721.5167 - }, - "TerritoryId": 401, - "InteractionType": "Combat", - "Fly": true, - "EnemySpawnType": "AutoOnEnterArea", - "KillEnemyDataIds": [4687, 4688] - } - ] - }, - { - "Sequence": 7, - "Steps": [ - { - "DataId": 1014088, - "Position": { - "X": 200.42712, - "Y": -176.62952, - "Z": 737.0565 - }, - "TerritoryId": 401, - "InteractionType": "Interact" - } - ] - }, - { - "Sequence": 8, - "Steps": [ - { - "DataId": 1014089, - "Position": { - "X": 205.98145, - "Y": -176.69763, - "Z": 739.52844 - }, - "TerritoryId": 401, - "InteractionType": "Interact" - } - ] - }, - { - "Sequence": 255, - "Steps": [ - { - "DataId": 1015055, - "Position": { - "X": 509.17822, - "Y": 212.5399, - "Z": 695.796 - }, - "TerritoryId": 397, - "InteractionType": "CompleteQuest", - "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest", - "NextQuestId": 2037 - } - ] - } - ] + "InteractionType": "Interact", + "Fly": true + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1014073, + "Position": { + "X": -693.8125, + "Y": -109.83532, + "Z": 490.95898 + }, + "TerritoryId": 401, + "InteractionType": "Interact", + "Fly": true, + "AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "Position": { + "X": -578.93396, + "Y": -129.06596, + "Z": 523.9582 + }, + "TerritoryId": 401, + "InteractionType": "Jump", + "JumpDestination": { + "Position": { + "X": -576.6731, + "Y": -157.6342, + "Z": 542.19055 + } + }, + "SkipConditions": { + "StepIf": { + "NotNearPosition": { + "Position": { + "X": -693.8125, + "Y": -109.83532, + "Z": 490.95898 + }, + "TerritoryId": 401, + "MaximumDistance": 150 + } + } + } + }, + { + "DataId": 1014075, + "Position": { + "X": -272.17517, + "Y": -184.2003, + "Z": 736.0493 + }, + "TerritoryId": 401, + "InteractionType": "Interact", + "Fly": true + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "Position": { + "X": -43.012157, + "Y": -176.80112, + "Z": 753.7885 + }, + "TerritoryId": 401, + "InteractionType": "Combat", + "Fly": true, + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [5048, 5049] + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "Position": { + "X": 207.48586, + "Y": -176.39336, + "Z": 721.5167 + }, + "TerritoryId": 401, + "InteractionType": "Combat", + "Fly": true, + "EnemySpawnType": "AutoOnEnterArea", + "KillEnemyDataIds": [4687, 4688] + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 1014088, + "Position": { + "X": 200.42712, + "Y": -176.62952, + "Z": 737.0565 + }, + "TerritoryId": 401, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 8, + "Steps": [ + { + "DataId": 1014089, + "Position": { + "X": 205.98145, + "Y": -176.69763, + "Z": 739.52844 + }, + "TerritoryId": 401, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1015055, + "Position": { + "X": 509.17822, + "Y": 212.5399, + "Z": 695.796 + }, + "TerritoryId": 397, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest", + "NextQuestId": 2037 + } + ] + } + ] } diff --git a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2037_This Little Sword of Mine.json b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2037_This Little Sword of Mine.json index e1ae7bd96..4b6d47bb1 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/PLD/2037_This Little Sword of Mine.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/PLD/2037_This Little Sword of Mine.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "goatzone", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-15"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1582_The Better Half.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1582_The Better Half.json index 4a8323fd9..5f9ace196 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1582_The Better Half.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1582_The Better Half.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1583_Over the Wall.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1583_Over the Wall.json index 9c7286ed1..fc8c1b07e 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1583_Over the Wall.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1583_Over the Wall.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1584_Work in Progress.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1584_Work in Progress.json index af4e95b31..98e3e1683 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1584_Work in Progress.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1584_Work in Progress.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1585_The First and Foremost.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1585_The First and Foremost.json index 7ae8ef740..992674bf3 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1585_The First and Foremost.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1585_The First and Foremost.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1586_From on High.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1586_From on High.json index c45ab93f1..c83dbb322 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1586_From on High.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1586_From on High.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1587_Reconnaissance Lost.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1587_Reconnaissance Lost.json index bec4c1deb..ce42a7bb8 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1587_Reconnaissance Lost.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1587_Reconnaissance Lost.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1588_At the End of Our Hope.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1588_At the End of Our Hope.json index d3361d6b0..d3f26f240 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1588_At the End of Our Hope.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1588_At the End of Our Hope.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1589_Knights Be Not Proud.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1589_Knights Be Not Proud.json index 39e54d67f..b34fc069d 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1589_Knights Be Not Proud.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1589_Knights Be Not Proud.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1590_Onwards and Upwards.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1590_Onwards and Upwards.json index 9001e3f0d..3828a29d5 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1590_Onwards and Upwards.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1590_Onwards and Upwards.json @@ -4,7 +4,7 @@ "JerryWester", "Kiarra" ], - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1591_An Indispensable Ally.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1591_An Indispensable Ally.json index 520d32195..35dc6b002 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1591_An Indispensable Ally.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1591_An Indispensable Ally.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 fe00f03b6..1df559ca5 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 b72d73c2f..a6d3664e5 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1594_Hope Springs Eternal.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1594_Hope Springs Eternal.json index 02b01b070..d7bcf4eae 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1594_Hope Springs Eternal.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1594_Hope Springs Eternal.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1595_A Series of Unfortunate Events.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1595_A Series of Unfortunate Events.json index 479ab2ede..8b5404120 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1595_A Series of Unfortunate Events.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1595_A Series of Unfortunate Events.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1596_A Reward Long in Coming.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1596_A Reward Long in Coming.json index 865dd7e8e..dc15e0cfa 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1596_A Reward Long in Coming.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1596_A Reward Long in Coming.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-08"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1597_Divine Intervention.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1597_Divine Intervention.json index 16761f636..eae536b2f 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1597_Divine Intervention.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1597_Divine Intervention.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1598_Disclosure.json b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1598_Disclosure.json index f558f046d..5ac3a3a01 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1598_Disclosure.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1598_Disclosure.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 7b2fc3778..c929a91ca 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1600_In Search of Raubahn.json b/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1600_In Search of Raubahn.json index 2950d2423..256c688d7 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1600_In Search of Raubahn.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1600_In Search of Raubahn.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1601_Keeping the Flame Alive.json b/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1601_Keeping the Flame Alive.json index 4422763f8..bf9c1f05e 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1601_Keeping the Flame Alive.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1601_Keeping the Flame Alive.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 a18bc59bd..5369609db 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 350e00a0c..575d271a1 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 edb7ed212..61f46e7d3 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1605_From One Heretic to Another.json b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1605_From One Heretic to Another.json index 30383e194..15dacf58d 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1605_From One Heretic to Another.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1605_From One Heretic to Another.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1606_Sounding Out the Amphitheatre.json b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1606_Sounding Out the Amphitheatre.json index 1893a4723..3dbcbbaf8 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1606_Sounding Out the Amphitheatre.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1606_Sounding Out the Amphitheatre.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1607_Camp of the Convictors.json b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1607_Camp of the Convictors.json index 8e5ef4cb5..61b73858e 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1607_Camp of the Convictors.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1607_Camp of the Convictors.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 900b78dfa..0464beb43 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 48df60f70..037d9cd88 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, 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 c043fa007..baeab35a5 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1611_The Trine Towers.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1611_The Trine Towers.json index 374a861c3..fcb617322 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1611_The Trine Towers.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1611_The Trine Towers.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1612_Gifts for the Outcasts.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1612_Gifts for the Outcasts.json index 55e968a77..76277744f 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1612_Gifts for the Outcasts.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1612_Gifts for the Outcasts.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, @@ -24,7 +24,8 @@ { "TerritoryId": 398, "InteractionType": "AttuneAetheryte", - "Aetheryte": "The Dravanian Forelands - Anyx Trine" + "Aetheryte": "The Dravanian Forelands - Anyx Trine", + "SkipConditions": {"StepIf": {"AetheryteUnlocked": "The Dravanian Forelands - Anyx Trine"}} }, { "DataId": 1011916, diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1613_The Nonmind.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1613_The Nonmind.json index 0460bc452..0a8b64908 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1613_The Nonmind.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1613_The Nonmind.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, 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 a760de88c..9901ace7b 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2576_Taking the Red.json b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2576_Taking the Red.json index 1d07fecac..2119b5133 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2576_Taking the Red.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2576_Taking the Red.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-13"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2577_The Crimson Duelist.json b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2577_The Crimson Duelist.json index 7ca90604c..fdb3ecf50 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2577_The Crimson Duelist.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2577_The Crimson Duelist.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-16"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-26"}, "QuestSequence": [ { "Sequence": 0, From 15f1bf70b3e68d8cb0145c656c064d28d552b29a Mon Sep 17 00:00:00 2001 From: alydev Date: Mon, 27 Jul 2026 07:19:01 +1000 Subject: [PATCH 2/4] v15.306.1.0 --- CHANGELOG.md | 3 +- Directory.Build.targets | 2 +- .../471_Rocks in a Hard Place.json | 141 +++++++++ .../1615_Breaking into Hives.json | 2 +- .../RDM/2578_A Rewarding Struggle.json | 2 +- .../Controller/ContextMenuController.cs | 109 +++++-- Questionable/Resources/I18N.xml | 287 +++++++++++++++++- Questionable/Windows/ConfigWindow.cs | 18 +- Questionable/Windows/QuestWindow.cs | 17 +- 9 files changed, 528 insertions(+), 53 deletions(-) create mode 100644 QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/471_Rocks in a Hard Place.json diff --git a/CHANGELOG.md b/CHANGELOG.md index ad11285f5..0df3d146b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,2 @@ -- Feature: draft quests via lua data -chika \ No newline at end of file +- Feature: new UI -wah +- Change: move sponsor icon to config window -alydev \ No newline at end of file diff --git a/Directory.Build.targets b/Directory.Build.targets index b29fa9cc7..142115e2b 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,6 +1,6 @@ - 15.306.0.23 + 15.306.1.0 diff --git a/QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/471_Rocks in a Hard Place.json b/QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/471_Rocks in a Hard Place.json new file mode 100644 index 000000000..acfba200b --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/471_Rocks in a Hard Place.json @@ -0,0 +1,141 @@ +{ + "$schema": "https://qstxiv.github.io/schema/quest-v1.json", + "Author": "alydev", + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1002633, + "Position": { + "X": 232.593, + "Y": 113.073, + "Z": -240.238 + }, + "TerritoryId": 134, + "InteractionType": "AcceptQuest", + "Fly": true + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 2001272, + "Position": { + "X": 219.83, + "Y": 113.133, + "Z": -244.164 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Fly": true + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 2001246, + "Position": { + "X": 118.7646, + "Y": 71.36663, + "Z": -163.5833 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Fly": true, + "CompletionQuestVariablesFlags": [null,null,null,null,null,{"High": 1}], + "$": "auto: todo area 21y from lua EOBJECT4 -> 2001246 (strewn debris)" + }, + { + "DataId": 2001247, + "Position": { + "X": 108.7284, + "Y": 65.2958, + "Z": -118.6559 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Fly": true, + "CompletionQuestVariablesFlags": [null,null,null,null,null,{"Low": 8}], + "$": "auto: todo area 18y from lua EOBJECT5 -> 2001247 (strewn debris)" + }, + { + "DataId": 2001248, + "Position": { + "X": 118.7582, + "Y": 63.7229, + "Z": -81.45519 + }, + "TerritoryId": 134, + "InteractionType": "Interact", + "Fly": true, + "CompletionQuestVariablesFlags": [null,null,null,null,null,{"Low": 4}], + "$": "auto: todo area 20y from lua EOBJECT6 -> 2001248 (strewn debris)" + }, + { + "DataId": 2001243, + "Position": { + "X": 136.5217, + "Y": 75.18003, + "Z": -150.6527 + }, + "TerritoryId": 134, + "InteractionType": "UseItem", + "Fly": true, + "ItemId": 2000350, + "CompletionQuestVariablesFlags": [null,null,null,null,null,{"High": 8}], + "$": "auto: todo area 25y from lua EOBJECT1 -> 2001243 (cumbersome rock)" + }, + { + "DataId": 2001244, + "Position": { + "X": 120.8511, + "Y": 69.09872, + "Z": -129.2539 + }, + "TerritoryId": 134, + "InteractionType": "UseItem", + "Fly": true, + "ItemId": 2000350, + "CompletionQuestVariablesFlags": [null,null,null,null,null,{"High": 4}], + "$": "auto: todo area 24y from lua EOBJECT2 -> 2001244 (cumbersome rock)" + }, + { + "DataId": 2001245, + "Position": { + "X": 114.0819, + "Y": 63.887, + "Z": -99.50035 + }, + "TerritoryId": 134, + "InteractionType": "UseItem", + "Fly": true, + "ItemId": 2000350, + "CompletionQuestVariablesFlags": [null,null,null,null,null,{"High": 2}], + "$": "auto: todo area 26y from lua EOBJECT3 -> 2001245 (cumbersome rock)" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1002633, + "Position": { + "X": 232.593, + "Y": 113.073, + "Z": -240.238 + }, + "TerritoryId": 134, + "InteractionType": "CompleteQuest", + "Fly": true + } + ] + } + ] +} \ No newline at end of file diff --git a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1615_Breaking into Hives.json b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1615_Breaking into Hives.json index b5ee4c530..0855092b2 100644 --- a/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1615_Breaking into Hives.json +++ b/QuestPaths/3.x - Heavensward/MSQ/A3.2-The Dravanian Forelands/1615_Breaking into Hives.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-09"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2578_A Rewarding Struggle.json b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2578_A Rewarding Struggle.json index fde4b5173..1f5130e40 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2578_A Rewarding Struggle.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2578_A Rewarding Struggle.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-16"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/Questionable/Controller/ContextMenuController.cs b/Questionable/Controller/ContextMenuController.cs index 2aaa2cc1c..dc77802d7 100644 --- a/Questionable/Controller/ContextMenuController.cs +++ b/Questionable/Controller/ContextMenuController.cs @@ -1,7 +1,10 @@ +using System.Diagnostics; using Dalamud.Game.Gui.ContextMenu; using Dalamud.Game.Text; using ECommons.ExcelServices; +using ECommons.UIHelpers.AddonMasterImplementations; using FFXIVClientStructs.FFXIV.Client.Game.UI; +using FFXIVClientStructs.FFXIV.Client.System.Framework; using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Client.UI.Agent; using Questionable.Model.Gathering; @@ -24,6 +27,8 @@ internal sealed class ContextMenuController : IDisposable private readonly QuestRegistry _questRegistry; private readonly Configuration _configuration; + private IEnumerable DisabledCharacterIds = []; + public ContextMenuController( IContextMenu contextMenu, QuestController questController, @@ -64,46 +69,102 @@ private void MenuOpened(IMenuOpenedArgs args) if (args.AddonName != null) return; - uint itemId = GetHoveredSatisfactionSupplyItemId(); - if (itemId == 0) + if (TryGetHoveredCharacterId(args, out var character)) { - _logger.LogTrace("Ignoring context menu, no item hovered"); - return; + args.AddMenuItem(CreateMenuItem_CharaSelectListMenu(character)); } + else if (TryGetHoveredSatisfactionSupplyItemId(out var itemId)) + { + if (itemId > 1_000_000) + itemId -= 1_000_000; - if (itemId > 1_000_000) - itemId -= 1_000_000; - - if (itemId >= 500_000) - itemId -= 500_000; + if (itemId >= 500_000) + itemId -= 500_000; - if (_gatheringData.TryGetCustomDeliveryNpc(itemId, out uint npcId)) - { - AddContextMenuEntry(args, itemId, npcId, Job.MIN, "Mine"); - AddContextMenuEntry(args, itemId, npcId, Job.BTN, "Harvest"); + if (_gatheringData.TryGetCustomDeliveryNpc(itemId, out uint npcId)) + { + AddContextMenuEntry_SatisfactionSupply(args, itemId, npcId, Job.MIN, "Mine"); + AddContextMenuEntry_SatisfactionSupply(args, itemId, npcId, Job.BTN, "Harvest"); + } + else + _logger.LogDebug("No custom delivery NPC found for item {ItemId}.", itemId); } - else - _logger.LogDebug("No custom delivery NPC found for item {ItemId}.", itemId); + } - private unsafe uint GetHoveredSatisfactionSupplyItemId() + private unsafe bool TryGetHoveredSatisfactionSupplyItemId(out uint hoveredItem) { + hoveredItem = 0; AgentSatisfactionSupply* agent = AgentSatisfactionSupply.Instance(); - if (agent == null || !agent->IsAgentActive()) - return 0; - - - if (_gameGui.TryGetAddonByName("SatisfactionSupply", out AddonSatisfactionSupply* addon) && + if (agent != null && agent->IsAgentActive() && + _gameGui.TryGetAddonByName("SatisfactionSupply", out AddonSatisfactionSupply* addon) && AddonUtils.IsAddonReady(&addon->AtkUnitBase) && addon->HoveredElementIndex is >= 0 and <= 2) { - return agent->Items[addon->HoveredElementIndex].Id; + hoveredItem = agent->Items[addon->HoveredElementIndex].Id; } - return 0; + return hoveredItem != 0; + } + + private static bool TryGetHoveredCharacterId( + IMenuOpenedArgs args, + out AddonMaster._CharaSelectListMenu.Character? character) + { + character = null; + if (GenericHelpers.TryGetAddonMaster(out var m)) + if (args.Target is MenuTargetDefault target && m.Characters.TryGetFirst(x => x.IsSelected, out var chara)) + character = chara; + return character != null; + } + + private void DisableCharacterId(ulong characterId) + { + DisabledCharacterIds = DisabledCharacterIds.Append(characterId); + } + + private unsafe MenuItem CreateMenuItem_CharaSelectListMenu( + AddonMaster._CharaSelectListMenu.Character? character) + { + bool characterDisabled = DisabledCharacterIds.Contains(character?.Entry->ContentId); + string characterId = $"FFXIV_CHR{character?.Entry->ContentId:X16}"; + return new() + { + Prefix = SeIconChar.Hexagon, + PrefixColor = 52, + Name = (characterDisabled ? "ID not found" : "Open Data") + $" (*{characterId[^5..]})", + IsEnabled = true, //!characterDisabled, + OnClicked = _1 => + { + if (character != null) + { + var path = Path.Combine(Framework.Instance()->UserPathString, characterId); + if (!Path.Exists(path)) + { + DisableCharacterId(character.Entry->ContentId); + return; + } + string homeWorld = ExcelWorldHelper.GetName(character.HomeWorld); + FileInfo charNameFile = new(Path.Combine(path, $"_{character.Name}@{homeWorld}")); + try + { + _ = charNameFile.Create(); + } + catch (Exception) + { + } + Process.Start(new ProcessStartInfo + { + FileName = path, + UseShellExecute = true, + Verb = "open" + }); + } + } + }; } - private unsafe void AddContextMenuEntry(IMenuOpenedArgs args, uint itemId, uint npcId, Job classJob, + private unsafe void AddContextMenuEntry_SatisfactionSupply(IMenuOpenedArgs args, uint itemId, uint npcId, Job classJob, string verb) { Job currentClassJob = (Job)PlayerState.Instance()->CurrentClassJobId; diff --git a/Questionable/Resources/I18N.xml b/Questionable/Resources/I18N.xml index b0530f6cb..425108de3 100644 --- a/Questionable/Resources/I18N.xml +++ b/Questionable/Resources/I18N.xml @@ -694,7 +694,6 @@ - Priority Quests 優先クエスト 优先任务 @@ -1028,6 +1027,7 @@ 序列 + Step @@ -1052,7 +1052,7 @@ 打开配置 - + Sponsor QST development QSTの開発を支援する 赞助 QST 开发 @@ -1511,21 +1511,18 @@ - Maelstrom 黒渦団 黑涡团 - Twin Adder 双蛇党 双蛇党 - Immortal Flames 不滅隊 恒辉队 @@ -2995,7 +2992,6 @@ 需要以下之一: - None なし @@ -3025,7 +3021,6 @@ 设置尽可能优先执行的优先任务。 - Rebuild Navmesh ナビメッシュを再構築 重建导航网格 @@ -3049,7 +3044,6 @@ 重新加载数据 - Stuck? スタックしていますか? 卡住了? @@ -3649,4 +3643,281 @@ Filter NG+ categories + + + Only normal quests can be auto-generated. + + + + Could not find quest {0} in the game data. + + + + Generated draft path: {0} ({1} sequences). Review it before trusting it. + + + + Experimental: expect wrong targets and stalls. Watch the quest while it runs - do not go AFK. + + + + Unable to generate a draft path, check /xllog for details. + + + + Rank + + + + Path Editor + + + + unsaved + + + + Select a quest to edit. + + + + Save + + + + Writes the path to your user quest directory and reloads all quest data.\nSaving reformats the file (property order, omitted defaults). + + + + Discard + + + + Open Quests folder + + + + Open this quest in your default .json text editor + + + + You have unsaved changes. + + + + Save first + + + + Discard changes + + + + Cancel + + + + Select a quest above, or open the editor from the Journal's right-click menu. + + + + Sequence {0} + + + + Add a step to this sequence + + + + Remove this empty sequence + + + + Add Sequence + + + + Validation + + + + Saved quest path to '{0}' + + + + Left click: Open in Path Editor\nRight click: Open in your default .json text editor + + + + A Realm Reborn + + + + Events + + + + Quick Access + + + + Path Tools + + + + Allow questpath generation (experimental) + + + + Generated paths are unreviewed machine drafts: expect wrong targets, missing steps and stalls. + + + + Stay at the keyboard while one is running - never leave it unattended. + + + + Right-click a quest without a path in the Journal Progress window to generate a draft. + + + + Generated paths only load in debug mode or on a dev install; without one of those, this option does nothing. + + + + Remove from list after complete + + + + Open in Path Editor + + + + Generate draft path + + + + Capture + + + + + Interaction type detected from the target's nameplate icon. + + + + Append step from target to Seq {0} + + + + No target selected. + + + + Append step at my position + + + + Select a step to edit. + + + + Interaction Type + + + + Data ID + + + + Position + + + + Territory ID + + + + Stop Distance + + + + Aetheryte Shortcut + + + + Comment + + + + Shown in the debug overlay + + + + Fly + + + + This interaction type usually needs a Data ID. + + + + This interaction type usually needs a Position. + + + + Territory ID is not set. + + + + Duplicate + + + + Delete Step + + + + Step JSON + + + + Copy this step as JSON + + + + Left click: Open in Path Editor\nRight click: Open Quests folder + + + + Seq {0} · Step {1}/{2} + + + + Combat + + + + Stopping + + + + Running + + + + Open the current quest in the Path Editor. + + + + GC Rank: {0} (#{1} >= #{2}) + + + + Quest validation: {0} errors, {1} infos + + + + Remaining Tasks + \ No newline at end of file diff --git a/Questionable/Windows/ConfigWindow.cs b/Questionable/Windows/ConfigWindow.cs index 3fca47777..a4a2097fc 100644 --- a/Questionable/Windows/ConfigWindow.cs +++ b/Questionable/Windows/ConfigWindow.cs @@ -1,4 +1,6 @@ -using Dalamud.Bindings.ImGui; +using System.Diagnostics; +using Dalamud.Bindings.ImGui; +using Dalamud.Interface; using Dalamud.Interface.Utility.Raii; using PunishLib.ImGuiMethods; using Questionable.Windows.Common; @@ -43,6 +45,20 @@ public override void DrawContent() MaximumSize = default }; + if (!_configuration.General.HideSponsorButton) + TitleBarButtons.Add(new() + { + Icon = FontAwesomeIcon.Heart, + IconOffset = new(1.5f, 1), + Click = _ => Process.Start(new ProcessStartInfo { FileName = "https://github.com/sponsors/alydevs", UseShellExecute = true }), + Priority = int.MinValue, + ShowTooltip = () => + { + using ImRaii.TooltipDisposable _ = ImRaii.Tooltip(); + ImGui.Text(_L("Sponsor QST development")); + } + }); + _generalConfigComponent.DrawTab(); _pluginConfigComponent.DrawTab(); _dutyConfigComponent.DrawTab(); diff --git a/Questionable/Windows/QuestWindow.cs b/Questionable/Windows/QuestWindow.cs index 45228fb11..c8a847a3e 100644 --- a/Questionable/Windows/QuestWindow.cs +++ b/Questionable/Windows/QuestWindow.cs @@ -1,4 +1,3 @@ -using System.Diagnostics; using Dalamud.Bindings.ImGui; using Dalamud.Interface; using Dalamud.Interface.Utility.Raii; @@ -45,7 +44,7 @@ public QuestWindow(IDalamudPluginInterface pluginInterface, InteractionUiController interactionUiController, ConfigWindow configWindow, BossModIpc bossModIpc) - : base((configuration.Advanced.Debug ? "(DEBUG) " : "") + $"QST v{PluginVersion.ToString(4)}###Questionable", + : base((configuration.Advanced.Debug ? "(!) " : "") + $"QST v{PluginVersion.ToString(4)}###Questionable", ImGuiWindowFlags.AlwaysAutoResize) { _pluginInterface = pluginInterface; @@ -100,20 +99,6 @@ public QuestWindow(IDalamudPluginInterface pluginInterface, } }); - if (!_configuration.General.HideSponsorButton) - TitleBarButtons.Add(new() - { - Icon = FontAwesomeIcon.Heart, - IconOffset = new(1.5f, 1), - Click = _ => Process.Start(new ProcessStartInfo { FileName = "https://github.com/sponsors/alydevs", UseShellExecute = true }), - Priority = int.MinValue, - ShowTooltip = () => - { - using ImRaii.TooltipDisposable _ = ImRaii.Tooltip(); - ImGui.Text(_L("Sponsor QST development")); - } - }); - _activeQuestComponent.Reload += OnReload; _quickAccessButtonsComponent.Reload += OnReload; _questController.IsQuestWindowOpenFunction = () => IsOpen; From 0856966e8d6f25fc03a004354a9b20efaf50f256 Mon Sep 17 00:00:00 2001 From: alydev Date: Mon, 27 Jul 2026 07:51:21 +1000 Subject: [PATCH 3/4] fix sponsor icon --- .../La Noscean Sidequests/399_Out to Dry.json | 65 +++++++++++++++++++ .../1797_The Hunter Becomes the Kweh.json | 2 +- .../RDM/2579_Tracking the Cabal.json | 2 +- .../AutoGen/Plugin/DraftQuestPathService.cs | 32 ++++----- Questionable/Controller/QuestRegistry.cs | 52 +++++++++------ Questionable/Windows/ConfigWindow.cs | 55 ++++++++++------ Questionable/Windows/QuestSelectionWindow.cs | 6 ++ 7 files changed, 152 insertions(+), 62 deletions(-) create mode 100644 QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/399_Out to Dry.json diff --git a/QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/399_Out to Dry.json b/QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/399_Out to Dry.json new file mode 100644 index 000000000..24a3029ac --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Sidequests/Lominsan/La Noscean Sidequests/399_Out to Dry.json @@ -0,0 +1,65 @@ +{ + "$schema": "https://qstxiv.github.io/schema/quest-v1.json", + "Author": "alydev", + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1003242, + "Position": { + "X": -293.979, + "Y": 7.53998, + "Z": -225.542 + }, + "TerritoryId": 134, + "InteractionType": "AcceptQuest", + "Fly": true, + "AetheryteShortcut": "Middle La Noscea - Summerford Farms", + "$": "auto: issuer 1003242 (W'dhovaka)" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "Position": { + "X": -305.994, + "Y": 28.23908, + "Z": -363.692 + }, + "TerritoryId": 134, + "InteractionType": "Combat", + "Fly": true, + "AetheryteShortcut": "Middle La Noscea - Summerford Farms", + "EnemySpawnType": "OverworldEnemies", + "KillEnemyDataIds": [ + 326 + ], + "$": "auto: lua overworld enemies -> 326" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003242, + "Position": { + "X": -294.33594, + "Y": 7.54, + "Z": -227.07976 + }, + "TerritoryId": 134, + "InteractionType": "CompleteQuest", + "StopDistance": 1, + "Fly": true, + "AetheryteShortcut": "Middle La Noscea - Summerford Farms", + "$": "auto: todo turn-in -> 1003242 (W'dhovaka)" + } + ] + } + ] +} \ No newline at end of file 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 c17d1ce0f..d7b316eef 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-11"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2579_Tracking the Cabal.json b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2579_Tracking the Cabal.json index ddb92c204..594c52b2b 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/RDM/2579_Tracking the Cabal.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/RDM/2579_Tracking the Cabal.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "liza", - "LastChecked": {"Username": "okonomiyaki", "Date": "2026-07-16"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-27"}, "QuestSequence": [ { "Sequence": 0, diff --git a/Questionable/AutoGen/Plugin/DraftQuestPathService.cs b/Questionable/AutoGen/Plugin/DraftQuestPathService.cs index dddb3fa40..f78db8a4c 100644 --- a/Questionable/AutoGen/Plugin/DraftQuestPathService.cs +++ b/Questionable/AutoGen/Plugin/DraftQuestPathService.cs @@ -14,7 +14,6 @@ namespace Questionable.AutoGen; /// internal sealed class DraftQuestPathService( QuestPathGeneratorFactory generatorFactory, - QuestRegistry questRegistry, Configuration configuration, IDalamudPluginInterface pluginInterface, IChatGui chatGui, @@ -55,25 +54,22 @@ public void GenerateDraft(IQuestInfo questInfo) return; } - // Always the user Quests directory - the same one QuestRegistry.Reload reads as UserDirectory. - // Deliberately NOT QuestRegistry.GetQuestPathsDirectory(): on a dev install with debug enabled - // that resolves to the repository's QuestPaths bundle, and machine drafts don't belong in the - // checked-in data. - string userQuestsDirectory = Path.Combine(pluginInterface.ConfigDirectory.FullName, "Quests"); - FileInfo file = QuestPathWriter.Write(result, userQuestsDirectory); - - chatGui.Print( - _LF("Generated draft path: {0} ({1} sequences). Review it before trusting it.", - file.Name, result.Root.QuestSequence.Count), - CommandHandler.MessageTag, CommandHandler.TagColor); - foreach (string note in result.Notes) - chatGui.Print($"- {note}", CommandHandler.MessageTag, CommandHandler.TagColor); + string? userQuestsDirectory = QuestRegistry.GetFullPath(questInfo, withFilename:false); + if (userQuestsDirectory != null) + { + FileInfo file = QuestPathWriter.Write(result, userQuestsDirectory); - chatGui.PrintError( - _L("Experimental: expect wrong targets and stalls. Watch the quest while it runs - do not go AFK."), - CommandHandler.MessageTag, CommandHandler.TagColor); + chatGui.Print( + _LF("Generated draft path: {0} ({1} sequences). Review it before trusting it.", + file.Name, result.Root.QuestSequence.Count), + CommandHandler.MessageTag, CommandHandler.TagColor); + foreach (string note in result.Notes) + chatGui.Print($"- {note}", CommandHandler.MessageTag, CommandHandler.TagColor); - questRegistry.Reload(); + chatGui.PrintError( + _L("Experimental: expect wrong targets and stalls. Watch the quest while it runs - do not go AFK."), + CommandHandler.MessageTag, CommandHandler.TagColor); + } } #pragma warning disable CA1031 // a failed draft should never take the UI down with it catch (Exception e) diff --git a/Questionable/Controller/QuestRegistry.cs b/Questionable/Controller/QuestRegistry.cs index 8b47caf9d..2ba3770eb 100644 --- a/Questionable/Controller/QuestRegistry.cs +++ b/Questionable/Controller/QuestRegistry.cs @@ -439,8 +439,8 @@ public static string GetQuestPathsDirectory() return Path.Combine(AssemblyLocation.Directory!.Parent!.Parent!.FullName, "QuestPaths"); return Path.Combine(Svc.PluginInterface.GetPluginConfigDirectory(), "Quests"); } - public static string? GetFullPath(IQuestInfo info) => GetFullPath((QuestInfo)info); - public static string? GetFullPath(QuestInfo info) + public static string? GetFullPath(IQuestInfo info, bool withFilename = true) => GetFullPath((QuestInfo)info, withFilename); + public static string? GetFullPath(QuestInfo info, bool withFilename = true) { var filename = GetFilename(info); var pluginConfig = Svc.PluginInterface.GetPluginConfig(); @@ -449,33 +449,43 @@ public static string GetQuestPathsDirectory() DirectoryInfo? targetFolder = new(Path.Combine(AssemblyLocation.Directory!.Parent!.Parent!.FullName, "QuestPaths", ExpansionData.ExpansionFolders[info.Expansion])); if (targetFolder == null) return null; - if (info.JournalGenre == null || info.JournalGenre == uint.MaxValue) - return Path.Combine(targetFolder.FullName, "Unsorted", filename); - var genre = Svc.Data.GetExcelSheet().GetRow(info.JournalGenre.Value); - var path = $"{genre.Name}"; - Svc.Log.Debug($"Genre: {genre.Name}"); - if (genre.JournalCategory.ValueNullable != null) + string? path = ""; + if (info.JournalGenre != null && info.JournalGenre != uint.MaxValue) { - var category = genre.JournalCategory.Value; - Svc.Log.Debug($"Category: {category.Name}"); - if (category.Name != genre.Name) - path = Path.Combine($"{category.Name}", path); - if (category.JournalSection.ValueNullable != null) + var genre = Svc.Data.GetExcelSheet().GetRow(info.JournalGenre.Value); + path = $"{genre.Name}"; + Svc.Log.Debug($"Genre: {genre.Name}"); + if (genre.JournalCategory.ValueNullable != null) { - var section = category.JournalSection.Value; - Svc.Log.Debug($"Section: {section.Name}"); - if (section.Name != category.Name) + var category = genre.JournalCategory.Value; + Svc.Log.Debug($"Category: {category.Name}"); + if (category.Name != genre.Name) + path = Path.Combine($"{category.Name}", path); + if (category.JournalSection.ValueNullable != null) { - var catPath = $"{category.Name}".Replace($"{section.Name}", "").Trim(); - path = Path.Combine($"{section.Name}", catPath, category.Name != genre.Name ? $"{genre.Name}" : ""); + var section = category.JournalSection.Value; + Svc.Log.Debug($"Section: {section.Name}"); + if (section.Name != category.Name) + { + var catPath = $"{category.Name}".Replace($"{section.Name}", "").Trim(); + path = Path.Combine($"{section.Name}", catPath, category.Name != genre.Name ? $"{genre.Name}" : ""); + } } } } if (path == null || path.Length == 0) - return Path.Combine(targetFolder.FullName, "Unsorted", filename); - return Path.Combine(targetFolder.FullName, path, filename); + { + if (withFilename) + return Path.Combine(targetFolder.FullName, "Unsorted", filename); + return Path.Combine(targetFolder.FullName, "Unsorted"); + } + if (withFilename) + return Path.Combine(targetFolder.FullName, path, filename); + return Path.Combine(targetFolder.FullName, path); } - return Path.Combine(Svc.PluginInterface.GetPluginConfigDirectory(), "Quests", filename); + if (withFilename) + return Path.Combine(Svc.PluginInterface.GetPluginConfigDirectory(), "Quests", filename); + return Path.Combine(Svc.PluginInterface.GetPluginConfigDirectory(), "Quests"); } public static (bool, FileInfo?, string) CreatePath(IQuestInfo info) => CreatePath((QuestInfo)info); public static (bool, FileInfo?, string) CreatePath(QuestInfo info, Quest? quest = null, bool dryrun = false) diff --git a/Questionable/Windows/ConfigWindow.cs b/Questionable/Windows/ConfigWindow.cs index a4a2097fc..7e0dd847a 100644 --- a/Questionable/Windows/ConfigWindow.cs +++ b/Questionable/Windows/ConfigWindow.cs @@ -7,7 +7,19 @@ namespace Questionable.Windows; internal sealed class ConfigWindow -( + : LWindow, IPersistableWindowConfig +{ + private readonly Configuration _configuration; + private readonly DebugConfigComponent _debugConfigComponent; + private readonly DutyConfigComponent _dutyConfigComponent; + private readonly GeneralConfigComponent _generalConfigComponent; + private readonly NotificationConfigComponent _notificationConfigComponent; + private readonly PluginConfigComponent _pluginConfigComponent; + private readonly IDalamudPluginInterface _pluginInterface; + private readonly SinglePlayerDutyConfigComponent _singlePlayerDutyConfigComponent; + private readonly StopConditionComponent _stopConditionComponent; + + public ConfigWindow( IDalamudPluginInterface pluginInterface, GeneralConfigComponent generalConfigComponent, PluginConfigComponent pluginConfigComponent, @@ -16,27 +28,18 @@ internal sealed class ConfigWindow StopConditionComponent stopConditionComponent, NotificationConfigComponent notificationConfigComponent, DebugConfigComponent debugConfigComponent, - Configuration configuration) : LWindow(_L("Config - Questionable") + "###QuestionableConfig"), IPersistableWindowConfig -{ - private readonly Configuration _configuration = configuration; - private readonly DebugConfigComponent _debugConfigComponent = debugConfigComponent; - private readonly DutyConfigComponent _dutyConfigComponent = dutyConfigComponent; - private readonly GeneralConfigComponent _generalConfigComponent = generalConfigComponent; - private readonly NotificationConfigComponent _notificationConfigComponent = notificationConfigComponent; - private readonly PluginConfigComponent _pluginConfigComponent = pluginConfigComponent; - private readonly IDalamudPluginInterface _pluginInterface = pluginInterface; - private readonly SinglePlayerDutyConfigComponent _singlePlayerDutyConfigComponent = singlePlayerDutyConfigComponent; - private readonly StopConditionComponent _stopConditionComponent = stopConditionComponent; - - public WindowConfig WindowConfig => _configuration.ConfigWindowConfig; - - public void SaveWindowConfig() => _pluginInterface.SavePluginConfig(_configuration); - - public override void DrawContent() + Configuration configuration) : base(_L("Config - Questionable") + "###QuestionableConfig") { - using ImRaii.TabBarDisposable tabBar = ImRaii.TabBar("QuestionableConfigTabs"); - if (!tabBar) - return; + _configuration = configuration; + _debugConfigComponent = debugConfigComponent; + _dutyConfigComponent = dutyConfigComponent; + _generalConfigComponent = generalConfigComponent; + _notificationConfigComponent = notificationConfigComponent; + _pluginConfigComponent = pluginConfigComponent; + _pluginInterface = pluginInterface; + _singlePlayerDutyConfigComponent = singlePlayerDutyConfigComponent; + _stopConditionComponent = stopConditionComponent; + Size = new Vector2(400, 400); SizeCondition = ImGuiCond.Once; SizeConstraints = new WindowSizeConstraints @@ -58,6 +61,16 @@ public override void DrawContent() ImGui.Text(_L("Sponsor QST development")); } }); + } + public WindowConfig WindowConfig => _configuration.ConfigWindowConfig; + + public void SaveWindowConfig() => _pluginInterface.SavePluginConfig(_configuration); + + public override void DrawContent() + { + using ImRaii.TabBarDisposable tabBar = ImRaii.TabBar("QuestionableConfigTabs"); + if (!tabBar) + return; _generalConfigComponent.DrawTab(); _pluginConfigComponent.DrawTab(); diff --git a/Questionable/Windows/QuestSelectionWindow.cs b/Questionable/Windows/QuestSelectionWindow.cs index 6c777c70b..763092097 100644 --- a/Questionable/Windows/QuestSelectionWindow.cs +++ b/Questionable/Windows/QuestSelectionWindow.cs @@ -4,6 +4,7 @@ using Dalamud.Interface.Utility.Raii; using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.FFXIV.Client.UI; +using Questionable.AutoGen; using Questionable.Model.Questing; using Questionable.Windows.Common; using Questionable.Windows.Common.Ui; @@ -23,6 +24,7 @@ internal sealed class QuestSelectionWindow : LWindow private readonly QuestTooltipComponent _questTooltipComponent; private readonly TerritoryData _territoryData; private readonly UiUtils _uiUtils; + private readonly DraftQuestPathService _draftQuestPathService; private List _offeredQuests = []; private bool _onlyAvailableQuests = true; @@ -39,6 +41,7 @@ public QuestSelectionWindow( TerritoryData territoryData, IClientState clientState, UiUtils uiUtils, + DraftQuestPathService draftQuestPathService, QuestTooltipComponent questTooltipComponent) : base(_L("Quest Selection") + "{WindowId}") { @@ -52,6 +55,7 @@ public QuestSelectionWindow( _territoryData = territoryData; _clientState = clientState; _uiUtils = uiUtils; + _draftQuestPathService = draftQuestPathService; _questTooltipComponent = questTooltipComponent; Size = new Vector2(500, 200); @@ -213,6 +217,8 @@ public override void DrawContent() ImGui.SameLine(); if (ImGuiComponentsLocal.IconButton(FontAwesomeIcon.Edit)) (bool success, string filename) = QuestRegistry.OpenEditor(quest); + if (ImGui.IsItemClicked(ImGuiMouseButton.Right)) + _draftQuestPathService.GenerateDraft(quest); ImGui.SameLine(); if (knownQuest != null && From a0f6d56ead0f69b5f13bc81886db73f5240ed469 Mon Sep 17 00:00:00 2001 From: alydev Date: Mon, 27 Jul 2026 07:54:29 +1000 Subject: [PATCH 4/4] formatting --- Questionable/AutoGen/Plugin/DraftQuestPathService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Questionable/AutoGen/Plugin/DraftQuestPathService.cs b/Questionable/AutoGen/Plugin/DraftQuestPathService.cs index f78db8a4c..d1dcc9fd7 100644 --- a/Questionable/AutoGen/Plugin/DraftQuestPathService.cs +++ b/Questionable/AutoGen/Plugin/DraftQuestPathService.cs @@ -54,7 +54,7 @@ public void GenerateDraft(IQuestInfo questInfo) return; } - string? userQuestsDirectory = QuestRegistry.GetFullPath(questInfo, withFilename:false); + string? userQuestsDirectory = QuestRegistry.GetFullPath(questInfo, withFilename: false); if (userQuestsDirectory != null) { FileInfo file = QuestPathWriter.Write(result, userQuestsDirectory);