aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-03-19 19:33:30 -0300
committerariel- <ariel-@users.noreply.github.com>2017-03-19 19:33:30 -0300
commit9cfa7c752e1d61b02acb852d2fd304a80d10b60a (patch)
tree87acab97392eccccdedd2e0ac79f6b95bbbdca05 /src
parentb53d0530cd9be97d549993a6b6c46e2cb7a4e779 (diff)
Core/AchievementMgr: fix integer underflow neglecting already completed realm firsts
Closes #19334
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index a0c73a1b068..4908c7f6770 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -2255,6 +2255,9 @@ bool AchievementGlobalMgr::IsRealmCompleted(AchievementEntry const* achievement)
if (itr->second == std::chrono::system_clock::time_point::min())
return false;
+ if (itr->second == std::chrono::system_clock::time_point::max())
+ return true;
+
// Allow completing the realm first kill for entire minute after first person did it
// it may allow more than one group to achieve it (highly unlikely)
// but apparently this is how blizz handles it as well
@@ -2549,7 +2552,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements()
continue;
}
else if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
- _allCompletedAchievements[achievementId] = std::chrono::system_clock::time_point::max();;
+ _allCompletedAchievements[achievementId] = std::chrono::system_clock::time_point::max();
} while (result->NextRow());
TC_LOG_INFO("server.loading", ">> Loaded %lu realm first completed achievements in %u ms.", (unsigned long)_allCompletedAchievements.size(), GetMSTimeDiffToNow(oldMSTime));