Explains why Character Creation Failed occurs when the client has
patch-enUS-4 but Docker/native data/dbc is still vanilla: ChrClasses
row 12 only exists in the patched DBC set. Adds Docker volume copy
steps, native install path, and log verification.
Co-authored-by: Cursor <cursoragent@cursor.com>
Track vps-clone-without-docker.sh and vps-sparse-checkout-no-docker.sh
so a fresh GitHub clone can run the helper end-to-end. Mark both
executable in git for ./ usage after clone.
Documents the four binary artifacts that pair with this server
(patch-enUS-4/5/6.MPQ + patched Wow.exe), where they live (the
Releases page; not in the tree per the repo-tidy policy), and how a
contributor installs them on top of a clean 3.3.5a client. Cross-
referenced from the contrib/fractured-dev-extras README.
Co-authored-by: Cursor <cursoragent@cursor.com>
mod-paragon Paragon_Essence.cpp:
- Broaden SkillLinesLinkedToSpell: collect every SkillLineAbility row for
an anchor spell regardless of AcquireMethod, so anchor spells whose
primary SLA uses AcquireMethod 0 (e.g. Blood Strike) correctly identify
their skill lines and let the dependent classifier do its job.
- IsSpellSkillLineCascadeDependent / RevokeUnwantedCascadeSpellsForPlayer
use the broadened helper. HandleCommit calls the post-purchase sweep
immediately so the spellbook never carries lingering cascade dependents
(Blood Presence / Forceful Deflection / Death Coil / Death Grip).
- New character_paragon_panel_spell_revoked table tracks which active
dependents we've revoked per (guid, parent) so OnPlayerLogin can
re-revoke them after AC's _LoadSkills -> learnSkillRewardedSpells
silently re-grants them.
- OnPlayerLogin opens the client SILENCE window via SendSilenceOpenForCommit
with an empty allow list and intentionally omits the matching
SendSilenceClose: the chat frame buffers CHAT_MSG_SYSTEM during the
loading screen and only flushes after PLAYER_ENTERING_WORLD, so a paired
CLOSE would shut the filter before the buffered "you have unlearned X"
toasts hit it. The addon's 8s fail-open closes the window after the flush.
- New `.paragon hat` chat command for diagnosing Honor Among Thieves
triggers (talent rank, learned spell, applied aura, proc table entry).
mod-paragon Paragon_SC.cpp:
- OnPlayerUpdate pushes server-authoritative combo points to the client
via PARAA "R CP <n>" whenever the count changes. The client-side
ComboFrame Paragon simulator listens for this and updates the target
frame, fixing HAT-generated CP not displaying (HAT's trigger casts
with a null target, which the combat-log inference path can't see).
- OnPlayerUpdate also pushes "R RUNES <cd0..cd5>" (ms remaining per
rune slot) on rune mask changes, so the client RuneFrame simulator
stays in lock-step with Spell::TakeRunePower instead of drifting
through combat-log latency.
mod-paragon SQL:
- New updates/2026_05_09_00.sql migration creates
character_paragon_panel_spell_revoked for AC's auto-DBUpdater so a
fresh checkout can stand up an existing characters DB without
manual intervention. Matching CREATE TABLE IF NOT EXISTS in
base/character_paragon_panel_learned.sql for fresh installs.
mod-paragon conf:
- New Paragon.Diag.PanelLearn flag traces every PanelLearnSpellChain
commit (chain ids, before/after spell-map sizes, side-spell
classification) for diagnosing "spell reappears on relog" bugs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stock AzerothCore does not ship CLAUDE.md, BUILD-NATIVE.md, or local build
logs at repo root. Park them under contrib/fractured-dev-extras/ so the
repo root stays close to upstream and dev clutter is contained.
- mv CLAUDE.md, BUILD-NATIVE.md -> contrib/fractured-dev-extras/
- mv build-worldserver.log + _build_paragon_*.log there (untracked / ignored)
- add contrib/fractured-dev-extras/README.txt explaining the layout
- gitignore: contrib/fractured-dev-extras/*.log
Co-authored-by: Cursor <cursoragent@cursor.com>
Column was added in old/8.x SQL but not in the archive chain; idempotent
ALTER matches 2023_01_31_01 so INSERT using Comment succeeds on archive-only
installs.
Co-authored-by: Cursor <cursoragent@cursor.com>
MariaDB rejects 34149345 for VerifiedBuild when the column is MEDIUMINT
(signed max 8388607), as in old 8.x schema migrations. Replace corrupt
value with 0 in archive and base dumps.
Add data/sql/tools/clamp_verifiedbuild_mediumint.py to re-scan archive,
updates, and base INSERT/UPDATE blocks that list VerifiedBuild.
Co-authored-by: Cursor <cursoragent@cursor.com>
The column was introduced in old/9.x SQL but not in the archive chain;
fresh archive-only installs lacked the column. Add idempotent ALTER via
INFORMATION_SCHEMA before updating spell_enchant_proc_data.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive updates omitted NOT NULL dist/angle under strict SQL mode. Patch all
affected archive files, pending updates, and old 9.x copies. Use 0,0 for
stacked/default formations.
Co-authored-by: Cursor <cursoragent@cursor.com>
MariaDB strict mode rejects INSERTs that omit NOT NULL columns without
defaults. Align second INSERT in 2023_05_09_01.sql with the first block.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
- Parse real MariaDB version after MySQL 5.5.5 compatibility prefix for
DatabaseIncompatibleVersion checks.
- Relax client checks when building against MariaDB C connector
(MARIADB_VERSION_ID); keep Oracle MySQL 8.0+ rules otherwise.
- Use mysql_stmt_bind_param on MariaDB; mysql_stmt_bind_named_param only for
MySQL 8.3+ without MariaDB headers.
- SSL: MYSQL_OPT_SSL_ENFORCE on MariaDB connector, MYSQL_OPT_SSL_MODE elsewhere.
- Track custom_script_loader.cpp so static script link succeeds; CMake
find_package(MySQL) requires COMPONENTS lib on CMake 3.16.