Commit graph

2 commits

Author SHA1 Message Date
Kelsi
6b05136ef1 feat(editor): add WPCN JSON round-trip (export/import sidecar)
Closes the JSON round-trip gap on the player condition catalog
format shipped this batch. --export-wpcn-json emits all 11
scalar fields plus dual int + name forms for conditionKind /
comparisonOp / chainOp so hand-edits can use either
representation. --import-wpcn-json accepts either form,
falling back to the int when both are present. Verified
byte-identical round-trip on all three preset emitters
(starter / quest-gates / composite — including chained
conditions referencing other entries by chainNextId). 747
documented CLI flags.
2026-05-09 19:38:06 -07:00
Kelsi
b983ef6d48 feat(pipeline): add WPCN (Wowee Player Condition) catalog
49th open format — replaces PlayerCondition.dbc plus the
AzerothCore-style condition resolver. Defines reusable
boolean checks that other catalogs reference by conditionId
to gate gossip options, vendor items, quest availability,
achievement criteria, spell trainer offerings.

16 condition kinds (Always, Race, Class, Level, Zone, Map,
Reputation, AchievementWon, QuestComplete, QuestActive,
SpellKnown, ItemEquipped, Faction, InCombat, Mounted,
Resting), 8 comparison ops (==, !=, >, >=, <, <=, in-set,
not-in-set), and 4 chain ops (none, and, or, not) — chain
multiple conditions via chainNextId to express arbitrary
boolean trees.

Cross-references with prior formats — targetIdA is
polymorphic by conditionKind: resolves to WCHC raceId/classId,
WMS areaId/mapId, WFAC factionId, WACH achievementId, WQT
questId, WSPL spellId, or WIT itemId. chainNextId resolves
within the same WPCN catalog.

CLI: --gen-pcn (3 single-check starters), --gen-pcn-quest-gates
(4 cross-format quest gates with real WQT/WFAC/WACH/WMS IDs),
--gen-pcn-composite (3 leaves + 3 chained roots showing AND/
OR/NOT). Validator catches id=0/duplicates, kind/op out of
range, chain self-loop (infinite recursion), chainOp set
without chainNextId (dangling chain), chainNextId set without
chainOp (dead pointer warning), and unresolved chainNextId
references.
2026-05-09 19:36:56 -07:00