aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QuestHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-11-08 00:04:19 +0100
committerShauren <shauren.trinity@gmail.com>2016-11-08 00:04:19 +0100
commitfcbb4397ea5c803b5b46bda770606ae7a79e565f (patch)
tree07bbcd1f1f45c27503617301e7bc36c68b185f43 /src/server/game/Handlers/QuestHandler.cpp
parent0abb9873ec3798b6476400c8d283a6410d9418fe (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.cpp25
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;
}
}
}