feat(pipeline): WAUH auction house config catalog (139th open format)

Novel replacement for the implicit per-faction auction-house
policy vanilla WoW carried in AuctionHouse.dbc + the hard-
coded deposit/cut rate constants in the server's AuctionMgr
(the 5% Alliance/Horde rate vs 15% neutral Booty Bay rate
was hard-coded on AH faction id). Each WAUH entry binds one
auction house instance to its faction-access rules,
deposit-rate (% of vendor sell price held as deposit), AH cut
(% taken from final sale price before crediting seller),
allowed listing durations (min/max hours), per-slot copper
fee, and the auctioneer NPC binding.

Three presets capturing canonical vanilla AH instances:
  --gen-auh-stormwind  Alliance Stormwind Trade District AH
                       with 5%/5% deposit/cut rates, 12-48hr
                       listing tiers, NPC Auctioneer Tricket
                       (creatureId 8666)
  --gen-auh-orgrimmar  Horde Orgrimmar Valley of Strength AH
                       with same vanilla rates as Stormwind,
                       NPC Auctioneer Tahesh (9856)
  --gen-auh-bootybay   Neutral Booty Bay AH with the famous
                       15%/15% penalty rates, NPC Auctioneer
                       Beardo (9858)

Validator catches: id+name required, factionAccess 0..3,
depositRatePct + cutPct each in 0..10000 (basis points), no
duplicate ahIds, no duplicate (faction,name) pairs (UI tab
dispatch tie), no duplicate npcAuctioneerId (gossip dispatch
tie), maxListingDurationHours > 0 and minListing <= maxListing.
CRITICAL: combined depositRatePct + cutPct < 10000 (else
seller would lose money on every successful sale — economic
trap). Warns on combined > 50% (sellers may abandon AH;
verify intentional like neutral AH penalty).

Format count 138 -> 139. CLI flag count 1445 -> 1452.
This commit is contained in:
Kelsi 2026-05-10 05:16:25 -07:00
parent e49567da3c
commit 4b63025e4a
10 changed files with 732 additions and 0 deletions

View file

@ -183,6 +183,7 @@
#include "cli_creature_behavior_catalog.hpp"
#include "cli_random_property_catalog.hpp"
#include "cli_spell_proc_rules_catalog.hpp"
#include "cli_auction_houses_catalog.hpp"
#include "cli_catalog_pluck.hpp"
#include "cli_catalog_find.hpp"
#include "cli_catalog_by_name.hpp"
@ -411,6 +412,7 @@ constexpr DispatchFn kDispatchTable[] = {
handleCreatureBehaviorCatalog,
handleRandomPropertyCatalog,
handleSpellProcRulesCatalog,
handleAuctionHousesCatalog,
handleCatalogPluck,
handleCatalogFind,
handleCatalogByName,