feat(pipeline): WLOC world locations catalog (134th open format)

Novel unified replacement for the half-dozen proprietary
location tables vanilla WoW scattered across AreaPOI.dbc
(zone-discovery landmarks), gameobject_template.spawn rows
(herb/mineral/fishing nodes), creature_template rare-spawn
entries, and AreaTrigger.dbc (zone boundary teleports). Each
WLOC entry binds one world coord (mapId, x, y, z) to its kind
(POI / RareSpawn / HerbNode / MineralVein / FishingSpot /
AreaTrigger / PortalLanding), respawn timer, gathering-skill
gate, and on-discovery XP.

Three presets covering the major location flavors:
  --gen-loc-poi   4 Alliance POIs (Stormwind/Ironforge/
                  Goldshire/Sentinel Hill) with discoverable
                  XP (50..100) and POI-kind iconry
  --gen-loc-herb  5 Elwynn/Westfall herb nodes (Peacebloom
                  skill 1 to Stranglekelp skill 85) with 600s
                  respawn and Herbalism (skillId 182) gating
  --gen-loc-rare  4 vanilla rare-elites with realistic
                  respawn timers (Mor'Ladim 1hr, Princess
                  Tempestria 2hr, Foreman Rigger 30min, Lord
                  Sakrasis 1hr)

Validator catches: id+name required, locKind 0..6,
factionAccess 0..3, no duplicate locationIds, spawnable kinds
(Rare/Herb/Mineral/Fishing) MUST have respawnSec > 0 (else
entity spawns once and never returns — common typo when
adding new spawns). Warns on discoverableXp set with non-POI
kind (XP would never award), requiredSkillId set with non-
gather kind (skill check would never fire), and gather kind
with skill > 0 but level = 0 (every player satisfies — almost
certainly a typo).

Format count 133 -> 134. CLI flag count 1400 -> 1407.
This commit is contained in:
Kelsi 2026-05-10 04:37:08 -07:00
parent 6c77419633
commit fd6039973a
10 changed files with 808 additions and 0 deletions

View file

@ -158,6 +158,7 @@ constexpr FormatRow kFormats[] = {
{"WGBK", ".wgbk", "guild", "(absent in vanilla, TBC GuildBankTab)","Guild bank tabs catalog (per-rank withdrawal limits)"},
{"WQGR", ".wqgr", "quests", "QuestRelations.dbc + per-quest scripts","Quest graph catalog (chain prereq DAG + cycle detection)"},
{"WCRA", ".wcra", "crafting", "SpellReagents.dbc + Spell.dbc effect-24","Crafting recipe catalog (trade-skill recipe expansion)"},
{"WLOC", ".wloc", "world", "AreaPOI + GO spawns + AreaTrigger.dbc","World locations catalog (POI/RareSpawn/HerbNode/MineralVein/FishingSpot/Trigger/PortalLand)"},
// Additional pipeline catalogs without the alternating
// gen/info/validate CLI surface (loaded by the engine