diff --git a/modules/mouseover.lua b/modules/mouseover.lua index c33a6b5b..246b3710 100644 --- a/modules/mouseover.lua +++ b/modules/mouseover.lua @@ -50,44 +50,61 @@ pfUI:RegisterModule("mouseover", "vanilla", function () end end - -- If target and mouseover are friendly units, we can't use spell target as it - -- would cast on the target instead of the mouseover. However, if the mouseover - -- is friendly and the target is not, we can try to obtain the best unitstring - -- for the later SpellTargetUnit() call. - local unitstr = not UnitCanAssist("player", "target") and UnitCanAssist("player", unit) and GetUnitString(unit) - - if UnitIsUnit("target", unit) or (not func and unitstr) then - -- no target change required, we can either use spell target - -- or the unit is already our current target. - restore_target = false + -- Nampower/SuperWoW: Use SetMouseoverUnit for cleaner mouseover handling + if SetMouseoverUnit and not UnitIsUnit("target", unit) then + -- Set the mouseover unit so macros like [@mouseover] work correctly + SetMouseoverUnit(unit) + + -- Cast spell (no target toggle needed!) + if func then + func() + else + CastSpellByName(msg) + end + + -- Clear mouseover unit + SetMouseoverUnit() else - -- The spelltarget can't be used here, we need to switch - -- and restore the target during spell cast - TargetUnit(unit) - end + -- Fallback: Legacy method with target toggle + -- If target and mouseover are friendly units, we can't use spell target as it + -- would cast on the target instead of the mouseover. However, if the mouseover + -- is friendly and the target is not, we can try to obtain the best unitstring + -- for the later SpellTargetUnit() call. + local unitstr = not UnitCanAssist("player", "target") and UnitCanAssist("player", unit) and GetUnitString(unit) - if func then - func() - else - -- write temporary unit name - pfUI.uf.mouseover.unit = unit + if UnitIsUnit("target", unit) or (not func and unitstr) then + -- no target change required, we can either use spell target + -- or the unit is already our current target. + restore_target = false + else + -- The spelltarget can't be used here, we need to switch + -- and restore the target during spell cast + TargetUnit(unit) + end - -- cast without self cast cvar setting - -- to allow spells to use spelltarget - NoSelfCast(msg) + if func then + func() + else + -- write temporary unit name + pfUI.uf.mouseover.unit = unit - -- set spell target to unitstring (or selfcast) - if SpellIsTargeting() then SpellTargetUnit(unitstr or "player") end + -- cast without self cast cvar setting + -- to allow spells to use spelltarget + NoSelfCast(msg) - -- clean up spell target in error case - if SpellIsTargeting() then SpellStopTargeting() end + -- set spell target to unitstring (or selfcast) + if SpellIsTargeting() then SpellTargetUnit(unitstr or "player") end - -- remove temporary mouseover unit - pfUI.uf.mouseover.unit = nil - end + -- clean up spell target in error case + if SpellIsTargeting() then SpellStopTargeting() end - if restore_target then - TargetLastTarget() + -- remove temporary mouseover unit + pfUI.uf.mouseover.unit = nil + end + + if restore_target then + TargetLastTarget() + end end end end) diff --git a/modules/nampower.lua b/modules/nampower.lua index 2c38c365..28f091e2 100644 --- a/modules/nampower.lua +++ b/modules/nampower.lua @@ -67,9 +67,12 @@ pfUI:RegisterModule("nampower", "vanilla", function () local spellId = arg2 if eventCode == NORMAL_QUEUED or eventCode == NON_GCD_QUEUED or eventCode == ON_SWING_QUEUED then - -- Get spell texture from SpellInfo (SuperWoW) or GetSpellTexture + -- Get spell texture from GetSpellRec (Nampower) or SpellInfo (SuperWoW fallback) local texture - if SpellInfo then + if GetSpellRec then + local rec = GetSpellRec(spellId) + texture = rec and rec.spellIconID and GetSpellIconTexture(rec.spellIconID) or nil + elseif SpellInfo then local _, _, tex = SpellInfo(spellId) texture = tex end @@ -101,7 +104,15 @@ pfUI:RegisterModule("nampower", "vanilla", function () local spellId = auras[i] if spellId and spellId > 0 then local name, rank, texture - if SpellInfo then + if GetSpellRec then + local rec = GetSpellRec(spellId) + if rec then + name = rec.name + rank = rec.rank + local iconID = rec.spellIconID + texture = iconID and GetSpellIconTexture(iconID) or nil + end + elseif SpellInfo then name, rank, texture = SpellInfo(spellId) end if not name then @@ -479,9 +490,6 @@ pfUI:RegisterModule("nampower", "vanilla", function () end end - -- NOTE: HoT Detection (AURA_CAST events) removed - OnHotApplied callback was never implemented in libpredict - -- NOTE: Swing Timer removed - GetSwingTimers() was never called anywhere - -- Druid Secondary Mana Bar -- Shows base mana when druid is in shapeshift form (Bear/Cat uses Rage/Energy) -- Uses Nampower's GetUnitField to get base mana values @@ -783,4 +791,4 @@ pfUI:RegisterModule("nampower", "vanilla", function () -- Initial update UpdateTargetSecondaryMana() end -end) \ No newline at end of file +end) diff --git a/modules/superwow.lua b/modules/superwow.lua index 71d2f8c4..5d06f189 100644 --- a/modules/superwow.lua +++ b/modules/superwow.lua @@ -307,7 +307,14 @@ pfUI:RegisterModule("superwow", "vanilla", function () -- get spell info from spell id local spell, icon, _ - if SpellInfo and SpellInfo(spell_id) then + if GetSpellRec then + local rec = GetSpellRec(spell_id) + if rec then + spell = rec.name + local iconID = rec.spellIconID + icon = iconID and GetSpellIconTexture(iconID) or nil + end + elseif SpellInfo and SpellInfo(spell_id) then spell, _, icon = SpellInfo(spell_id) end