feat(editor): WBND JSON round-trip closure

Adds --export-wbnd-json / --import-wbnd-json with the established
readEnumField template factoring int+name dual encoding for both
bindKind ("bindonpickup"/"bindonequip"/"bindonuse"/
"bindonaccount"/"soulbound"/"nobind") and itemQualityFloor
("poor"/"common"/"uncommon"/"rare"/"epic"/"legendary"/
"artifact"/"heirloom"). All 3 presets (vanilla/TBC/WotLK)
byte-identical binary roundtrip OK including the WotLK
Heirloom rule with accountBoundCrossFaction=true.

Live-tested raid-trade-window=0 contradiction validator:
hand-mutated TBC Uncommon rule (ruleId 12) tradableWindowSec
to 0 while keeping tradableForRaidGroup=true. Validator
correctly errored: "tradableForRaidGroup=true with
tradableWindowSec=0 — window expires instantly, equivalent
to no window". Catches a subtle policy-config bug where the
flag claims a feature exists but the duration silently
disables it.

CLI flag count 1416 -> 1418.
This commit is contained in:
Kelsi 2026-05-10 04:47:08 -07:00
parent 19af564a27
commit e2cd30a6c5
3 changed files with 194 additions and 0 deletions

View file

@ -415,6 +415,7 @@ const char* const kArgRequired[] = {
"--export-wloc-json", "--import-wloc-json",
"--gen-bnd-vanilla", "--gen-bnd-tbc", "--gen-bnd-wotlk",
"--info-wbnd", "--validate-wbnd",
"--export-wbnd-json", "--import-wbnd-json",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",