aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMachiavelli <none@none>2010-09-04 17:39:23 +0200
committerMachiavelli <none@none>2010-09-04 17:39:23 +0200
commita9ca3d5ed13c80da9a8d4a76d167925f063bd503 (patch)
tree38d618982229183e0bf53871206175bd8895b73b
parentf19d7c2ec716c0c57d8b9fd565693fbdb130803f (diff)
Core/ArenaTeam: Add a check to determine if a player is account for an accurate calculation of ArenaTeam::GetAverageMMR
Fixes issue #3789 --HG-- branch : trunk
-rw-r--r--src/server/game/Battlegrounds/ArenaTeam.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp
index 1c630a1b10d..02c849c9e61 100644
--- a/src/server/game/Battlegrounds/ArenaTeam.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeam.cpp
@@ -604,14 +604,24 @@ uint32 ArenaTeam::GetAverageMMR(Group *group) const
{
if (!group) //should never happen
return 0;
+
uint32 matchmakerrating = 0;
+ uint32 player_divider = 1;
for (MemberList::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
{
- if (group->IsMember(itr->guid))
- matchmakerrating += itr->matchmaker_rating;
+ // If player not online
+ if (!ObjectAccessor::FindPlayer(itr->guid))
+ continue;
+
+ // If not in group
+ if (!group->IsMember(itr->guid))
+ continue;
+
+ matchmakerrating += itr->matchmaker_rating;
+ ++player_divider;
}
- matchmakerrating /= GetType();
+ matchmakerrating /= player_divider;
return matchmakerrating;
}