diff options
Diffstat (limited to 'src/server/game/Achievements/AchievementMgr.cpp')
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index b7b065a8b31..00bffb8f21c 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -1639,6 +1639,9 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achievementCriteria, AchievementEntry const* achievement) { + if (!achievement) + return false; + // counter can never complete if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER) return false; @@ -1951,8 +1954,11 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entry, SendCriteriaUpdate(entry, progress, timeElapsed, timedCompleted); } -void AchievementMgr::RemoveCriteriaProgress(const AchievementCriteriaEntry* entry) +void AchievementMgr::RemoveCriteriaProgress(AchievementCriteriaEntry const* entry) { + if (!entry) + return; + CriteriaProgressMap::iterator criteriaProgress = m_criteriaProgress.find(entry->ID); if (criteriaProgress == m_criteriaProgress.end()) return; @@ -2127,12 +2133,11 @@ void AchievementMgr::SendRespondInspectAchievements(Player* player) const */ void AchievementMgr::BuildAllDataPacket(WorldPacket* data) const { - AchievementEntry const* achievement = NULL; for (CompletedAchievementMap::const_iterator iter = m_completedAchievements.begin(); iter != m_completedAchievements.end(); ++iter) { // Skip hidden achievements - achievement = sAchievementMgr->GetAchievement(iter->first); - if (achievement->flags & ACHIEVEMENT_FLAG_HIDDEN) + AchievementEntry const* achievement = sAchievementMgr->GetAchievement(iter->first); + if (!achievement || achievement->flags & ACHIEVEMENT_FLAG_HIDDEN) continue; *data << uint32(iter->first); |