feat(pipeline): WQGR quest graph catalog (132nd open format)

Novel representation of quest-chain dependencies that vanilla
WoW carried implicitly in QuestRelations.dbc (the prequest
column) + per-quest server scripts. Each WQGR entry binds one
quest to its display name, level/class/race gating,
prerequisite quest list (must be completed first), follow-up
quest hints (next-quest suggestions for the journal UI), and
quest type flags (Normal / Daily / Repeatable / Group / Raid).

Three presets:
  --gen-qgr-starter   5-quest linear chain (Northshire human-
                      starter Q100..Q104, levels 1..8) with
                      chainHeadHint=1 on Q100
  --gen-qgr-branched  4-quest converging DAG (Q200 unlocks
                      both Q201 + Q202, both required for Q203)
                      — demonstrates true DAG semantics, not
                      just linear lists
  --gen-qgr-dailies   3 standalone daily quests (Daily type,
                      no prereqs, no followups)

Validator catches: id+name required, questType 0..4,
factionAccess 0..3, maxLevel >= minLevel, no self-prereq
(catch-22), no missing prereq questId, full DFS cycle detection
on prevQuestIds (progression deadlock — quests would be
unreachable). Reuses the proven cycle-extraction pattern from
WMOD addon manifest (extracts back-edge path so the editor sees
the loop). Warns on followup hint to self/missing-id (advisory
only — followups are hints not contracts) and on
chainHeadHint=1 with non-empty prereqs (contradicts chain-head
semantics).

Format count 131 -> 132. CLI flag count 1382 -> 1389.
This commit is contained in:
Kelsi 2026-05-10 04:22:13 -07:00
parent 25ecdb0813
commit 76cda20297
10 changed files with 847 additions and 0 deletions

View file

@ -134,6 +134,7 @@ constexpr FormatMagicEntry kFormats[] = {
{{'W','P','R','T'}, ".wprt", "portals", "--info-wprt", "Mage portal destinations catalog"},
{{'W','C','S','T'}, ".wcst", "stats", "--info-wcst", "Combat stats baseline catalog"},
{{'W','G','B','K'}, ".wgbk", "guild", "--info-wgbk", "Guild bank tabs catalog"},
{{'W','Q','G','R'}, ".wqgr", "quests", "--info-wqgr", "Quest graph catalog"},
{{'W','F','A','C'}, ".wfac", "factions", nullptr, "Faction catalog"},
{{'W','L','C','K'}, ".wlck", "locks", nullptr, "Lock catalog"},
{{'W','S','K','L'}, ".wskl", "skills", nullptr, "Skill catalog"},