mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Fix quest system for Classic/Turtle: correct packet formats and log stride
- CMSG_QUESTGIVER_QUERY_QUEST: Classic override omits trailing unk1 byte (WotLK sends 13 bytes, Classic servers expect 12 — extra byte caused server to silently drop the packet, preventing quest details dialog) - SMSG_QUESTGIVER_QUEST_DETAILS: Classic override skips informUnit GUID (WotLK prepends 8-byte informUnit before questId; Vanilla does not) - Quest log UPDATE_OBJECT stride: use packetParsers_->questLogStride() (WotLK=5 fields/slot, Classic=3 fields/slot) - handleQuestDetails: route through packetParsers_->parseQuestDetails() - selectGossipQuest: route through packetParsers_->buildQueryQuestPacket()
This commit is contained in:
parent
2dffba63d8
commit
dd3149e3c1
3 changed files with 92 additions and 4 deletions
|
|
@ -148,6 +148,24 @@ public:
|
|||
return GossipMessageParser::parse(packet, data);
|
||||
}
|
||||
|
||||
// --- Quest details ---
|
||||
|
||||
/** Build CMSG_QUESTGIVER_QUERY_QUEST.
|
||||
* WotLK appends a trailing unk1 byte; Vanilla/Classic do not. */
|
||||
virtual network::Packet buildQueryQuestPacket(uint64_t npcGuid, uint32_t questId) {
|
||||
return QuestgiverQueryQuestPacket::build(npcGuid, questId); // includes unk1
|
||||
}
|
||||
|
||||
/** Parse SMSG_QUESTGIVER_QUEST_DETAILS.
|
||||
* WotLK has an extra informUnit GUID before questId; Vanilla/Classic do not. */
|
||||
virtual bool parseQuestDetails(network::Packet& packet, QuestDetailsData& data) {
|
||||
return QuestDetailsParser::parse(packet, data); // WotLK auto-detect
|
||||
}
|
||||
|
||||
/** Stride of PLAYER_QUEST_LOG fields in update-object blocks.
|
||||
* WotLK: 5 fields per slot, Classic/Vanilla: 3. */
|
||||
virtual uint8_t questLogStride() const { return 5; }
|
||||
|
||||
// --- Quest Giver Status ---
|
||||
|
||||
/** Read quest giver status from packet.
|
||||
|
|
@ -304,6 +322,9 @@ public:
|
|||
network::Packet buildItemQuery(uint32_t entry, uint64_t guid) override;
|
||||
bool parseItemQueryResponse(network::Packet& packet, ItemQueryResponseData& data) override;
|
||||
uint8_t readQuestGiverStatus(network::Packet& packet) override;
|
||||
network::Packet buildQueryQuestPacket(uint64_t npcGuid, uint32_t questId) override;
|
||||
bool parseQuestDetails(network::Packet& packet, QuestDetailsData& data) override;
|
||||
uint8_t questLogStride() const override { return 3; }
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue