21 Stats.SeasonGames = 0;
48 for (MemberList::const_iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
77 for (MemberList::const_iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
79 player->GetSession()->SendPacket(packet);
86 data <<
uint8(strCount);
98 data << str1 << str2 << str3;
101 SF_LOG_ERROR(
"bg.arena",
"Unhandled strCount %u in ArenaTeam::BroadcastEvent", strCount);
110 SF_LOG_DEBUG(
"network",
"WORLD: Sent SMSG_ARENA_TEAM_EVENT");
118 for (MemberList::const_iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
140 SF_LOG_ERROR(
"bg.arena",
"FATAL: Unknown arena team type %u for some arena team", type);
154 SF_LOG_ERROR(
"bg.arena",
"FATAL: Unknown arena team slot %u for some arena team", slot);
160 for (MemberList::const_iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
161 if (itr->Guid == guid)
172 uint32 matchMakerRating = 0;
174 for (MemberList::const_iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
184 matchMakerRating += itr->MatchMakerRating;
189 if (playerDivider == 0)
192 matchMakerRating /= playerDivider;
194 return matchMakerRating;
201 return 1.0f / (1.0f + exp(log(10.0f) * (
float)((
float)opponentRating - (
float)ownRating) / 650.0f));
209 float won_mod = (won) ? 1.0f : 0.0f;
210 float mod = won_mod - chance;
227 return (
int32)ceil(mod);
235 float won_mod = (won) ? 1.0f : 0.0f;
241 if (won && ownRating < 1300)
243 if (ownRating < 1000)
244 mod = 48.0f * (won_mod - chance);
246 mod = (24.0f + (24.0f * (1300.0f - float(ownRating)) / 300.0f)) * (won_mod - chance);
249 mod = 24.0f * (won_mod - chance);
251 return (
int32)ceil(mod);
264 for (MemberList::iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
270 Stats.WeekGames += 1;
271 Stats.SeasonGames += 1;
275 ArenaTeamMgr::ArenaTeamContainer::const_iterator i =
sArenaTeamMgr->GetArenaTeamMapBegin();
278 if (i->second->GetType() ==
Type && i->second->GetStats().Rating >
Stats.Rating)
297 Stats.SeasonWins += 1;
322 for (MemberList::iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
324 if (itr->Guid == player->
GetGUID())
328 itr->ModifyPersonalRating(player, mod,
GetType());
331 itr->ModifyMatchmakerRating(matchmakerRatingChange,
GetSlot());
335 itr->SeasonGames += 1;
348 for (MemberList::iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
350 if (itr->Guid == guid)
354 itr->ModifyPersonalRating(NULL, mod,
GetType());
357 itr->ModifyMatchmakerRating(matchmakerRatingChange,
GetSlot());
361 itr->SeasonGames += 1;
370 for (MemberList::iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
372 if (itr->Guid == player->
GetGUID())
376 itr->ModifyPersonalRating(player, mod,
GetType());
379 itr->ModifyMatchmakerRating(matchmakerRatingChange,
GetSlot());
383 itr->SeasonGames += 1;
384 itr->SeasonWins += 1;
402 for (MemberList::iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
411 for (MemberList::const_iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
413 if (player->GetMap()->IsBattleArena())
421 for (MemberList::iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
422 if (itr->Name == name)
430 for (MemberList::iterator itr =
Members.begin(); itr !=
Members.end(); ++itr)
431 if (itr->Guid == guid)
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
int32 WonAgainst(uint32 ownMMRating, uint32 opponentMMRating, int32 &rating_change)
static float GetChanceAgainst(uint32 ownRating, uint32 opponentRating)
static int32 GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won)
bool IsMember(uint64 guid) const
void OfflineMemberLost(uint64 guid, uint32 againstMatchmakerRating, int32 matchmakerRatingChange=-12)
void BroadcastEvent(ArenaTeamEvents event, uint64 guid, uint8 strCount, std::string const &str1, std::string const &str2, std::string const &str3)
static int32 GetMatchmakerRatingMod(uint32 ownRating, uint32 opponentRating, bool won)
void SendStats(WorldSession *session)
void MemberWon(Player *player, uint32 againstMatchmakerRating, int32 matchmakerRatingChange=12)
void FinishGame(int32 mod)
void NotifyStatsChanged()
void MassInviteToEvent(WorldSession *session)
void BroadcastPacket(WorldPacket *packet)
uint32 GetAverageMMR(Group *group) const
void MemberLost(Player *player, uint32 againstMatchmakerRating, int32 matchmakerRatingChange=-12)
ArenaTeamMember * GetMember(uint64 guid)
static uint8 GetTypeBySlot(uint8 slot)
int32 LostAgainst(uint32 ownMMRating, uint32 opponentMMRating, int32 &rating_change)
static uint8 GetSlotByType(uint32 type)
void appendPackGUID(uint64 guid)
bool IsMember(uint64 guid) const
static Player * FindPlayer(uint64)
Player session in the World.
Player * GetPlayer() const
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
@ SMSG_CALENDAR_ARENA_TEAM
@ CONFIG_ARENA_START_RATING
void ModifyPersonalRating(Player *player, int32 mod, uint32 type)
void ModifyMatchmakerRating(int32 mod, uint32 slot)