diff options
Diffstat (limited to 'src/server/game/Handlers/SpellHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/SpellHandler.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 3ca660dccd1..a6bd43f72c6 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -371,6 +371,29 @@ void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::SpellCastRequest& // not have spell in spellbook return; } + + if (Player* plr = caster->ToPlayer()) + { + uint32 specId = plr->GetActiveTalentSpec(); + if (specId) + { + if (sSpecializationOverrideSpellMap.find(specId) != sSpecializationOverrideSpellMap.end()) + { + if (sSpecializationOverrideSpellMap[specId].find(castRequest.SpellID) != sSpecializationOverrideSpellMap[specId].end()) + { + SpellInfo const* newSpellInfo = sSpellMgr->GetSpellInfo(sSpecializationOverrideSpellMap[specId][castRequest.SpellID]); + if (newSpellInfo) + { + if (newSpellInfo->SpellLevel <= caster->getLevel()) + { + spellInfo = newSpellInfo; + castRequest.SpellID = newSpellInfo->Id; + } + } + } + } + } + } Unit::AuraEffectList swaps = mover->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS); Unit::AuraEffectList const& swaps2 = mover->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_2); |
