From f43277dc28a53dab11f8990dc00f295f77f5b6fb Mon Sep 17 00:00:00 2001 From: Kelsi Date: Mon, 9 Mar 2026 17:22:07 -0700 Subject: [PATCH] Fix SMSG_ENVIRONMENTAL_DAMAGE_LOG to use uint64 GUID (not packed) WotLK 3.3.5a sends a raw uint64 victim GUID in this packet, not a packed GUID. Update the handler format to match (uint64 + uint8 type + uint32 damage + uint32 absorb). Remove the now-dead SMSG_ENVIRONMENTALDAMAGELOG handler since the opcode alias always routes to SMSG_ENVIRONMENTAL_DAMAGE_LOG. --- src/game/game_handler.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 2e1668a6..d1570911 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -3086,13 +3086,12 @@ void GameHandler::handlePacket(network::Packet& packet) { break; } case Opcode::SMSG_ENVIRONMENTAL_DAMAGE_LOG: { - // packed_guid victim + uint32 envDmgType + uint32 damage + uint32 absorbed + uint32 resisted + // uint64 victimGuid + uint8 envDmgType + uint32 damage + uint32 absorbed + uint32 resisted // envDmgType: 1=Exhausted(fatigue), 2=Drowning, 3=Fall, 4=Lava, 5=Slime, 6=Fire - if (packet.getSize() - packet.getReadPos() < 2) { packet.setReadPos(packet.getSize()); break; } - uint64_t victimGuid = UpdateObjectParser::readPackedGuid(packet); - if (packet.getSize() - packet.getReadPos() < 12) { packet.setReadPos(packet.getSize()); break; } - /*uint32_t envType =*/ packet.readUInt32(); - uint32_t dmg = packet.readUInt32(); + if (packet.getSize() - packet.getReadPos() < 21) { packet.setReadPos(packet.getSize()); break; } + uint64_t victimGuid = packet.readUInt64(); + /*uint8_t envType =*/ packet.readUInt8(); + uint32_t dmg = packet.readUInt32(); /*uint32_t abs =*/ packet.readUInt32(); if (victimGuid == playerGuid && dmg > 0) addCombatText(CombatTextEntry::ENVIRONMENTAL, static_cast(dmg), 0, false);