From 7bbb8df0106346c45fce07c275460b7aaff0ad1c Mon Sep 17 00:00:00 2001 From: Brues <5278969+brues-code@users.noreply.github.com> Date: Fri, 11 Sep 2026 00:27:05 -0500 Subject: [PATCH] remove pre pfUI 7.6 stuff --- Compatibility/pfUI.lua | 244 ----------------------------------------- Utility.lua | 60 ---------- 2 files changed, 304 deletions(-) diff --git a/Compatibility/pfUI.lua b/Compatibility/pfUI.lua index 8ffd15b..398dd64 100644 --- a/Compatibility/pfUI.lua +++ b/Compatibility/pfUI.lua @@ -79,247 +79,6 @@ function Extension.HandleSendChatMessageHook() end end --- Helper function to check for Carnage duration override --- Returns override duration and timeleft if found, nil otherwise -local function GetCarnageOverride(effect) - if not effect or not CleveRoids.carnageDurationOverrides then - return nil, nil - end - - for spellID, override in pairs(CleveRoids.carnageDurationOverrides) do - local spellName = C_Spell.GetSpellName(spellID) - if spellName then - local baseName = CleveRoids.StripRank(spellName) - if baseName == effect and override.timestamp and (GetTime() - override.timestamp) < 5 then - local timeleft = override.duration - (GetTime() - override.timestamp) - if timeleft < 0 then timeleft = 0 end - return override.duration, timeleft - end - end - end - return nil, nil -end - --- Hook pfUI's libdebuff to use our combo-aware durations --- NOTE: pfUI 7.6+ (GetUnitField edition) handles combo durations and Carnage internally. --- We only inject when there's a mismatch between pfUI's data and ours. -function Extension.HookPfUILibdebuff() - if not pfUI or not pfUI.api or not pfUI.api.libdebuff then - return false - end - - local pflib = pfUI.api.libdebuff - - -- Hook GetDuration if it exists - -- pfUI's GetDuration signature: function(effect, rank) where effect is spell NAME - if pflib.GetDuration and not Extension.pfLibDebuffHooked then - local originalGetDuration = pflib.GetDuration - - pflib.GetDuration = function(self, effect, rank) - local pfuiDuration = originalGetDuration(self, effect, rank) - - -- Check for Carnage duration overrides (only if pfUI doesn't have it) - local carnageDuration = GetCarnageOverride(effect) - if carnageDuration then - -- Only override if pfUI's duration is significantly different (>1s difference) - if not pfuiDuration or math.abs(carnageDuration - pfuiDuration) > 1 then - if Extension.Debug then - DEFAULT_CHAT_FRAME:AddMessage( - string.format("|cff00aaff[pfUI Duration Override]|r %s: Carnage %.1fs (pfUI: %.1fs)", - effect, carnageDuration, pfuiDuration or 0) - ) - end - return carnageDuration - end - end - - -- Check name-based tracking for fresh combo casts (only if pfUI returned 0 or nil) - if (not pfuiDuration or pfuiDuration == 0) and CleveRoids.ComboPointTracking and CleveRoids.ComboPointTracking[effect] then - local tracking = CleveRoids.ComboPointTracking[effect] - if tracking.duration and tracking.confirmed and (GetTime() - tracking.cast_time) < 0.5 then - if Extension.Debug then - DEFAULT_CHAT_FRAME:AddMessage( - string.format("|cff00aaff[pfUI Duration Override]|r %s: Combo tracking %.1fs (pfUI: %.1fs)", - effect, tracking.duration, pfuiDuration or 0) - ) - end - return tracking.duration - end - end - - return pfuiDuration - end - - Extension.pfLibDebuffHooked = true - Extension.DLOG("Hooked pfUI.api.libdebuff.GetDuration (mismatch-only mode)") - end - - -- Hook AddEffect if it exists (pre-7.6 only - 7.6+ returns early above) - if pflib.AddEffect and not Extension.pfLibAddEffectHooked then - local originalAddEffect = pflib.AddEffect - - pflib.AddEffect = function(self, unit, unitlevel, effect, duration, caster) - -- RANK CHECKING: Preserve higher rank's remaining time if lower rank was cast - -- NOTE: 'unit' is a unit NAME (e.g., "Expert Training Dummy"), not a unit ID - -- Defensive: verify libdebuff is a table, not a function - if caster == "player" and type(CleveRoids.libdebuff) == "table" and duration and duration > 0 then - -- Try to find the GUID for this unit name - local unitGUID = nil - - -- Check if this is the current target - if UnitName("target") == unit then - unitGUID = CleveRoids.GetGUID("target") - end - - -- If we couldn't match to current target, check guidToName mapping - if not unitGUID and CleveRoids.libdebuff.guidToName then - for guid, name in pairs(CleveRoids.libdebuff.guidToName) do - if name == unit then - unitGUID = guid - break - end - end - end - - -- Check if a higher rank of this spell is already active - if unitGUID and CleveRoids.libdebuff.objects and CleveRoids.libdebuff.objects[unitGUID] then - -- Find all spell IDs that match this effect name - for spellID, rec in pairs(CleveRoids.libdebuff.objects[unitGUID]) do - if rec and rec.start and rec.duration then - -- Get spell name for this ID - local spellName = C_Spell.GetSpellName(spellID) - if spellName then - local baseName = CleveRoids.StripRank(spellName) - if baseName == effect then - -- Same spell - check if still active - local remaining = rec.duration + rec.start - GetTime() - if remaining > 0 then - -- If incoming duration > remaining time, we're trying to add more time - -- This means either a refresh or lower rank cast - preserve existing timer - if duration > remaining then - if Extension.Debug then - DEFAULT_CHAT_FRAME:AddMessage( - string.format("|cff00aaff[pfUI Rank Preserve]|r %s: Preserving timer (%.1fs remaining vs %.1fs incoming)", - effect, remaining, duration) - ) - end - - -- Preserve the existing timer - duration = remaining - end - break - end - end - end - end - end - end - end - - -- Check for Carnage duration overrides FIRST (highest priority) - local carnageDuration = GetCarnageOverride(effect) - if carnageDuration then - duration = duration or carnageDuration - caster = caster or "player" -- Ensure caster is set for UnitOwnDebuff filtering - end - - -- Check if this is a combo scaling spell by name - if not duration and CleveRoids.IsComboScalingSpell and CleveRoids.IsComboScalingSpell(effect) then - if CleveRoids.ComboPointTracking and CleveRoids.ComboPointTracking[effect] then - local tracking = CleveRoids.ComboPointTracking[effect] - if tracking.duration and tracking.confirmed and (GetTime() - tracking.cast_time) < 0.5 then - duration = tracking.duration - caster = caster or "player" - end - end - end - - return originalAddEffect(self, unit, unitlevel, effect, duration, caster) - end - - Extension.pfLibAddEffectHooked = true - Extension.DLOG("Hooked pfUI.api.libdebuff.AddEffect") - end - - -- Hook UnitDebuff to return Carnage override duration to display code - -- Only override when pfUI's duration differs significantly from ours - if pflib.UnitDebuff and not Extension.pfLibUnitDebuffHooked then - local originalUnitDebuff = pflib.UnitDebuff - - pflib.UnitDebuff = function(self, unit, id) - local effect, rank, texture, stacks, dtype, duration, timeleft, caster = originalUnitDebuff(self, unit, id) - - -- Only check Carnage override if pfUI returned data but duration might be wrong - if effect then - local carnageDuration, carnageTimeleft = GetCarnageOverride(effect) - if carnageDuration then - -- Only override if there's a significant difference (>1s) - if not duration or math.abs(carnageDuration - duration) > 1 then - if Extension.Debug then - DEFAULT_CHAT_FRAME:AddMessage( - string.format("|cff00aaff[pfUI UnitDebuff Override]|r %s: Carnage %.1fs/%.1fs (pfUI: %.1fs/%.1fs)", - effect, carnageDuration, carnageTimeleft, duration or 0, timeleft or 0) - ) - end - duration = carnageDuration - timeleft = carnageTimeleft - end - end - end - - return effect, rank, texture, stacks, dtype, duration, timeleft, caster - end - - Extension.pfLibUnitDebuffHooked = true - Extension.DLOG("Hooked pfUI.api.libdebuff.UnitDebuff (mismatch-only mode)") - end - - -- Hook UnitOwnDebuff to return Carnage override duration when selfdebuff is enabled - -- Only override when pfUI's duration differs significantly from ours - if pflib.UnitOwnDebuff and not Extension.pfLibUnitOwnDebuffHooked then - local originalUnitOwnDebuff = pflib.UnitOwnDebuff - - pflib.UnitOwnDebuff = function(self, unit, id) - local effect, rank, texture, stacks, dtype, duration, timeleft, caster = originalUnitOwnDebuff(self, unit, id) - - if effect then - local carnageDuration, carnageTimeleft = GetCarnageOverride(effect) - if carnageDuration then - -- Only override if there's a significant difference (>1s) - if not duration or math.abs(carnageDuration - duration) > 1 then - if Extension.Debug then - DEFAULT_CHAT_FRAME:AddMessage( - string.format("|cff00aaff[pfUI UnitOwnDebuff Override]|r %s: Carnage %.1fs/%.1fs (pfUI: %.1fs/%.1fs)", - effect, carnageDuration, carnageTimeleft, duration or 0, timeleft or 0) - ) - end - duration = carnageDuration - timeleft = carnageTimeleft - end - end - -- If UnitOwnDebuff returned nil but we have a Carnage override, synthesize from UnitDebuff - -- This fallback is only needed for edge cases where pfUI doesn't track the debuff yet - elseif not effect and CleveRoids.carnageDurationOverrides then - -- Use pflib:UnitDebuff which includes our Carnage override hook - local baseEffect, baseRank, baseTex, baseStacks, baseDtype, baseDur, baseLeft, _ = pflib:UnitDebuff(unit, id) - if baseEffect then - local carnageDuration2, carnageTimeleft2 = GetCarnageOverride(baseEffect) - if carnageDuration2 then - return baseEffect, baseRank, baseTex, baseStacks, baseDtype, carnageDuration2, carnageTimeleft2, "player" - end - end - end - - return effect, rank, texture, stacks, dtype, duration, timeleft, caster - end - - Extension.pfLibUnitOwnDebuffHooked = true - Extension.DLOG("Hooked pfUI.api.libdebuff.UnitOwnDebuff (mismatch-only mode)") - end - - return Extension.pfLibDebuffHooked or Extension.pfLibAddEffectHooked or Extension.pfLibUnitDebuffHooked or Extension.pfLibUnitOwnDebuffHooked -end - -- Register action event handler for pfUI button updates function Extension.RegisterPfUIActionEventHandler() if not pfUI or Extension.actionHandlerRegistered then @@ -382,9 +141,6 @@ function Extension.SetupCompatibility() if Extension.pfUILoaded then Extension.DLOG("pfUI detected") - -- Hook libdebuff for combo duration support - Extension.HookPfUILibdebuff() - -- Register action event handler for button updates Extension.RegisterPfUIActionEventHandler() diff --git a/Utility.lua b/Utility.lua index b9a8bff..72a4297 100644 --- a/Utility.lua +++ b/Utility.lua @@ -2262,38 +2262,6 @@ function lib:AddEffect(guid, unitName, spellID, duration, stacks, caster) end end - -- PFUI INTEGRATION: Inject all tracked debuffs into pfUI's libdebuff (pre-7.6 only) - -- pfUI 7.6+ handles all duration tracking internally via GetUnitField - if pfUI and pfUI.api and pfUI.api.libdebuff and unitName then - local pflib = pfUI.api.libdebuff - local spellName = C_Spell.GetSpellName(spellID) - - if spellName and pflib.AddEffect then - -- Get target level for pfUI's tracking structure - local targetLevel = UnitLevel(guid) or UnitLevel("target") or 1 - - -- Strip rank from spell name for pfUI (it uses base names) - local baseName = CleveRoids.StripRank(spellName) - - -- Also register the duration in pfUI's duration table - if pflib.debuffs then - pflib.debuffs[baseName] = duration - end - - -- Add the effect to pfUI's tracking - -- Use "player" as caster for pfUI compatibility (it expects this format) - pflib:AddEffect(unitName, targetLevel, baseName, duration, "player") - - if CleveRoids.debug then - local casterStr = (caster == "player") and "player" or "other" - DEFAULT_CHAT_FRAME:AddMessage( - string.format("|cff00ff00[pfUI Inject]|r %s (%ds) on %s (level %d) [caster: %s]", - baseName, duration, unitName, targetLevel, casterStr) - ) - end - end - end - if CleveRoids.debug then local spellName = C_Spell.GetSpellName(spellID) or "Unknown" CleveRoids.DebugChanged("addeffect_" .. spellID .. "_" .. tostring(guid), @@ -2499,20 +2467,6 @@ local function SeedUnit(unit) existing.start = GetTime() existing.duration = duration - -- PFUI INTEGRATION: Inject refreshed timer into pfUI (pre-7.6 only) - if pfUI and pfUI.api and pfUI.api.libdebuff and unitName then - local pflib = pfUI.api.libdebuff - local spellName = C_Spell.GetSpellName(spellID) - if spellName and pflib.AddEffect then - local targetLevel = UnitLevel(unit) or 1 - local baseName = CleveRoids.StripRank(spellName) - if pflib.debuffs then - pflib.debuffs[baseName] = duration - end - pflib:AddEffect(unitName, targetLevel, baseName, duration, "player") - end - end - if CleveRoids.debug then local spellName = C_Spell.GetSpellName(spellID) or "Unknown" DEFAULT_CHAT_FRAME:AddMessage( @@ -2588,20 +2542,6 @@ local function SeedUnit(unit) existing.start = GetTime() existing.duration = duration - -- PFUI INTEGRATION: Inject refreshed timer into pfUI (pre-7.6 only) - if pfUI and pfUI.api and pfUI.api.libdebuff and unitName then - local pflib = pfUI.api.libdebuff - local spellName = C_Spell.GetSpellName(spellID) - if spellName and pflib.AddEffect then - local targetLevel = UnitLevel(unit) or 1 - local baseName = CleveRoids.StripRank(spellName) - if pflib.debuffs then - pflib.debuffs[baseName] = duration - end - pflib:AddEffect(unitName, targetLevel, baseName, duration, "player") - end - end - if CleveRoids.debug then local spellName = C_Spell.GetSpellName(spellID) or "Unknown" DEFAULT_CHAT_FRAME:AddMessage(