From 0982f557d262017b88ccb4abf4001aa3b154b346 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 13 Mar 2026 11:52:31 -0700 Subject: [PATCH] fix: pass actual GUIDs for environmental damage and energize combat log entries SMSG_ENVIRONMENTALDAMAGELOG and SMSG_ENVIRONMENTAL_DAMAGE_LOG now pass dstGuid=victimGuid with srcGuid=0 (no caster for env damage), ensuring the combat log shows an empty source name rather than the player's current target. SMSG_SPELLENERGIZERLOG now passes casterGuid/victimGuid so the log correctly attributes mana/energy restoration to the actual caster rather than the player's current target. --- src/game/game_handler.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 7bf9af67..94d047a3 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -2711,12 +2711,13 @@ void GameHandler::handlePacket(network::Packet& packet) { uint32_t absorb = packet.readUInt32(); uint32_t resist = packet.readUInt32(); if (victimGuid == playerGuid) { + // Environmental damage: no caster GUID, victim = player if (damage > 0) - addCombatText(CombatTextEntry::ENVIRONMENTAL, static_cast(damage), 0, false); + addCombatText(CombatTextEntry::ENVIRONMENTAL, static_cast(damage), 0, false, 0, 0, victimGuid); if (absorb > 0) - addCombatText(CombatTextEntry::ABSORB, static_cast(absorb), 0, false); + addCombatText(CombatTextEntry::ABSORB, static_cast(absorb), 0, false, 0, 0, victimGuid); if (resist > 0) - addCombatText(CombatTextEntry::RESIST, static_cast(resist), 0, false); + addCombatText(CombatTextEntry::RESIST, static_cast(resist), 0, false, 0, 0, victimGuid); } break; } @@ -3988,7 +3989,7 @@ void GameHandler::handlePacket(network::Packet& packet) { bool isPlayerVictim = (victimGuid == playerGuid); bool isPlayerCaster = (casterGuid == playerGuid); if ((isPlayerVictim || isPlayerCaster) && amount > 0) - addCombatText(CombatTextEntry::ENERGIZE, amount, spellId, isPlayerCaster, energizePowerType); + addCombatText(CombatTextEntry::ENERGIZE, amount, spellId, isPlayerCaster, energizePowerType, casterGuid, victimGuid); packet.setReadPos(packet.getSize()); break; } @@ -4002,12 +4003,13 @@ void GameHandler::handlePacket(network::Packet& packet) { uint32_t envAbs = packet.readUInt32(); uint32_t envRes = packet.readUInt32(); if (victimGuid == playerGuid) { + // Environmental damage: no caster GUID, victim = player if (dmg > 0) - addCombatText(CombatTextEntry::ENVIRONMENTAL, static_cast(dmg), 0, false); + addCombatText(CombatTextEntry::ENVIRONMENTAL, static_cast(dmg), 0, false, 0, 0, victimGuid); if (envAbs > 0) - addCombatText(CombatTextEntry::ABSORB, static_cast(envAbs), 0, false); + addCombatText(CombatTextEntry::ABSORB, static_cast(envAbs), 0, false, 0, 0, victimGuid); if (envRes > 0) - addCombatText(CombatTextEntry::RESIST, static_cast(envRes), 0, false); + addCombatText(CombatTextEntry::RESIST, static_cast(envRes), 0, false, 0, 0, victimGuid); } packet.setReadPos(packet.getSize()); break;