Jump to content

[patch][7350] Beautifications AchiveMgr


Guest zhenya`

Recommended Posts

more easy to understand code..

diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp
index fb66848..d6931d9 100644
--- a/src/game/AchievementMgr.cpp
+++ b/src/game/AchievementMgr.cpp
@@ -83,6 +83,11 @@ const CriteriaCastSpellRequirement AchievementGlobalMgr::m_criteriaCastSpellRequ
        {6662, 31261, 0, 0}
    };

+const uint32 AchievIdByClass[MAX_CLASSES] = 
+{ 0, 459, 465 , 462, 458, 464, 461, 467, 460, 463, 0, 466 };
+const uint32 AchievIdByRace[MAX_RACES] = 
+{ 0, 1408, 1410, 1407, 1409, 1413, 1411, 1404, 1412, 0, 1405, 1406 };
+
AchievementMgr::AchievementMgr(Player *player)
{
    m_player = player;
@@ -600,29 +605,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:

Link to comment
Share on other sites

Once all achievements are implemented, I planed to export all additional conditions, which cannot be found in dbc files, to an sql table in a uniformed format. Since currently not even all achievement criteria are implemented, it's nearly impossible to know which kind of additional conditions are required.

Link to comment
Share on other sites

  • 1 month later...
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use