What repair this patch: In client version 3.1.3 arena teams must start at 0 rating and new members that join to arena team must start whit a personal rating=team rating or a max of 1000. This repairs also some formulas for rating<1300
Autor of this patch: me
diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp
index 6b88ba6..3c2d50b 100644
--- a/src/game/ArenaTeam.cpp
+++ b/src/game/ArenaTeam.cpp
@@ -34,7 +34,7 @@ ArenaTeam::ArenaTeam()
stats.games_week = 0;
stats.games_season = 0;
stats.rank = 0;
- stats.rating = 1500;
+ stats.rating = 0;
stats.wins_week = 0;
stats.wins_season = 0;
}
@@ -129,8 +129,11 @@ bool ArenaTeam::AddMember(const uint64& PlayerGuid)
newmember.games_week = 0;
newmember.wins_season = 0;
newmember.wins_week = 0;
- newmember.personal_rating = 1500;
+ if ( ArenaTeam::stats.rating < 1000 )
+ {
+ newmember.personal_rating = ArenaTeam::stats.rating;
+ }
+ else newmember.personal_rating = 1000;
members.push_back(newmember);
CharacterDatabase.PExecute("INSERT INTO arena_team_member (arenateamid, guid, personal_rating) VALUES
('%u', '%u', '%u')", Id, GUID_LOPART(newmember.guid), newmember.personal_rating );
@@ -499,6 +502,8 @@ float ArenaTeam::GetChanceAgainst(uint32 own_rating, uint32 enemy_rating)
{
// returns the chance to win against a team with the given rating, used in the rating adjustment calculation
// ELO system
+ if (enemy_rating<1300)
+ enemy_rating=1300.0f;
return 1.0f/(1.0f+exp(log(10.0f)*(float)((float)enemy_rating - (float)own_rating)/400.0f));
}