From 0b28dbf14068695fcc8296e4db9a0b29139be2df Mon Sep 17 00:00:00 2001 From: Kelsi Date: Tue, 17 Feb 2026 01:08:22 -0800 Subject: [PATCH] Fix duplicate whisper display in Classic chat parser Vanilla SMSG_MESSAGECHAT writes senderGuid twice for all standard chat types. Parser only read one GUID for WHISPER/WHISPER_INFORM, shifting the read position and causing the server echo filter to fail to match the player's GUID. --- src/game/packet_parsers_classic.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/game/packet_parsers_classic.cpp b/src/game/packet_parsers_classic.cpp index acaf0629..a103844f 100644 --- a/src/game/packet_parsers_classic.cpp +++ b/src/game/packet_parsers_classic.cpp @@ -447,7 +447,16 @@ bool ClassicPacketParsers::parseMessageChat(network::Packet& packet, MessageChat case ChatType::SAY: case ChatType::PARTY: - case ChatType::YELL: { + case ChatType::YELL: + case ChatType::WHISPER: + case ChatType::WHISPER_INFORM: + case ChatType::GUILD: + case ChatType::OFFICER: + case ChatType::RAID: + case ChatType::RAID_LEADER: + case ChatType::RAID_WARNING: + case ChatType::EMOTE: + case ChatType::TEXT_EMOTE: { // senderGuid(u64) + senderGuid(u64) — written twice by server data.senderGuid = packet.readUInt64(); /*duplicateGuid*/ packet.readUInt64(); @@ -481,8 +490,9 @@ bool ClassicPacketParsers::parseMessageChat(network::Packet& packet, MessageChat } default: { - // GUILD, OFFICER, RAID, WHISPER, WHISPER_INFORM, etc: senderGuid(u64) + // All other types: senderGuid(u64) + senderGuid(u64) — written twice data.senderGuid = packet.readUInt64(); + /*duplicateGuid*/ packet.readUInt64(); break; } }