diff options
Diffstat (limited to 'src/server/game/Achievements/AchievementMgr.cpp')
-rwxr-xr-x | src/server/game/Achievements/AchievementMgr.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 34b38ff1d35..fb24c25fed2 100755 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -818,6 +818,11 @@ void AchievementMgr<Guild>::LoadFromDB(PreparedQueryResult achievementResult, Pr template<class T> void AchievementMgr<T>::Reset() { +} + +template<> +void AchievementMgr<Player>::Reset() +{ for (CompletedAchievementMap::const_iterator iter = m_completedAchievements.begin(); iter != m_completedAchievements.end(); ++iter) { WorldPacket data(SMSG_ACHIEVEMENT_DELETED, 4); @@ -837,7 +842,7 @@ void AchievementMgr<T>::Reset() DeleteFromDB(_owner->GetGUIDLow()); // re-fill data - CheckAllAchievementCriteria(); + CheckAllAchievementCriteria(GetOwner()); } template<> @@ -874,9 +879,6 @@ void AchievementMgr<Guild>::Reset() m_completedAchievements.clear(); DeleteFromDB(_owner->GetId()); - - // re-fill data - CheckAllAchievementCriteria(); } template<class T> @@ -1040,11 +1042,11 @@ void AchievementMgr<Guild>::SendCriteriaUpdate(AchievementCriteriaEntry const* e * called at player login. The player might have fulfilled some achievements when the achievement system wasn't working yet */ template<class T> -void AchievementMgr<T>::CheckAllAchievementCriteria() +void AchievementMgr<T>::CheckAllAchievementCriteria(Player* referencePlayer) { // suppress sending packets for (uint32 i=0; i<ACHIEVEMENT_CRITERIA_TYPE_TOTAL; ++i) - UpdateAchievementCriteria(AchievementCriteriaTypes(i)); + UpdateAchievementCriteria(AchievementCriteriaTypes(i), 0, 0, NULL, referencePlayer); } static const uint32 achievIdByArenaSlot[MAX_ARENA_SLOT] = { 1057, 1107, 1108 }; |