Created
February 18, 2012 11:30
-
-
Save Jildor/1858908 to your computer and use it in GitHub Desktop.
Arena rating system old
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- a/src/server/game/Battlegrounds/ArenaTeam.cpp | |
+++ b/src/server/game/Battlegrounds/ArenaTeam.cpp | |
@@ -575,29 +599,25 @@ | |
uint32 ArenaTeam::GetAverageMMR(Group* group) const | |
{ | |
if (!group) | |
return 0; | |
uint32 matchMakerRating = 0; | |
uint32 playerDivider = 0; | |
for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr) | |
{ | |
// Skip if player is not online | |
if (!ObjectAccessor::FindPlayer(itr->Guid)) | |
continue; | |
// Skip if player is not member of group | |
if (!group->IsMember(itr->Guid)) | |
continue; | |
- matchMakerRating += itr->MatchMakerRating; | |
- ++playerDivider; | |
} | |
// x/0 = crash | |
if (playerDivider == 0) | |
playerDivider = 1; | |
- matchMakerRating /= playerDivider; | |
- | |
- return matchMakerRating; | |
+ return Stats.Rating; | |
} | |
@@ -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); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment