From 91a4f3294ee9cb9fec834f84b6d062fa45034787 Mon Sep 17 00:00:00 2001 From: ratkosrb Date: Mon, 13 May 2024 13:16:18 +0300 Subject: [PATCH] Fix infinite BG queue after relog. --- src/game/Battlegrounds/BattleGroundMgr.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/game/Battlegrounds/BattleGroundMgr.cpp b/src/game/Battlegrounds/BattleGroundMgr.cpp index 173aaf5e6c2..f354b533bfe 100644 --- a/src/game/Battlegrounds/BattleGroundMgr.cpp +++ b/src/game/Battlegrounds/BattleGroundMgr.cpp @@ -1663,6 +1663,7 @@ void BattleGroundMgr::LoadBattleEventIndexes() void BattleGroundMgr::PlayerLoggedIn(Player* player) { for (int i = 1; i <= PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) + { if (m_battleGroundQueues[i].PlayerLoggedIn(player)) { GroupQueueInfo groupInfo; @@ -1677,8 +1678,16 @@ void BattleGroundMgr::PlayerLoggedIn(Player* player) player->GetSession()->SendPacket(&data); if (groupInfo.isInvitedToBgInstanceGuid) + { player->SetInviteForBattleGroundQueueType(BattleGroundQueueTypeId(i), groupInfo.isInvitedToBgInstanceGuid); + + // create automatic remove events + BGQueueRemoveEvent* removeEvent = new BGQueueRemoveEvent(player->GetObjectGuid(), groupInfo.isInvitedToBgInstanceGuid, bg->GetTypeID(), BattleGroundQueueTypeId(i), groupInfo.removeInviteTime); + uint32 offset = (WorldTimer::getMSTime() > groupInfo.removeInviteTime) ? 1 : WorldTimer::getMSTimeDiff(WorldTimer::getMSTime(), groupInfo.removeInviteTime); + player->m_Events.AddEvent(removeEvent, player->m_Events.CalculateTime(offset)); + } } + } } void BattleGroundMgr::PlayerLoggedOut(Player* player)