fix: add TBC game object query parser for correct string count

TBC 2.4.3 SMSG_GAMEOBJECT_QUERY_RESPONSE has 2 extra strings after
name[4] (iconName + castBarCaption). WotLK has 3 (adds unk1). Without
this override, the WotLK parser's third readString() consumed bytes
from the data[24] fields, corrupting game object type-specific data
and breaking interactions with doors, chests, mailboxes, and
transports on TBC servers.
This commit is contained in:
Kelsi 2026-03-17 11:20:50 -07:00
parent 1b86f76d31
commit e1be8667ed
2 changed files with 68 additions and 0 deletions

View file

@ -370,6 +370,9 @@ public:
bool parseGuildRoster(network::Packet& packet, GuildRosterData& data) override;
// TBC 2.4.3 SMSG_QUESTGIVER_STATUS: uint32 status (WotLK uses uint8)
uint8_t readQuestGiverStatus(network::Packet& packet) override;
// TBC 2.4.3 SMSG_GAMEOBJECT_QUERY_RESPONSE: 2 extra strings after names
// (iconName + castBarCaption); WotLK has 3 (adds unk1)
bool parseGameObjectQueryResponse(network::Packet& packet, GameObjectQueryResponseData& data) override;
// TBC 2.4.3 CMSG_JOIN_CHANNEL: name+password only (WotLK prepends channelId+hasVoice+joinedByZone)
network::Packet buildJoinChannel(const std::string& channelName, const std::string& password) override;
// TBC 2.4.3 CMSG_LEAVE_CHANNEL: name only (WotLK prepends channelId)