Kelsidavis-WoWee/tools/editor/cli_soulbind_rules_catalog.hpp

13 lines
241 B
C++
Raw Normal View History

feat(pipeline): WBND soulbind rules catalog (135th open format) Novel replacement for the implicit item-binding policy vanilla WoW carried in ItemTemplate.bondingType + per-item special-case rules in the server's LootMgr (the 2-hour raid-loot trade window was hard-coded; the account-bound-shared-across-faction rule for heirlooms was a TBC+ addition with no formal data- driven format). Each WBND entry binds one soulbind rule to its bind kind (BoP / BoE / BoU / BoA / Soulbound / NoBind), itemQualityFloor predicate (rule applies to items of this quality and above unless overridden by a stricter rule), tradable-window duration, raid-trade allowance, BoE-becomes- BoP trigger, and cross-faction sharing flag. Three presets capturing actual expansion-era policy evolution: --gen-bnd-vanilla 4 rules — Poor=NoBind, Common=BoE, Uncommon+=BoP no-window, Epic+=Soulbound. NO raid-trade window — the 1.12 master- loot drama era --gen-bnd-tbc 5 rules adding the iconic 2-hour raid- trade window for BoP items (Uncommon and Rare quality) --gen-bnd-wotlk 6 rules adding Heirloom = BindOnAccount + cross-faction (Alliance<->Horde via account-mail) for the WotLK level-1-to-80 twink path Validator catches: id+name required, bindKind 0..5, itemQualityFloor 0..7, no duplicate ruleIds, no duplicate (bindKind,qualityFloor) pairs (resolveForQuality lookup tie). Hard error: tradableForRaidGroup=true with window=0 (window expires instantly = no window at all). Warns on contradictions: tradableForRaidGroup with non-BoP kind, window > 0 without raid-trade flag, boeBecomesBoP without BoE kind, accountBoundCrossFaction without BoA kind (all flag-ignored at runtime). Format count 134 -> 135. CLI flag count 1409 -> 1416.
2026-05-10 04:44:42 -07:00
#pragma once
namespace wowee {
namespace editor {
namespace cli {
bool handleSoulbindRulesCatalog(int& i, int argc, char** argv,
int& outRc);
} // namespace cli
} // namespace editor
} // namespace wowee