mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Delete the Lua paladin judgement refresh
A paladin's white swing refreshes their own judgement debuff on the victim, and the server's edit is packet-silent, so pfUI#45 was the visible symptom: the timer ran to zero while the debuff stayed up. This addon worked around it three ways at once -- a UNIT_CASTEVENT MAINHAND/OFFHAND handler in Core.lua, an AUTO_ATTACK_OTHER fallback in Conditionals.lua, and a CHAT_MSG_COMBAT_SELF_HITS parser in Utility.lua that string-matched "hit"/"crit" and guessed at melee vs spell by looking for a parenthesis -- each rewriting rec.start and pushing the result into pfUI by hand. ClassicAPI mirrors the server rule in the DLL (src/aura/JudgementRefresh.cpp), keyed off SMSG_ATTACKERSTATEUPDATE, which is the visible trigger for the invisible edit. It matches judgements by their DBC marker -- SPELLFAMILY_PALADIN with SPELL_ATTR_EX3_ALWAYS_HIT -- for any paladin's judgements, not only ours. That last detail retires the auto-detection too. The hardcoded judgementSpells list could not cover Turtle's custom judgement ranks, so a cast queued a pending scan that read the target's debuffs 0.5s later, matched names against "^Judgement", and grew the list at runtime. Matching on the DBC attribute needs no list to grow. Gone with it: judgementSpells, pendingJudgements, detectedJudgementDebuffIDs, the pending-scan pass and its queue buffer, and both cast-site hooks. The scan also registered each ID it discovered into lib.sharedDebuffs so [debuff] fallback matching worked for custom IDs. That mattered when detection went through the tracking store; the read path resolves auras through C_UnitAuras now, which returns a debuff whether or not we have a row for it.
This commit is contained in:
@@ -897,43 +897,6 @@ local function OnAutoAttackOther(attackerGuid, targetGuid, totalDamage, hitInfo,
|
||||
CleveRoids.LastSwing.resistAmount = totalResist or 0
|
||||
CleveRoids.LastSwing.targetGuid = targetGuid
|
||||
|
||||
-- Paladin: refresh active Judgements on melee hit (Nampower fallback for UNIT_CASTEVENT)
|
||||
if CleveRoids.playerClass == "PALADIN" and targetGuid then
|
||||
local lib = type(CleveRoids.libdebuff) == "table" and CleveRoids.libdebuff or nil
|
||||
if lib and lib.objects then
|
||||
local normalizedTarget = CleveRoids.NormalizeGUID(targetGuid)
|
||||
if normalizedTarget and lib.objects[normalizedTarget] then
|
||||
for spellID, rec in pairs(lib.objects[normalizedTarget]) do
|
||||
if lib.judgementSpells and lib.judgementSpells[spellID] and rec.start and rec.duration then
|
||||
local remaining = rec.duration + rec.start - GetTime()
|
||||
if remaining > 0 and rec.caster == "player" then
|
||||
rec.start = GetTime()
|
||||
|
||||
if CleveRoids.debug then
|
||||
local spellName = C_Spell.GetSpellName(spellID) or "Unknown"
|
||||
local baseName = CleveRoids.StripRank(spellName) or "Unknown"
|
||||
DEFAULT_CHAT_FRAME:AddMessage(
|
||||
string.format("|cff00ffaa[Judgement Refresh]|r Refreshed %s (ID:%d) on melee hit - new duration: %ds",
|
||||
baseName, spellID, rec.duration)
|
||||
)
|
||||
end
|
||||
|
||||
-- Sync to pfUI if loaded (pre-7.6 only)
|
||||
if pfUI and pfUI.api and pfUI.api.libdebuff then
|
||||
local spellName = C_Spell.GetSpellName(spellID) or nil
|
||||
local baseName = CleveRoids.StripRank(spellName)
|
||||
local targetName = (lib.guidToName and lib.guidToName[normalizedTarget]) or UnitName("target")
|
||||
local targetLevel = UnitLevel("target") or 0
|
||||
if targetName and baseName then
|
||||
pfUI.api.libdebuff:AddEffect(targetName, targetLevel, baseName, rec.duration, "player")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Process AUTO_ATTACK_SELF event (player being attacked)
|
||||
|
||||
Reference in New Issue
Block a user