feat(Core/BattlegroundQueue): remove queue in all group if player leave (#12731)

This commit is contained in:
Kargatum
2022-08-16 23:21:55 +07:00
committed by GitHub
parent 88eb48297b
commit c3f7c4371d
2 changed files with 23 additions and 15 deletions

View File

@@ -533,13 +533,20 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket& recvData)
}
else // leave queue
{
bgQueue.RemovePlayer(_player->GetGUID(), true);
_player->RemoveBattlegroundQueueId(bgQueueTypeId);
for (auto const& playerGuid : ginfo.Players)
{
auto player = ObjectAccessor::FindConnectedPlayer(playerGuid);
if (!player)
continue;
sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, TEAM_NEUTRAL);
SendPacket(&data);
bgQueue.RemovePlayer(playerGuid, true);
player->RemoveBattlegroundQueueId(bgQueueTypeId);
LOG_DEBUG("bg.battleground", "Battleground: player {} {} left queue for bgtype {}, queue type {}.", _player->GetName(), _player->GetGUID().ToString(), bg->GetBgTypeID(), bgQueueTypeId);
sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, TEAM_NEUTRAL);
player->SendDirectMessage(&data);
LOG_DEBUG("bg.battleground", "Battleground: player {} {} left queue for bgtype {}, queue type {}.", player->GetName(), playerGuid.ToString(), bg->GetBgTypeID(), bgQueueTypeId);
}
// player left queue, we should update it - do not update Arena Queue
if (!ginfo.ArenaType)