Core/Battlegrounds: Stop arena matches after 45 minutes of no win/loss candidate, and deduct 16 points from each team (blizzlike) - Thanks to Alez

Closes issue 2017

--HG--
branch : trunk
This commit is contained in:
click
2010-12-02 22:25:32 +01:00
parent 94fd1487d0
commit 2338eae0ff
7 changed files with 53 additions and 10 deletions
+12 -1
View File
@@ -724,7 +724,7 @@ 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)
if (winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team && !((winner == WINNER_NONE))
{
loser_team_rating = loser_arena_team->GetRating();
loser_matchmaker_rating = GetArenaMatchmakerRating(GetOtherTeam(winner));
@@ -742,6 +742,12 @@ void Battleground::EndBattleground(uint32 winner)
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);
}
else
{
SetArenaTeamRatingChangeForTeam(ALLIANCE, 0);
@@ -1856,6 +1862,11 @@ void Battleground::HandleKillUnit(Creature * /*creature*/, Player * /*killer*/)
{
}
void Battleground::CheckArenaAfterTimerConditions()
{
EndBattleground(WINNER_NONE);
}
void Battleground::CheckArenaWinConditions()
{
if (!GetAlivePlayersCountByTeam(ALLIANCE) && GetPlayersCountByTeam(HORDE))