diff options
5 files changed, 20 insertions, 4 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 14c0a8b0d9e..3296726efa8 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1868,7 +1868,11 @@ char const* Battleground::GetName() const uint64 Battleground::GetQueueId() const { - return uint64(_battlegroundTemplate->Id) | UI64LIT(0x1F10000000000000); + BattlegroundQueueIdType type = BattlegroundQueueIdType::Battleground; + if (isArena()) + type = isRated() ? BattlegroundQueueIdType::Arena : BattlegroundQueueIdType::ArenaSkirmish; + + return uint64(_battlegroundTemplate->Id) | uint64(type) << 16 | UI64LIT(0x1F10000000000000); } BattlegroundTypeId Battleground::GetTypeID(bool getRandom) const diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 23a01a37f44..e0c5083e429 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -230,6 +230,15 @@ enum BattlegroundPlayerPositionConstants PLAYER_POSITION_ARENA_SLOT_5 = 6 }; +enum class BattlegroundQueueIdType : uint8 +{ + Battleground = 0, + Arena = 1, + Wargame = 2, + Cheat = 3, + ArenaSkirmish = 4 +}; + /* This class is used to: 1. Add player to battleground diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index bc401647ae1..2556ac012c3 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -190,7 +190,7 @@ void BattlegroundMgr::BuildBattlegroundStatusHeader(WorldPackets::Battleground:: header->Ticket.Id = ticketId; header->Ticket.Type = WorldPackets::LFG::RideType::Battlegrounds; header->Ticket.Time = joinTime; - header->QueueID = bg->GetQueueId(); + header->QueueID.push_back(bg->GetQueueId()); header->RangeMin = bg->GetMinLevel(); header->RangeMax = bg->GetMaxLevel(); header->TeamSize = bg->isArena() ? arenaType : 0; diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index a6a7657e11e..1b974829633 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -149,11 +149,14 @@ void WorldPackets::Battleground::BattlemasterJoinArena::Read() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::BattlefieldStatusHeader const& header) { data << header.Ticket; - data << uint64(header.QueueID); + data << uint32(header.QueueID.size()); data << uint8(header.RangeMin); data << uint8(header.RangeMax); data << uint8(header.TeamSize); data << uint32(header.InstanceID); + for (uint64 queueID : header.QueueID) + data << uint64(queueID); + data.WriteBit(header.RegisteredMatch); data.WriteBit(header.TournamentRules); data.FlushBits(); diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index 9e9617b5030..6914dfef818 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -150,7 +150,7 @@ namespace WorldPackets struct BattlefieldStatusHeader { WorldPackets::LFG::RideTicket Ticket; - uint64 QueueID = 0; + std::vector<uint64> QueueID; uint8 RangeMin = 0; uint8 RangeMax = 0; uint8 TeamSize = 0; |