JSON sidecar with sizeCategory derived string ("5man" /
"10man" / "25man" / "40man" / "custom") added on export
for human readability. sizeCategory is purely
informational — the round-trip is driven by maxPartySize
itself; the import handler ignores sizeCategory so users
can edit maxPartySize freely without keeping the two in
sync. requireSpec accepts both bool and int on import for
JSON-edit ergonomics.
All 3 presets (5-man/raid10/raid25) byte-identical
roundtrip OK. CLI flag count 1095 -> 1097.
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.