From 2d6b8bf0684c8d71137fa29e60eeaa46b7f756ff Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Wed, 4 Mar 2009 04:12:30 +0300 Subject: [PATCH] [7378] Fixed check for ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL for non-class/race specific case. --- src/game/AchievementMgr.cpp | 16 ++++++++++++---- src/shared/revision_nr.h | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 52adc738a..3886e8bb5 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -756,10 +756,18 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve { case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL: { - if (achievIdByClass[GetPlayer()->getClass()] == achievement->ID || - achievIdByRace[GetPlayer()->getRace()] == achievement->ID) - return progress->counter >= achievementCriteria->reach_level.level; - return false; + // skip wrong class achievements + for(int i = 1; i < MAX_CLASSES; ++i) + if(achievIdByClass[i] == achievement->ID && i != GetPlayer()->getClass()) + return false; + + // skip wrong race achievements + for(int i = 1; i < MAX_RACES; ++i) + if(achievIdByRace[i] == achievement->ID && i != GetPlayer()->getRace()) + return false; + + // appropriate class/race or not class/race specific + return progress->counter >= achievementCriteria->reach_level.level; } case ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT: return progress->counter >= achievementCriteria->buy_bank_slot.numberOfSlots; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 5f4c8033a..a6157f0d5 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7377" + #define REVISION_NR "7378" #endif // __REVISION_NR_H__