feat(pipeline): WBHV creature behavior catalog (136th open format)

Novel replacement for the implicit creature-behavior rules
vanilla WoW carried in creature_template.AIName + per-creature
C++ scripts in the server's ScriptMgr (most rare-elites and
bosses had hand-coded class-derived behaviors). Each WBHV entry
binds one combat behavior archetype to its creature kind (Melee
/ Caster / Tank / Healer / Pet / Beast), aggro / leash radii,
evade-on-leash policy (ResetToSpawn / HealAtPath / FleeToSpawn
/ NoEvade for raid bosses), corpse persistence duration,
default rotation spell, and a variable-length list of special
abilities (spellId + cooldown + use-chance triplets in basis
points).

Three presets covering common archetypes:
  --gen-bhv-melee   3 entry-tier melee creatures (Kobold Worker
                    + Timber Wolf + Stranglethorn Raptor) with
                    1 special ability each
  --gen-bhv-caster  3 caster patterns (Defias Wizard with
                    Polymorph + Frost Nova / Murloc Coastrunner
                    with Frost Bolt + Lesser Heal / Voidwalker
                    Pet Pattern with Taunt + Sacrifice +
                    Suffering — Sacrifice intentionally has
                    useChancePct=0 as owner-triggered, exercising
                    the validator owner-triggered warning)
  --gen-bhv-boss    1 Onyxia-pattern dragon (Tank kind,
                    NoEvade leash, 600s corpse for 40-man loot
                    distribution, 4 abilities including 90s-CD
                    Deep Breath)

Validator catches: id+name required, creatureKind 0..5,
evadeBehavior 0..3, aggroRadius > 0, no duplicate behaviorIds,
no zero-spellId specials, no duplicate spellId within same
behavior. CRITICAL invariant: leashRadius >= aggroRadius (else
creature evades back to spawn before reaching its target —
permanently un-killable from outside the leash radius). Warns
on corpseDuration < 60s (looting may fail in busy zones), and
useChancePct=0 on a special ability (correctly flagged on the
Voidwalker Sacrifice spec — verified live in smoke-test).

Format count 135 -> 136. CLI flag count 1418 -> 1425.
This commit is contained in:
Kelsi 2026-05-10 04:53:06 -07:00
parent e2cd30a6c5
commit d2e623de9f
10 changed files with 801 additions and 0 deletions

View file

@ -180,6 +180,7 @@
#include "cli_crafting_recipes_catalog.hpp"
#include "cli_world_locations_catalog.hpp"
#include "cli_soulbind_rules_catalog.hpp"
#include "cli_creature_behavior_catalog.hpp"
#include "cli_catalog_pluck.hpp"
#include "cli_catalog_find.hpp"
#include "cli_catalog_by_name.hpp"
@ -405,6 +406,7 @@ constexpr DispatchFn kDispatchTable[] = {
handleCraftingRecipesCatalog,
handleWorldLocationsCatalog,
handleSoulbindRulesCatalog,
handleCreatureBehaviorCatalog,
handleCatalogPluck,
handleCatalogFind,
handleCatalogByName,