aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QuestHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-04-14 01:12:20 +0200
committerShauren <shauren.trinity@gmail.com>2015-04-14 01:12:20 +0200
commitd9e941dde3cc6105d5cd68ae3da55e4a7efcb244 (patch)
tree0143efd544e61725a7f37acb13a5b4db29c75d81 /src/server/game/Handlers/QuestHandler.cpp
parente5675412735a33f05f9c3215fb0cc7327a800c6c (diff)
Core/Quests: Added research results about last field in QuestPackageItem.db2
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 5e73fb71ae8..d7ad9c71956 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -242,7 +242,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
Quest const* quest = sObjectMgr->GetQuestTemplate(packet.QuestID);
if (!quest)
return;
-
+
// This is Real Item Entry, not slot id as pre 5.x
if (packet.ItemChoiceID)
{
@@ -263,6 +263,27 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
}
}
+ if (quest->GetQuestPackageID())
+ {
+ if (std::vector<QuestPackageItemEntry const*> const* questPackageItems = sDB2Manager.GetQuestPackageItems(quest->GetQuestPackageID()))
+ {
+ for (QuestPackageItemEntry const* questPackageItem : *questPackageItems)
+ {
+ if (questPackageItem->ItemID != packet.ItemChoiceID)
+ continue;
+
+ if (ItemTemplate const* rewardProto = sObjectMgr->GetItemTemplate(questPackageItem->ItemID))
+ {
+ if (rewardProto->CanWinForPlayer(_player))
+ {
+ itemValid = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
if (!itemValid)
{
TC_LOG_ERROR("network", "Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (%s) tried to get reward item (Item Entry: %u) wich is not a reward for quest %u (possible packet-hacking detected)", _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), packet.ItemChoiceID, packet.QuestID);