Hi there,
imho arena system that is implemented in core has two errors:
 Rating difference calculation should be based on
team rating instead of MMR rating.
 Current implementation tries to boost teams with
team rating under 1000 with double gain on wins and
with 1  2 x gain for rating between 1000 and 1300.
Instead of increasing gain it should decrease losing.
Here comes my solution, that will be considered as
a custom code I guess, that makes following effect:
teams with teamrating under 1000 don’t lose more
team rating and teams with team rating between 1000
and 1300 lose half of it.
Here’s the patch that solves it:
[CODE]arena system
— a/src/server/game/Battlegrounds/ArenaTeam.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeam.cpp
@@ 613,19 +621,16 @@
// Calculate the rating modification
// Simulation on how it works. Not much info on how it really works

float mod;

if (won && !calculateMatchMakerRating)

{

if (ownRating < 1000)

mod = 48.0f * (won_mod  chance);

else if (ownRating < 1300)

mod = (24.0f + (24.0f * (1300.0f  int32(ownRating)) / 300.0f)) * (won_mod  chance);

else

mod = 24.0f * (won_mod  chance);

float mod = 32.0f * (won_mod  chance); // correct value of K is 32 says wowwiki

// if it’s loss and it’s not calculation of MMR

if(!won && !calculateMatchMakerRating){

if(ownRating < 1000){ // team rating shouldn't decrease if it's already bellow 1000

mod = 0;

}else if(ownRating <= 1300){

mod /= 2;

}
}

else

mod = 24.0f * (won_mod  chance);
return (int32)ceil(mod);
}
@@ 675,7 +680,7 @@
{
// Called when the team has won
// Own team rating versus opponents matchmaker rating
 int32 mod = GetRatingMod(Stats.Rating, againstRating, true);

int32 mod = GetRatingMod(Stats.Rating, againstRating, true, false);
// Modify the team stats accordingly
FinishGame(mod);
@@ 692,7 +697,7 @@
{
// Called when the team has lost
// Own team rating versus opponents matchmaker rating
 int32 mod = GetRatingMod(Stats.Rating, againstRating, false);

int32 mod = GetRatingMod(Stats.Rating, againstRating, false, false);
// Modify the team stats accordingly
FinishGame(mod);
— a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ 700,8 +700,8 @@
loser_matchmaker_rating = GetArenaMatchmakerRating(GetOtherTeam(winner));
winner_team_rating = winner_arena_team>GetRating();
winner_matchmaker_rating = GetArenaMatchmakerRating(winner);

winner_change = winner_arena_team>WonAgainst(loser_matchmaker_rating);

loser_change = loser_arena_team>LostAgainst(winner_matchmaker_rating);

winner_change = winner_arena_team>WonAgainst(loser_team_rating);

loser_change = loser_arena_team>LostAgainst(winner_team_rating); sLog>outArena(" Winner rating: %u, Loser rating: %u, Winner MMR: %u, Loser MMR: %u, Winner change: %d, Loser change: %d ", winner_team_rating, loser_team_rating, winner_matchmaker_rating, loser_matchmaker_rating, winner_change, loser_change); SetArenaTeamRatingChangeForTeam(winner, winner_change);
[/CODE]
If I’m wrong, just say so /emoticons/default_wink.png
I ain’t sure if teams were starting on
1500 team rating on 3.3.5a patch already.
LihO