aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp6
-rw-r--r--src/server/game/Battlegrounds/Battleground.h9
-rw-r--r--src/server/game/Battlegrounds/BattlegroundMgr.cpp2
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h2
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;