Files
Docker Build df7e943a74 Paragon: move module SQL to AC's data/sql/db-* layout for auto-update
AzerothCore's DBUpdater scans modules/<mod>/data/sql/db-{world,characters,auth}/
(see src/server/database/Updater/UpdateFetcher.cpp). The previous
modules/mod-paragon/sql/{world,characters}/base/ layout was non-standard
and skipped by the updater, so a fresh deploy never had Paragon tables
created automatically.

Move all five SQL files into the standard layout. Files are idempotent
(CREATE TABLE IF NOT EXISTS plus a DELETE+INSERT for the cost table)
and now apply on every dbimport / worldserver start, recorded by hash
in <db>.updates so re-runs are skipped.

Update BUILD-NATIVE.md to drop the manual mysql import section, and
document the SQL layout in the mod-paragon README.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 22:03:42 -04:00

44 lines
1.8 KiB
Markdown

# mod-paragon
Server-side support module for the custom `CLASS_PARAGON` (id 12).
## What it does today
Hooks `Player::IsClass` / `Player::HasActivePowerType` so Paragon
inherits Death Knight ability mechanics where it matters:
- **Rune system**: `InitRunes`, rune cooldown tick, runic power regen,
`Spell::CheckRuneCost` / `Spell::TakeRunePower`, `SMSG_RESYNC_RUNES`
cast flags, combat exit grace reset.
- **DK ability scripts**: `spell_dk_*`, `MUST_BE_DEATH_KNIGHT` cast
result, DK aura effects.
It is intentionally narrow: the hook only fires for
`(realClass == PARAGON, queriedClass == DEATH_KNIGHT, context == CLASS_CONTEXT_ABILITY)`.
Other DK-flavored contexts (Ebon Hold teleport gating, heroic start
level, DK-only taxi mount, talent point math on Ebon Hold, etc.) keep
their normal behavior for Paragon.
`HasActivePowerType` additionally claims `POWER_RUNIC_POWER` and
`POWER_RUNE` for Paragon, which keeps the rune pool sized correctly
in `Player::InitStatsForLevel` even if Paragon's primary power type is
later switched away from runic power.
## Building
Auto-detected by `modules/CMakeLists.txt` (`GetModuleSourceList` globs
every subdirectory). No additional CMake plumbing is needed; rebuild
the worldserver image and the loader symbol `Addmod_paragonScripts`
gets linked into the static `modules` target.
## SQL layout
SQL files live under `data/sql/db-world/base/` and
`data/sql/db-characters/base/` — the standard AzerothCore module path
that the built-in DBUpdater scans (see
`src/server/database/Updater/UpdateFetcher.cpp`). Files placed there
are applied automatically by `worldserver` / `dbimport` on startup and
recorded by hash in the `updates` table of the target database, so
re-runs are idempotent. Any new SQL added under those directories will
be picked up on the next container/server start without manual import.