diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9711b8673..4862f4312 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16807,19 +16807,29 @@ QuestGiverStatus Player::GetQuestDialogStatus(Object* questgiver) { if (CanSeeStartQuest(quest)) { - if (SatisfyQuestLevel(quest, false)) - { - if (quest->IsAutoComplete()) - result2 = DIALOG_STATUS_REWARD_REP; - else if (getLevel() <= (GetQuestLevel(quest) + sWorld->getIntConfig(CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF))) - { - if (quest->IsDaily()) - result2 = DIALOG_STATUS_AVAILABLE_REP; + if (SatisfyQuestLevel(quest, false)) { + bool isLowLevel = (getLevel() > (GetQuestLevel(quest) + sWorld->getIntConfig(CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF))); + + if (quest->IsAutoComplete()) { + if (isLowLevel) + result2 = DIALOG_STATUS_LOW_LEVEL_REWARD_REP; else - result2 = DIALOG_STATUS_AVAILABLE; + result2 = DIALOG_STATUS_REWARD_REP; + } + else { + if (quest->IsDaily()) { + if (isLowLevel) + result2 = DIALOG_STATUS_LOW_LEVEL_AVAILABLE_REP; + else + result2 = DIALOG_STATUS_AVAILABLE_REP; + } + else { + if (isLowLevel) + result2 = DIALOG_STATUS_LOW_LEVEL_AVAILABLE; + else + result2 = DIALOG_STATUS_AVAILABLE; + } } - else - result2 = DIALOG_STATUS_LOW_LEVEL_AVAILABLE; } else result2 = DIALOG_STATUS_UNAVAILABLE;