Commit graph

2 commits

Author SHA1 Message Date
Kelsi
25ecdb0813 feat(editor): WGBK JSON round-trip closure
Adds --export-wgbk-json / --import-wgbk-json. Fixed-size
8-element perRankWithdrawalLimit array serializes as JSON int
array; kUnlimited (0xFFFFFFFF / 4294967295) preserved through
JSON. All 3 presets (standard/raid/small) byte-identical binary
roundtrip OK including the raid preset's tier-tab strict rank-1
4-slot/day caps.

Live-tested per-rank monotonicity validator: hand-mutated
General tab rank 2 (member) limit to 200 (exceeds rank 1
officer cap of 50). Validator correctly errored:
"perRankWithdrawalLimit[2]=200 > rank[1]=50 — lower rank
cannot exceed higher rank's withdrawal cap". Exact rank indices
+ values appear in the message — actionable for the editor.

CLI flag count 1380 -> 1382.
2026-05-10 04:17:37 -07:00
Kelsi
98316b48ac 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.
2026-05-10 04:15:20 -07:00