diff options
author | Shauren <shauren.trinity@gmail.com> | 2016-11-08 00:04:19 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-11-08 00:04:19 +0100 |
commit | fcbb4397ea5c803b5b46bda770606ae7a79e565f (patch) | |
tree | 07bbcd1f1f45c27503617301e7bc36c68b185f43 /src/server/game/Handlers/QuestHandler.cpp | |
parent | 0abb9873ec3798b6476400c8d283a6410d9418fe (diff) |
Core/Quests: Implemented handling all QuestPackageItem types
Closes #18209
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 89ebbaffbc0..2d293e84284 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -282,14 +282,25 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest if (questPackageItem->ItemID != uint32(packet.ItemChoiceID)) continue; - rewardProto = sObjectMgr->GetItemTemplate(questPackageItem->ItemID); - if (rewardProto) + if (_player->CanSelectQuestPackageItem(questPackageItem)) { - if (rewardProto->IsUsableBySpecialization(_player)) - { - itemValid = true; - break; - } + itemValid = true; + break; + } + } + } + + if (!itemValid) + { + if (std::vector<QuestPackageItemEntry const*> const* questPackageItems = sDB2Manager.GetQuestPackageItemsFallback(quest->GetQuestPackageID())) + { + for (QuestPackageItemEntry const* questPackageItem : *questPackageItems) + { + if (questPackageItem->ItemID != uint32(packet.ItemChoiceID)) + continue; + + itemValid = true; + break; } } } |