feat(pipeline): WCST combat stats baseline catalog (130th open format)

Novel replacement for the per-class per-level base-stat scaling
table that vanilla WoW scattered across CharBaseInfo.dbc +
CharStartOutfit.dbc + GtChanceTo*.dbc + the hard-coded HP/mana-
per-level constants in the server's StatSystem. Each WCST entry
binds one (classId, level) pair to base health, mana, armor, and
the five primary stats (Str/Agi/Sta/Int/Spi).

Sparse design: presets emit ~6 sample levels per class with the
runtime stat-interpolator computing intermediate levels.

Three presets:
  --gen-cst-warrior   Warrior (classId=1) sparse sample at L1/
                      10/20/30/40/60. baseMana=0 across all
                      entries (Warrior uses Rage)
  --gen-cst-mage      Mage (classId=8) same 6 levels with mana
                      growth tracking Intellect
  --gen-cst-starting  All 9 vanilla classes at level 1 — shows
                      per-class flat starting differences
                      (Warrior/Paladin high Str; Hunter/Rogue
                      high Agi; Mage/Priest/Warlock high Int;
                      Shaman/Druid balanced)

Validator catches: id+classId+level required, classId 1..11,
level 1..60, zero baseHealth (player would die instantly),
duplicate statIds, duplicate (classId,level) pairs (runtime
stat-lookup tie). Warns on classId 6/10 (DK/Monk gap unused
in vanilla), Warrior/Rogue baseMana > 0 (these classes use
Rage/Energy not mana), and per-class monotonicity violations
across all 8 stats — sorts by level, walks adjacent pairs,
flags any stat that regresses as level increases (typo guard).

Format count 129 -> 130. CLI flag count 1364 -> 1371.
This commit is contained in:
Kelsi 2026-05-10 04:08:41 -07:00
parent f41f913a2a
commit b66e41df87
10 changed files with 722 additions and 0 deletions

View file

@ -398,6 +398,8 @@ const char* const kArgRequired[] = {
"--gen-prt-alliance", "--gen-prt-horde", "--gen-prt-teleports",
"--info-wprt", "--validate-wprt",
"--export-wprt-json", "--import-wprt-json",
"--gen-cst-warrior", "--gen-cst-mage", "--gen-cst-starting",
"--info-wcst", "--validate-wcst",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",