diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Battlegrounds/Battleground.cpp | 49 | ||||
-rwxr-xr-x | src/server/game/Battlegrounds/Battleground.h | 1 |
2 files changed, 28 insertions, 22 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 4030f39225d..6dd2bd9fe5d 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -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 { diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 726a9bbf357..81540b43f6a 100755 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -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: |