diff options
| author | Shauren <none@none> | 2010-09-03 20:11:14 +0200 |
|---|---|---|
| committer | Shauren <none@none> | 2010-09-03 20:11:14 +0200 |
| commit | d5115ca68729782679a1e185ca79402092991dc8 (patch) | |
| tree | 1b16ba735b64738d6739f81a3d989ab56cbdcaa6 /src/server/game/Achievements/AchievementMgr.cpp | |
| parent | d7f9cea3055b3eb297ddb1ac15a92631074ac784 (diff) | |
Core/Dungeon Finder: Added support for rewards for random dungeons
Core/Quests: Simplified rewarding money from quests, now ModifyMoney and UpdateAchievementCriteria are called only once per quest
Core/Achievements: Implemented ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Achievements/AchievementMgr.cpp')
| -rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index d91ae2eec0c..ad1aef0b42a 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -39,6 +39,7 @@ #include "BattlegroundAB.h" #include "Map.h" #include "InstanceScript.h" +#include "LFGMgr.h" namespace Trinity { @@ -744,6 +745,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED: case ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN: case ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS: + case ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: // AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case if (!miscvalue1) continue; @@ -1476,9 +1478,9 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE: case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE: case ACHIEVEMENT_CRITERIA_TYPE_TOTAL: - case ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: break; // Not implemented yet :( } + if (IsCompletedCriteria(achievementCriteria,achievement)) CompletedCriteriaFor(achievement); @@ -1496,6 +1498,9 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui if (IsCompletedAchievement(*itr)) CompletedAchievement(*itr); } + + if (const uint32 dungeonId = sLFGMgr.GetDungeonIdForAchievement(achievement->ID)) + sLFGMgr.RewardDungeonDoneFor(dungeonId, GetPlayer()); } } @@ -1625,6 +1630,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve return progress->counter >= achievementCriteria->honorable_kill.killCount; case ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS: return progress->counter >= 9000; + case ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: + return progress->counter >= achievementCriteria->use_lfg.dungeonsComplete; // handle all statistic-only criteria here case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND: case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP: |
