Core/Achievements: Achievement criteria type 39 should check player's personal rating, not team rating

Closes #803
This commit is contained in:
Shauren
2011-05-25 23:39:17 +02:00
parent 79aa5233d7
commit 3d8e4300b7
4 changed files with 57 additions and 21 deletions
+6 -5
View File
@@ -466,8 +466,12 @@ void ArenaTeamMember::ModifyPersonalRating(Player* plr, int32 mod, uint32 slot)
PersonalRating = 0;
else
PersonalRating += mod;
if (plr)
{
plr->SetArenaTeamInfoField(slot, ARENA_TEAM_PERSONAL_RATING, PersonalRating);
plr->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING, PersonalRating, slot);
}
}
void ArenaTeamMember::ModifyMatchmakerRating(int32 mod, uint32 /*slot*/)
@@ -651,10 +655,7 @@ void ArenaTeam::FinishGame(int32 mod)
// Check if rating related achivements are met
for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
if (Player* member = ObjectAccessor::FindPlayer(itr->Guid))
{
member->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING, Stats.Rating, Type);
member->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING, Stats.Rating, Type);
}
}
// Update number of games played per season or week
@@ -744,8 +745,8 @@ void ArenaTeam::OfflineMemberLost(uint64 guid, uint32 againstMatchMakerRating, i
itr->ModifyMatchmakerRating(mod, GetSlot());
// update personal played stats
itr->WeekGames +=1;
itr->SeasonGames +=1;
itr->WeekGames += 1;
itr->SeasonGames += 1;
return;
}
}