From 1ec1c79fd90a0c3746e52e1e3b9d2ebe9ebe8a9f Mon Sep 17 00:00:00 2001 From: Jrc13245 Date: Sat, 21 Mar 2026 21:37:38 -0400 Subject: [PATCH] fix duplicate buff notifications --- .../MikCombatEventHelper.lua | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/MikScrollingBattleText/MikCombatEventHelper.lua b/MikScrollingBattleText/MikCombatEventHelper.lua index a1589ce..6ae424d 100644 --- a/MikScrollingBattleText/MikCombatEventHelper.lua +++ b/MikScrollingBattleText/MikCombatEventHelper.lua @@ -186,6 +186,7 @@ local nampowerHealsActive = false local nampowerAutoAttackActive = false local nampowerEnergizeActive = false local nampowerSpellDamageActive = false +local nampowerBuffsActive = false local nampowerPetAutoAttackActive = false local nampowerPetSpellDamageActive = false @@ -513,7 +514,7 @@ combatEventDispatch["CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF"] = handleIncomingSpel -- Incoming Debuffs, DoTs, Power Gains combatEventDispatch["CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE"] = function(msg) - if not nampowerSpellDamageActive then + if not nampowerBuffsActive and not nampowerSpellDamageActive then MikCEH.ParseForIncomingDebuffs(msg) end if not nampowerEnergizeActive then @@ -525,7 +526,7 @@ end combatEventDispatch["CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS"] = function(msg) if not nampowerHealsActive then if not MikCEH.ParseForIncomingSpellHeals(msg) then - if not nampowerSpellDamageActive then + if not nampowerBuffsActive and not nampowerSpellDamageActive then MikCEH.ParseForIncomingBuffs(msg) end MikCEH.ParseForOutgoingHoTs(msg) @@ -673,6 +674,7 @@ function MikCEH.Init() MikCEH.nampowerAutoAttackActive = false MikCEH.nampowerEnergizeActive = false MikCEH.nampowerSpellDamageActive = false + MikCEH.nampowerBuffsActive = false MikCEH.nampowerPetAutoAttackActive = false MikCEH.nampowerPetSpellDamageActive = false @@ -1316,10 +1318,16 @@ end nampowerHandlers["BUFF_ADDED_SELF"] = function() local unitGuid = arg1 local spellId = arg3 + local state = arg7 -- Only for player. if not IsPlayerGUID(unitGuid) then return end + nampowerBuffsActive = true + + -- Only notify for newly added buffs (state 0), not stack changes (state 2). + if state ~= 0 then return end + local spellName = GetSpellNameFromId(spellId) if not spellName then return end @@ -1337,10 +1345,16 @@ end nampowerHandlers["DEBUFF_ADDED_SELF"] = function() local unitGuid = arg1 local spellId = arg3 + local state = arg7 -- Only for player. if not IsPlayerGUID(unitGuid) then return end + nampowerBuffsActive = true + + -- Only notify for newly added debuffs (state 0), not stack changes (state 2). + if state ~= 0 then return end + local spellName = GetSpellNameFromId(spellId) if not spellName then return end @@ -1421,7 +1435,7 @@ function MikCEH.SetupNampowerEvents() -- Events to keep despite Nampower — these have partial or no Nampower equivalent. -- CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE: Keep for power gains (no Nampower equivalent for all gain types) - -- CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS: Keep for power gains and buffs from periodic sources + -- CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS: Keep for power gains (buff parsing gated by nampowerBuffsActive) -- CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE: Keep for power losses (ParseForPowerLosses) -- CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE: Keep for power losses -- CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE: Keep for power losses