diff options
| author | Shauren <shauren.trinity@gmail.com> | 2021-10-16 13:22:42 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-10-16 13:22:42 +0200 |
| commit | 6b69338990a651c54dd9d2b5ad3281a4d702efb7 (patch) | |
| tree | 9e36dbb051857a28ec25bd5f92829a75bb20864d /src/server/game/Spells/SpellEffects.cpp | |
| parent | 047117fe9fe31514c9f49340d4ebecee038c547e (diff) | |
Core/Items: Refactored learning spells from items to check for ITEM_SPELLTRIGGER_LEARN_SPELL_ID instead of hardcoded spell ids
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 06ecc709000..6cb02a20306 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2138,10 +2138,22 @@ void Spell::EffectLearnSpell() Player* player = unitTarget->ToPlayer(); - uint32 spellToLearn = (m_spellInfo->Id == 483 || m_spellInfo->Id == 55884) ? damage : effectInfo->TriggerSpell; - player->LearnSpell(spellToLearn, false); + if (m_CastItem && !effectInfo->TriggerSpell) + { + for (ItemEffectEntry const* itemEffect : m_CastItem->GetEffects()) + { + if (itemEffect->TriggerType != ITEM_SPELLTRIGGER_LEARN_SPELL_ID) + continue; + + player->LearnSpell(itemEffect->SpellID, false); + } + } - TC_LOG_DEBUG("spells", "Spell: %s has learned spell %u from %s", player->GetGUID().ToString().c_str(), spellToLearn, m_caster->GetGUID().ToString().c_str()); + if (effectInfo->TriggerSpell) + { + player->LearnSpell(effectInfo->TriggerSpell, false); + TC_LOG_DEBUG("spells", "Spell: %s has learned spell %u from %s", player->GetGUID().ToString().c_str(), effectInfo->TriggerSpell, m_caster->GetGUID().ToString().c_str()); + } } void Spell::EffectDispel() |
