aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-10-16 13:22:42 +0200
committerShauren <shauren.trinity@gmail.com>2021-10-16 13:22:42 +0200
commit6b69338990a651c54dd9d2b5ad3281a4d702efb7 (patch)
tree9e36dbb051857a28ec25bd5f92829a75bb20864d /src/server/game/Spells/SpellEffects.cpp
parent047117fe9fe31514c9f49340d4ebecee038c547e (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.cpp18
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()