aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QuestHandler.cpp
diff options
context:
space:
mode:
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;
}
}
}