aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-04-13 17:35:03 +0200
committerShauren <shauren.trinity@gmail.com>2016-04-13 17:35:03 +0200
commit51e2d7f99797478c0ed367f493bd8ae88d767108 (patch)
tree1797de5101b94f8e1111d623a250d5c471dfbe3a /src
parentf4a19fe7954e6bbba3b81f0c637c929145bac656 (diff)
Core/Toys: Check whether player has the toy he is attempting to use and if that toy has the spell that player is trying to cast
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)
{