From d96123e6619f31b7e82927f68dc5f04f68ddbfa6 Mon Sep 17 00:00:00 2001 From: Docker Build Date: Sat, 9 May 2026 15:34:02 -0400 Subject: [PATCH] mod-paragon: single Arcane Torrent for Paragon Blood Elves Blood Elf racial skill line 756 grants three different Arcane Torrent spell IDs (28730 mana, 25046 rogue energy, 50613 DK runic power). The blanket SkillLineAbility overlay in 2026_05_10_02 OR'd class 12 into all three, so Paragon Blood Elves auto-learned every variant and the spellbook listed three identical "Arcane Torrent" entries. Add db-world migration 2026_05_10_03.sql to clear the class-12 bit on the rogue and DK rows only (SkillLineAbility IDs 13338 and 17510), leaving 28730 as the sole Paragon-visible racial cast. OnPlayerLogin removes 25046/50613 if still present so existing characters self-heal without a manual unlearn. The fractured-tooling DBC overlay generator is updated in the same workspace to skip those two rows when regenerating SkillLineAbility SQL. Co-authored-by: Cursor --- .../sql/db-world/updates/2026_05_10_03.sql | 13 ++++++++++++ modules/mod-paragon/src/Paragon_Essence.cpp | 20 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 modules/mod-paragon/data/sql/db-world/updates/2026_05_10_03.sql diff --git a/modules/mod-paragon/data/sql/db-world/updates/2026_05_10_03.sql b/modules/mod-paragon/data/sql/db-world/updates/2026_05_10_03.sql new file mode 100644 index 0000000..73e71d7 --- /dev/null +++ b/modules/mod-paragon/data/sql/db-world/updates/2026_05_10_03.sql @@ -0,0 +1,13 @@ +-- mod-paragon: Blood Elf "Arcane Torrent" uses three spell IDs in WotLK +-- (28730 mana/casters, 25046 rogue energy, 50613 death knight runic power), +-- all on racial skill line 756. Migration 2026_05_10_02 OR'd class 12 into +-- every SkillLineAbility delta from patch-enUS-4, so Paragon Blood Elves +-- auto-learned all three and the spellbook showed three identical entries. +-- +-- Paragon uses mana as its primary display power; keep only the mana +-- variant (28730) for class 12. IDs 13338 / 17510 match stock WotLK +-- SkillLineAbility rows for 25046 / 50613 on skill line 756. + +UPDATE `skilllineability_dbc` +SET `ClassMask` = `ClassMask` & ~2048 +WHERE `ID` IN (13338, 17510); diff --git a/modules/mod-paragon/src/Paragon_Essence.cpp b/modules/mod-paragon/src/Paragon_Essence.cpp index dc5ac41..5a208a1 100644 --- a/modules/mod-paragon/src/Paragon_Essence.cpp +++ b/modules/mod-paragon/src/Paragon_Essence.cpp @@ -559,6 +559,23 @@ void RevokeUnwantedCascadeSpellsForPlayer(Player* pl) toRevoke.size(), pl->GetName(), ourSkillLines.size(), allowed.size()); } +// Blood Elf racial "Arcane Torrent" is three different spell IDs in WotLK +// (28730 mana, 25046 rogue energy, 50613 DK runic power), all on skill line +// 756. The blanket SkillLineAbility overlay opened all three to class 12; +// Paragon should keep only the mana version (matches primary power display). +void RevokeDuplicateBloodElfArcaneTorrent(Player* pl) +{ + if (!pl || pl->getRace() != RACE_BLOODELF) + return; + + constexpr uint32 SPELL_ARCANE_TORRENT_ROGUE = 25046; + constexpr uint32 SPELL_ARCANE_TORRENT_DK = 50613; + + for (uint32 sid : { SPELL_ARCANE_TORRENT_ROGUE, SPELL_ARCANE_TORRENT_DK }) + if (pl->HasSpell(sid)) + pl->removeSpell(sid, SPEC_MASK_ALL, false); +} + // Snapshot of currently-known spell IDs (excluding entries marked removed). // Used by PanelLearnSpellChain to detect spells that AzerothCore's // addSpell machinery auto-learns alongside the spell we asked for. @@ -1441,6 +1458,9 @@ public: // cascade re-fire on relog. Only walks our own SkillLines, so // racials / weapon skills / Defense rewards are never touched. RevokeUnwantedCascadeSpellsForPlayer(player); + // Step 3: Blood Elf only -- strip rogue/DK Arcane Torrent clones + // (skill-line overlay taught all three; see 2026_05_10_03.sql). + RevokeDuplicateBloodElfArcaneTorrent(player); // Intentionally NOT calling SendSilenceClose here -- the chat // frame buffers system messages during the loading screen and