Fix classic SMSG_MONSTER_MOVE parsing using wrong WotLK format

handleMonsterMove called MonsterMoveParser::parse() directly (WotLK
format with extra uint8 after PackedGuid) instead of going through
the polymorphic packetParsers_->parseMonsterMove(). Added parseVanilla
override to ClassicPacketParsers so classic/turtle use the correct
vanilla format.
This commit is contained in:
Kelsi 2026-02-20 00:52:59 -08:00
parent 630c38b1d2
commit 70e579157d
2 changed files with 5 additions and 2 deletions

View file

@ -326,6 +326,9 @@ public:
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; }
bool parseMonsterMove(network::Packet& packet, MonsterMoveData& data) override {
return MonsterMoveParser::parseVanilla(packet, data);
}
};
/**

View file

@ -7830,12 +7830,12 @@ void GameHandler::handleMonsterMove(network::Packet& packet) {
}
network::Packet decompPacket(packet.getOpcode(), parseBytes);
if (!MonsterMoveParser::parseVanilla(decompPacket, data)) {
if (!packetParsers_->parseMonsterMove(decompPacket, data)) {
LOG_WARNING("Failed to parse vanilla SMSG_MONSTER_MOVE (decompressed ",
destLen, " bytes, parseBytes ", parseBytes.size(), " bytes)");
return;
}
} else if (!MonsterMoveParser::parse(packet, data)) {
} else if (!packetParsers_->parseMonsterMove(packet, data)) {
LOG_WARNING("Failed to parse SMSG_MONSTER_MOVE");
return;
}