aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-08-06 22:08:21 +0200
committerShauren <shauren.trinity@gmail.com>2020-08-06 22:08:21 +0200
commite240e5936afdd7ec88157bc0f64deef792b04848 (patch)
tree0f6c72d953d2afc99a3438b2fe7187f51540386a
parent3c28573d02db98ae8d7a41e04b9715da0556836b (diff)
Core/PacketIO: Name previously unknown fields in lfg packets
-rw-r--r--src/server/game/Handlers/LFGHandler.cpp14
-rw-r--r--src/server/game/Server/Packets/LFGPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/LFGPackets.h3
3 files changed, 17 insertions, 9 deletions
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index 621ad554277..92229bea5b9 100644
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -317,12 +317,12 @@ void WorldSession::SendLfgUpdatePlayer(lfg::LfgUpdateData const& updateData)
GetPlayerInfo().c_str(), updateData.updateType);
WorldPacket data(SMSG_LFG_UPDATE_PLAYER, 1 + 1 + (size > 0 ? 1 : 0) * (1 + 1 + 1 + 1 + size * 4 + updateData.comment.length()));
data << uint8(updateData.updateType); // Lfg Update type
- data << uint8(size > 0); // Extra info
+ data << uint8(size > 0); // Is joined in LFG
if (size)
{
data << uint8(queued); // Join the queue
- data << uint8(0); // unk - Always 0
- data << uint8(0); // unk - Always 0
+ data << uint8(0); // NoPartialClear
+ data << uint8(0); // Achievements
data << uint8(size);
for (lfg::LfgDungeonSet::const_iterator it = updateData.dungeons.begin(); it != updateData.dungeons.end(); ++it)
@@ -358,15 +358,15 @@ void WorldSession::SendLfgUpdateParty(const lfg::LfgUpdateData& updateData)
GetPlayerInfo().c_str(), updateData.updateType);
WorldPacket data(SMSG_LFG_UPDATE_PARTY, 1 + 1 + (size > 0 ? 1 : 0) * (1 + 1 + 1 + 1 + 1 + size * 4 + updateData.comment.length()));
data << uint8(updateData.updateType); // Lfg Update type
- data << uint8(size > 0); // Extra info
+ data << uint8(size > 0); // Is joined in LFG
if (size)
{
data << uint8(join); // LFG Join
data << uint8(queued); // Join the queue
- data << uint8(0); // unk - Always 0
- data << uint8(0); // unk - Always 0
+ data << uint8(0); // NoPartialClear
+ data << uint8(0); // Achievements
for (uint8 i = 0; i < 3; ++i)
- data << uint8(0); // unk - Always 0
+ data << uint8(0); // Needs
data << uint8(size);
for (lfg::LfgDungeonSet::const_iterator it = updateData.dungeons.begin(); it != updateData.dungeons.end(); ++it)
diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp
index a1e3e5e146a..12ac90845ca 100644
--- a/src/server/game/Server/Packets/LFGPackets.cpp
+++ b/src/server/game/Server/Packets/LFGPackets.cpp
@@ -20,10 +20,15 @@
void WorldPackets::LFG::LFGJoin::Read()
{
_worldPacket >> Roles;
- _worldPacket.read_skip<uint16>();
+ _worldPacket >> NoPartialClear;
+ _worldPacket >> Achievements;
Slots.resize(_worldPacket.read<uint8>());
for (uint32& slot : Slots)
_worldPacket >> slot;
- _worldPacket.read_skip<uint32>();
+
+ _worldPacket.read_skip<uint8>(); // Needs count, hardcoded to 3 in client
+ for (uint8& needs : Needs)
+ _worldPacket >> needs;
+
_worldPacket >> Comment;
}
diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h
index f04aa3a387b..c7e0929fe94 100644
--- a/src/server/game/Server/Packets/LFGPackets.h
+++ b/src/server/game/Server/Packets/LFGPackets.h
@@ -33,6 +33,9 @@ namespace WorldPackets::LFG
uint32 Roles = 0;
Array<uint32, 50> Slots;
std::string Comment;
+ bool NoPartialClear = false;
+ bool Achievements = false;
+ std::array<uint8, 3> Needs = { };
};
class LFGLeave final : public ClientPacket