From 087b273ad3a67b1cb31ab9c8106d7e1ea348b5fe Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 12 Aug 2010 13:38:31 +0200 Subject: Added possibility to start timed achievements with already lost time (will be used in battlegrounds) --HG-- branch : trunk --- src/server/game/Achievements/AchievementMgr.cpp | 11 +++++++---- src/server/game/Achievements/AchievementMgr.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 2c5485f547e..b4e6d87703d 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -1854,7 +1854,7 @@ void AchievementMgr::UpdateTimedAchievements(uint32 timeDiff) } } -void AchievementMgr::StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry) +void AchievementMgr::StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost /*= 0*/) { AchievementCriteriaEntryList const& achievementCriteriaList = sAchievementMgr.GetTimedAchievementCriteriaByType(type); for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i != achievementCriteriaList.end(); ++i) @@ -1866,10 +1866,13 @@ void AchievementMgr::StartTimedAchievement(AchievementCriteriaTimedTypes type, u if (m_timedAchievements.find((*i)->ID) == m_timedAchievements.end() && !IsCompletedCriteria(*i, achievement)) { // Start the timer - m_timedAchievements[(*i)->ID] = (*i)->timeLimit * IN_MILLISECONDS; + if ((*i)->timeLimit * IN_MILLISECONDS > timeLost) + { + m_timedAchievements[(*i)->ID] = (*i)->timeLimit * IN_MILLISECONDS - timeLost; - // and at client too - SetCriteriaProgress(*i, 0, PROGRESS_SET); + // and at client too + SetCriteriaProgress(*i, 0, PROGRESS_SET); + } } } } diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index ddbd07369fa..3a827796281 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -254,7 +254,7 @@ class AchievementMgr bool HasAchieved(AchievementEntry const* achievement) const; Player* GetPlayer() { return m_player; } void UpdateTimedAchievements(uint32 timeDiff); - void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry); + void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0); void RemoveTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry); // used for quest and scripted timed achievements private: -- cgit v1.2.3