feat(editor): add WGRP (Group Composition) open catalog format

Novel replacement for the hardcoded LFG / Dungeon Finder
group-composition rules. Defines per-instance role
quotas (tanks / healers / dps), party-size bounds, and
spec-gating. Cross-references WMS for mapId, WCDF for
difficulty.

Three preset emitters covering the canonical raid sizes:
makeFiveMan (Classic 1T/1H/3D, Heavy-Heal trash 1T/2H/2D,
Roleless 5D speedrun), makeRaid10 (Standard 2T/3H/5D,
HealingHeavy 2T/4H/4D, MeleeStack 1T/2H/7D for cleave
fights), makeRaid25 (Standard 2T/6H/17D, HealingHeavy
1T/8H/16D, ZergDPS 0T/4H/21D for tank-immune fights).

Validator rejects role-sums that exceed maxPartySize
(unfulfillable comp), enforces min<=max, no duplicate
ids; warns on non-standard sizes (5/10/25/40 only) and
zero-tank comps so authors confirm intent. Caught one
real bug during smoke-test where a 25-player Wintergrasp
preset was mis-bound to a 10-man maxPartySize.

Format count 95 -> 96. CLI flag count 1090 -> 1095.
This commit is contained in:
Kelsi 2026-05-10 00:20:44 -07:00
parent 54353e03e6
commit 869880fd66
10 changed files with 671 additions and 0 deletions

View file

@ -294,6 +294,8 @@ const char* const kArgRequired[] = {
"--gen-act", "--gen-act-mage", "--gen-act-pet",
"--info-wact", "--validate-wact",
"--export-wact-json", "--import-wact-json",
"--gen-grp", "--gen-grp-raid10", "--gen-grp-raid25",
"--info-wgrp", "--validate-wgrp",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",