diff --git a/include/game/spell_defines.hpp b/include/game/spell_defines.hpp index 041b44f6..c4d70380 100644 --- a/include/game/spell_defines.hpp +++ b/include/game/spell_defines.hpp @@ -51,7 +51,7 @@ struct CombatTextEntry { enum Type : uint8_t { MELEE_DAMAGE, SPELL_DAMAGE, HEAL, MISS, DODGE, PARRY, BLOCK, CRIT_DAMAGE, CRIT_HEAL, PERIODIC_DAMAGE, PERIODIC_HEAL, ENVIRONMENTAL, - ENERGIZE, XP_GAIN, IMMUNE + ENERGIZE, XP_GAIN, IMMUNE, ABSORB, RESIST }; Type type; int32_t amount = 0; diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 9024347a..34486b53 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -2433,8 +2433,8 @@ void GameHandler::handlePacket(network::Packet& packet) { CombatTextEntry::MISS, // 4=EVADE CombatTextEntry::IMMUNE, // 5=IMMUNE CombatTextEntry::MISS, // 6=DEFLECT - CombatTextEntry::MISS, // 7=ABSORB - CombatTextEntry::MISS, // 8=RESIST + CombatTextEntry::ABSORB, // 7=ABSORB + CombatTextEntry::RESIST, // 8=RESIST }; CombatTextEntry::Type ct = (missInfo < 9) ? missTypes[missInfo] : CombatTextEntry::MISS; addCombatText(ct, 0, 0, true); @@ -13967,8 +13967,8 @@ void GameHandler::handleSpellGo(network::Packet& packet) { CombatTextEntry::MISS, // 4=EVADE CombatTextEntry::IMMUNE, // 5=IMMUNE CombatTextEntry::MISS, // 6=DEFLECT - CombatTextEntry::MISS, // 7=ABSORB - CombatTextEntry::MISS, // 8=RESIST + CombatTextEntry::ABSORB, // 7=ABSORB + CombatTextEntry::RESIST, // 8=RESIST }; // Show text for each miss (usually just 1 target per spell go) for (const auto& m : data.missTargets) { diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index 71681c84..4e8c29a5 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -5203,6 +5203,14 @@ void GameScreen::renderCombatText(game::GameHandler& gameHandler) { snprintf(text, sizeof(text), "Immune!"); color = ImVec4(0.9f, 0.9f, 0.9f, alpha); // White for immune break; + case game::CombatTextEntry::ABSORB: + snprintf(text, sizeof(text), "Absorb"); + color = ImVec4(0.5f, 0.8f, 1.0f, alpha); // Light blue for absorb + break; + case game::CombatTextEntry::RESIST: + snprintf(text, sizeof(text), "Resist"); + color = ImVec4(0.7f, 0.7f, 0.7f, alpha); // Grey for resist + break; default: snprintf(text, sizeof(text), "%d", entry.amount); color = ImVec4(1.0f, 1.0f, 1.0f, alpha);