diff --git a/CHANGELOG.md b/CHANGELOG.md index cf32afe19..df3031ebe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,3 @@ -- bug fix: locked quest reasons in journal progress -alydev \ No newline at end of file +- Feature: added "instant" quests (So You Want To Be A Questionable User) to Journal Progress > Other Quests > Special Quests > Instant Quests -alydev + - the "Instant Quests" label can be right clicked to select "Add all to priority quests", this will let users run all available one-step quasi-quests in one go (in theory!) +- Feature: replaced button labels (visible on hover) to quick access buttons -alydev \ No newline at end of file diff --git a/Directory.Build.targets b/Directory.Build.targets index bdc5c3c42..72eebf7b7 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,6 +1,6 @@ - 15.306.1.9 + 15.306.1.10 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 c40198747..8af835274 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "Iskierka", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2673_The Price of Betrayal.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2673_The Price of Betrayal.json index f42346d2e..5b42f4d52 100644 --- a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2673_The Price of Betrayal.json +++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2673_The Price of Betrayal.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "Iskierka", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2687_Pulling Double Booty.json b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2687_Pulling Double Booty.json index 65b109229..6870bb96d 100644 --- a/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2687_Pulling Double Booty.json +++ b/QuestPaths/4.x - Stormblood/Aether Currents/The Ruby Sea/2687_Pulling Double Booty.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "Iskierka", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 ff77679b8..16576984c 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "Iskierka", "Date": "2026-06-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/ALC/2437_The Forbidden Blade.json b/QuestPaths/4.x - Stormblood/Class Quests/ALC/2437_The Forbidden Blade.json index c093e2ff8..895ffb549 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/ALC/2437_The Forbidden Blade.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/ALC/2437_The Forbidden Blade.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-20"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2595_Eastern Apprentice.json b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2595_Eastern Apprentice.json index 4206a20bd..3a122f66e 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2595_Eastern Apprentice.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2595_Eastern Apprentice.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2596_Forging with Scales.json b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2596_Forging with Scales.json index 8aa88d604..ca55fb4e2 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2596_Forging with Scales.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2596_Forging with Scales.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2597_Head-to-head Contest.json b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2597_Head-to-head Contest.json index 67c137f28..ebc2f4504 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2597_Head-to-head Contest.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2597_Head-to-head Contest.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2598_A Confluence of Style.json b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2598_A Confluence of Style.json index 4b525822f..f73f81f9f 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/ARM/2598_A Confluence of Style.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/ARM/2598_A Confluence of Style.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/BSM/2619_The Final Face-off.json b/QuestPaths/4.x - Stormblood/Class Quests/BSM/2619_The Final Face-off.json index 3252c46c9..7ecb5ea74 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/BSM/2619_The Final Face-off.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/BSM/2619_The Final Face-off.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": { "Username": "alydev", "Date": "2026-07-19" }, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/CRP/2442_The Game of Confidence.json b/QuestPaths/4.x - Stormblood/Class Quests/CRP/2442_The Game of Confidence.json index 0276b9d35..874261853 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/CRP/2442_The Game of Confidence.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/CRP/2442_The Game of Confidence.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/CRP/2443_A Lesson in Listening.json b/QuestPaths/4.x - Stormblood/Class Quests/CRP/2443_A Lesson in Listening.json index 32be7323f..f0075ebfb 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/CRP/2443_A Lesson in Listening.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/CRP/2443_A Lesson in Listening.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2600_Gemworks in Progress.json b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2600_Gemworks in Progress.json index ad5b517d9..edde30ad3 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2600_Gemworks in Progress.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2600_Gemworks in Progress.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2601_Blindsided.json b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2601_Blindsided.json index b0e72fa12..0579c93d5 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2601_Blindsided.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2601_Blindsided.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2602_The Perfect Tribute.json b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2602_The Perfect Tribute.json index 74411ac42..eed5141cb 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2602_The Perfect Tribute.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2602_The Perfect Tribute.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2603_Sultana Dreaming.json b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2603_Sultana Dreaming.json index fb979c9b7..18eb164c5 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/GSM/2603_Sultana Dreaming.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/GSM/2603_Sultana Dreaming.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/LTW/2610_Mounting Expectations.json b/QuestPaths/4.x - Stormblood/Class Quests/LTW/2610_Mounting Expectations.json index f4ea9b044..d27511263 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/LTW/2610_Mounting Expectations.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/LTW/2610_Mounting Expectations.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/LTW/2611_The Value of Life.json b/QuestPaths/4.x - Stormblood/Class Quests/LTW/2611_The Value of Life.json index 6ad248598..a1d3f7e68 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/LTW/2611_The Value of Life.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/LTW/2611_The Value of Life.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/LTW/2614_The Trouble with Taxidermy.json b/QuestPaths/4.x - Stormblood/Class Quests/LTW/2614_The Trouble with Taxidermy.json index 5457d594a..600d323d6 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/LTW/2614_The Trouble with Taxidermy.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/LTW/2614_The Trouble with Taxidermy.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2432_The Butterfly Effect.json b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2432_The Butterfly Effect.json index e3a31bbbf..57bac4597 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2432_The Butterfly Effect.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2432_The Butterfly Effect.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2433_The Crane's Caveat.json b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2433_The Crane's Caveat.json index f30a98256..7e422dcb5 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2433_The Crane's Caveat.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2433_The Crane's Caveat.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2434_A Geiko for All Seasons.json b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2434_A Geiko for All Seasons.json index 8a7d63e36..ca04de67f 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2434_A Geiko for All Seasons.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2434_A Geiko for All Seasons.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2435_Send Me an Angel.json b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2435_Send Me an Angel.json index e1d67b1b8..fbfcd4180 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/WVR/2435_Send Me an Angel.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/WVR/2435_Send Me an Angel.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Gezah", - "LastChecked": {"Username": "alydev", "Date": "2026-07-19"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { 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 07283e42d..7c2a0fdc1 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 1970cce2c..d16174884 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2471_Where the Streets Are Paved with Koban.json b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2471_Where the Streets Are Paved with Koban.json index c8dab1066..778fd797d 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2471_Where the Streets Are Paved with Koban.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2471_Where the Streets Are Paved with Koban.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2472_By the Grace of Lord Lolorito.json b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2472_By the Grace of Lord Lolorito.json index 41ac227f8..f3c81ea3f 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2472_By the Grace of Lord Lolorito.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2472_By the Grace of Lord Lolorito.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2473_A Good Samurai Is Hard to Find.json b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2473_A Good Samurai Is Hard to Find.json index d1eba56bc..0fea48497 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2473_A Good Samurai Is Hard to Find.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2473_A Good Samurai Is Hard to Find.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2474_It's Probably a Trap.json b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2474_It's Probably a Trap.json index d984bad3c..edecef231 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2474_It's Probably a Trap.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2474_It's Probably a Trap.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 da9f765ef..62ee0ce00 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2476_Once More, to the Ruby Sea.json b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2476_Once More, to the Ruby Sea.json index e44457c98..c5c9982d1 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2476_Once More, to the Ruby Sea.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A2-Kugane/2476_Once More, to the Ruby Sea.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2477_Open Water.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2477_Open Water.json index 63a04476c..e1de72fba 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2477_Open Water.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2477_Open Water.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2478_Boys with Boats.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2478_Boys with Boats.json index a83e85e49..bed33e8b0 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2478_Boys with Boats.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2478_Boys with Boats.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 2a3af657a..3c19239fe 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2480_Confederate Consternation.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2480_Confederate Consternation.json index cf1738389..28d7c6e3f 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2480_Confederate Consternation.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2480_Confederate Consternation.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 7c659c6a6..12ee8de3e 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 6c8e12e51..770866642 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2483_Of Kojin and Kami.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2483_Of Kojin and Kami.json index 65090c2bc..d79985544 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2483_Of Kojin and Kami.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2483_Of Kojin and Kami.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 c15495468..83db4d983 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2485_Forever and Ever Apart.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2485_Forever and Ever Apart.json index c2ade83d5..4e6dde5e6 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2485_Forever and Ever Apart.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2485_Forever and Ever Apart.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 a64f121d5..22485378f 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": ["JerryWester", "Kiarra"], - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2487_The Whims of the Divine.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2487_The Whims of the Divine.json index a68785e34..392658883 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2487_The Whims of the Divine.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2487_The Whims of the Divine.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2679_The Last Voyage.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2679_The Last Voyage.json index 295150cf9..cb7f90489 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2679_The Last Voyage.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2679_The Last Voyage.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2681_The Solace of the Sea.json b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2681_The Solace of the Sea.json index 8aab3f391..be7b92fc4 100644 --- a/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2681_The Solace of the Sea.json +++ b/QuestPaths/4.x - Stormblood/MSQ/A3.1-Ruby Sea/2681_The Solace of the Sea.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, 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 a63efa6e4..c42879573 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 @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "JerryWester", - "LastChecked": {"Username": "alydev", "Date": "2026-07-25"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3252_Dances with Duskwights.json b/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3252_Dances with Duskwights.json index 5e0885e20..a40cb8384 100644 --- a/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3252_Dances with Duskwights.json +++ b/QuestPaths/5.x - Shadowbringers/Class Quests/DNC/3252_Dances with Duskwights.json @@ -1,7 +1,7 @@ { "$schema": "https://qstxiv.github.io/schema/quest-v1.json", "Author": "Fifi", - "LastChecked": {"Username": "alydev", "Date": "2026-07-23"}, + "LastChecked": {"Username": "alydev", "Date": "2026-07-30"}, "QuestSequence": [ { "Sequence": 0, diff --git a/Questionable/Data/JournalData.cs b/Questionable/Data/JournalData.cs index c5306bd9b..13adb3bcb 100644 --- a/Questionable/Data/JournalData.cs +++ b/Questionable/Data/JournalData.cs @@ -4,7 +4,7 @@ namespace Questionable.Data; internal sealed class JournalData { - public JournalData(IDataManager dataManager, QuestData questData) + public JournalData(IDataManager dataManager, QuestData questData, QuestRegistry questRegistry) { List genres = dataManager.GetExcelSheet() .Where(x => x.RowId > 0 && x.Icon > 0) @@ -35,6 +35,14 @@ public JournalData(IDataManager dataManager, QuestData questData) .RemoveAll(x => genreLimsa.Quests.Contains(x) || genreGridania.Quests.Contains(x) || genreUldah.Quests.Contains(x)); + Genre instantGenre = new(uint.MaxValue - 4, _L("Instant Quests"), SpecialQuests, + questRegistry.AllQuests + .Where(x => x.Info is QuestInfo qInfo && qInfo.CompletesInstantly) + .Select(x => x.Info) + .ToList() + ); + genres = genres.Append(instantGenre).ToList(); + Genres = genres.ToList(); Categories = dataManager.GetExcelSheet() .Where(x => x.RowId > 0) @@ -44,6 +52,7 @@ public JournalData(IDataManager dataManager, QuestData questData) .Select(x => new Section(x, Categories.Where(y => y.SectionId == x.RowId).ToList())) .ToList(); } + const uint SpecialQuests = 98; public List Genres { get; } public List Categories { get; } diff --git a/Questionable/Data/QuestData.cs b/Questionable/Data/QuestData.cs index 87d266b98..e0ef4b4a6 100644 --- a/Questionable/Data/QuestData.cs +++ b/Questionable/Data/QuestData.cs @@ -441,14 +441,12 @@ private List GetQuestsInNewGamePlusChapters(List chapterIds) public List GetLockedClassQuests() { - Job startingClass; + Job startingClass = Job.ADV; unsafe { PlayerState* playerState = PlayerState.Instance(); if (playerState != null) startingClass = (Job)playerState->FirstClass; - else - startingClass = Job.ADV; } if (startingClass == Job.ADV) diff --git a/Questionable/Windows/Common/Ui/QstWidgets.cs b/Questionable/Windows/Common/Ui/QstWidgets.cs index 8e370527b..dfbea3eb6 100644 --- a/Questionable/Windows/Common/Ui/QstWidgets.cs +++ b/Questionable/Windows/Common/Ui/QstWidgets.cs @@ -133,7 +133,7 @@ public static bool Chip(string text, Vector4 color) } // Icon button with a tooltip and an optional count badge. - public static bool RailButton(FontAwesomeIcon icon, string tooltip, Vector4? tint = null, + public static bool RailButton(FontAwesomeIcon icon, string label, string? tooltip = null, Vector4? tint = null, bool enabled = true, string? countBadge = null, Vector4? badgeColor = null, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0) { @@ -156,7 +156,9 @@ public static bool RailButton(FontAwesomeIcon icon, string tooltip, Vector4? tin if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled)) { using ImRaii.TooltipDisposable _ = ImRaii.Tooltip(); - ImGui.TextUnformatted(tooltip); + if (tooltip?.Length != 0) + tooltip = $"\n{tooltip}"; + ImGui.TextUnformatted($"{label}{tooltip}"); } return clicked && enabled; diff --git a/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs b/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs index ebc220c9b..cd9d38de0 100644 --- a/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs +++ b/Questionable/Windows/QuestComponents/QuickAccessButtonsComponent.cs @@ -48,6 +48,7 @@ public void Draw() private void DrawPriorityQuestsButton() { if (QstWidgets.RailButton(FontAwesomeIcon.ExclamationCircle, + _L("Priority Quests"), _L("Configure priority quests which will be done as soon as possible."), enabled: objectTable[0] != null)) priorityWindow.ToggleOrUncollapse(); @@ -59,7 +60,7 @@ private void DrawRebuildNavmeshButton() string tooltip = isNavmeshAvailable ? _L("Hold CTRL to enable this button. Rebuilding the navmesh will take some time.") : _L("vnavmesh is not available. Please install it first."); - if (QstWidgets.RailButton(FontAwesomeIcon.GlobeEurope, tooltip, + if (QstWidgets.RailButton(FontAwesomeIcon.GlobeEurope, _L("Rebuild Navmesh"), tooltip, enabled: isNavmeshAvailable && ImGui.IsKeyDown(ImGuiKey.ModCtrl))) commandManager.ProcessCommand("/vnav rebuild"); } @@ -79,6 +80,7 @@ private void DrawJournalProgressButton() private void DrawTroubleshootingButton(QuestController.QuestProgress? questProgress, bool isRunning) { bool leftClicked = QstWidgets.RailButton(FontAwesomeIcon.Handshake, + _L("Stuck?"), _L("Left click: Copy troubleshooting information to clipboard\nRight click: Copy list of completed quests to clipboard"), tint: isRunning ? QstTheme.Accent : null, enabled: objectTable[0] != null); @@ -159,6 +161,7 @@ private void DrawValidationIssuesButton() bool hasErrors = errorCount > 0; if (QstWidgets.RailButton(hasErrors ? FontAwesomeIcon.ExclamationTriangle : FontAwesomeIcon.InfoCircle, + _L("Quest Validation"), _LF("Quest validation: {0} errors, {1} infos", errorCount, infoCount), tint: hasErrors ? QstTheme.Danger : QstTheme.Info)) questValidationWindow.ToggleOrUncollapse();