aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAokromes <Aokromes@users.noreply.github.com>2016-08-11 13:00:31 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-02-12 13:29:10 +0100
commit011a7c56d33aa5e14231d562e634b63c26824cef (patch)
tree9cf954095df927ea54bfdda46ff8df80af0b5c73
parent26bb056542c32cd955bce4a82c7318c2086015c7 (diff)
Core/Arena: Teams don't lose rating after arena draw (#17515)
By Raydor, closes #16865 (cherry picked from commit 43c3f3a235925475075bb4e1776aac04026b6e8c)
-rw-r--r--src/server/game/Battlegrounds/Arena.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp
index a6952bfc3b9..f87e78fd55a 100644
--- a/src/server/game/Battlegrounds/Arena.cpp
+++ b/src/server/game/Battlegrounds/Arena.cpp
@@ -145,15 +145,19 @@ void Arena::EndBattleground(uint32 winner)
int32 winnerMatchmakerChange = 0;
bool guildAwarded = false;
- ArenaTeam* winnerArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(winner));
- ArenaTeam* loserArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(winner)));
+ // In case of arena draw, follow this logic:
+ // winnerArenaTeam => ALLIANCE, loserArenaTeam => HORDE
+ ArenaTeam* winnerArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(winner == 0 ? ALLIANCE : winner));
+ ArenaTeam* loserArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(winner == 0 ? HORDE : GetOtherTeam(winner)));
if (winnerArenaTeam && loserArenaTeam && winnerArenaTeam != loserArenaTeam)
{
+ // In case of arena draw, follow this logic:
+ // winnerMatchmakerRating => ALLIANCE, loserMatchmakerRating => HORDE
loserTeamRating = loserArenaTeam->GetRating();
- loserMatchmakerRating = GetArenaMatchmakerRating(GetOtherTeam(winner));
+ loserMatchmakerRating = GetArenaMatchmakerRating(winner == 0 ? HORDE : GetOtherTeam(winner));
winnerTeamRating = winnerArenaTeam->GetRating();
- winnerMatchmakerRating = GetArenaMatchmakerRating(winner);
+ winnerMatchmakerRating = GetArenaMatchmakerRating(winner == 0 ? ALLIANCE : winner);
if (winner != 0)
{
@@ -209,7 +213,12 @@ void Arena::EndBattleground(uint32 winner)
if (team == winner)
winnerArenaTeam->OfflineMemberLost(i.first, loserMatchmakerRating, winnerMatchmakerChange);
else
+ {
+ if (winner == 0)
+ winnerArenaTeam->OfflineMemberLost(i.first, loserMatchmakerRating, winnerMatchmakerChange);
+
loserArenaTeam->OfflineMemberLost(i.first, winnerMatchmakerRating, loserMatchmakerChange);
+ }
continue;
}
@@ -241,6 +250,9 @@ void Arena::EndBattleground(uint32 winner)
}
else
{
+ if (winner == 0)
+ winnerArenaTeam->MemberLost(player, loserMatchmakerRating, winnerMatchmakerChange);
+
loserArenaTeam->MemberLost(player, winnerMatchmakerRating, loserMatchmakerChange);
// Arena lost => reset the win_rated_arena having the "no_lose" condition