fix: add TBC overrides for quest giver status and channel packets

TBC 2.4.3 sends quest giver status as uint32 (like Classic), not uint8
(WotLK). Without this override, reading uint8 consumed only 1 of 4
bytes, misaligning all subsequent packet data and breaking quest
markers on NPCs.

TBC channel join/leave packets use Classic format (name+password only).
The WotLK base prepends channelId/hasVoice/joinedByZone, causing
servers to reject the malformed packets and breaking channel features.
This commit is contained in:
Kelsi 2026-03-17 11:16:02 -07:00
parent dc8619464a
commit 1b86f76d31
2 changed files with 49 additions and 0 deletions

View file

@ -368,6 +368,12 @@ public:
// TBC 2.4.3 SMSG_GUILD_ROSTER: same rank structure as WotLK (variable rankCount +
// goldLimit + bank tabs), but NO gender byte per member (WotLK added it)
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 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)
network::Packet buildLeaveChannel(const std::string& channelName) override;
};
/**