[10666] Implement ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_*_RATING

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
emsy 2010-11-01 04:13:28 +03:00 committed by VladimirMangos
parent 3ada9f635f
commit e78887e964
5 changed files with 33 additions and 6 deletions

View file

@ -1593,6 +1593,27 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
change = GetPlayer()->GetMoney();
progressType = PROGRESS_HIGHEST;
break;
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING:
{
if(!miscvalue1 || achievementCriteria->highest_team_rating.teamtype != miscvalue1)
continue;
change = miscvalue2;
progressType = PROGRESS_HIGHEST;
break;
}
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING:
{
if(!miscvalue1 || achievementCriteria->highest_personal_rating.teamtype != miscvalue1)
continue;
if(achievementCriteria->highest_personal_rating.teamrating != 0 && achievementCriteria->highest_personal_rating.teamrating > miscvalue2)
continue;
change = miscvalue2;
progressType = PROGRESS_HIGHEST;
break;
}
// std case: not exist in DBC, not triggered in code as result
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH:
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER:
@ -1609,8 +1630,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA:
case ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA:
case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL:
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING:
case ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING:
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS:
case ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE:
@ -1712,6 +1731,8 @@ uint32 AchievementMgr::GetCriteriaProgressMaxCounter(AchievementCriteriaEntry co
return achievementCriteria->learn_skill_line.spellCount;
case ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL:
return achievementCriteria->honorable_kill.killCount;
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING:
return achievementCriteria->highest_personal_rating.teamrating;
// handle all statistic-only criteria here
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND: