Core/Quests: Show quest details windows if there's only one quest in gossip menu, even if questgiver doesn't have gossip npc flag (#26094)

This commit is contained in:
Matan Shukry
2021-04-11 23:22:05 +03:00
committed by GitHub
parent cf3ea20825
commit 8b93fc5721

View File

@@ -15140,32 +15140,23 @@ void Player::SendPreparedQuest(WorldObject* source)
if (Quest const* quest = sObjectMgr->GetQuestTemplate(questId))
{
if (qmi0.QuestIcon == 4)
{
PlayerTalkClass->SendQuestGiverRequestItems(quest, source->GetGUID(), CanRewardQuest(quest, false), true);
return;
}
// Send completable on repeatable and autoCompletable quest if player don't have quest
/// @todo verify if check for !quest->IsDaily() is really correct (possibly not)
else if (!source->hasQuest(questId) && !source->hasInvolvedQuest(questId))
PlayerTalkClass->SendCloseGossip();
else
{
if (!source->hasQuest(questId) && !source->hasInvolvedQuest(questId))
{
PlayerTalkClass->SendCloseGossip();
return;
}
if (quest->IsAutoAccept() && CanAddQuest(quest, true) && CanTakeQuest(quest, true))
AddQuestAndCheckCompletion(quest, source);
if (source->GetTypeId() != TYPEID_UNIT || source->ToUnit()->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
{
if (quest->IsAutoAccept() && CanAddQuest(quest, true) && CanTakeQuest(quest, true))
AddQuestAndCheckCompletion(quest, source);
if (quest->IsAutoComplete() && quest->IsRepeatable() && !quest->IsDailyOrWeekly())
PlayerTalkClass->SendQuestGiverRequestItems(quest, source->GetGUID(), CanCompleteRepeatableQuest(quest), true);
else
PlayerTalkClass->SendQuestGiverQuestDetails(quest, source->GetGUID(), true, false);
return;
}
if (quest->IsAutoComplete() && quest->IsRepeatable() && !quest->IsDailyOrWeekly())
PlayerTalkClass->SendQuestGiverRequestItems(quest, source->GetGUID(), CanCompleteRepeatableQuest(quest), true);
else
PlayerTalkClass->SendQuestGiverQuestDetails(quest, source->GetGUID(), true, false);
}
return;
}
}