diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-02-08 16:23:31 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-02-08 16:23:31 +0100 |
| commit | a043d539f016e8552ca6b7ea68ff162e15abf2b1 (patch) | |
| tree | fbb8f098617e82852f06ab5c713b84c2b1d957e0 /src/server/game/Entities | |
| parent | e6eadc1f3b979ecb1ecf12533cef48112a11722f (diff) | |
Core/Spells: Implemented SpellLearnSpell.db2 for auto learning linked spells
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a26a728de81..559e40137c3 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -3658,13 +3658,16 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent for (SpellLearnSpellMap::const_iterator itr2 = spell_bounds.first; itr2 != spell_bounds.second; ++itr2) { - if (!itr2->second.autoLearned) + if (!itr2->second.AutoLearned) { - if (!IsInWorld() || !itr2->second.active) // at spells loading, no output, but allow save - AddSpell(itr2->second.spell, itr2->second.active, true, true, false); + if (!IsInWorld() || !itr2->second.Active) // at spells loading, no output, but allow save + AddSpell(itr2->second.Spell, itr2->second.Active, true, true, false); else // at normal learning - LearnSpell(itr2->second.spell, true); + LearnSpell(itr2->second.Spell, true); } + + if (itr2->second.OverridesSpell && itr2->second.Active) + AddOverrideSpell(itr2->second.OverridesSpell, itr2->second.Spell); } if (!GetSession()->PlayerLoading()) @@ -3873,7 +3876,11 @@ void Player::RemoveSpell(uint32 spell_id, bool disabled, bool learn_low_rank) SpellLearnSpellMapBounds spell_bounds = sSpellMgr->GetSpellLearnSpellMapBounds(spell_id); for (SpellLearnSpellMap::const_iterator itr2 = spell_bounds.first; itr2 != spell_bounds.second; ++itr2) - RemoveSpell(itr2->second.spell, disabled); + { + RemoveSpell(itr2->second.Spell, disabled); + if (itr2->second.OverridesSpell) + RemoveOverrideSpell(itr2->second.OverridesSpell, itr2->second.Spell); + } // activate lesser rank in spellbook/action bar, and cast it if need bool prev_activate = false; |
