diff options
author | Shocker <shocker@freakz.ro> | 2011-12-13 00:17:01 +0200 |
---|---|---|
committer | Shocker <shocker@freakz.ro> | 2011-12-13 00:17:01 +0200 |
commit | bd82427d65cc1afaf45d711dbf422b93c475ae8a (patch) | |
tree | 15361a7ffadc3a56e71a9e334e6a5a9f634becee /src | |
parent | a045015bf2cf2abf8fc83ec06f91c0d70194e5bb (diff) |
Core/Achievements: m_allCompletedAchievements should store only realm firsts
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Achievements/AchievementMgr.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 004da0ca7c1..c43bfb2ca8b 100755 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2381,15 +2381,16 @@ void AchievementGlobalMgr::LoadCompletedAchievements() Field* fields = result->Fetch(); uint32 achievement_id = fields[0].GetUInt32(); - if (!sAchievementStore.LookupEntry(achievement_id)) + const AchievementEntry* achievement = sAchievementStore.LookupEntry(achievement_id); + if (!achievement) { // we will remove not existed achievement for all characters sLog->outError("Non-existing achievement %u data removed from table `character_achievement`.", achievement_id); CharacterDatabase.PExecute("DELETE FROM character_achievement WHERE achievement = %u", achievement_id); continue; } - - m_allCompletedAchievements.insert(achievement_id); + else if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL)) + m_allCompletedAchievements.insert(achievement_id); } while (result->NextRow()); sLog->outString(">> Loaded %lu completed achievements in %u ms", (unsigned long)m_allCompletedAchievements.size(), GetMSTimeDiffToNow(oldMSTime)); |