feat(pipeline): WGBK guild bank tabs catalog (131st open format)

Novel format providing what vanilla WoW lacked entirely: a
guild-level shared storage facility (Blizzard added guild banks
in TBC, but the Wowee project provides this format from day one
for the Classic-1.12 server flavor as well as later expansions).
Each WGBK entry binds one guild bank tab to its display label,
slot count (1..98 vanilla cap), deposit-only flag, icon, and a
fixed-size per-guild-rank withdrawal limit array (slots/day cap
per rank 0..7, where rank 0 is GuildMaster, kUnlimited =
0xFFFFFFFF).

Three presets:
  --gen-gbk        Standard 4-tab bank (General/Materials/
                   Consumables/Officer) for guildId 1 with
                   progressive per-rank caps
  --gen-gbk-raid   5-tab raid guild (Tier1_BWL/Tier2_AQ40/
                   Tier3_Naxx + Consumables + Officer) — tier
                   tabs strictly officer-only with 4-slot/day
                   cap on rank 1
  --gen-gbk-small  2-tab small guild (General + Officer) with
                   tight 5-slot/day caps below officer rank

Validator catches: id+guildId+tabName required, slotCount 1..98
(vanilla cap), GM withdrawal limit > 0 (rank 0 cannot be locked
out — almost certainly a typo), per-rank monotonicity (lower
rank cannot exceed higher rank's cap — kUnlimited treated as
infinity for compare), no duplicate tabIds, no duplicate
(guildId,tabName) pairs (UI dispatch tie). Warns on depositOnly
flag set with non-zero rank-0 limit (self-contradiction — flag
overrides at runtime but data is contradictory).

Format count 130 -> 131. CLI flag count 1373 -> 1380.
This commit is contained in:
Kelsi 2026-05-10 04:15:20 -07:00
parent fab32a1cff
commit 98316b48ac
10 changed files with 690 additions and 0 deletions

View file

@ -155,6 +155,7 @@ constexpr FormatRow kFormats[] = {
{"WTSC", ".wtsc", "transit", "TaxiNodes + zeppelin GO scripts", "Transit schedule catalog (taxi/zeppelin/boat scheduled departures)"},
{"WPRT", ".wprt", "portals", "SpellEffect TELEPORT_UNITS + AreaTrigger","Mage portal destinations catalog (spellId -> coords binding)"},
{"WCST", ".wcst", "stats", "CharBaseInfo + GtChanceTo*.dbc + StatSystem","Combat stats baseline catalog (per-class per-level base stats)"},
{"WGBK", ".wgbk", "guild", "(absent in vanilla, TBC GuildBankTab)","Guild bank tabs catalog (per-rank withdrawal limits)"},
// Additional pipeline catalogs without the alternating
// gen/info/validate CLI surface (loaded by the engine