From d2785283e034a6259bbbe92b30089a3ad1deb2bc Mon Sep 17 00:00:00 2001 From: arrai Date: Wed, 29 Oct 2008 12:17:37 +0100 Subject: [PATCH] Removed wrong assumed flag, use achievement points to differ between achievements and counters --- src/game/AchievementMgr.cpp | 11 ++++++++--- src/shared/Database/DBCEnums.h | 2 -- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 67c1932e..6b98d633 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -116,6 +116,11 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui for(AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i!=achievementCriteriaList.end(); ++i) { AchievementCriteriaEntry const *achievementCriteria = (*i); + + // don't update already completed criteria + if(IsCompletedCriteria(achievementCriteria)) + continue; + switch (type) { case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL: @@ -138,7 +143,7 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve if(!achievement) return false; // counter can never complete - if(achievement->flags & ACHIEVEMENT_FLAG_COUNTER) + if(achievement->points == 0) return false; switch(achievementCriteria->requiredType) @@ -158,7 +163,7 @@ void AchievementMgr::CompletedCriteria(AchievementCriteriaEntry const* criteria) if(!achievement) return; // counter can never complete - if(achievement->flags & ACHIEVEMENT_FLAG_COUNTER) + if(achievement->points ==0) return; if(criteria->completionFlag & ACHIEVEMENT_CRITERIA_COMPLETE_FLAG_ALL || IsCompletedAchievement(achievement)) @@ -196,7 +201,7 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entry, void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement) { sLog.outString("AchievementMgr::CompletedAchievement(%u)", achievement->ID); - if(achievement->flags & ACHIEVEMENT_FLAG_COUNTER || m_completedAchievements.find(achievement->ID)!=m_completedAchievements.end()) + if(achievement->points==0 || m_completedAchievements.find(achievement->ID)!=m_completedAchievements.end()) return; SendAchievementEarned(achievement->ID); diff --git a/src/shared/Database/DBCEnums.h b/src/shared/Database/DBCEnums.h index b0e77efc..03ab622a 100644 --- a/src/shared/Database/DBCEnums.h +++ b/src/shared/Database/DBCEnums.h @@ -34,8 +34,6 @@ enum AchievementFactionFlags enum AchievementFlags { - // This achievement is a counter and can never be "fulfilled" - ACHIEVEMENT_FLAG_COUNTER = 0x00000001, }; enum AchievementCriteriaCompletionFlags -- 2.11.4.GIT