aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/CollectionMgr.h1
-rw-r--r--src/server/game/Handlers/ToyHandler.cpp11
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)
{