[11349] Instead group online players use arena team full list for claculate avg. personal rating.

This commit is contained in:
VladimirMangos 2011-04-14 05:05:07 +04:00
parent 531103b9e5
commit 9c34efec41
4 changed files with 12 additions and 12 deletions

View file

@ -540,6 +540,15 @@ bool ArenaTeam::HaveMember(ObjectGuid guid) const
return false;
}
uint32 ArenaTeam::GetAvgPersonalRating() const
{
uint32 rating = 0;
for(MemberList::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
rating += itr->personal_rating;
return rating / m_Type;
}
uint32 ArenaTeam::GetPoints(uint32 MemberRating)
{
// returns how many points would be awarded with this team type with this rating

View file

@ -197,6 +197,7 @@ class ArenaTeam
void Stats(WorldSession *session);
void InspectStats(WorldSession *session, ObjectGuid guid);
uint32 GetAvgPersonalRating() const;
uint32 GetPoints(uint32 MemberRating);
float GetChanceAgainst(uint32 own_rating, uint32 enemy_rating);
int32 WonAgainst(uint32 againstRating);

View file

@ -699,17 +699,7 @@ void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )
arenaRating = at->GetRating();
// the arena team id must match for everyone in the group
// get the personal ratings for queue
uint32 avg_pers_rating = 0;
for(GroupReference *itr = grp->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player *member = itr->getSource();
// calc avg personal rating
avg_pers_rating += member->GetArenaPersonalRating(arenaslot);
}
if (arenatype)
avg_pers_rating /= arenatype;
uint32 avg_pers_rating = at->GetAvgPersonalRating();
// if avg personal rating is more than 150 points below the teams rating, the team will be queued against an opponent matching or similar to the average personal rating
if (avg_pers_rating + 150 < arenaRating)

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "11348"
#define REVISION_NR "11349"
#endif // __REVISION_NR_H__