• Knack117 released this 2026-05-11 03:53:13 +00:00 | 15 commits to main since this release

    Server (AzerothCore + mod-paragon)

    • Cascade guard for class skill lines: Player::learnSkillRewardedSpells now skips the SkillLineAbility cascade for class-category skill lines on CLASS_PARAGON characters. The Character Advancement panel becomes the sole authority over which class abilities a Paragon owns. Profession, weapon, language, and racial cascades are unchanged, so recipes, weapon proficiencies, and racial perks still auto-learn normally. Fixes the regression where Blood Presence / Death Coil / Death Grip / Forceful Deflection re-appeared on the spellbook seconds after a build reset, every login, every level-up, and on every weapon-skill tick at a training dummy.
    • Force-attached DK passives: Forceful Deflection (49410) is now explicitly attached to Blood Strike (45902), and Runic Focus (61455) to Icy Touch (45477), the same way Blood Plague / Frost Fever already are. The on-login fixup re-attaches these for existing characters who got them via the old cascade and never had a panel_spell_children row tying them to a parent.
    • Panel catalog backfill: Removed the over-aggressive ClassMask=0 filter from the client catalog generator. 42 trainer-taught class abilities previously hidden from the panel are now learnable, including Lava Burst, Hex (Shaman), Evocation / Spellsteal / Invisibility (Mage), Kill Shot / Deterrence / Master's Call (Hunter), Path of Frost / Horn of Winter / Rune Strike / Raise Ally / Dark Command (DK), and the various Druid / Warlock summons. The skill-line filter alone is the correct gate on class-spec lines; ClassMask is redundant there.
    • AE-cost rows: Migration 2026_05_10_05.sql backfills paragon_spell_ae_cost for all 42 newly visible spells (INSERT IGNORE so any per-spell tuning is preserved). Fresh deployments get them via the regenerated base file.

    Database migrations ship with the repo under modules/mod-paragon/data/sql/ and are picked up automatically by AzerothCore's DBUpdater on worldserver start.

    Client bundle (this release)

    Asset Size Purpose
    Wow.exe 7.70 MB Fractured / ChromieCraft 3.3.5a client binary (unchanged from v0.7.12)
    patch-enUS-4.MPQ 4.73 MB Spell.dbc overlay (Paragon class, runes, reagents, etc.)
    patch-enUS-5.MPQ 60 KB UI / rune bar overrides
    patch-enUS-6.MPQ 154 KB ParagonAdvancement addon — rebuilt to expose Lava Burst and 41 other previously hidden spells

    Install: copy Wow.exe to the client root, and copy the three patch-enUS-*.MPQ files into Data\enUS\ (same names; load order 4 → 5 → 6 after stock patches). Restart the client completely after replacing Wow.exe so the new spell catalog loads.

    Launcher users: the auto-updater handles all four assets and now writes patch-enUS-*.MPQ with uppercase .MPQ regardless of how the asset is named on the release page (3.3.5a's case-sensitive MPQ loader requires the uppercase suffix).

    Deploying the server

    git pull && rebuild worldserver (or your full image) so the cascade guard in Player.cpp and the new kAttached / kFixup entries in Paragon_Essence.cpp are in the binary. The DBUpdater applies the AE-cost migration on the next worldserver start.

    Downloads
  • Knack117 released this 2026-05-11 03:53:13 +00:00 | 15 commits to main since this release

    Client-only fix

    The Character Advancement panel's Search tab was returning spell results but never any talents — even when a player typed a keyword that obviously matched a talent's tooltip (e.g. butchery, blade barrier).

    Root cause: the baked ParagonAdvancement_TalentData.lua had no desc field on any talent. The search index walks desc and falls through when it is empty, so 0 talent hits, every query.

    Fix:

    • Re-baked ParagonAdvancement_TalentData.lua from Talent.dbc + Spell.dbc with rank-1 name + description + tooltip flattened into a search-normalized desc string for every talent (892 entries, ~204 KB on disk vs. the previous bake's ~110 KB).
    • Hardened the bake script (tools/_gen_paragon_advancement_talents_lua.py) so it falls back to dbc/Spell.dbc when _dbc_work/Spell.dbc is missing, with a clearer warning if neither is found, so this regression cannot happen silently again.

    After installing this build, typing a word in the Search bar matches both spells and talents and renders them in their respective result blocks (left = spells, right = talents).

    Client bundle (this release)

    Asset Size Status
    Wow.exe 7.70 MB Unchanged from v0.7.12 / v0.7.13
    patch-enUS-4.MPQ 4.73 MB Unchanged (Spell.dbc overlay)
    patch-enUS-5.MPQ 60 KB Unchanged (rune bar UI)
    patch-enUS-6.MPQ 204 KB RebuiltParagonAdvancement addon 0.9.20-talent-search-desc

    Install: copy Wow.exe to the client root, and copy the four patch-enUS-*.MPQ files into Data\enUS\ (load order 4 → 5 → 6 after stock patches). Quit and relaunch the client fully so the new addon files are read.

    Launcher users: the auto-updater handles all four assets and writes patch-enUS-*.MPQ with uppercase .MPQ (3.3.5a's case-sensitive MPQ loader requires it).

    Server

    No changes since v0.7.13. The cascade guard, force-attached DK passives, and the paragon_spell_ae_cost backfill from that release remain in effect.

    Downloads
  • Knack117 released this 2026-05-11 02:20:13 +00:00 | 25 commits to main since this release

    Server (AzerothCore + mod-paragon)

    • Cascade policy: Skill-line grants that are passives (Forceful Deflection, Runic Focus, disease passives, etc.) are kept and recorded as character_paragon_panel_spell_children with the spell that pulled them in. Actives (Blood Presence, Death Coil, Death Grip, …) are still revoked and persisted so they cannot be learned for free off another purchase.
    • Spell.dbc correction (core): Forceful Deflection (49410) and Runic Focus (61455) are marked SPELL_ATTR0_PASSIVE in memory at load so SpellInfo::IsPassive() matches the real spellbook behavior (stock 3.3.5a rows omit the passive bit).
    • Login order: Legacy passive attach / cleanup runs before the scoped cascade sweep so re-learned passives are not immediately stripped.
    • Talent unlearn: PanelUnlearnTalentPurchase now clears m_talents via _removeTalent (same idea as resetTalents) so Beast Mastery loss is detected and hunter pet talents reset when appropriate.
    • GM: .paragon recalibrate (requires RBAC modify) — full Character Advancement reset for target or self + AE/TE clamped to level-correct totals.

    Database migrations for Paragon ship with the repo under modules/mod-paragon/data/sql/ as usual; native and Docker paths pick them up via AzerothCore DBUpdater.

    Client bundle (this release)

    Asset Purpose
    Wow.exe Fractured / ChromieCraft 3.3.5a client binary
    patch-enUS-4.MPQ Spell.dbc overlay (Paragon class, runes, reagents, etc.)
    patch-enUS-5.MPQ UI / rune bar overrides
    patch-enUS-6.MPQ ParagonAdvancement addon (Character Advancement UI)

    Install: copy Wow.exe to the client root, and copy the three patch-enUS-*.MPQ files into Data\enUS\ (same names; load order 4 → 5 → 6 after stock patches). Restart the client completely after replacing Wow.exe.

    Deploying the server

    Rebuild worldserver (or your full image) from main after git pull so mod-paragon and SpellInfoCorrections changes are in the binary.

    Downloads
  • Knack117 released this 2026-05-10 23:57:47 +00:00 | 31 commits to main since this release

    Fractured v0.7.11 — Spell unlearn queue + AE/TE reconciliation

    Follow-up to v0.7.10 Save-Current build. Two new server features and a handful of client polish fixes accumulated since the last release.

    What's new (server)

    • Right-click → queue unlearn → Learn All to refund. You no longer have to reset your whole panel to drop one spell you regret. Right-click any Character Advancement spell in the per-class spell list and the row dims red and gets queued for unlearn. The header now shows a +N refund next to your AE balance. Click Learn All and the spell is removed, its tracked passive children are dropped, and the AE cost is refunded — same atomic commit as your queued learns / talents in the same click.
    • Mixed commits. A single Learn All can carry learns + talents + unlearns. Refunds are applied first so they cover same-commit spends. The server rejects attempts to learn and unlearn the same chain in one commit (previously this would silently produce an inconsistent state).
    • AE/TE reconciliation on login + level-up. A new ReconcileEssenceForPlayer pass runs as part of OnPlayerLogin and OnPlayerLevelChanged. It reads character_paragon_panel_spells + character_paragon_panel_talents, sums the AE/TE that ought to have been spent, and rewrites the cache to ComputeStartingAE/TE(level) − sum-of-spends. Self-heals in both directions: clamps players who somehow have more essence than their level allows (cheese clamp) and tops up players who are under what they should have (admin tweaks, crash recovery). Drift is logged at INFO with before/after values. Subsumes the old per-level grant; OnPlayerLevelChanged now goes straight to Reconcile.

    What's new (client patch-enUS-6.MPQ v0.9.16)

    • Right-click queue UI for the unlearn flow above. Hover tooltip on a learned row now reads Right-click to queue unlearn (refund on Learn All); once queued it shows the refund amount and Right-click again to cancel. Same handling on the Search tab.
    • +N refund header preview on the AE counter — colored green next to the existing −N pending (red) so you can see net spend at a glance.
    • Icon picker fixes. Build picker no longer shows two red question-mark icons (the synthetic default and engine index 1 are deduped). Selection ring is now a tooltip-bordered Frame anchored to the cell bounds — the previous UI-ActionButton-Border texture rendered nearly invisible at non-native sizes, so the highlight was barely visible. Now it's an unmistakable gold rectangle.
    • Dark-mode editboxes. Search bar, build-import field, and build-name picker no longer use the bright white default — all three tint themselves on load to a near-black background with a muted gold border and warm cream text. Matches the rest of the panel chrome.
    • Talent tooltip declutter. Removed the Next rank: <Spell> preview line from talent button tooltips — wasn't actionable info and just took up a row.

    New / changed PARAA verbs

    C COMMIT s:<id1>,<id2>,... t:<dbcId>:<delta>,... u:<id>,...
    

    The trailing u: section is optional. Older clients omit it; the server parses it when present. Each id in the unlearn list is normalized to GetFirstSpellInChain so any rank id from the bake is accepted. The server pre-validates that every requested unlearn corresponds to a row in character_paragon_panel_spells (you cannot use this to unlearn racials, quest rewards, or spells the panel didn't sell you).

    Pairing

    A pre-v0.7.11 client paired with a v0.7.11 server is harmless: right-click on a learned spell just won't draw the new queued state, and the existing left-click learn flow works as before.

    A v0.7.11 client paired with a pre-v0.7.11 server: the right-click UI will queue the unlearn locally and the AE-refund preview will display, but Learn All sends the new u: section to a server that ignores it — so the spell stays learned and AE is unchanged. Update the server first if you're upgrading mid-realm.

    Server commit

    9fb8010 Paragon: spell unlearn queue + AE/TE reconciliation

    Install

    Drop the patch MPQs into WoW/Data/enUS/ and the Wow.exe at the WoW client root. Only patch-enUS-6.MPQ actually changed since v0.7.10 — the others are bundled for fresh installs. Fully exit and relaunch the WoW client afterward (patch MPQs are read at startup; /reload does not pick them up).

    Server side:

    git pull origin main
    docker compose build ac-worldserver
    docker compose up -d --force-recreate ac-worldserver
    

    No DB migration this release — the unlearn flow reuses existing panel tables. Native build path: same as Docker, just cmake --build . instead of docker compose build.

    See CLIENT-PATCHES.md for the full install / troubleshoot guide.

    Downloads
  • Knack117 released this 2026-05-10 19:12:12 +00:00 | 43 commits to main since this release

    Fractured v0.7.10 — Save-Current build + retired-code share archive

    Follow-up to v0.7.9 Builds QoL. The Builds catalog now has a one-click "Save current loadout" path on the Overview page, and several footguns from the original drop are now closed. Old share codes posted to Discord no longer rot when the owner edits their build — they continue importing the exact recipe that was current the moment they were retired.

    What's new

    • Overview → "Save as Build". Brand new button on the top-right of the Overview tab. Switches to the Builds page, opens the icon/name picker pre-titled "Save Current Loadout", and on Save creates a new build whose recipe is whatever you have learned right now (no AE/TE motion, no relearning). The new build is set active immediately. Server verb: C BUILD SAVE_CURRENT <name>\t<icon>.
    • Retired share codes keep working forever. When you Learn All on top of an active build, the build's previous share_code and recipe are now frozen into a new character_paragon_build_share_archive family of tables before the live row is overwritten with the new recipe and assigned a fresh code. Any code you posted to Discord, an alt's spellbook, etc. continues importing the exact loadout it pointed at the moment you shared it. C BUILD IMPORT <code> falls back to the archive transparently.
    • Reset Abilities / Reset Talents now detach you from the active build. Previously they left the active pointer set, so the next swap silently overwrote the active build's saved recipe with the (post-reset) state — effectively erasing the build. Now both reset paths clear the active pointer and re-push the catalog so the cell border drops client-side. The build's saved recipe is preserved; you can re-load it any time.
    • Deleting the active build now does a full panel reset. Same effect as C RESET ALL: unlearn everything the panel bought, refund all AE/TE. Deleting a non-active slot is unchanged (just removes the saved recipe + parked pet). Prevents the dangling state where the active pointer pointed at a row that no longer existed.
    • Loading the currently-active build = "revert to last snapshot". Used to be a no-op refresh. Now it skips the outgoing snapshot (so the saved recipe stays authoritative), parks the pet, runs the reset+respend cycle, and re-applies the recipe. Useful for discarding pending edits without manually reset-and-reload.
    • Imports never carry the source player's pet. A parked pet belongs to the original owner's character_pet rows; cloning that across to the importer would either steal the source player's pet or summon something the importer can't legally own. New imports always start with pet_number = NULL. If the imported recipe contains Tame Beast (1515), the server prints a one-line system message reminding you to tame your own pet after loading the build.
    • Talent-granted active spells survive relog. The login cascade sweep now walks SPELL_EFFECT_LEARN_SPELL triggers on talent rank spells (Mangle, Feral Charge, Mutilate, Lava Burst, etc.), so the abilities those passives grant are correctly preserved on the panel allowlist instead of being revoked as "not allowlisted".

    Client (patch-enUS-6.MPQ v0.9.11-build-picker-save-fix)

    • save_current mode for the build picker. Plumbed through ParagonAdvancement_Builds_OpenPicker and pinned on the picker frame as _openMode so nothing can clobber it between opening and saving. Title bar reads "Save Current Loadout (Max 32 Characters):".
    • Picker no longer breaks on % in build names. string.format("C BUILD ... %s\t%s", name, icon) was Lua's format parser eating any % in the name as a directive ("invalid option in format %c"), which silently aborted Save. All three send paths (NEW, SAVE_CURRENT, EDIT) now build the wire payload by concatenation + tostring(...) instead.
    • "Revert?" prompt when right-click → Load on the build that's already active, instead of the regular swap-confirm copy.

    New / changed PARAA verbs

    C BUILD SAVE_CURRENT <name>\t<icon>   -- create a build from current panel state
                                             (snapshot + set active; no AE/TE motion)
    

    C BUILD DELETE <id> semantics changed when <id> is the active build: in addition to deleting the row + parked pet, it now also runs a full panel reset (unlearn + refund) like C RESET ALL.

    C BUILD LOAD <id> semantics changed when <id> equals the active build: instead of being a no-op, it now reverts the panel to the build's last saved recipe (discards pending edits).

    Schema (mod-paragon migration 2026_05_10_05.sql)

    CREATE TABLE IF NOT EXISTS `character_paragon_build_share_archive` (
        `share_code`  CHAR(6)     NOT NULL,
        `name`        VARCHAR(32) NOT NULL,
        `icon`        VARCHAR(64) NOT NULL DEFAULT 'INV_Misc_QuestionMark',
        `archived_at` TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`share_code`)
    );
    
    CREATE TABLE IF NOT EXISTS `character_paragon_build_share_archive_spells`  (...);
    CREATE TABLE IF NOT EXISTS `character_paragon_build_share_archive_talents` (...);
    

    The old codes are populated lazily: a code only enters the archive when its build's owner does a Learn All on top of that build, at which point the live share_code rotates and the previous one is frozen here.

    Server commit

    Paragon: Save-Current build, archive retired share codes, reset clears active

    Install

    Drop the patch MPQs into WoW/Data/enUS/ and the Wow.exe at the WoW client root. Only patch-enUS-6.MPQ actually changed since v0.7.9 — the others are bundled for fresh installs. Fully exit and relaunch the WoW client afterward (patch MPQs are read at startup; /reload does not pick them up).

    Server side:

    git pull origin main
    docker compose build ac-db-import ac-worldserver
    docker compose up -d ac-db-import
    docker compose restart ac-worldserver
    

    ac-db-import is required so migration 2026_05_10_05.sql is applied. See CLIENT-PATCHES.md for the full install / troubleshoot guide.

    Pairing

    A pre-v0.7.10 client paired with a v0.7.10 server is harmless — the player just won't have an Overview "Save as Build" button. Save-as-Build still works for them via the existing "+" cell on the Builds page; the recipe ends up empty and they fill it via the normal commit flow.

    A v0.7.10 client paired with a pre-v0.7.10 server will see "Save as Build" silently no-op (the server doesn't recognize C BUILD SAVE_CURRENT and drops it without an R ERR). Update the server first if you're upgrading mid-realm.

    Downloads
  • Knack117 released this 2026-05-10 08:15:11 +00:00 | 45 commits to main since this release

    Fractured v0.7.9 — Builds catalog quality of life

    Polish pass over the v0.7.8 Builds catalog. Replaces the favorites toggle with a much more useful import-by-share-code, makes "remaining AE/TE if loaded" visible on the build hover tooltip so you can see at a glance whether a load will fit your currency, and wires up an explicit Unload verb plus a few client-side bug fixes.

    What's new

    • Share codes (replaces favorites). Every build now gets a 6-character realm-unique alphanumeric code on creation (A-Z minus I/O, 2-9 minus 0/1, ~887M codes, collision retry). Right-click a build → Copy share code to grab it (it's also echoed to chat in a StaticPopup so you can copy/paste anywhere). To import someone else's build, paste the code into the new share input row at the bottom of the BuildsPane and click Load Build!. The server copies the recipe (name + icon + spells + talents) into your catalog as a brand new build with a fresh share code, so you can re-share independently of the original.
    • Tooltip now shows "Remaining if loaded: X AE / Y TE" for every saved build that isn't the active one. Computed server-side as total_earned − recipe_cost so the number includes the AE/TE you'll get back from refunding your current loadout. Negative values render in red ("Insufficient currency — load would fail.") so you can see ahead of time which builds you still need to grind for.
    • Right-click → Unload (clear active). Clears character_paragon_active_build without forcing a swap. Useful if a build's recipe drifts from your live state and the tooltip's stale "Active build" label gets in the way.
    • Pet talents tab no longer bleeds into other class tabs when switching pages. Pet UI is now anchored under two dedicated container roots (_treeRoot / _infoRoot) which are hidden in one shot, plus an early-bail in RefreshPetTalentTree when the active class isn't PETS.
    • Icon picker now actually shows every macro icon (~1,000 options instead of 4). The 4.0+ table-fill APIs (GetMacroIcons / GetMacroItemIcons / MACRO_ICON_FILENAMES) don't exist on 3.3.5; the picker now uses the real 3.3.5 surface (GetNumMacroIcons / GetMacroIconInfo) and strips the Interface\Icons\ prefix at ingest.
    • /paraa and the N keybind work again. A subtle XML 1.0 violation (-- inside an XML comment) was making ParagonAdvancement.xml fail to parse, which silently disabled every binding the addon installs. Comment reworded.
    • FavStar replaced cleanly. The intermediate "favorite glow" texture (Interface\Common\ReputationStar, missing on 3.3.5) is gone now that favorites are gone, eliminating the green missing-texture sentinel.
    • ShareInput EditBox no longer resets the caret on every keystroke — the live-uppercase OnTextChanged + SetText handler was the culprit; both the import handler and the server now normalize at submit time so we accept any case.

    New / changed PARAA verbs

    C BUILD UNLOAD              -- clear active-build pointer (no swap)
    C BUILD IMPORT <code>       -- import by 6-char share code (replaces FAVORITE)
    

    C BUILD FAVORITE is removed. The R BUILDS reply format is now:

    R BUILDS active=<id|->\t<id>:<haspet>:<sharecode>:<remainAE>:<remainTE>:<name>:<icon>; ...
    

    remainAE / remainTE are signed int32; negative is rendered red on the tooltip.

    Schema (mod-paragon migration 2026_05_10_04.sql)

    ALTER TABLE `character_paragon_builds`
        DROP COLUMN `is_favorite`,
        ADD COLUMN `share_code` CHAR(6) NULL DEFAULT NULL AFTER `icon`,
        ADD UNIQUE INDEX `uk_share_code` (`share_code`);
    

    Backfill is lazy: any existing build row with a NULL share_code gets one generated the next time the owner opens the BuildsPane.

    Server commit

    a251e56 — Paragon: Builds QoL — share codes, unload, remaining AE/TE on hover

    Install

    Drop the patch MPQs into WoW/Data/enUS/ and the Wow.exe at the WoW client root (only patch-enUS-6.MPQ actually changed since v0.7.8 — the other three are bundled for fresh installs). Then on the server host:

    git pull origin main
    docker compose build ac-db-import ac-worldserver
    docker compose up -d ac-db-import
    docker compose restart ac-worldserver
    

    ac-db-import is required so migration 2026_05_10_04.sql is applied. See CLIENT-PATCHES.md for the full install / troubleshoot guide.

    Pairing

    Server commit a251e56 and patch-enUS-6.MPQ v0.9.6-build-tooltip-remaining are a matched pair. A pre-v0.7.9 client paired with a v0.7.9 server will fall back gracefully: the catalog parser simply won't see the new fields and the tooltip "remaining" line won't render. A v0.7.9 client paired with a pre-v0.7.9 server will fail to parse the catalog payload (no share_code field) and the BuildsPane will render empty until the server catches up.

    Downloads
  • Knack117 released this 2026-05-10 06:35:55 +00:00 | 46 commits to main since this release

    Fractured v0.7.8 — Builds catalog (saved Character Advancement loadouts)

    Adds named, icon-tagged build slots to the Character Advancement panel for one-click swaps between "specs" without re-buying spells/talents every time. Saves Hunter pets across swaps via PET_SAVE_NOT_IN_SLOT so name, talents, and exp are preserved.

    What's new

    • Bottom-row "Builds" button opens a full-pane overlay listing all saved loadouts (favorites first, then by id).
    • New Build (+) tile opens a name + icon picker that reuses MACRO_ICON_FILENAMES (every macro icon the client knows about, ~1,000 options).
    • Right-click on a saved build → Edit name/icon, Favorite/Unfavorite, Delete (with a confirmation popup that warns about losing any parked pet forever).
    • Shift + Left-click → toggle favorite. A glow border appears around favorited builds and they bubble to the top of the sort.
    • Left-click → "Load Build?" yes/no popup. Loading is a server-driven swap: snapshot current state into the previously-active build, refund all AE/TE through the existing Reset Abilities/Talents path, re-spend AE/TE on the target build's recipe, and unpark the build's hunter pet (if any).
    • Hunter pet park/unpark. When swapping away from a build that has a hunter pet summoned, the pet moves to PET_SAVE_NOT_IN_SLOT (mirroring HandleStableSwapPet) and pet_number is recorded on the build row. Swap back and the same pet — same name, same talents, same xp — is resummoned. Non-hunter pets (warlock demon, DK ghoul, mage water elemental) are not parked because the engine resummons them from a fresh template each cast.
    • Swap is blocked while in combat.
    • Per-spec talent fidelity. The build-talents recipe table is keyed by (build_id, spec, talent_id) so a build remembers Tank/DPS dual-spec layouts independently.
    • Build catalog is server-side (lives in acore_characters, follows the character across machines).

    New PARAA verbs (server-driven)

    Q BUILDS                                  -- request catalog
    C BUILD NEW <name>\t<icon>                -- create empty build
    C BUILD EDIT <id>\t<name>\t<icon>         -- rename / re-icon
    C BUILD DELETE <id>                       -- delete + drop parked pet
    C BUILD FAVORITE <id> <0|1>               -- toggle favorite
    C BUILD LOAD <id>                         -- swap to this build
    

    Server replies push R BUILDS active=<id|->\t<id>:<fav>:<haspet>:<name>:<icon>; ... after every mutation.

    Schema (mod-paragon migration 2026_05_10_03.sql)

    • character_paragon_builds — catalog (build_id PK, guid, name, icon, is_favorite, pet_number, created_at)
    • character_paragon_build_spells — recipe (build_id, spell_id)
    • character_paragon_build_talents — recipe (build_id, spec, talent_id, rank)
    • character_paragon_active_build — per-character active pointer (guid PK, build_id)

    Server commit

    7de018f — Paragon: add Builds catalog (saved loadouts with pet park/unpark)

    Install

    Drop the three patch MPQs into WoW/Data/enUS/ and replace Wow.exe at the WoW client root. Then:

    git pull origin main
    docker compose build ac-db-import ac-worldserver
    docker compose up -d ac-db-import
    docker compose restart ac-worldserver
    

    ac-db-import is required because the new SQL migration is baked into the docker image at build time. See CLIENT-PATCHES.md for the full install/troubleshoot guide.

    Pairing

    Server commit 7de018f and patch-enUS-6.MPQ v0.9.0-builds are a matched pair. Mismatched versions surface as the Builds button being a no-op (server doesn't know Q BUILDS) or the panel rendering blank (client doesn't know R BUILDS).

    Downloads
  • Knack117 released this 2026-05-10 05:36:54 +00:00 | 47 commits to main since this release

    ## Server (main @ abb25f5)

    • mod-paragon / Paragon_SC.cpp: Expanded Paragon_PlayerScript::OnPlayerIsClass so Paragon players satisfy more Player::IsClass(..., ClassContext) gates: CLASS_CONTEXT_ABILITY for all nine vanilla classes (class-specific spell scripts), CLASS_CONTEXT_PET scoped by the active pet (hunter beast, warlock demon summon, DK undead summon, mage/shaman elemental summon), CLASS_CONTEXT_PET_CHARM (warlock), armor/shield equip contexts, and rogue weapon-swap cooldown context. Intentionally does not claim CLASS_CONTEXT_STATS or DK/druid starting-zone contexts.
    • mod-paragon / Paragon_Essence.cpp: New addon-channel command C RESET PET TALENTS (PARAA prefix) — instant hunter pet talent reset via Player::ResetPetTalents (no gold, no popup). Rejects when no hunter pet is out.

    Rebuild after pull: docker compose build ac-worldserver then restart ac-worldserver.

    Client patches

    File Notes
    patch-enUS-4.MPQ Same artifact as v0.7.6 (bundled again for a single download).
    patch-enUS-5.MPQ FrameXML: Paragon pet frame anchored below the rune row; paper-doll stat tooltip fix (duplicate strength to attack power lines).
    patch-enUS-6.MPQ ParagonAdvancement v0.8.7: PETS tab (hunter pet talents, preview learn), dedicated Reset Pet Talents (requires server above), bottom-row reset buttons disabled on PETS tab.

    Wow.exe

    Unchanged from v0.7.6 (MPQ signature bypass). Re-use your existing patched executable if you already have it; this release includes the same binary for first-time installs.

    Downloads
  • Knack117 released this 2026-05-10 02:38:32 +00:00 | 49 commits to main since this release

    Fractured v0.7.6

    Server / repo: f2952c9 on main.

    What changed

    • Class spell reagents: Spells with a non-zero SpellFamilyName (all player-class abilities) have Reagent / ReagentCount cleared in memory at worldserver load (SpellInfoCorrections.cpp). Profession crafts (SpellFamilyName == 0) still require their normal materials. The matching Spell.dbc edits ship in patch-enUS-4.MPQ so the 3.3.5 client’s local pre-cast check stays in sync with the server.
    • Paragon relic slot: Paragon can equip librams, idols, totems, and sigils in the ranged slot (mod-paragon OnPlayerIsClass / CLASS_CONTEXT_EQUIP_RELIC).

    Install (client)

    Use a stock Wrath 3.3.5a (build 12340) tree. Replace root Wow.exe with the one from this release, and copy patch-enUS-4.MPQ, patch-enUS-5.MPQ, and patch-enUS-6.MPQ into Data\enUS\ (adjust the locale folder if you are not on enUS). Step-by-step: contrib/fractured-dev-extras/CLIENT-PATCHES.md.

    Patched Wow.exe

    Same MPQ signature bypass as prior Fractured releases so numbered patch-enUS-*.MPQ archives load. Keep a backup of your retail Wow.exe if you want to revert.

    Downloads
  • Knack117 released this 2026-05-09 21:37:08 +00:00 | 51 commits to main since this release

    Fractured Paragon - v0.7.5 Client Bundle

    Pairs with server commit
    34cc87a.

    Install

    Full install instructions and per-MPQ descriptions live in the repo:
    contrib/fractured-dev-extras/CLIENT-PATCHES.md.

    If you're upgrading from v0.7.4, you only need to overwrite
    Data/enUS/patch-enUS-5.MPQ and pull the latest server. Everything else
    (Wow.exe, patch-enUS-4.MPQ, patch-enUS-6.MPQ) is byte-identical to
    v0.7.4 and is included only for fresh installs.

    Quick version (fresh install):

    1. Replace Wow.exe at the root of your 3.3.5a (build 12340) client with
      the Wow.exe from this release.
    2. Drop patch-enUS-4.MPQ, patch-enUS-5.MPQ, patch-enUS-6.MPQ into
      Data/enUS/.
    3. Edit Data/enUS/realmlist.wtf to point at your Fractured server.
    4. Launch and create a Paragon character.

    What's new since v0.7.4

    Server side

    • Panel cascade sweep no longer revokes talent-granted spells.
      RevokeUnwantedCascadeSpellsForPlayer and RevokeBlockedSpellsForPlayer
      now build their allowlist from character_paragon_panel_spells and
      character_paragon_panel_talents (was only the spells table). Many
      Wrath "abilities" players perceive as spells are stored as panel
      talents - Scourge Strike (talent id 2216, rank-spell 55090),
      Bladestorm, Starfall, etc. With the previous allowlist, buying
      Death Coil after Scourge Strike opened the DK skill line and the
      post-commit sweep revoked Scourge Strike as if it were an orphan
      cascade dependent. The same misclassification was running in the
      login revoke path and unlearning the spell on every relog, after
      which PushSpellSnapshot removed the panel record because
      HasSpell was now false - silently vanishing the purchase entirely.
      Fix is purely C++; no migration required.
    • Self-healing revoke table. When a panel purchase covers a spell
      that's still listed in character_paragon_panel_spell_revoked,
      PanelLearnSpellChain now drops the matching revoke rows up front,
      and the login sweep prunes any stale entries it sees. Existing
      characters affected by the v0.7.4 bug (e.g. ghost
      (guid, 0, 55090) rows) self-heal on their next panel purchase or
      login.
    • See commit
      34cc87a
      for the full diff.

    Client side: refreshed patch-enUS-5.MPQ

    • Rune-cost tooltip line restored for DK abilities. The DBC bake in
      patch-enUS-4.MPQ zeros Spell.dbc.RuneCostID client-side so the
      3.3.5 engine doesn't drop CMSG_CAST_SPELL for non-DK casters.
      The same field is what the engine uses to render the rune-cost
      line on tooltips, so as a side effect every DK ability tooltip
      was missing it. RuneFrame.lua now hooks OnTooltipSetSpell and
      rewrites the cast-time row in place: 1 Unholy (etc.) on the
      left, Instant / 1.5 sec cast / Channeled on the right -
      matching stock 3.3.5 layout. Works on the action bar, in the
      spellbook, in Character Advancement, and in ItemRefTooltip for
      shift-clicked chat links. The cost data is generated from the
      server Spell.dbc + SpellRuneCost.dbc so it stays accurate
      across server-side rune-cost adjustments.
    • No changes to patch-enUS-4.MPQ, patch-enUS-6.MPQ, or
      Wow.exe since v0.7.4. They are re-uploaded for fresh installs only.

    What v0.7.4 already shipped (for new installs)

    (Quoted verbatim from v0.7.4 so this release is self-contained.)

    • Paragon class: complete server scaffolding for CLASS_PARAGON
      (id 12), AE/TE currency, talent learn pipeline, panel commit/reset.
    • Character Advancement panel: full per-class spell + talent
      grids, Overview/Search tabs, currency-aware preview, combat-locked
      commit.
    • Server-authoritative resource sync (Paragon_SC.cpp): R CP <n>
      and R RUNES <cd0..cd5> PARAA pumps so the client always mirrors
      the server's combo points and rune cooldowns instead of inferring
      from combat-log latency.
    • Glyph + class-restricted item usability: Player::CanUseItem
      short-circuits AllowableClass for class 12 server-side, and
      migration 2026_05_10_04.sql ORs class 12's bit into every
      class-restricted item_template row so the 3.3.5 client's local
      pre-check stops blocking right-click usage.
    • patch-enUS-4.MPQ: PARAGON class slot in DBC + GlueXML +
      Paragon resource bar definitions.
    • patch-enUS-5.MPQ: rune simulator, combo-point simulator,
      PARAA resource sync, action-button usability + click guard, expanded
      spellbook (24 skill-line tabs with column wrap),
      classes-line tooltip patcher.
    • patch-enUS-6.MPQ: Character Advancement addon - spell tabs,
      talent grid, Overview / Search, AE+TE currency display, commit /
      reset / preview, login-time toast suppression, draggable +
      scaleable window.
    • Wow.exe: standard 3.3.5a (build 12340) byte-patched to skip
      the MPQ signature check so the custom patches load.

    Known issues

    • Players running an older client bundle against a v0.7.5 server
      see the Character Advancement panel render blank or AE/TE read
      0/0 - pull this release.
    • Players running a v0.7.5 client against a pre-v0.7.4 server see
      worldserver crashes referencing
      character_paragon_panel_spell_revoked - pull server commit
      34cc87a (or any v0.7.4-or-later commit that includes the
      migration) and re-run docker compose up -d ac-db-import.

    Verifying the build

    After login, /dump ParagonUIPatchVersion should print the FrameXML
    patch version, and the addon's chat banner should show
    [Paragon UI] loaded ParagonAdvancement v0.7.4-combat-lockdown
    (unchanged - the addon side did not need a bump).

    Downloads