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/Handlers/ItemHandler.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/Handlers/ItemHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 7e8e4e231e6..d72c0ce9d0d 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1201,15 +1201,16 @@ void WorldSession::HandleUseCritterItem(WorldPackets::Item::UseCritterItem& useC if (!item) return; - if (item->GetBonus()->EffectCount < 2) - return; - - int32 spellToLearn = item->GetEffect(1)->SpellID; + for (ItemEffectEntry const* itemEffect : item->GetEffects()) + { + if (itemEffect->TriggerType != ITEM_SPELLTRIGGER_LEARN_SPELL_ID) + continue; - if (BattlePetSpeciesEntry const* entry = sSpellMgr->GetBattlePetSpecies(uint32(spellToLearn))) - { - GetBattlePetMgr()->AddPet(entry->ID, BattlePetMgr::SelectPetDisplay(entry), BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID)); - _player->UpdateCriteria(CriteriaType::UniquePetsOwned); + if (BattlePetSpeciesEntry const* entry = sSpellMgr->GetBattlePetSpecies(uint32(itemEffect->SpellID))) + { + GetBattlePetMgr()->AddPet(entry->ID, BattlePetMgr::SelectPetDisplay(entry), BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID)); + _player->UpdateCriteria(CriteriaType::UniquePetsOwned); + } } _player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); |
