From c978b80be2061157a14b088381dcb91a5d92b7af Mon Sep 17 00:00:00 2001 From: SeT Date: Sun, 23 Nov 2008 12:33:00 +0300 Subject: [PATCH] [6844] Daily quest fixes. Signed-off-by: VladimirMangos --- src/game/Player.cpp | 16 +++++++++++++--- src/shared/revision_nr.h | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index be86e1d4b..889b6177b 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -11577,7 +11577,7 @@ void Player::SendPreparedQuest( uint64 guid ) else if( status == DIALOG_STATUS_INCOMPLETE ) PlayerTalkClass->SendQuestGiverRequestItems( pQuest, guid, false, true ); // Send completable on repeatable quest if player don't have quest - else if( pQuest->IsRepeatable() ) + else if( pQuest->IsRepeatable() && !pQuest->IsDaily() ) PlayerTalkClass->SendQuestGiverRequestItems( pQuest, guid, CanCompleteRepeatableQuest(pQuest), true ); else PlayerTalkClass->SendQuestGiverQuestDetails( pQuest, guid, true ); @@ -11819,7 +11819,7 @@ bool Player::CanRewardQuest( Quest const *pQuest, bool msg ) if(!pQuest->IsAutoComplete() && GetQuestStatus(pQuest->GetQuestId()) != QUEST_STATUS_COMPLETE) return false; - // daily quest can't be rewarded (10 daily quest already completed) + // daily quest can't be rewarded (25 daily quest already completed) if(!SatisfyQuestDay(pQuest,true)) return false; @@ -12420,6 +12420,15 @@ bool Player::SatisfyQuestExclusiveGroup( Quest const* qInfo, bool msg ) if(exclude_Id == qInfo->GetQuestId()) continue; + // not allow have daily quest if daily quest from exclusive group already recently completed + Quest const* Nquest = objmgr.GetQuestTemplate(exclude_Id); + if( !SatisfyQuestDay(Nquest, false) ) + { + if( msg ) + SendCanTakeQuestResponse( INVALIDREASON_DONT_HAVE_REQ ); + return false; + } + QuestStatusMap::iterator i_exstatus = mQuestStatus.find( exclude_Id ); // alternative quest already started or completed @@ -14266,7 +14275,8 @@ void Player::_LoadQuestStatus(QueryResult *result) // add to quest log if( slot < MAX_QUEST_LOG_SIZE && ( questStatusData.m_status==QUEST_STATUS_INCOMPLETE || - questStatusData.m_status==QUEST_STATUS_COMPLETE && !questStatusData.m_rewarded ) ) + questStatusData.m_status==QUEST_STATUS_COMPLETE && + (!questStatusData.m_rewarded || pQuest->IsDaily()) ) ) { SetQuestSlot(slot,quest_id,quest_time); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 84d1809ee..c11091573 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "6843" + #define REVISION_NR "6844" #endif // __REVISION_NR_H__