mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-10 11:03:51 +00:00
feat(pipeline): add WCRR (Wowee Combat Rating Conversion) catalog
65th open format — replaces gtCombatRatings.dbc plus the per-level rating-to-percentage tables in gtRegenHPPerSpt.dbc and related stat-curve DBCs. Defines per-rating-type conversion factors at canonical level breakpoints (1 / 60 / 70 / 80) — the runtime linearly interpolates between breakpoints for intermediate levels. pointsAtLevelN is "how many rating points equal 1% of the benefit at that level." Higher level = more rating needed for the same %. Standard WoW WotLK example: 14 crit rating = 1% crit at L60, but 45.91 = 1% at L80. 5 rating kinds (Combat / Defense / Spell / Resilience / Other) classify what stat resolver category each rating belongs to. CLI: --gen-crr (3 essential combat ratings — Hit/Crit/Haste at canonical WoW WotLK conversion values), --gen-crr-defensive (4 defensive — Defense/Dodge/Parry/Block with diminishing- returns soft-cap percentages), --gen-crr-spell (3 spell — SpellPower direct 1:1, SpellPenetration flat, MP5 mana regen), --info-wcrr, --validate-wcrr with --json variants. Validator catches id+name required, kind 0..4, all pointsAtLN > 0 (otherwise stat resolver would div-by-zero), maxBenefitPercent > 0 (rating would never grant any benefit), and non-monotonic conversion curve warning (rating cost typically ascends with level for non-flat ratings like SpellPower). Format graph: 64 → 65 binary formats. CLI flag count: 861 → 868.
This commit is contained in:
parent
8be7ac1b5e
commit
5865421b00
10 changed files with 630 additions and 0 deletions
|
|
@ -1643,6 +1643,16 @@ void printUsage(const char* argv0) {
|
|||
std::printf(" Export binary .wsuf to a human-editable JSON sidecar with nested stats[] arrays (defaults to <base>.wsuf.json)\n");
|
||||
std::printf(" --import-wsuf-json <json-path> [out-base]\n");
|
||||
std::printf(" Import a .wsuf.json sidecar back into binary .wsuf (accepts suffixCategory int OR name string; missing stat slots cleared)\n");
|
||||
std::printf(" --gen-crr <wcrr-base> [name]\n");
|
||||
std::printf(" Emit .wcrr starter: 3 essential combat ratings (Hit / Crit / Haste) at canonical L80 conversion values\n");
|
||||
std::printf(" --gen-crr-defensive <wcrr-base> [name]\n");
|
||||
std::printf(" Emit .wcrr 4 defensive ratings (Defense / Dodge / Parry / Block) for tank stat scaling with diminishing returns caps\n");
|
||||
std::printf(" --gen-crr-spell <wcrr-base> [name]\n");
|
||||
std::printf(" Emit .wcrr 3 spell ratings (SpellPower direct / SpellPenetration flat / MP5 mana regen) for caster stat scaling\n");
|
||||
std::printf(" --info-wcrr <wcrr-base> [--json]\n");
|
||||
std::printf(" Print WCRR entries (id / kind / pointsAtL1/L60/L70/L80 conversion floors / max benefit pct / name)\n");
|
||||
std::printf(" --validate-wcrr <wcrr-base> [--json]\n");
|
||||
std::printf(" Static checks: id+name required, kind 0..4, all pointsAtLN > 0 (div-by-zero risk), maxPct > 0, monotonic ascending curve\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