aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ItemHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp17
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);