Core/Quests: Implemented handling all QuestPackageItem types

Closes #18209
This commit is contained in:
Shauren
2016-11-08 00:04:19 +01:00
parent 0abb9873ec
commit fcbb4397ea
8 changed files with 136 additions and 34 deletions

View File

@@ -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;
}
}
}