-
released this
2026-05-13 03:02:30 +00:00 | 0 commits to main since this releaseHow this release works
Source code for this server build lives on the
mainbranch on this repo (normalgit push), not inside the ZIP of the release. The Releases page is for downloadable client binaries (MPQs + patched Wow.exe) and release notes, so players can grab a matching client bundle without cloning the repo.Client binaries (attached)
These four files are attached to this release for convenience:
File Purpose patch-enUS-4.MPQDBC + GlueXML (Paragon class, rune cost / reagent mirroring, etc.) patch-enUS-5.MPQFrameXML / Lua (Paragon UI, runes, spellbook, tooltips, …) patch-enUS-6.MPQParagonAdvancement addon Wow.exe3.3.5a build 12340, MPQ signature check patched They are byte-identical to v0.7.23-paragon-rune-ui-elvui-client — there was no client rebuild for v0.7.24; they were re-uploaded here so latest still ships a full client bundle in one click.
Server (what changed in git /
main)- Paragon tester:
.paragon tester bis hunter, expandedbis gems, AGI bow vs ranged weapons, ranged for spi/hybrid. .learn all mounts: RBAC 916 +data/sql/updates/db_auth/2026_05_12_00.sql.- Cast-time mount spells: movement / combat behavior; cancel mount cast on combat enter.
MaxPrimaryTradeSkill: default 11 in config +WorldConfig.
Rebuild worldserver from
mainand apply the auth migration (or full DB import).Downloads
- Paragon tester:
-
released this
2026-05-12 23:20:13 +00:00 | 5 commits to main since this releaseServer: ships with commit [\87219cb](https://github.com/Dawnforger/Fractured/commit/87219cb) on \main.
Paragon (core + world SQL):
- Multidot Devouring Plague (separate DoTs per target) plus \skilllineability_dbc\ / script alignment.
- Warrior stance and DK presence clone spells for Character Advancement; spellbook \SkillLineAbility\ rows and aura / shapeshift attribute fixes.
- Apply world updates \2026_05_12_02\ … \2026_05_12_07\ from \modules/mod-paragon/data/sql/db-world/updates/\ (in order).
Client bundle (this release):
- \patch-enUS-4.MPQ\ — DBC + GlueXML (rebuilt with current \Spell.dbc, \SkillLineAbility.dbc, \SpellShapeshiftForm.dbc).
- \patch-enUS-5.MPQ\ — Paragon FrameXML overrides.
- \patch-enUS-6.MPQ\ — ParagonAdvancement addon.
- \Wow.exe\ — MPQ signature bypass (3.3.5a build 12340).
See CLIENT-PATCHES.md for install order and troubleshooting.
Downloads
-
released this
2026-05-12 23:20:13 +00:00 | 5 commits to main since this releaseServer: matches [\main\ @ \87219cb](https://github.com/Dawnforger/Fractured/commit/87219cb) (Paragon multidot DP, stance/presence clones, advancement SLA + world SQL through \2026_05_12_07).
Client bundle (this release):
- \patch-enUS-4.MPQ\ — Paragon DBC + GlueXML (refreshed bake).
- \patch-enUS-5.MPQ\ — FrameXML overrides: ParagonRuneCost from stock \Spell.dbc\ column 226 (fixes wrong DK rune costs / grey bars), ElvUI action-bar usability via \LibActionButton-1.0-ElvUI, rune simulator + click guards, etc.
- \patch-enUS-6.MPQ\ — ParagonAdvancement addon.
- \Wow.exe\ — MPQ signature bypass (3.3.5a build 12340).
Install order and troubleshooting: CLIENT-PATCHES.md.
Downloads
-
released this
2026-05-12 08:49:38 +00:00 | 6 commits to main since this releaseParagon Runeforging support — buy it from the Character Advancement panel and apply rune enchants from anywhere in the world.
This release pairs the server-side runeforging carve-outs (commit
da17074) with the client patches that add a Runeforging tab to the Character Advancement panel and a substitute Runeforging UI for the Paragon class. Plus a bunch of stability/UX fixes for the Overview tab.Server-side (modules/mod-paragon + AzerothCore core)
Runeforging works for Paragons. Three carve-outs land together:
Spell.cpp— bypass the SpellFocusObject GO proximity check when a Paragon casts aSKILL_RUNEFORGING(776) spell. No need to fly back to Acherus or find the nearest Eastern Plaguelands anvil. Stock DK behaviour is unchanged (the bypass is gated ongetClass() == CLASS_PARAGON, not the IsClass context hook).Player.cpp— skip the Paragon class-skill cascade block for skill 776, so the rune-enchant SLA cascade actually fires.Paragon_Essence.cpp— treat the rune-enchant cluster as a meta-skill: cascade them like passives so they stick aspanel_spell_children(cleaned up by the standard refund path), whitelist them in the active-children prune pass, force-attach them inPanelLearnSpellChain, and add a login-time fixup so existing Paragons who bought Runeforging before this change get the 8 basic runes retro-granted on next login.
Overview snapshot fix.
PushSpellSnapshotno longer filtersSPELL_ATTR0_DO_NOT_DISPLAY. Runeforging itself is hidden in the DBC but is a real panel purchase that must show in the Overview tab — characters whose only buy was Runeforging used to see an empty Overview.The two advanced runes (Stoneskin Gargoyle, Nerubian Carapace) are intentionally excluded from the auto-grant — retail gates them behind heroic dungeon / raid item drops.
No SQL migration required.
What changed (patch-enUS-5.MPQ)
Interface\FrameXML\ParagonRuneforgeMenu.lua — New substitute Runeforging UI. Wow.exe's hardcoded runeforging frame is gated on
playerClass == "DEATHKNIGHT"and silently no-ops for class 12, so we ship our own. It auto-opens the standard tradeskill window viaDoTradeSkillunder the hood, then issuesCastSpellByID(53428)and watches forTRADE_SKILL_SHOWto fire the engrave for the rune the player picked.The same engrave path is used by the Character Advancement Runeforge tab (see patch-6), with the tradeskill window hidden off-screen for stealth-mode panel-initiated engraves.
Interface\\FrameXML\\RuneFrame.luaandComboFrame.luaare byte-equivalent to v0.7.20 modulo the new ParagonRuneforgeMenu append; the auto-generated ParagonRuneCost / ParagonComboGen tables ship inlined at the head of those files via the build script.What changed (patch-enUS-6.MPQ — ParagonAdvancement addon)
Runeforge tab. New class-style tab for Paragons who own Runeforging (53428). Lists the 8 basic runes with tooltips, supports left-click to engrave (via stealth-mode
DoTradeSkill), and respects the standard talent-pane tab UX. Selectable only when Runeforging is known.Right-click refund from the Overview tab. Right-clicking a learned spell or talent on the Overview tab queues it for refund. Refund hint is included in the tooltip; queued tiles dim and the Overview header re-renders so you can see what you've staged.
Drag guard. Spells and talents that aren't actually known (or are pending unlearn / refund) can no longer be dragged to the action bars from the Overview tab. Stops the silent "ghost spell on the bar" failure mode.
Tradeskill window stealth mode. When the Runeforge tab triggers an engrave, the stock TradeSkillFrame is repositioned off-screen and re-anchored after the engrave fires. No more brief popup flash.
Overview tab fix. Corrected a Lua syntax error (
PA.State:GetPendingTalentRank and ...— invalid because:requires immediate parens; nil-guards must use.) that was silently failing the entireOverview.luafile load on some characters, leaving the Overview tab blank.Compatibility
Wow.exeis byte-identical to v0.7.20 and re-uploaded only so this Release page stays self-contained for fresh installs (sha256d9bec84d42a181f2f1c4b5da2312f1c76e6961726fe811d54d2f141a0d773d9d).patch-enUS-4.MPQ(DBC + GlueXML) is byte-identical to v0.7.20.- Plain DK clients are unaffected — the runeforging carve-outs are class-gated on
CLASS_PARAGON.
Install
Copy all four files into your ChromieCraft 3.3.5a directory:
patch-enUS-4.MPQ,patch-enUS-5.MPQ,patch-enUS-6.MPQ->Data\\enUS\\Wow.exe-> game root
If you only have v0.7.20 installed, you can drop in just the new
patch-enUS-5.MPQandpatch-enUS-6.MPQ—Wow.exeandpatch-enUS-4.MPQare unchanged.Downloads
-
released this
2026-05-12 03:17:37 +00:00 | 7 commits to main since this releaseSummary
Server-side batch following v0.7.18, mostly Paragon-gated with a few server-wide quality-of-life changes the design discussion explicitly called for:
- Cross-class stance / form / presence / aspect exclusivity. New
IsFracturedExclusiveStanceSpell()(Unit.cpp/Unit.h) treats the union of warrior stances + druid forms (combat AND utility — Travel, Aquatic, Flight, Swift Flight) + Ghost Wolf + base Stealth + Shadowform + Metamorphosis + DK Presences + Hunter Aspects (combat AND utility — Cheetah, Pack) as mutually exclusive.Aura::CanStackWith(SpellAuras.cpp) refuses to stack two from the set, dropping the older aura via the same_RemoveNoStackAurasDueToAurapath Battle Elixirs use. Plugs the stock-AC gap where DK Presences and Hunter Aspects (regular auras, just rendered in the stance bar) coexisted with engine-shapeshifts. - Stances / Presences / Aspects cancellable like Druid forms.
SpellInfoCorrections.cppnow zeroesCategoryEntryon warrior stances, DK presences, and every rank of every hunter aspect (moves them out of SpellCategory 47 "Combat States", which gates the client's right-click //cancelauraUX), AND clearsAttributesEx6bit0x1000on warrior stances + DK presences (a second client-UI gate surfaced via DBC diff — aspects don't have it set). Action-bar swap behavior is unchanged: warrior stances and druid forms still swap bars, presences and aspects continue to leave the bar alone. - Hunter ammo soft-fail (server-wide). Both
SPELL_FAILED_NO_AMMOreturns inSpell::CheckCastare nowbreak;, so ranged + thrown abilities cast through with zero ammo._ApplyAmmoBonusescontinues to gate the actual arrow / bullet DPS bonus on a non-empty stack, so equipping ammo still pays off — you just stop being completely neutered when you run out. New programmatic block inSpellInfoCorrections.cppmirrors the client-side Spell.dbc patch and setsEquippedItemClass = -1on every Hunter-family spell whoseEquippedItemSubClassMaskincludes Bow / Gun / Crossbow (skipping a small DENYLIST of Quiver / Ammo Pouch passive haste auras + Aynasha's Bow + Legendary Bow Haste). Server log:>> Fractured: dropped EquippedItemClass on 196 hunter shot abilities. - Feral Cat scaling (cat-only, bear unchanged).
StatSystem.cppUpdateAttackPowerAndDamageFORM_CAT branch doubles AGI's contribution to attack power (1.0 → 2.0).SpellAuraEffects.cppMaster Shapeshifter FORM_CAT branch doubles the talent's bonus before triggering 48420: rank 1 2% → 4%, rank 2 4% → 8% crit chance in Cat Form. FORM_BEAR / FORM_DIREBEAR / FORM_MOONKIN / FORM_TREE branches all left untouched so bear stays "already fine" per the resident Feral expert. - Pestilence spreads / refreshes Devouring Plague for Paragon casters.
spell_dk.cppspell_dk_pestilence::HandleScriptEffectnow also spreads (and Glyph-of-Disease refreshes) Priest Devouring Plague when the caster is a Paragon. Stock DKs cannot cast Devouring Plague at all, so this branch is a no-op for them. - Dancing Rune Weapon: Paragon copies melee, not casts.
spell_dk_dancing_rune_weapon::CheckProcfor Paragon callers now requireseventInfo.GetDamageInfo()andspellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE, so the ghostly weapon copies cross-class melee strikes (Hamstring, Sinister Strike, Heart Strike, Frost Strike, …) and auto-attacks instead of re-casting nukes. Stock DK gating is untouched. - Maelstrom Weapon: drop Arcane Blast from the allowlist.
SpellInfo.cppandspell_shaman.cppallowlists now match Fireball and Frostbolt only — Arcane Blast stacked with its own self-buff was too potent.
Server commit:
b882637
Default config flag still:Paragon.WildcardFamilyMatching = 1(.reload configto toggle).patch-enUS-5.MPQ(UI / Lua patches),patch-enUS-6.MPQ(Paragon Advancement addon) andWow.exeare byte-identical to v0.7.18 and re-attached for one-click install.patch-enUS-4.MPQis updated — the new Spell.dbc carries the cancel/right-click fix for stances + presences, the hunter-ammoEquippedItemClass = -1patch, the Cat Form / Master Shapeshifter / Pestilence tooltip annotations, and inherits the prior runes / reagents / stances / presences-cancel patches.
Net effect
- All classes: warrior stances, druid forms, presences and aspects no longer stack across the boundary. Switching aspects no longer requires dropping bear form first; Hunter Hawk and Cheetah are now an actual choice. Right-click on the buff icon (or
/cancelaura) drops warrior stances, DK presences and hunter aspects the same way it already drops druid forms. - Hunters: "Ammo needs to be in the paper doll ammo slot before it can be fired" is gone. Empty quiver no longer bricks Steady Shot / Aimed / Multi / Auto Shot / etc. Equipping ammo continues to grant the per-shot DPS bonus.
- Paragon Druids (cat builds): ~2× AGI → AP scaling and a doubled cat-only Master Shapeshifter crit bonus. If field reports still flag cat as weak after this lands, the next levers (per
BALANCE-TODO.md) are bumping the AGI multiplier to 2.5×, then bumping the Master Shapeshifter cat multiplier to 3×. - Paragon DKs: Pestilence now spreads and refreshes Devouring Plague (Priest disease) the same way it spreads Blood Plague / Frost Fever. Dancing Rune Weapon copies cross-class melee strikes only — no more re-casting Mage spells off the ghostly weapon.
- Paragon Shamans: Maelstrom Weapon still procs from any weapon (v0.7.17 behavior) and still grants its bonus to Mage Fireball / Frostbolt cross-class — Arcane Blast removed from the list.
DB migration
None this release.
Deploy
- Pull
main(commitb882637). docker compose build ac-worldserverdocker compose up -d ac-worldserver- Drop the new
patch-enUS-4.MPQintoData\enUS\(or run the launcher).
Downloads
- Cross-class stance / form / presence / aspect exclusivity. New
-
released this
2026-05-12 03:17:37 +00:00 | 7 commits to main since this releaseClient-bundle update — fixes ElvUI rune cooldown tracking and action-button usability for the Paragon class. No server-side code changes since v0.7.19.
What changed (patch-enUS-5.MPQ)
Interface\FrameXML\RuneFrame.lua — Expose the Paragon rune simulator state as globals so other addons can mirror it. The 3.3.5 client never publishes rune state for class != DEATHKNIGHT, so addons that try
GetRuneCooldown/GetRuneTypeon a Paragon get nothing useful. The new exports are:_G.PARAGON_RUNE_DURATION— rune cooldown in seconds (matches serverRUNE_BASE_COOLDOWN)_G.paragonRuneCD[1..6]— per-engine-slotGetTime()expiry timestamps; 0 means ready_G.ParagonRune_GetSlotType(slot)— resolves toBLOOD / UNHOLY / FROST / DEATHwith a static BBUUFF fallback when the engine returns nothing
Interface\FrameXML\PlayerFrame.lua — Extend the existing action-button usability enforcer to also drive LibActionButton-1.0 buttons (used by ElvUI ActionBars, Bartender4, Dominos, etc.):
- The 100ms
OnUpdatefloor now also iteratesLibStub(LibActionButton-1.0).activeButtonsand applies the correct usable / not-usable shade using each button's_state_actionandbutton.config.colors - A delayed
LAB.RegisterCallback(OnButtonUsable)hook (registered onPLAYER_LOGIN/ADDON_LOADED) fires immediately after every LibActionButtonUpdateUsable, so engine repaints get corrected on the same frame instead of after up to a 100ms delay
Without this, ElvUI's bars stayed permanently lit on rune-cost spells because Blizzard's
IsUsableAction()lies for class 12, and our previous enforcer only painted the stockActionButton1..12/MultiBar*Button*buttons (which ElvUI hides off-screen).What changed (ElvUI addon — local install only, not in this MPQ bundle)
ElvUI\Libraries\oUF\elements\runes.lua — Wrap
GetRuneCooldown/GetRuneTypeto dispatch offUnitClass(player). Paragon characters now read from the new_G.paragonRuneCD/_G.ParagonRune_GetSlotTypeglobals instead of the engine APIs, plus a 10 fps poller drivesUpdate/UpdateTypewhenever a rune state, expiry, or type changes. DK clients see zero behavior change.These ElvUI source changes ship as part of the patched-ElvUI install in the Fractured client bundle, not in patch-enUS-5.MPQ itself.
Compatibility
- Plain DK clients are unaffected — every wrapped API still falls through to the engine when
UnitClass(player) ~= PARAGON. - Plain action-button addons that aren't on LibActionButton-1.0 are unaffected — the LAB hook is gated on
LibStub(LibActionButton-1.0, true)returning non-nil. Wow.exe,patch-enUS-4.MPQ, andpatch-enUS-6.MPQare byte-identical to v0.7.19 and re-uploaded only so this Release page stays self-contained for fresh installs.
Install
Copy all four files into your ChromieCraft 3.3.5a directory:
patch-enUS-4.MPQ,patch-enUS-5.MPQ,patch-enUS-6.MPQ->Data\enUS\Wow.exe-> game root
If you only have v0.7.19 installed, you can drop in just the new
patch-enUS-5.MPQ— the other three files are unchanged.Downloads
-
released this
2026-05-11 23:11:14 +00:00 | 9 commits to main since this releaseSummary
Three Paragon fixes plus a panel catalog bug:
- Weapon-narrow proc allowlist (refines v0.7.17). Maelstrom Weapon (51528) still procs from any weapon a Paragon equips, but the bypass is now an explicit allowlist (
IsParagonWeaponSubclassWildcardSpell) instead of a blanket "any weapon-class proc". This restores correct gating on weapon-specialization talents like Hack and Slash, Sword Specialization, and Mace Specialization — those once again only fire from the weapon types they were designed for. - Talent ability-rank cascade. Talents that grant abilities via
SPELL_EFFECT_LEARN_SPELL(most visibly Mangle) no longer get stuck at rank 1. A new helper walks the rank chain and learns each rank up to the player's level, both when the talent is first purchased and every time the player levels up. Fixes the long-standing "Paragon talent grants only the rank-1 baseline" issue caused byPlayer::learnSkillRewardedSpellsbeing intentionally disabled for Paragon's class skill lines. - Riding-skill gate for flight forms. Flight Form (33943) now requires Expert Riding (34090); Swift Flight Form (40120) requires Artisan Riding (34091). Buying or auto-cascading either form correctly waits for the matching riding skill — no more 280% flying handed out alongside 150% riding.
- Savage Defense (62600) on the Druid Feral spell tab. The panel-data bake (
tools/_gen_paragon_advancement_spells_lua.py) was dropping every passive spell up front, even when the trainer explicitly sells it. The bake now carves out a smallPASSIVE_TRAINER_ALLOWLISTso legitimate trainer-taught passives survive that filter, and Savage Defense surfaces on the Druid Feral spell tab at level 40 (matching trainer 33's stock learn level).
Server commit:
999f7e9
Default config flag still:Paragon.WildcardFamilyMatching = 1(.reload configto toggle).patch-enUS-4.MPQ(DBC stance bypass) andpatch-enUS-5.MPQ(tooltip / Lua patches) are byte-identical to v0.7.17 and re-attached for one-click install.patch-enUS-6.MPQis updated (Paragon Advancement addon, now showing Savage Defense and the regenerated Druid Feral spell list).
Net effect
- Paragon Druids who purchase the Mangle talent automatically learn every Mangle rank their level qualifies for, on level-up too. Same plumbing applies to any other talent whose rank uses
SPELL_EFFECT_LEARN_SPELL. - Paragon Druids who buy Flight Form on the panel only get it once they actually have Expert Riding; Swift Flight Form requires Artisan Riding. The cascade can no longer push past a rank the player isn't trained for.
- Paragon Druids can buy Savage Defense (62600) on the Character Advancement panel for 1 AE under the Feral tab.
- Weapon-specialization talents (Hack and Slash, Sword Specialization, Mace Specialization, Two-Handed Weapon Specialization, etc.) once again proc only off the weapon types they were authored for. Maelstrom Weapon's any-weapon behavior is unchanged from v0.7.17.
DB migration
mod-paragonships2026_05_11_05.sqlwhichINSERT IGNOREs(62600, 1)intoparagon_spell_ae_cost. The base file (base/paragon_spell_ae_cost.sql) was regenerated alongside, so fresh deployments already have the row. Thedbimportcontainer picks the migration up automatically on the nextdocker compose up -d --build.Deploy
- Pull
main(commit999f7e9). docker compose build ac-worldserver ac-db-importdocker compose up -d(this also rerunsac-db-import, applying2026_05_11_05.sql).- Drop the new
patch-enUS-6.MPQintoData\enUS\(or run the launcher).
Downloads
- Weapon-narrow proc allowlist (refines v0.7.17). Maelstrom Weapon (51528) still procs from any weapon a Paragon equips, but the bypass is now an explicit allowlist (
-
released this
2026-05-11 22:20:30 +00:00 | 10 commits to main since this releaseSummary
Paragon weapon-class wildcard: cross-class proc talents (most visibly Maelstrom Weapon) now fire from any weapon a Paragon has equipped, not just the talent's stock subclass mask.
Server commit:
7c57abd
Default config flag still:Paragon.WildcardFamilyMatching = 1(.reload configto toggle).No client changes this release —
patch-enUS-4/5/6.MPQandWow.exeare byte-identical to the v0.7.16 attachments and are re-attached for one-click install.
What changed
For Paragon casters, the
EquippedItemSubClassMaskgate is now bypassed in three independent places that all sit on the proc path:Player::HasItemFitToSpellRequirements— talent-attach check at item-equip / login. Without this, a passive talent aura like Maelstrom Weapon (51528-51532) never even applies for a Paragon wielding a non-stock weapon.Player::CheckAttackFitToAuraRequirement— per-swing attackType↔aura match used by the proc engine.Aura::IsProcTriggeredOnEvent(SpellAuras.cpp:2254) — per-event proc evaluator that callsItem::IsFitToSpellRequirementsagain, independently of the previous two. This was the proc-killing gate before this commit: talent attached, swing matched, but this evaluator returned0charges for any weapon outside the stock subclass mask, so no stack was ever applied.
All three bypasses are gated on:
IsParagonWildcardCaller(this)— player class 12 + the existing config flag.spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON.ITEM_CLASS_ARMOR(shield) gates are deliberately untouched — Shield Specialization / Shield Block / etc. still need an actual shield equipped.
Each bypass also requires some weapon to be in the relevant slot (MAINHAND / OFFHAND / RANGED). Unarmed Paragons do not auto-activate every weapon-gated talent in the game.
Net effect
For a Paragon character with Maelstrom Weapon talented, the proc fires from every melee weapon — 1H sword, polearm, spear, fist, dagger, staff, 2H weapons, axes, maces, etc. Stock Shamans (and every other non-Paragon class) are byte-identical to before.
Other weapon-class proc talents inherit the same wildcard for free (Sword Specialization, Mace Specialization, Two-Handed Weapon Specialization, etc.) — a Paragon will see those proc / be active off whatever weapon they wield, which is consistent with the wildcard identity of the class.
Caveat — ranged-weapon auto-attacks
The talent's stock
ProcFlags(0xC00014) only fire on melee swings + melee abilities (DONE_MELEE_AUTO_ATTACK | DONE_SPELL_MELEE_DMG_CLASS | DONE_OFFHAND_ATTACK | DONE_MAINHAND_ATTACK). Ranged auto-attacks (bow / gun / crossbow / wand) firePROC_FLAG_DONE_RANGED_AUTO_ATTACK(0x40), which the proc engine never matches against this talent, so the new weapon-subclass bypass is moot for those weapons specifically. Adding ranged-auto-attack support would require a Paragon-onlyProcFlagsexpansion at the proc engine layer — deferred until requested.Deploy
- Pull
main(commit7c57abd). docker compose build ac-worldserverdocker compose restart ac-worldserver
No DB migration this round.
Downloads
-
released this
2026-05-11 18:55:27 +00:00 | 11 commits to main since this releaseSummary
Paragon cross-class talent expansion pass + Warrior stance bypass (server and client) + Mirror Image now mimics the caster's spellbook instead of stock Frostbolt / Fire Blast.
Server commit:
e649402
Default config flag still:Paragon.WildcardFamilyMatching = 1(.reload configto toggle).
Talent expansions (Paragon owners only — stock classes unchanged)
- Cold Snap (11958) — resets cooldown of any Frost-school spell.
- Nature's Swiftness (17116, 16188) + Predator's Swiftness (69369) — instant-cast on any Nature-school spell.
- Vampiric Embrace (15286) — leech-heals from any single-target Shadow-school spell.
- Fingers of Frost (44543/44545) + Frostbite (11071/12496/12497) — proc from any Frost-school chill effect (DK Howling Blast / Icy Touch / Chains of Ice, Hunter Frost Trap, Shaman Frost Shock, cross-class chill auras applying
SPELL_AURA_MOD_DECREASE_SPEED). - Maelstrom Weapon (53817) — now also affects Mage Fireball (133), Frostbolt (116), and Arcane Blast (30451) at every rank, both for the cast-time/cost spellmod and for stack consumption on cast.
Warrior stance bypass
- Server:
SpellInfo::CheckShapeshiftreturnsSPELL_CAST_OKwhenever a Paragon caster hits anyStances != 0spell (noSpellFamilyNamegate). Stock classes still see the regular form rules. - Client (
patch-enUS-4.MPQ):Stanceszeroed on everySPELLFAMILY_WARRIORSpell.dbcrow (105 spells) so the engine's pre-cast "Must be in Battle/Defensive/Berserker Stance" check stops eatingCMSG_CAST_SPELLpackets. Server bypass enforces the actual decision; stock Warriors still see the server-side stance error mid-cast if they actually click while out of stance. - Client (
patch-enUS-5.MPQ): Lua tooltip post-processor recolors and appends(Paragon: bypassed)to the "Requires Stance" line on Warrior abilities. Action-barUseActionwrapper routes stance-gated Warrior spell clicks throughCastSpellByNameso the stance-zero DBC + server bypass actually run instead of the engine's localIsUsableSpellpath firing the error sound.
Mirror Image
npc_pet_mage_mirror_imagerebuilds its spell list from the Paragon owner's spellbook onInitializeAIandJustEngagedWith(the second pass +events.Reset()clears stale events theCasterAIbase scheduler may have queued from the stock 59637/59638 entries before the rebuild ran).- Curated filter keeps single-target damaging spells (instant, cast-time, or channeled) with a base cooldown ≤ 10 s. The "damaging" definition includes
SPELL_EFFECT_TRIGGER_MISSILEandSPELL_AURA_PERIODIC_TRIGGER_SPELL, so Arcane Missiles qualifies. Rejects passives, AoE, melee/ranged weapon strikes, item/reagent/stance/equip-gated, and lower spell ranks. UpdateAIpicks a random spell from the curated list per cast (so each image's rotation is independent and varied) and reschedules the next pick by the actually-cast spell's cast/channel duration + 750 ms breather, so a 5 s Arcane Missiles channel waits its full duration before re-rolling rather than visually looping across four images.- Tooltip on Mirror Image (55342) appends a Paragon line noting the random-spellbook behavior.
Engine helpers
Unit::IsParagonWildcardCaller/Unit::ParagonFamilyMatchesused bySpell.cpp,SpellInfo.cpp,Player.cpp,SpellAuraEffects.cpp, and the spell scripts.SpellInfo::CheckShapeshiftsignature gains an optionalcasterpointer; all call sites updated.
SQL migrations (auto-applied by DBUpdater)
Under
modules/mod-paragon/data/sql/db-world/updates/:2026_05_11_01.sql— Vampiric Embracespell_procrelax + script gate (spell_pri_vampiric_embrace::CheckProcenforces stock for non-Paragon).2026_05_11_02.sql— Maelstrom Weaponspell_procrelax (initial; superseded by_04for the stack-consumption fix below).2026_05_11_03.sql— Fingers of Frost / Frostbitespell_procrelax +spell_script_namesbinding.2026_05_11_04.sql— Maelstrom Weaponspell_procfixup: restoreSpellPhaseMask=1(CAST) andAttributesMask=8(PROC_ATTR_REQ_SPELLMOD); previous_02set8/0which silently dropped every proc event.
Diagnostics
The chatty
[paragon-diag]Mirror Image probe / kept / cast / engage logs from the debugging session were demoted fromLOG_INFOtoLOG_DEBUG, so production logs are quiet but the probes remain available if regressions need reproducing.Client patches
patch-enUS-4.MPQ— DBC bake now also runs_patch_spell_dbc_stances.py(zerosStanceson everySPELLFAMILY_WARRIORrow).patch-enUS-5.MPQ—PlayerFrame.luaadds the spell-tooltip post-processor (Warrior stance / Maelstrom Weapon / Mirror Image) and a Warrior-stanceUseActionwrapper.patch-enUS-6.MPQ— unchanged fromv0.7.15.Wow.exe— unchanged fromv0.7.15.
Deploy
- Pull
main(commite649402). docker compose build ac-worldserver ac-db-importdocker compose up -d ac-db-import(applies the four new SQL migrations).docker compose restart ac-worldserver.- Players replace
Data/enUS/patch-enUS-4.MPQandData/enUS/patch-enUS-5.MPQwith the assets attached to this release.patch-enUS-6.MPQandWow.exeare unchanged fromv0.7.15and only need to be (re)installed by anyone who skipped the previous release.
Downloads
-
released this
2026-05-11 05:25:18 +00:00 | 12 commits to main since this releaseSummary
Server / core + mod-paragon only — no client MPQ or Wow.exe changes.
Engine
- CONFIG_PARAGON_WILDCARD_FAMILY / Paragon.WildcardFamilyMatching (default on; .reload config to toggle).
- SpellInfo::IsAffected / IsAffectedBySpellMod accept optional listener unit; Paragon listeners bypass SpellFamilyName equality (flag masks still apply).
- SpellMgr::CanSpellTriggerProcOnEvent passes proc aura owner into IsAffected.
- Player::IsAffectedBySpellmod passes this so talent SpellMods (e.g. 69369 cast-time mod) can apply cross-family for Paragon.
- ParagonFamilyMatches helper + used for Nourish healing-taken gate and Shred/Maul bleed mechanic gate in Unit.cpp.
Predatory Strikes / Predator's Swiftness
- Spell::prepare: Paragon with aura 69369 gets instant cast on non-channeled Nature spells with base cast < 10s (any family); buff removed on use.
- spell_paragon_predatory_strikes on talents 16972 / 16974 / 16975 + spell_proc rows (migration 2026_05_11_00.sql).
Deploy
- Pull main (commit
a1c9172). - Rebuild worldserver (e.g. \docker compose build ac-worldserver).
- Restart worldserver so DBUpdater applies the new SQL under mod-paragon.
Downloads