mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-10 11:03:51 +00:00
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:
parent
54353e03e6
commit
869880fd66
10 changed files with 671 additions and 0 deletions
|
|
@ -2097,6 +2097,16 @@ void printUsage(const char* argv0) {
|
|||
std::printf(" Export binary .wact to a human-editable JSON sidecar (defaults to <base>.wact.json)\n");
|
||||
std::printf(" --import-wact-json <json-path> [out-base]\n");
|
||||
std::printf(" Import a .wact.json sidecar back into binary .wact (accepts barMode int OR barModeName string)\n");
|
||||
std::printf(" --gen-grp <wgrp-base> [name]\n");
|
||||
std::printf(" Emit .wgrp 3 5-man comps (Classic 1T/1H/3D, Heavy-Heal 1T/2H/2D, Roleless 5D speed run)\n");
|
||||
std::printf(" --gen-grp-raid10 <wgrp-base> [name]\n");
|
||||
std::printf(" Emit .wgrp 3 10-man raid comps (Standard 2T/3H/5D, HealingHeavy 2T/4H/4D, MeleeStack 1T/2H/7D for melee-cleave fights)\n");
|
||||
std::printf(" --gen-grp-raid25 <wgrp-base> [name]\n");
|
||||
std::printf(" Emit .wgrp 3 25-man raid comps (Standard 2T/6H/17D, HealingHeavy 1T/8H/16D, ZergDPS 0T/4H/21D)\n");
|
||||
std::printf(" --info-wgrp <wgrp-base>\n");
|
||||
std::printf(" Print WGRP entries (id / map / diff / required tanks/heals/dps / min/max party / spec gate / name)\n");
|
||||
std::printf(" --validate-wgrp <wgrp-base>\n");
|
||||
std::printf(" Static checks: id+name+mapId required, min<=max, role sum<=maxParty (else unfulfillable), no duplicate ids; warns on non-standard size, role sum<minParty, requiredTanks=0 (tank-immune fights)\n");
|
||||
std::printf(" --gen-weather-temperate <wow-base> [zoneName]\n");
|
||||
std::printf(" Emit .wow weather schedule: clear-dominant + occasional rain + fog (forest / grassland)\n");
|
||||
std::printf(" --gen-weather-arctic <wow-base> [zoneName]\n");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue