feat(editor): add WHRT (Hearth Bind Point) open catalog format

Novel replacement for the hardcoded SMSG_BINDPOINTUPDATE
bind list. Each entry is one valid hearthstone bind
location: a tavern innkeeper, a capital-hall bind clerk,
a quest-given bind reward (Theramore, Wyrmrest), a guild-
hall bind clerk, or a special raid port (Karazhan,
Sunwell). Cross-references WMS for mapId/areaId, WCRT
for the innkeeper NPC, and WCHC for faction-mask bits.

Six bindKind enum values (Inn / Capital / Quest / Guild /
SpecialPort / Faction) and a 3-value factionMask
(AllianceOnly / HordeOnly / Both). Three preset emitters:
makeStarterCities (4 city innkeepers), makeCapitals (6
capital-hall bind clerks), makeStarterInns (8 starter-zone
inns spanning all races).

Validator checks id+name required, factionMask 1..3,
bindKind 0..5, no duplicate ids; warns on (0,0,0)
position (likely forgotten SetPosition; bind would
teleport player to world origin), Inn-kind with no
innkeeper NPC, Quest-kind with no level gate.

Format count 96 -> 97. CLI flag count 1097 -> 1102.
This commit is contained in:
Kelsi 2026-05-10 00:25:55 -07:00
parent 31b9b55ebd
commit c50d3cbae5
10 changed files with 773 additions and 0 deletions

View file

@ -297,6 +297,8 @@ const char* const kArgRequired[] = {
"--gen-grp", "--gen-grp-raid10", "--gen-grp-raid25",
"--info-wgrp", "--validate-wgrp",
"--export-wgrp-json", "--import-wgrp-json",
"--gen-hrt", "--gen-hrt-capitals", "--gen-hrt-inns",
"--info-whrt", "--validate-whrt",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",