From 5c42658b7eb451010a5a80eb90a09e5e8226f4d1 Mon Sep 17 00:00:00 2001 From: shagu Date: Sun, 25 May 2025 14:18:45 +0200 Subject: [PATCH] unitframes: add experimental option to show own debuffs --- api/config.lua | 1 + api/unitframes.lua | 10 +++++++++- modules/gui.lua | 28 ++++++++++++++++------------ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/api/config.lua b/api/config.lua index 6cf26827..4a391da1 100644 --- a/api/config.lua +++ b/api/config.lua @@ -417,6 +417,7 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("unitframes", unit, "debuffsize", "20") pfUI:UpdateConfig("unitframes", unit, "debufflimit", "32") pfUI:UpdateConfig("unitframes", unit, "debuffperrow", "8") + pfUI:UpdateConfig("unitframes", unit, "selfdebuff", "0") pfUI:UpdateConfig("unitframes", unit, "invert_healthbar", "0") pfUI:UpdateConfig("unitframes", unit, "verticalbar", "0") pfUI:UpdateConfig("unitframes", unit, "buff_indicator", "0") diff --git a/api/unitframes.lua b/api/unitframes.lua index 0e0ce9c3..3770b813 100644 --- a/api/unitframes.lua +++ b/api/unitframes.lua @@ -1513,6 +1513,7 @@ function pfUI.uf:RefreshUnit(unit, component) local texture, stacks, dtype local perrow = unit.config.debuffperrow local bperrow = unit.config.buffperrow + local selfdebuff = unit.config.selfdebuff local invert_h, invert_v, af if unit.config.debuffs == "TOPLEFT" then @@ -1561,6 +1562,8 @@ function pfUI.uf:RefreshUnit(unit, component) texture = GetPlayerBuffTexture(GetPlayerBuff(PLAYER_BUFF_START_ID+i, "HARMFUL")) stacks = GetPlayerBuffApplications(GetPlayerBuff(PLAYER_BUFF_START_ID+i, "HARMFUL")) dtype = GetPlayerBuffDispelType(GetPlayerBuff(PLAYER_BUFF_START_ID+i, "HARMFUL")) + elseif selfdebuff == "1" then + _, _, texture, stacks, dtype = libdebuff:UnitOwnDebuff(unitstr, i) else texture, stacks, dtype = UnitDebuff(unitstr, i) end @@ -1579,8 +1582,13 @@ function pfUI.uf:RefreshUnit(unit, component) if unit:GetName() == "pfPlayer" then local timeleft = GetPlayerBuffTimeLeft(GetPlayerBuff(PLAYER_BUFF_START_ID+unit.debuffs[i].id, "HARMFUL"),"HARMFUL") CooldownFrame_SetTimer(unit.debuffs[i].cd, GetTime(), timeleft, 1) + elseif libdebuff and selfdebuff == "1" then + local name, rank, texture, stacks, dtype, duration, timeleft, caster = libdebuff:UnitOwnDebuff(unitstr, i) + if duration and timeleft then + CooldownFrame_SetTimer(unit.debuffs[i].cd, GetTime() + timeleft - duration, duration, 1) + end elseif libdebuff then - local name, rank, texture, stacks, dtype, duration, timeleft = libdebuff:UnitDebuff(unitstr, i) + local name, rank, texture, stacks, dtype, duration, timeleft, caster = libdebuff:UnitDebuff(unitstr, i) if duration and timeleft then CooldownFrame_SetTimer(unit.debuffs[i].cd, GetTime() + timeleft - duration, duration, 1) end diff --git a/modules/gui.lua b/modules/gui.lua index 7ab3262d..2d70aeb2 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -1794,6 +1794,22 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(U[c], T["Show Timer Text"], C.unitframes[c], "cooldown_text", "checkbox") CreateConfig(U[c], T["Show Timer Animation"], C.unitframes[c], "cooldown_anim", "checkbox") + CreateConfig(U[c], T["Buffs"], nil, nil, "header") + CreateConfig(U[c], T["Buff Position"], C.unitframes[c], "buffs", "dropdown", pfUI.gui.dropdowns.uf_buff_position) + CreateConfig(U[c], T["Buff Size"], C.unitframes[c], "buffsize") + CreateConfig(U[c], T["Buff Limit"], C.unitframes[c], "bufflimit") + CreateConfig(U[c], T["Buffs Per Row"], C.unitframes[c], "buffperrow") + + CreateConfig(U[c], T["Debuffs"], nil, nil, "header") + CreateConfig(U[c], T["Debuff Position"], C.unitframes[c], "debuffs", "dropdown", pfUI.gui.dropdowns.uf_buff_position) + CreateConfig(U[c], T["Debuff Size"], C.unitframes[c], "debuffsize") + CreateConfig(U[c], T["Debuff Limit"], C.unitframes[c], "debufflimit") + CreateConfig(U[c], T["Debuffs Per Row"], C.unitframes[c], "debuffperrow") + + if c ~= "player" then + CreateConfig(U[c], T["Only Show Own Debuffs (|cffffaaaaExperimental|r)"], C.unitframes[c], "selfdebuff", "checkbox") + end + CreateConfig(U[c], T["Combat/Aggro Indicators"], nil, nil, "header") CreateConfig(U[c], T["Display Aggro Indicator"], C.unitframes[c], "squareaggro", "checkbox") CreateConfig(U[c], T["Display Combat Indicator"], C.unitframes[c], "squarecombat", "checkbox") @@ -1821,18 +1837,6 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(U[c], T["Indicator Position"], C.unitframes[c], "debuff_ind_pos", "dropdown", pfUI.gui.dropdowns.positions) CreateConfig(U[c], T["Indicator Size"], C.unitframes[c], "debuff_ind_size", "dropdown", pfUI.gui.dropdowns.uf_debuff_indicator_size) - CreateConfig(U[c], T["Buffs"], nil, nil, "header") - CreateConfig(U[c], T["Buff Position"], C.unitframes[c], "buffs", "dropdown", pfUI.gui.dropdowns.uf_buff_position) - CreateConfig(U[c], T["Buff Size"], C.unitframes[c], "buffsize") - CreateConfig(U[c], T["Buff Limit"], C.unitframes[c], "bufflimit") - CreateConfig(U[c], T["Buffs Per Row"], C.unitframes[c], "buffperrow") - - CreateConfig(U[c], T["Debuffs"], nil, nil, "header") - CreateConfig(U[c], T["Debuff Position"], C.unitframes[c], "debuffs", "dropdown", pfUI.gui.dropdowns.uf_buff_position) - CreateConfig(U[c], T["Debuff Size"], C.unitframes[c], "debuffsize") - CreateConfig(U[c], T["Debuff Limit"], C.unitframes[c], "debufflimit") - CreateConfig(U[c], T["Debuffs Per Row"], C.unitframes[c], "debuffperrow") - CreateConfig(U[c], T["Overwrite Fonts"], nil, nil, "header") CreateConfig(U[c], T["Use Custom Font Settings"], C.unitframes[c], "customfont", "checkbox") CreateConfig(U[c], T["Custom Font Name"], C.unitframes[c], "customfont_name", "dropdown", pfUI.gui.dropdowns.fonts)