-
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