diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/CollectionMgr.h | 1 | ||||
-rw-r--r-- | src/server/game/Handlers/ToyHandler.cpp | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/CollectionMgr.h b/src/server/game/Entities/Player/CollectionMgr.h index aa2f70d4df9..1b995be3646 100644 --- a/src/server/game/Entities/Player/CollectionMgr.h +++ b/src/server/game/Entities/Player/CollectionMgr.h @@ -60,6 +60,7 @@ public: bool AddToy(uint32 itemId, bool isFavourite /*= false*/); bool UpdateAccountToys(uint32 itemId, bool isFavourite /*= false*/); + bool HasToy(uint32 itemId) const { return _toys.count(itemId) > 0; } ToyBoxContainer const& GetAccountToys() const { return _toys; } diff --git a/src/server/game/Handlers/ToyHandler.cpp b/src/server/game/Handlers/ToyHandler.cpp index 0d8ce1cb0d8..6c41ceadd8b 100644 --- a/src/server/game/Handlers/ToyHandler.cpp +++ b/src/server/game/Handlers/ToyHandler.cpp @@ -51,6 +51,17 @@ void WorldSession::HandleUseToy(WorldPackets::Toy::UseToy& packet) if (!item) return; + if (!_collectionMgr->HasToy(packet.ItemID)) + return; + + auto effect = std::find_if(item->Effects.begin(), item->Effects.end(), [&packet](ItemEffectEntry const* effect) + { + return packet.Cast.SpellID = effect->SpellID; + }); + + if (effect == item->Effects.end()) + return; + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(packet.Cast.SpellID); if (!spellInfo) { |