feat(pipeline): add WAUC (Wowee Auction House) catalog

Novel open replacement for Blizzard's AuctionHouse.dbc +
the AzerothCore-style auctionhouse / auctionhousebot SQL
tables. The 39th open format added to the editor.

Defines per-house rules for the auction system: faction
access, deposit rate (basis points of buyout price), house
cut on successful sale, three listing duration tiers with
per-tier deposit multipliers, disallowed item-class bitmask,
and the auctioneer NPC.

Cross-references with previously-added formats:
  WAUC.entry.auctioneerNpcId   -> WCRT.entry.creatureId
                                   (Auctioneer-flagged NPC)
  WAUC.entry.disallowedClassMask
                                  bitmask of WIT.Class values
                                  that may not be auctioned at
                                  this house

The faction-pair preset captures the canonical asymmetry:
faction houses charge 5% on a successful sale while neutral
houses charge 15% — the cross-faction tax that makes
neutral AHs profitable for goblins.

Format:
  • magic "WAUC", version 1, little-endian
  • per house: houseId / auctioneerNpcId / name /
    factionAccess / baseDepositRateBp / houseCutRateBp /
    maxBidCopper / 3 duration hours + 3 deposit multipliers /
    disallowedClassMask

Enums:
  • FactionAccess (4): Alliance / Horde / Neutral / Both
  • Rates use basis points: 10000 = 100%

API: WoweeAuctionLoader::save / load / exists / findById.

Three preset emitters showcase typical auction setups:
  • makeStarter        — 1 neutral house with default 12h /
                          24h / 48h tiers
  • makeFactionPair    — 3 houses (Stormwind / Orgrimmar /
                          Booty Bay) with auctioneer NPC IDs
                          + canonical faction-vs-neutral cut
                          rates
  • makeRestricted     — 1 house disallowing Containers (1) +
                          Quest items (12) + Keys (13) with
                          tighter durations + 1000g bid cap

CLI added (5 flags, 670 documented total now):
  --gen-auction / --gen-auction-pair / --gen-auction-restricted
  --info-wauc / --validate-wauc

Validator catches: houseId=0 + duplicates, empty name,
factionAccess out of range, duration tier=0, durations not
in short<=medium<=long order, houseCutRateBp >= 100% (seller
loses money on a sale), warns on >50% cut.
This commit is contained in:
Kelsi 2026-05-09 18:34:54 -07:00
parent a3af35ec49
commit ab72380ee0
8 changed files with 587 additions and 0 deletions

View file

@ -112,6 +112,8 @@ const char* const kArgRequired[] = {
"--export-wpcd-json", "--import-wpcd-json",
"--gen-pets", "--gen-pets-hunter", "--gen-pets-warlock",
"--info-wpet", "--validate-wpet",
"--gen-auction", "--gen-auction-pair", "--gen-auction-restricted",
"--info-wauc", "--validate-wauc",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",