Files
Fractured/modules/mod-paragon/README.md
T
Docker Build 8e4c8f57e4 Fractured: Paragon core hooks, mod-paragon, mod-ale, Docker build cap
- Track mod-paragon and mod-ale (un-ignore modules in .gitignore).
- Ship docker-compose.override.yml with CMAKE_EXTRA_OPTIONS for LuaJIT (mod-ale).
- Dockerfile: CBUILD_PARALLEL default to limit OOM under Docker/WSL2.
- Core: CLASS_PARAGON sticky combo points (DetachComboTarget), selection rebind,
  Spell::CheckPower rune path for multi-resource Paragon.
- spell_dk_death_rune: IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_ABILITY) for
  Blood of the North / Reaping / DRM on Paragon.
- Remove temporary Paragon CheckPower logging.

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

33 lines
1.3 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.