diff options
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a0e1de6959d..ca41e0ca7cc 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14238,15 +14238,14 @@ bool Player::CanCompleteQuest(uint32 quest_id) { if (quest_id) { - RewardedQuestSet::iterator rewItr = m_RewardedQuests.find(quest_id); - if (rewItr != m_RewardedQuests.end()) - return false; // not allow re-complete quest - Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest_id); - if (!qInfo) return false; + RewardedQuestSet::iterator rewItr = m_RewardedQuests.find(quest_id); + if (!qInfo->IsRepeatable() && rewItr != m_RewardedQuests.end()) + return false; // not allow re-complete quest + // auto complete quest if ((qInfo->IsAutoComplete() || qInfo->GetFlags() & QUEST_FLAGS_AUTOCOMPLETE) && CanTakeQuest(qInfo, false)) return true; @@ -15182,8 +15181,9 @@ QuestStatus Player::GetQuestStatus(uint32 quest_id) const if (itr != m_QuestStatus.end()) return itr->second.m_status; - if (m_RewardedQuests.find(quest_id) != m_RewardedQuests.end()) - return QUEST_STATUS_COMPLETE; + if (Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest_id)) + if (!qInfo->IsRepeatable() && m_RewardedQuests.find(quest_id) != m_RewardedQuests.end()) + return QUEST_STATUS_COMPLETE; } return QUEST_STATUS_NONE; } |