feat(pipeline): add WSUF (Wowee Item Random Suffix) catalog

64th open format — replaces ItemRandomProperties.dbc +
ItemRandomSuffix.dbc plus the AzerothCore-style suffix-roll
tables. Defines random "of the X" suffixes that roll on
green and blue items at world drop ("Sturdy Cloth Cap of
the Bear" = base item + STR + STA suffix).

5 suffix categories (Generic / Elemental / Defensive /
PvPSuffix / Crafted), per-suffix item-quality bracket gating
(only blue+ items can roll PvPSuffix), restricted-slot mask
that limits which equipment slots a suffix can apply to (15
slot bits matching WCEQ slot enum), and up to 5 stat bonus
slots per suffix matching WoW canonical max.

statValuePoints isn't an absolute number — it's a scaling
base that the runtime multiplies by an item-level
coefficient to compute the final per-item bonus, so "of the
Bear" gives proportionally more strength on a level-60 item
than on a level-20 item.

Cross-references with prior formats — statKind values match
WIT.statType enum (STR=4, AGI=3, INT=5, SPI=6, STA=7) so
item generators roll consistent stats with base items.

CLI: --gen-suf (3 generic stat triads — Bear STR+STA, Eagle
INT+SPI, Tiger STR+AGI), --gen-suf-magical (4 elemental
spell-power suffixes restricted to caster-eligible slots),
--gen-suf-pvp (3 PvPSuffix entries with resilience + offensive
stats, blue+ quality only), --info-wsuf, --validate-wsuf with
--json variants. Validator catches id+name required, category
0..4, quality range valid (0..7 covers heirloom), itemQuality
floor<=ceiling, stat-kind/value pairing (kind=0 with value!=0
is a typo, vice versa), and no-stats warning (suffix renames
item without changing it).

Format graph: 63 → 64 binary formats. CLI flag count: 854
→ 861.
This commit is contained in:
Kelsi 2026-05-09 21:05:49 -07:00
parent b1967c4453
commit d547de61f5
10 changed files with 677 additions and 0 deletions

View file

@ -66,6 +66,7 @@ constexpr FormatMagicEntry kFormats[] = {
{{'W','B','N','K'}, ".wbnk", "items", "--info-wbnk", "Bag / bank slot catalog"},
{{'W','R','U','N'}, ".wrun", "spells", "--info-wrun", "Death Knight rune cost catalog"},
{{'W','L','D','S'}, ".wlds", "ui", "--info-wlds", "Loading screen catalog"},
{{'W','S','U','F'}, ".wsuf", "items", "--info-wsuf", "Item random-suffix catalog"},
{{'W','F','A','C'}, ".wfac", "factions", nullptr, "Faction catalog"},
{{'W','L','C','K'}, ".wlck", "locks", nullptr, "Lock catalog"},
{{'W','S','K','L'}, ".wskl", "skills", nullptr, "Skill catalog"},