diff options
author | Matan Shukry <matanshukry@gmail.com> | 2021-04-11 23:22:05 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-11 22:22:05 +0200 |
commit | 8b93fc57211eaf47a12772d2b620453dfd21070a (patch) | |
tree | 3365e06264e0fbf3ff026f1438ab30b85db9f188 /src | |
parent | cf3ea2082578077cfec589c2a5fab12ab91c1777 (diff) |
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)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9083218ed0d..669e26057e5 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -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 (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->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; } } |