aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/AchievementMgr.cpp33
-rw-r--r--src/shared/revision_nr.h2
2 files changed, 10 insertions, 25 deletions
diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp
index 83a6302bcbd..52adc738abf 100644
--- a/src/game/AchievementMgr.cpp
+++ b/src/game/AchievementMgr.cpp
@@ -86,7 +86,6 @@ const CriteriaCastSpellRequirement AchievementGlobalMgr::m_criteriaCastSpellRequ
{6662, 31261, 0, 0}
};
-
namespace MaNGOS
{
class AchievementChatBuilder
@@ -727,6 +726,9 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
}
}
+static const uint32 achievIdByClass[MAX_CLASSES] = { 0, 459, 465 , 462, 458, 464, 461, 467, 460, 463, 0, 466 };
+static const uint32 achievIdByRace[MAX_RACES] = { 0, 1408, 1410, 1407, 1409, 1413, 1411, 1404, 1412, 0, 1405, 1406 };
+
bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achievementCriteria)
{
AchievementEntry const* achievement = sAchievementStore.LookupEntry(achievementCriteria->referredAchievement);
@@ -753,29 +755,12 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
switch(achievementCriteria->requiredType)
{
case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
- if ((achievement->ID == 467 && GetPlayer()->getClass() != CLASS_SHAMAN ) ||
- (achievement->ID == 466 && GetPlayer()->getClass() != CLASS_DRUID ) ||
- (achievement->ID == 465 && GetPlayer()->getClass() != CLASS_PALADIN ) ||
- (achievement->ID == 464 && GetPlayer()->getClass() != CLASS_PRIEST ) ||
- (achievement->ID == 463 && GetPlayer()->getClass() != CLASS_WARLOCK ) ||
- (achievement->ID == 462 && GetPlayer()->getClass() != CLASS_HUNTER ) ||
- (achievement->ID == 461 && GetPlayer()->getClass() != CLASS_DEATH_KNIGHT)||
- (achievement->ID == 460 && GetPlayer()->getClass() != CLASS_MAGE ) ||
- (achievement->ID == 459 && GetPlayer()->getClass() != CLASS_WARRIOR ) ||
- (achievement->ID == 458 && GetPlayer()->getClass() != CLASS_ROGUE ) ||
-
- (achievement->ID == 1404 && GetPlayer()->getRace() != RACE_GNOME ) ||
- (achievement->ID == 1405 && GetPlayer()->getRace() != RACE_BLOODELF ) ||
- (achievement->ID == 1406 && GetPlayer()->getRace() != RACE_DRAENEI ) ||
- (achievement->ID == 1407 && GetPlayer()->getRace() != RACE_DWARF ) ||
- (achievement->ID == 1408 && GetPlayer()->getRace() != RACE_HUMAN ) ||
- (achievement->ID == 1409 && GetPlayer()->getRace() != RACE_NIGHTELF ) ||
- (achievement->ID == 1410 && GetPlayer()->getRace() != RACE_ORC ) ||
- (achievement->ID == 1411 && GetPlayer()->getRace() != RACE_TAUREN ) ||
- (achievement->ID == 1412 && GetPlayer()->getRace() != RACE_TROLL ) ||
- (achievement->ID == 1413 && GetPlayer()->getRace() != RACE_UNDEAD_PLAYER) )
- return false;
- return progress->counter >= achievementCriteria->reach_level.level;
+ {
+ if (achievIdByClass[GetPlayer()->getClass()] == achievement->ID ||
+ achievIdByRace[GetPlayer()->getRace()] == achievement->ID)
+ return progress->counter >= achievementCriteria->reach_level.level;
+ return false;
+ }
case ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT:
return progress->counter >= achievementCriteria->buy_bank_slot.numberOfSlots;
case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE:
diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h
index 201f685b2fa..2476662f668 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 "7349"
+ #define REVISION_NR "7350"
#endif // __REVISION_NR_H__