From 70e579157dc96a7e1c34c3ae4d518e2686a47e21 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 20 Feb 2026 00:52:59 -0800 Subject: [PATCH] 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. --- include/game/packet_parsers.hpp | 3 +++ src/game/game_handler.cpp | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/game/packet_parsers.hpp b/include/game/packet_parsers.hpp index c13584a6..99d0623c 100644 --- a/include/game/packet_parsers.hpp +++ b/include/game/packet_parsers.hpp @@ -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); + } }; /** diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 8f4a6df3..aef0a4c7 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -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; }