diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-04-14 01:12:20 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-04-14 01:12:20 +0200 |
| commit | d9e941dde3cc6105d5cd68ae3da55e4a7efcb244 (patch) | |
| tree | 0143efd544e61725a7f37acb13a5b4db29c75d81 /src/server/game/Handlers/QuestHandler.cpp | |
| parent | e5675412735a33f05f9c3215fb0cc7327a800c6c (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.cpp | 23 |
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); |
