62 if (!isInBattleground)
119 BattlegroundPlayerMap::const_iterator itr =
m_Players.find(guid);
123 uint32 team = itr->second.Team;
129 if (winnerArenaTeam && loserArenaTeam && winnerArenaTeam != loserArenaTeam)
131 if (
Player* player =
_GetPlayer(itr->first, itr->second.OfflineRemoveTime != 0,
"Arena::RemovePlayerAtLeave"))
156 uint32 loserTeamRating = 0;
157 uint32 loserMatchmakerRating = 0;
158 int32 loserChange = 0;
159 int32 loserMatchmakerChange = 0;
160 uint32 winnerTeamRating = 0;
161 uint32 winnerMatchmakerRating = 0;
162 int32 winnerChange = 0;
163 int32 winnerMatchmakerChange = 0;
170 if (winnerArenaTeam && loserArenaTeam && winnerArenaTeam != loserArenaTeam)
174 loserTeamRating = loserArenaTeam->
GetRating();
176 winnerTeamRating = winnerArenaTeam->
GetRating();
181 winnerMatchmakerChange = winnerArenaTeam->
WonAgainst(winnerMatchmakerRating, loserMatchmakerRating, winnerChange);
182 loserMatchmakerChange = loserArenaTeam->
LostAgainst(loserMatchmakerRating, winnerMatchmakerRating, loserChange);
184 TC_LOG_DEBUG(
"bg.arena",
"match Type: {} --- Winner: old rating: {}, rating gain: {}, old MMR: {}, MMR gain: {} --- Loser: old rating: {}, rating loss: {}, old MMR: {}, MMR loss: {} ---",
185 GetArenaType(), winnerTeamRating, winnerChange, winnerMatchmakerRating, winnerMatchmakerChange,
186 loserTeamRating, loserChange, loserMatchmakerRating, loserMatchmakerChange);
199 TC_LOG_DEBUG(
"bg.arena",
"Arena match Type: {} for Team1Id: {} - Team2Id: {} ended. WinnerTeamId: {}. Winner rating: +{}, Loser rating: {}",
206 TC_LOG_DEBUG(
"bg.arena",
"Statistics match Type: {} for {} (GUID: {}, Team: {}, IP: {}): {}",
208 player->GetSession()->GetRemoteAddress(), score.second->ToString());
225 uint32 team = i.second.Team;
227 if (i.second.OfflineRemoveTime)
231 winnerArenaTeam->
OfflineMemberLost(i.first, loserMatchmakerRating, winnerMatchmakerChange);
235 winnerArenaTeam->
OfflineMemberLost(i.first, loserMatchmakerRating, winnerMatchmakerChange);
237 loserArenaTeam->
OfflineMemberLost(i.first, winnerMatchmakerRating, loserMatchmakerChange);
242 Player* player =
_GetPlayer(i.first, i.second.OfflineRemoveTime != 0,
"Arena::EndBattleground");
258 winnerArenaTeam->
MemberWon(player, loserMatchmakerRating, winnerMatchmakerChange);
263 winnerArenaTeam->
MemberLost(player, loserMatchmakerRating, winnerMatchmakerChange);
265 loserArenaTeam->
MemberLost(player, winnerMatchmakerRating, loserMatchmakerChange);
@ SPELL_LAST_MAN_STANDING
@ SPELL_ALLIANCE_GOLD_FLAG
@ SPELL_ALLIANCE_GREEN_FLAG
@ ARENA_TEXT_START_ONE_MINUTE
@ ARENA_TEXT_START_THIRTY_SECONDS
@ ARENA_TEXT_START_BATTLE_HAS_BEGUN
@ ARENA_TEXT_START_FIFTEEN_SECONDS
@ ARENA_WORLD_STATE_ALIVE_PLAYERS_GREEN
@ ARENA_WORLD_STATE_ALIVE_PLAYERS_GOLD
#define ARENA_TIMELIMIT_POINTS_LOSS
@ BG_STARTING_EVENT_THIRD
@ BG_STARTING_EVENT_SECOND
@ BG_STARTING_EVENT_FIRST
@ BG_STARTING_EVENT_FOURTH
@ ACHIEVEMENT_CRITERIA_CONDITION_NO_LOSE
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA
#define TC_LOG_DEBUG(filterType__,...)
void SaveToDB(bool forceMemberSave=false)
void OfflineMemberLost(ObjectGuid guid, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange=-12)
int32 LostAgainst(uint32 Own_MMRating, uint32 Opponent_MMRating, int32 &rating_change)
void MemberLost(Player *player, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange=-12)
void SetPreviousOpponents(uint32 arenaTeamId)
int32 WonAgainst(uint32 Own_MMRating, uint32 Opponent_MMRating, int32 &rating_change)
void FinishGame(int32 mod)
void NotifyStatsChanged()
std::string const & GetName() const
void MemberWon(Player *player, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange)
void RemovePlayer(Player *, ObjectGuid, uint32) override
void UpdateArenaWorldState()
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
void RemovePlayerAtLeave(ObjectGuid guid, bool transport, bool sendPacket) override
void CheckWinConditions() override
void EndBattleground(uint32 winner) override
void HandleKillPlayer(Player *player, Player *killer) override
void AddPlayer(Player *player) override
virtual void AddPlayer(Player *player)
uint32 GetAlivePlayersCountByTeam(uint32 Team) const
virtual void EndBattleground(uint32 winner)
ArenaTeamScore _arenaTeamScores[PVP_TEAMS_COUNT]
virtual void HandleKillPlayer(Player *player, Player *killer)
uint8 GetArenaType() const
BattlegroundPlayerMap m_Players
uint32 GetArenaTeamIdByIndex(uint32 index) const
uint32 GetArenaMatchmakerRating(uint32 Team) const
uint32 GetOtherTeam(uint32 teamId) const
uint32 GetArenaTeamIdForTeam(uint32 Team) const
Player * _GetPlayer(ObjectGuid guid, bool offlineRemove, char const *context) const
bool IsPlayerInBattleground(ObjectGuid guid) const
BattlegroundStartTimeIntervals StartDelayTimes[BG_STARTING_EVENT_COUNT]
void SetArenaMatchmakerRating(uint32 Team, uint32 MMR)
BattlegroundPlayerMap const & GetPlayers() const
BattlegroundScoreMap PlayerScores
BattlegroundStatus GetStatus() const
uint32 GetPlayersCountByTeam(uint32 Team) const
void UpdateWorldState(uint32 variable, uint32 value)
virtual void RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool SendPacket)
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
static ObjectGuid GetGUID(Object const *o)
uint32 GetArenaPersonalRating(uint8 slot) const
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, WorldObject *ref=nullptr)
void ResetAchievementCriteria(AchievementCriteriaCondition condition, uint32 value, bool evenIfCriteriaComplete=false)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
std::vector< WorldStateInfo > Worldstates
@ CONFIG_ARENA_LOG_EXTENDED_INFO
TC_GAME_API Player * FindConnectedPlayer(ObjectGuid const &)
void AppendToPacket(WorldPackets::Battleground::PVPLogData_Player &playerData) override
void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player &playerData) override
void Assign(int32 ratingChange, uint32 matchMakerRating, std::string const &teamName)
std::variant< PVPLogData_Honor, uint8 > HonorOrFaction