diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index afac827f6..4c3387af9 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -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: diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 580f32dd5..bbe545f84 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -784,6 +784,12 @@ void BattleGround::EndBattleGround(uint32 winner) plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, member->personal_rating); winner_arena_team->MemberWon(plr,loser_rating); + + if (member) + { + plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING, GetArenaType(), member->personal_rating); + plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING, GetArenaType(), winner_arena_team->GetStats().rating); + } } else { diff --git a/src/game/DBCEnums.h b/src/game/DBCEnums.h index 6f82d5a92..a1fbe08ec 100644 --- a/src/game/DBCEnums.h +++ b/src/game/DBCEnums.h @@ -125,7 +125,7 @@ enum AchievementCriteriaTypes // TODO: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37, ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38, - ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING = 39, + ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39, ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40, ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41, ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM= 42, diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index f4d73cfa1..c8f74892c 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -253,12 +253,12 @@ struct AchievementCriteriaEntry uint32 teamtype; // 3 {2,3,5} } highest_team_rating; - // ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING = 39 + // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING= 39 struct { uint32 teamtype; // 3 {2,3,5} uint32 teamrating; // 4 - } reach_team_rating; + } highest_personal_rating; // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40 struct diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 8bfa06ad0..af75a63f8 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 "10665" + #define REVISION_NR "10666" #endif // __REVISION_NR_H__