Kelsidavis-WoWee/include/pipeline
Kelsi 2de08a3fd0 feat(pipeline): add WGSP (Wowee Gossip Menu) format
Novel open replacement for AzerothCore-style gossip_menu +
gossip_menu_option + npc_text SQL tables PLUS the Blizzard
NpcText.dbc family. The 23rd open format added to the
editor.

An NPC's dialogue tree: a menu of options the player can
pick from when right-clicking the NPC. Each option may
bridge to another menu, trigger a vendor / trainer
interaction, offer a quest, etc. The simplified per-option
model (kind + actionTarget + flags + moneyCost) covers the
common cases without needing separate npc_text condition
tables.

Closes a major cross-format gap: WCRT.entry.gossipId has
existed since batch 116 (when WCRT was added) but pointed
to a format that didn't exist yet. The innkeeper preset's
menuId=4001 deliberately matches WCRT's Bartleby NPC so
the demo content stack can wire WCRT.gossipId = 4001 once
that field is plumbed through the runtime.

Cross-references:
  WCRT.entry.gossipId        -> WGSP.entry.menuId
  WGSP.option.actionTarget (Submenu) -> WGSP.entry.menuId
  WGSP.option.actionTarget (Vendor / Trainer)
                              -> WTRN.entry.npcId
  WGSP.option.actionTarget (Quest)  -> WQT.entry.questId

Format:
  • magic "WGSP", version 1, little-endian
  • per menu: menuId / titleText + options[]
  • per option: optionId / text / kind / actionTarget /
    requiredFlags / moneyCostCopper

Enums:
  • OptionKind (13): Close / Submenu / Vendor / Trainer /
                     Quest / Tabard / Banker / Innkeeper /
                     FlightMaster / TextOnly / Script /
                     Battlemaster / Auctioneer
  • OptionFlags:    AllianceOnly / HordeOnly / Coinpouch /
                     QuestGated / Closes

API: WoweeGossipLoader::save / load / exists / findById;
presets makeStarter (1 menu with vendor + trainer + close),
makeInnkeeper (2-menu tree: main menu 4001 with hearth /
vendor / flight / submenu options + lore submenu 4002 that
links back), makeQuestGiver (1 menu with 2 quest options
referencing WQT 1 and 100, plus a paid respec script
exercising the Coinpouch flag with a 10g cost).

CLI added (5 flags, 558 documented total now):
  --gen-gossip / --gen-gossip-innkeeper / --gen-gossip-questgiver
  --info-wgsp / --validate-wgsp

Validator catches: menuId=0 + duplicates, empty title /
options, unknown option kind, empty option text, Submenu
options pointing at non-existent menuIds (intra-format
cross-reference resolution), Coinpouch flag without
moneyCost (misleading UI), AllianceOnly+HordeOnly conflict.
2026-05-09 16:20:07 -07:00
..
adt_loader.hpp feat(adt): preserve MODF nameSet + scale fields across load/save round-trip 2026-05-06 03:37:13 -07:00
asset_manager.hpp feat(runtime): pick up WHM/WOT/WOC sidecars from asset tree 2026-05-06 10:48:40 -07:00
asset_manifest.hpp feat(editor): add standalone world editor (rough/WIP) 2026-05-05 03:47:03 -07:00
blp_loader.hpp Add attribution and source citations for open source release 2026-02-02 22:09:33 -08:00
custom_zone_discovery.hpp feat: custom zone discovery system for client auto-detection 2026-05-05 10:01:05 -07:00
dbc_layout.hpp fix: auto-detect CharSections.dbc layout and add Blood Elf/Draenei NPC voices 2026-03-23 11:00:49 -07:00
dbc_loader.hpp feat: complete client integration for all 6 open formats 2026-05-05 12:41:19 -07:00
loose_file_reader.hpp Replace MPQ runtime with loose file asset system 2026-02-12 20:32:14 -08:00
m2_loader.hpp feat: implement M2 ribbon emitter rendering for spell trail effects 2026-03-13 01:17:30 -07:00
terrain_mesh.hpp Initial commit: wowee native WoW 3.3.5a client 2026-02-02 13:03:22 -08:00
wdt_loader.hpp Add instance support: WDT parser, WMO-only map loading, area triggers, BG queue accept 2026-02-26 17:56:11 -08:00
wmo_loader.hpp wmo: apply MOHD ambient color to interior group lighting 2026-03-09 21:27:01 -07:00
wowee_achievements.hpp feat(pipeline): add WACH (Wowee Achievement Catalog) format 2026-05-09 16:04:30 -07:00
wowee_building.hpp feat(wob): tryLoadByGamePath helper, used by editor + terrain_manager 2026-05-06 04:10:12 -07:00
wowee_collision.hpp feat(woc): add WMO collision meshes to exported zone collision 2026-05-06 02:33:22 -07:00
wowee_creatures.hpp feat(pipeline): add WCRT (Wowee Creature Template) format 2026-05-09 15:18:44 -07:00
wowee_factions.hpp feat(pipeline): add WFAC (Wowee Faction Catalog) format 2026-05-09 15:37:59 -07:00
wowee_gossip.hpp feat(pipeline): add WGSP (Wowee Gossip Menu) format 2026-05-09 16:20:07 -07:00
wowee_items.hpp feat(pipeline): add WIT (Wowee Item Template) format 2026-05-09 15:04:48 -07:00
wowee_light.hpp feat(pipeline): add WOL preset variants for cave/dungeon/night 2026-05-09 14:01:26 -07:00
wowee_locks.hpp feat(pipeline): add WLCK (Wowee Lock Template) format 2026-05-09 15:44:26 -07:00
wowee_loot.hpp feat(pipeline): add WLOT (Wowee Loot Table) format 2026-05-09 15:11:08 -07:00
wowee_model.hpp feat(extract): emit WOM and WOB side-files (M2/WMO → open formats) 2026-05-06 10:32:17 -07:00
wowee_objects.hpp feat(pipeline): add WGOT (Wowee Game Object Template) format 2026-05-09 15:31:49 -07:00
wowee_quests.hpp feat(pipeline): add WQT (Wowee Quest Template) format 2026-05-09 15:25:02 -07:00
wowee_skills.hpp feat(pipeline): add WSKL (Wowee Skill Catalog) format 2026-05-09 15:50:25 -07:00
wowee_sound.hpp feat(pipeline): add WSND (Wowee Sound Catalog) format 2026-05-09 14:47:16 -07:00
wowee_spawns.hpp feat(pipeline): add WSPN (Wowee Spawn Point catalog) format 2026-05-09 14:57:53 -07:00
wowee_spells.hpp feat(pipeline): add WSPL (Wowee Spell Catalog) format 2026-05-09 15:58:09 -07:00
wowee_terrain_loader.hpp feat: integrate Wowee Open Terrain loader into client terrain pipeline 2026-05-05 09:56:24 -07:00
wowee_trainers.hpp feat(pipeline): add WTRN (Wowee Trainer / Vendor catalog) format 2026-05-09 16:12:58 -07:00
wowee_weather.hpp feat(pipeline): add Wowee Open Weather (.wow) zone schedule 2026-05-09 14:10:13 -07:00
wowee_world_map.hpp feat(pipeline): add WOMX (Wowee World Map index) format 2026-05-09 14:38:05 -07:00