aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <none@none>2010-08-12 13:38:31 +0200
committerShauren <none@none>2010-08-12 13:38:31 +0200
commit087b273ad3a67b1cb31ab9c8106d7e1ea348b5fe (patch)
treec62d6f72421ad50d6a1f4afad42e624ab50dde31 /src
parentce5cf139f7d77af2e55a105713d5505020e4aac3 (diff)
Added possibility to start timed achievements with already lost time (will be used in battlegrounds)
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp11
-rw-r--r--src/server/game/Achievements/AchievementMgr.h2
2 files changed, 8 insertions, 5 deletions
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: