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.
This commit is contained in:
Kelsi 2026-02-17 01:08:22 -08:00
parent 67fdd7809a
commit 0b28dbf140

View file

@ -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;
}
}