mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 02:25:38 +01:00
Core/Battlegrounds: Actually remove 16 rating from the teams if the match was ended because of the 45 minutes time limit.
--HG-- branch : trunk
This commit is contained in:
@@ -737,29 +737,34 @@ void Battleground::EndBattleground(uint32 winner)
|
||||
{
|
||||
winner_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(winner));
|
||||
loser_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(winner)));
|
||||
if (winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team && !(winner == WINNER_NONE))
|
||||
if (winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team)
|
||||
{
|
||||
loser_team_rating = loser_arena_team->GetRating();
|
||||
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);
|
||||
sLog.outDebug("--- Winner rating: %u, Loser rating: %u, Winner MMR: %u, Loser MMR: %u, Winner change: %u, Losser change: %u ---", winner_team_rating, loser_team_rating,
|
||||
winner_matchmaker_rating, loser_matchmaker_rating, winner_change, loser_change);
|
||||
SetArenaTeamRatingChangeForTeam(winner, winner_change);
|
||||
SetArenaTeamRatingChangeForTeam(GetOtherTeam(winner), loser_change);
|
||||
sLog.outArena("Arena match Type: %u for Team1Id: %u - Team2Id: %u ended. WinnerTeamId: %u. Winner rating: +%d, Loser rating: %d", m_ArenaType, m_ArenaTeamIds[BG_TEAM_ALLIANCE], m_ArenaTeamIds[BG_TEAM_HORDE], winner_arena_team->GetId(), winner_change, loser_change);
|
||||
if (sWorld.getBoolConfig(CONFIG_ARENA_LOG_EXTENDED_INFO))
|
||||
for (Battleground::BattlegroundScoreMap::const_iterator itr = GetPlayerScoresBegin(); itr != GetPlayerScoresEnd(); itr++)
|
||||
if (Player* player = sObjectMgr.GetPlayer(itr->first))
|
||||
sLog.outArena("Statistics for %s (GUID: " UI64FMTD ", Team: %d, IP: %s): %u damage, %u healing, %u killing blows", player->GetName(), itr->first, player->GetArenaTeamId(m_ArenaType == 5 ? 2 : m_ArenaType == 3), player->GetSession()->GetRemoteAddress().c_str(), itr->second->DamageDone, itr->second->HealingDone, itr->second->KillingBlows);
|
||||
}
|
||||
// Deduct 16 points from each teams arena-rating if there are no winners after 45+2 minutes
|
||||
else if(winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team && (winner == WINNER_NONE))
|
||||
{
|
||||
SetArenaTeamRatingChangeForTeam(ALLIANCE, -16);
|
||||
SetArenaTeamRatingChangeForTeam(HORDE, -16);
|
||||
if (winner != WINNER_NONE)
|
||||
{
|
||||
loser_team_rating = loser_arena_team->GetRating();
|
||||
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);
|
||||
sLog.outDebug("--- Winner rating: %u, Loser rating: %u, Winner MMR: %u, Loser MMR: %u, Winner change: %u, Losser change: %u ---", winner_team_rating, loser_team_rating,
|
||||
winner_matchmaker_rating, loser_matchmaker_rating, winner_change, loser_change);
|
||||
SetArenaTeamRatingChangeForTeam(winner, winner_change);
|
||||
SetArenaTeamRatingChangeForTeam(GetOtherTeam(winner), loser_change);
|
||||
sLog.outArena("Arena match Type: %u for Team1Id: %u - Team2Id: %u ended. WinnerTeamId: %u. Winner rating: +%d, Loser rating: %d", m_ArenaType, m_ArenaTeamIds[BG_TEAM_ALLIANCE], m_ArenaTeamIds[BG_TEAM_HORDE], winner_arena_team->GetId(), winner_change, loser_change);
|
||||
if (sWorld.getBoolConfig(CONFIG_ARENA_LOG_EXTENDED_INFO))
|
||||
for (Battleground::BattlegroundScoreMap::const_iterator itr = GetPlayerScoresBegin(); itr != GetPlayerScoresEnd(); itr++)
|
||||
if (Player* player = sObjectMgr.GetPlayer(itr->first))
|
||||
sLog.outArena("Statistics for %s (GUID: " UI64FMTD ", Team: %d, IP: %s): %u damage, %u healing, %u killing blows", player->GetName(), itr->first, player->GetArenaTeamId(m_ArenaType == 5 ? 2 : m_ArenaType == 3), player->GetSession()->GetRemoteAddress().c_str(), itr->second->DamageDone, itr->second->HealingDone, itr->second->KillingBlows);
|
||||
}
|
||||
// Deduct 16 points from each teams arena-rating if there are no winners after 45+2 minutes
|
||||
else
|
||||
{
|
||||
SetArenaTeamRatingChangeForTeam(ALLIANCE, ARENA_TIMELIMIT_POINTS_LOSS);
|
||||
SetArenaTeamRatingChangeForTeam(HORDE, ARENA_TIMELIMIT_POINTS_LOSS);
|
||||
winner_arena_team->FinishGame(ARENA_TIMELIMIT_POINTS_LOSS);
|
||||
loser_arena_team->FinishGame(ARENA_TIMELIMIT_POINTS_LOSS);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -310,6 +310,7 @@ enum BGHonorMode
|
||||
};
|
||||
|
||||
#define BG_AWARD_ARENA_POINTS_MIN_LEVEL 71
|
||||
#define ARENA_TIMELIMIT_POINTS_LOSS -16
|
||||
|
||||
/*
|
||||
This class is used to:
|
||||
|
||||
Reference in New Issue
Block a user