Kelsidavis-WoWee/tools
Kelsi 6462a08927 feat(pipeline): WCFR combat formula catalog (145th open format)
Originally attempted WMRR (instance lockouts) for this slot but
hit a name-collision with the existing WHLD catalog at the same
file path. Reverted plumbing additions and pivoted to WCFR — a
distinct, complementary domain not covered by any existing
format.

Novel replacement for the per-stat-conversion ratios vanilla
WoW carried in the gtChanceTo*.dbc gameobject tables + the
per-class hard-coded constants in the server's StatSystem (the
"Strength gives 2 AP for Warriors but 1 AP for Mages" rule was
hard-coded; the "1 Agility = 1 Crit% for Hunters but 0.5 Crit%
for Druids" was hard-coded). Each WCFR entry binds one
(outputStat, inputStat, classMask, level-band) tuple to its
conversion ratio in fixed-point units (fp_x100: 100 = 1.0).

Three presets demonstrating per-class ratio variation:
  --gen-cfr-warrior  4 Warrior formulas (Str->AP 2.0 / Agi->
                     Crit 0.05% / Agi->Dodge 0.05% / Str->
                     Parry 0.04% gated to level 30+)
  --gen-cfr-mage     3 Mage formulas (Int->SpellPower 1.0 /
                     Int->SpellCrit 0.02% / Spi->OOC SpellPower
                     0.50)
  --gen-cfr-rogue    4 Rogue formulas (Str->AP 1.0 / Agi->AP
                     1.0 / Agi->Crit 0.07% / Agi->Dodge 0.07%)
                     — Rogue Agi->Crit ratio (7) significantly
                     better than Warrior's (5), demonstrating
                     the per-class differentiation the format
                     captures

Validator catches: id+name required, outputStatKind 0..7,
inputStatKind 0..4, no duplicate formulaIds, no zero
conversionRatio (no-op formula). CRITICAL: no duplicate
(output, input, classMask, levelMin) quad — runtime stat-
compute would apply both formulas, doubling the contribution.
levelMax >= levelMin when set. Warns on conversionRatio > 100x
(likely units-mismatch typo from porting a percentage table
without dividing by 100).

Format count 144 -> 145. CLI flag count 1499 -> 1506.
2026-05-10 06:09:22 -07:00
..
asset_extract feat(extract): --purge-proprietary --json for machine-readable purge report 2026-05-06 11:32:42 -07:00
auth_login_probe Auth: include CRC in legacy proof; extend Turtle integrity set 2026-02-13 01:41:59 -08:00
auth_probe Add authenticator opcode support + auth_probe tool 2026-02-13 00:55:36 -08:00
blp_convert Replace MPQ runtime with loose file asset system 2026-02-12 20:32:14 -08:00
dbc_to_csv tools: fix DBC string-column detection false positives in both dbc_to_csv and asset_extract 2026-03-10 03:49:06 -07:00
editor feat(pipeline): WCFR combat formula catalog (145th open format) 2026-05-10 06:09:22 -07:00
asset_pipeline_gui.py feat(animation): 452 named constants, 30-phase character animation state machine 2026-04-04 23:02:53 +03:00
backup_assets.sh Fix macOS build process and make shell scripts cross-platform 2026-02-23 18:35:53 -08:00
diff_classic_turtle_opcodes.py chore: fix executable permissions on 6 scripts 2026-03-30 18:55:15 -07:00
gen_opcode_registry.py chore: fix executable permissions on 6 scripts 2026-03-30 18:55:15 -07:00
generate_ffx_sdk_vk_permutations.sh Fix FSR3 permutation script failures on arm64 Linux and Windows 2026-03-09 13:11:03 -07:00
m2_viewer.py feat(animation): 452 named constants, 30-phase character animation state machine 2026-04-04 23:02:53 +03:00
opcode_map_utils.py chore: fix executable permissions on 6 scripts 2026-03-30 18:55:15 -07:00
validate_opcode_maps.py chore: fix executable permissions on 6 scripts 2026-03-30 18:55:15 -07:00