diff --git a/src/game/QuestDef.h b/src/game/QuestDef.h index d7f7d1de8e..6b9674c690 100644 --- a/src/game/QuestDef.h +++ b/src/game/QuestDef.h @@ -105,6 +105,7 @@ enum QuestStatus MAX_QUEST_STATUS }; +// TODO: Add comments enum __QuestGiverStatus { DIALOG_STATUS_NONE = 0x000, diff --git a/src/game/QuestHandler.cpp b/src/game/QuestHandler.cpp index 17b0157a20..a1ea2c6c5b 100644 --- a/src/game/QuestHandler.cpp +++ b/src/game/QuestHandler.cpp @@ -545,9 +545,9 @@ uint32 WorldSession::getDialogStatus(Player* pPlayer, Object* questgiver, uint32 QuestStatus status = pPlayer->GetQuestStatus(quest_id); if (status == QUEST_STATUS_COMPLETE && !pPlayer->GetQuestRewardStatus(quest_id)) - dialogStatusNew = pQuest->IsRepeatable() ? DIALOG_STATUS_REWARD_REP : DIALOG_STATUS_REWARD; + dialogStatusNew = pQuest->IsRepeatable() && pQuest->IsDailyOrWeekly() ? DIALOG_STATUS_REWARD_REP : DIALOG_STATUS_REWARD; else if (pQuest->IsAutoComplete() && pPlayer->CanTakeQuest(pQuest, false)) - dialogStatusNew = pQuest->IsRepeatable() ? DIALOG_STATUS_AVAILABLE_REP : DIALOG_STATUS_AVAILABLE; + dialogStatusNew = pQuest->IsRepeatable() ? pQuest->IsDailyOrWeekly() ? DIALOG_STATUS_AVAILABLE_REP : DIALOG_STATUS_REWARD_REP : DIALOG_STATUS_AVAILABLE; else if (status == QUEST_STATUS_INCOMPLETE) dialogStatusNew = DIALOG_STATUS_INCOMPLETE; @@ -575,10 +575,7 @@ uint32 WorldSession::getDialogStatus(Player* pPlayer, Object* questgiver, uint32 { int32 lowLevelDiff = sWorld.getConfig(CONFIG_INT32_QUEST_LOW_LEVEL_HIDE_DIFF); - auto questStatusItr = pPlayer->getQuestStatusMap().find(quest_id); - bool rewarded = (questStatusItr != pPlayer->getQuestStatusMap().end()) ? questStatusItr->second.m_rewarded : false; - - if (pQuest->IsAutoComplete() || (pQuest->IsRepeatable() && rewarded)) + if (pQuest->IsAutoComplete()) { dialogStatusNew = DIALOG_STATUS_REWARD_REP; }