Kelsidavis-WoWee/tools/editor/cli_boss_encounters_catalog.hpp

13 lines
241 B
C++
Raw Normal View History

feat(editor): add WBOS (Boss Encounter Definition) open catalog format Open replacement for AzerothCore's instance_encounter SQL table plus the per-boss script bindings. Defines raid boss encounter metadata: which creature is the boss, which map and difficulty variant it lives in, how many phases the encounter has, the soft-enrage timer and berserk spell, recommended group size, and item level. One entry per (boss × difficulty) combination. Lord Marrowgar in 10-Normal ICC is one entry; Lord Marrowgar in 25-Heroic ICC is a separate entry with a higher recommendedItemLevel and a different difficultyId pointing into WCDF. This format ties together five other catalogs into a coherent encounter description: - WCRT for the boss creature template - WMS for the instance map - WCDF for difficulty routing (10/25/H10/H25 variants) - WSPL for the berserk spell that fires at enrage - WACR for achievement criteria like "kill The Lich King in 25-Heroic" that point back via KillCreature targetId findByMap(mapId) returns all encounters in one raid instance, sorted by their catalog order — used by the Encounter Journal UI and instance lockout logic. findByBossCreature(bossId) returns all difficulty variants of one boss. Three preset emitters: --gen-bos (3 5-man dungeon bosses with no soft-enrage), --gen-bos-raid10 (4 ICC 10-Normal bosses including 5-phase Lich King with 15min hard enrage via Fury of Frostmourne 72546), --gen-bos-world (2 outdoor world bosses with 25-player size + no difficulty). Validation enforces id+name+boss+map+phases+size presence, no duplicate ids; warns on: - non-standard requiredPartySize (canonical sizes are 5/10/25/40) - berserkSpellId set without enrageTimerMs (spell never fires) - enrageTimerMs > 30 minutes (sanity check) Wired through the cross-format table; WBOS appears in all 18 cross-format utilities. Format count 90 -> 91; CLI flag count 1055 -> 1060.
2026-05-09 23:45:26 -07:00
#pragma once
namespace wowee {
namespace editor {
namespace cli {
bool handleBossEncountersCatalog(int& i, int argc, char** argv,
int& outRc);
} // namespace cli
} // namespace editor
} // namespace wowee