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

@@ -140,6 +140,7 @@
#include "cli_stable_slots_catalog.hpp"
#include "cli_stat_curves_catalog.hpp"
#include "cli_action_bars_catalog.hpp"
#include "cli_group_compositions_catalog.hpp"
#include "cli_quest_objective.hpp"
#include "cli_quest_reward.hpp"
#include "cli_clone.hpp"
@@ -321,6 +322,7 @@ constexpr DispatchFn kDispatchTable[] = {
handleStableSlotsCatalog,
handleStatCurvesCatalog,
handleActionBarsCatalog,
handleGroupCompositionsCatalog,
handleQuestObjective,
handleQuestReward,
handleClone,