diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index aa6651e18..e0c87caaf 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -764,20 +764,18 @@ void Battleground::EndBattleground(TeamId winnerTeamId) int32 winmsg_id = 0; + SetWinner(winnerTeamId); + if (winnerTeamId == TEAM_ALLIANCE) { - SetWinner(TEAM_HORDE); // reversed in packet winmsg_id = isBattleground() ? LANG_BG_A_WINS : LANG_ARENA_GOLD_WINS; PlaySoundToAll(SOUND_ALLIANCE_WINS); // alliance wins sound } else if (winnerTeamId == TEAM_HORDE) { - SetWinner(TEAM_ALLIANCE); // reversed in packet winmsg_id = isBattleground() ? LANG_BG_H_WINS : LANG_ARENA_GREEN_WINS; PlaySoundToAll(SOUND_HORDE_WINS); // horde wins sound } - else - SetWinner(TEAM_NEUTRAL); CharacterDatabasePreparedStatement* stmt = nullptr; uint64 battlegroundId = 1; @@ -990,8 +988,6 @@ void Battleground::EndBattleground(TeamId winnerTeamId) uint32 loser_kills = player->GetRandomWinner() ? sWorld->getIntConfig(CONFIG_BG_REWARD_LOSER_HONOR_LAST) : sWorld->getIntConfig(CONFIG_BG_REWARD_LOSER_HONOR_FIRST); uint32 winner_arena = player->GetRandomWinner() ? sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_ARENA_LAST) : sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_ARENA_FIRST); - sScriptMgr->OnBattlegroundEndReward(this, player, winnerTeamId); - // Reward winner team if (bgTeamId == winnerTeamId) { @@ -1015,6 +1011,8 @@ void Battleground::EndBattleground(TeamId winnerTeamId) UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(loser_kills)); } + sScriptMgr->OnBattlegroundEndReward(this, player, winnerTeamId); + player->ResetAllPowers(); player->CombatStopWithPets(true); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 336649409..89f7584ef 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -242,11 +242,11 @@ void BattlegroundMgr::BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg) } if (bg->GetStatus() != STATUS_WAIT_LEAVE) - *data << uint8(0); // bg not ended + *data << uint8(0); // bg not ended else { - *data << uint8(1); // bg ended - *data << uint8(bg->GetWinner()); // who win + *data << uint8(1); // bg ended + *data << uint8(bg->GetWinner() == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE); // who win } size_t wpos = data->wpos();