feat(editor): WSWP JSON round-trip closure

Adds --export-wswp-json / --import-wswp-json with the established
readEnumField template factoring int+name dual encoding for
conditionKind ("always"/"zoneonly"/"classonly"/"raceonly"/
"genderonly"). Signed gain field (gainAdjustDb_x10, int16)
preserved bit-for-bit through JSON.

All 3 presets (bosses/race/ui) byte-identical binary roundtrip
OK.

Live-tested both the duplicate-trigger error AND the same-
priority warning in one mutation: copied Nefarian rule's
trigger triple to match Onyxia (originalSoundId=1234,
ZoneOnly, conditionValue=249). Validator emitted BOTH:
  ERROR: duplicate trigger triple
  WARNING: same priorityIndex=100 — tie-break order undefined
Demonstrates that the validator catches both layers of the
collision (the deterministic data tie + the priority-based
disambiguation that the runtime would have used to resolve it).

CLI flag count 1470 -> 1472.
This commit is contained in:
Kelsi 2026-05-10 05:34:45 -07:00
parent 8c36fc5274
commit 4dd1fb09ff
3 changed files with 172 additions and 0 deletions

View file

@ -433,6 +433,7 @@ const char* const kArgRequired[] = {
"--export-wbrd-json", "--import-wbrd-json",
"--gen-swp-bosses", "--gen-swp-race", "--gen-swp-ui",
"--info-wswp", "--validate-wswp",
"--export-wswp-json", "--import-wswp-json",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",