Fix crash when selecting quest reward

This commit is contained in:
郑佩茹 2023-03-16 11:07:27 -06:00
parent 375d09abd2
commit d8ac42439a

View File

@ -143,10 +143,18 @@ void TalkToQuestGiverAction::RewardMultipleItem(Quest const* quest, WorldObject*
{ {
//Pick the first item of the best rewards. //Pick the first item of the best rewards.
bestIds = BestRewards(quest); bestIds = BestRewards(quest);
ItemTemplate const* item = sObjectMgr->GetItemTemplate(quest->RewardChoiceItemId[*bestIds.begin()]); if (!bestIds.empty())
bot->RewardQuest(quest, *bestIds.begin(), questGiver, true); {
ItemTemplate const* item = sObjectMgr->GetItemTemplate(quest->RewardChoiceItemId[*bestIds.begin()]);
bot->RewardQuest(quest, *bestIds.begin(), questGiver, true);
out << "Rewarded " << ChatHelper::FormatItem(item);
}
else
{
out << "Unable to find suitable reward. Asking for help....";
AskToSelectReward(quest, out, true);
}
out << "Rewarded " << chat->FormatItem(item);
} }
else if (sPlayerbotAIConfig->autoPickReward == "no") else if (sPlayerbotAIConfig->autoPickReward == "no")
{ {
@ -157,7 +165,7 @@ void TalkToQuestGiverAction::RewardMultipleItem(Quest const* quest, WorldObject*
{ {
//Try to pick the usable item. If multiple list usable rewards. //Try to pick the usable item. If multiple list usable rewards.
bestIds = BestRewards(quest); bestIds = BestRewards(quest);
if (bestIds.size() > 0) if (!bestIds.empty())
{ {
AskToSelectReward(quest, out, true); AskToSelectReward(quest, out, true);
} }
@ -167,7 +175,7 @@ void TalkToQuestGiverAction::RewardMultipleItem(Quest const* quest, WorldObject*
ItemTemplate const* item = sObjectMgr->GetItemTemplate(quest->RewardChoiceItemId[*bestIds.begin()]); ItemTemplate const* item = sObjectMgr->GetItemTemplate(quest->RewardChoiceItemId[*bestIds.begin()]);
bot->RewardQuest(quest, *bestIds.begin(), questGiver, true); bot->RewardQuest(quest, *bestIds.begin(), questGiver, true);
out << "Rewarded " << chat->FormatItem(item); out << "Rewarded " << ChatHelper::FormatItem(item);
} }
} }
} }