From 031448ec6d62dbc7f91abf8081f8909dac30565c Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 11 Mar 2026 03:30:24 -0700 Subject: [PATCH] feat: show absorb/resist on periodic damage (DoT) ticks SMSG_PERIODICAURALOG already parsed abs/res fields for type 3/89 but discarded them. Surface these as ABSORB/RESIST combat text so players see when DoT ticks are being partially absorbed (e.g. vs. PW:Shield). --- src/game/game_handler.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index ecf1980e..d08016c1 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -3476,10 +3476,17 @@ void GameHandler::handlePacket(network::Packet& packet) { if (packet.getSize() - packet.getReadPos() < 16) break; uint32_t dmg = packet.readUInt32(); /*uint32_t school=*/ packet.readUInt32(); - /*uint32_t abs=*/ packet.readUInt32(); - /*uint32_t res=*/ packet.readUInt32(); - addCombatText(CombatTextEntry::PERIODIC_DAMAGE, static_cast(dmg), - spellId, isPlayerCaster); + uint32_t abs = packet.readUInt32(); + uint32_t res = packet.readUInt32(); + if (dmg > 0) + addCombatText(CombatTextEntry::PERIODIC_DAMAGE, static_cast(dmg), + spellId, isPlayerCaster); + if (abs > 0) + addCombatText(CombatTextEntry::ABSORB, static_cast(abs), + spellId, isPlayerCaster); + if (res > 0) + addCombatText(CombatTextEntry::RESIST, static_cast(res), + spellId, isPlayerCaster); } else if (auraType == 8 || auraType == 124 || auraType == 45) { // PERIODIC_HEAL / PERIODIC_HEAL_PCT / OBS_MOD_HEALTH: heal+maxHeal+overHeal if (packet.getSize() - packet.getReadPos() < 12) break;