diff --git a/README.md b/README.md index 5ac36640..222fda90 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # pfUI - Turtle WoW Edition -[![Version](https://img.shields.io/badge/version-6.2.5-blue.svg)](https://github.com/me0wg4ming/pfUI) +[![Version](https://img.shields.io/badge/version-6.2.6-blue.svg)](https://github.com/me0wg4ming/pfUI) [![Turtle WoW](https://img.shields.io/badge/Turtle%20WoW-1.18.0-brightgreen.svg)](https://turtlecraft.gg/) [![SuperWoW](https://img.shields.io/badge/SuperWoW-Enhanced-purple.svg)](https://github.com/balakethelock/SuperWoW) [![Nampower](https://img.shields.io/badge/Nampower-Optional-yellow.svg)](https://gitea.com/avitasia/nampower) @@ -12,6 +12,32 @@ This version includes significant performance improvements, DLL-enhanced feature > **Looking for TBC support?** Visit the original pfUI by Shagu: [https://github.com/shagu/pfUI](https://github.com/shagu/pfUI) +--- +## What's New in Version 6.2.6 (January 27, 2026) + +### 🎯 Nameplate Debuff Timer Improvements + +- ✅ **New Option: Enable Debuff Timers** - Toggle for debuff timer display on nameplates + - Moved from hidden location (Appearance → Cooldown → "Display Debuff Durations") to Nameplates → Debuffs + - All timer-related options are now grouped together for better discoverability +- ✅ **New Option: Show Timer Text** - Toggle the countdown text (e.g., "12s") on debuff icons + - Previously always shown, now configurable +- ✅ **Show Timer Animation** - Existing pie-chart animation option, now properly grouped with other timer options + +### 🖼️ Unitframe Timer Config Fix (unitframes.lua) + +- ✅ **Live Config Updates** - "Show Timer Animation" and "Show Timer Text" now update immediately + - Previously: Changes only applied after buffs/debuffs were refreshed + - Now: Toggling the option instantly shows/hides the animation and text on existing buffs/debuffs + +### 🐱 Combo Point Ability Fixes (libdebuff.lua) + +- ✅ **Rogue & Druid Combo Point Tracking** - Fixed duration calculation for combo point abilities + - Rupture, Kidney Shot, and Rip now correctly calculate duration based on combo points spent + - Added `PLAYER_COMBO_POINTS` event tracking for both Rogues AND Druids + - Stores combo points before they're consumed, ensuring accurate duration calculation + - Fixes issue where abilities showed incorrect duration when combo points were already spent at cast time + --- ## What's New in Version 6.2.5 (January 21, 2026) @@ -450,7 +476,7 @@ Same as original pfUI - free to use and modify. --- -**Version:** 6.2.5 -**Release Date:** January 21, 2026 +**Version:** 6.2.6 +**Release Date:** January 27, 2026 **Compatibility:** Turtle WoW 1.18.0 **Status:** Stable \ No newline at end of file diff --git a/api/config.lua b/api/config.lua index 7002d019..7bfe23e5 100644 --- a/api/config.lua +++ b/api/config.lua @@ -148,7 +148,6 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("appearance", "cd", "font_size", "12") pfUI:UpdateConfig("appearance", "cd", "font_size_blizz", "12") pfUI:UpdateConfig("appearance", "cd", "font_size_foreign","12") - pfUI:UpdateConfig("appearance", "cd", "debuffs", "1") pfUI:UpdateConfig("appearance", "cd", "blizzard", "1") pfUI:UpdateConfig("appearance", "cd", "foreign", "0") pfUI:UpdateConfig("appearance", "cd", "milliseconds", "1") @@ -837,6 +836,8 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("nameplates", "debuffs", "blacklist", "") pfUI:UpdateConfig("nameplates", "debuffs", "showstacks", "0") pfUI:UpdateConfig("nameplates", "debuffs", "position", "BOTTOM") + pfUI:UpdateConfig("nameplates", nil, "debufftimers", "1") + pfUI:UpdateConfig("nameplates", nil, "debufftext", "1") pfUI:UpdateConfig("nameplates", nil, "debuffanim", "0") pfUI:UpdateConfig("abuttons", nil, "enable", "1") diff --git a/api/unitframes.lua b/api/unitframes.lua index 0e88c5a0..d089b7a3 100644 --- a/api/unitframes.lua +++ b/api/unitframes.lua @@ -758,6 +758,17 @@ function pfUI.uf:UpdateConfig() f.buffs[i].cd.pfCooldownType = "ALL" f.buffs[i].cd.pfCooldownStyleText = cooldown_text f.buffs[i].cd.pfCooldownStyleAnimation = cooldown_anim + f.buffs[i].cd:SetAlpha(cooldown_anim == 1 and 1 or 0) + + -- immediately show/hide existing cooldown text + if f.buffs[i].cd.pfCooldownText then + if cooldown_text == 1 then + f.buffs[i].cd.pfCooldownText:Show() + else + f.buffs[i].cd.pfCooldownText:Hide() + end + end + f.buffs[i].id = i f.buffs[i]:Hide() @@ -850,6 +861,17 @@ function pfUI.uf:UpdateConfig() f.debuffs[i].cd.pfCooldownType = "ALL" f.debuffs[i].cd.pfCooldownStyleText = cooldown_text f.debuffs[i].cd.pfCooldownStyleAnimation = cooldown_anim + f.debuffs[i].cd:SetAlpha(cooldown_anim == 1 and 1 or 0) + + -- immediately show/hide existing cooldown text + if f.debuffs[i].cd.pfCooldownText then + if cooldown_text == 1 then + f.debuffs[i].cd.pfCooldownText:Show() + else + f.debuffs[i].cd.pfCooldownText:Hide() + end + end + f.debuffs[i].id = i f.debuffs[i]:Hide() diff --git a/modules/gui.lua b/modules/gui.lua index d7c59177..f7010b5e 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -1590,7 +1590,6 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(nil, T["Cooldown Text Font Size (Blizzard Frames)"], C.appearance.cd, "font_size_blizz") CreateConfig(nil, T["Cooldown Text Font Size (Foreign Frames)"], C.appearance.cd, "font_size_foreign") CreateConfig(nil, T["Cooldown Text Time Threshold"], C.appearance.cd, "threshold") - CreateConfig(nil, T["Display Debuff Durations"], C.appearance.cd, "debuffs", "checkbox") CreateConfig(nil, T["Enable Durations On Blizzard Frames"], C.appearance.cd, "blizzard", "checkbox") CreateConfig(nil, T["Enable Durations On Foreign Frames"], C.appearance.cd, "foreign", "checkbox") CreateConfig(nil, T["Hide Foreign Cooldown Animations"], C.appearance.cd, "hideanim", "checkbox") @@ -2356,6 +2355,8 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(U["nameplates"], T["Debuff Icon Size"], C.nameplates, "debuffsize") CreateConfig(U["nameplates"], T["Estimate Debuffs"], C.nameplates, "guessdebuffs", "checkbox") CreateConfig(U["nameplates"], T["Show Debuff Stacks"], C.nameplates.debuffs, "showstacks", "checkbox") + CreateConfig(U["nameplates"], T["Enable Debuff Timers"], C.nameplates, "debufftimers", "checkbox") + CreateConfig(U["nameplates"], T["Show Timer Text"], C.nameplates, "debufftext", "checkbox") CreateConfig(U["nameplates"], T["Show Timer Animation"], C.nameplates, "debuffanim", "checkbox") CreateConfig(U["nameplates"], T["Only Show Own Debuffs (|cffffaaaaExperimental|r)"], C.nameplates, "selfdebuff", "checkbox") CreateConfig(U["nameplates"], T["Filter Mode"], C.nameplates.debuffs, "filter", "dropdown", pfUI.gui.dropdowns.buffbarfilter) diff --git a/modules/nameplates.lua b/modules/nameplates.lua index bd7dce8b..b983fb88 100644 --- a/modules/nameplates.lua +++ b/modules/nameplates.lua @@ -66,8 +66,6 @@ pfUI:RegisterModule("nameplates", "vanilla", function () local parentcount = 0 local platecount = 0 local registry = {} - local debuffdurations = C.appearance.cd.debuffs == "1" and true or nil - -- NEW: Cast event cache like Overhead.lua local CastEvents = {} local _, PlayerGUID = UnitExists("player") @@ -300,8 +298,9 @@ pfUI:RegisterModule("nameplates", "vanilla", function () plate.debuffs[index].stacks:SetJustifyV("BOTTOM") plate.debuffs[index].stacks:SetTextColor(1,1,0) - -- Read config for cooldown animation + -- Read config for cooldown animation and text local cooldown_anim = tonumber(C.nameplates.debuffanim) or 0 + local cooldown_text = tonumber(C.nameplates.debufftext) or 1 if pfUI.client <= 11200 then -- Use Model frame with CooldownFrameTemplate for proper pie animation in Vanilla @@ -313,6 +312,7 @@ pfUI:RegisterModule("nameplates", "vanilla", function () end plate.debuffs[index].cd.pfCooldownStyleAnimation = cooldown_anim + plate.debuffs[index].cd.pfCooldownStyleText = cooldown_text plate.debuffs[index].cd.pfCooldownType = "ALL" end @@ -999,8 +999,11 @@ pfUI:RegisterModule("nameplates", "vanilla", function () plate.debuffs[index].stacks:Hide() end - if duration and timeleft and debuffdurations then + if duration and timeleft and C.nameplates.debufftimers == "1" then local cooldown_anim = tonumber(C.nameplates.debuffanim) or 0 + local cooldown_text = tonumber(C.nameplates.debufftext) or 1 + plate.debuffs[index].cd.pfCooldownStyleAnimation = cooldown_anim + plate.debuffs[index].cd.pfCooldownStyleText = cooldown_text plate.debuffs[index].cd:SetAlpha(cooldown_anim == 1 and 1 or 0) plate.debuffs[index].cd:Show() CooldownFrame_SetTimer(plate.debuffs[index].cd, GetTime() + timeleft - duration, duration, 1) diff --git a/pfUI-tbc.toc b/pfUI-tbc.toc index e5a86f6d..692b94af 100644 --- a/pfUI-tbc.toc +++ b/pfUI-tbc.toc @@ -3,7 +3,7 @@ ## Author: Shagu ## Notes: A complete user interface replacement. ## Notes-ruRU: Полная замена пользовательского интерфейса. -## Version: 6.2.5 +## Version: 6.2.6 ## SavedVariables: pfUI_profiles, pfUI_addon_profiles, pfUI_cache ## SavedVariablesPerCharacter: pfUI_config, pfUI_init, pfUI_playerDB diff --git a/pfUI.toc b/pfUI.toc index 9c76bc6c..1a7148fe 100644 --- a/pfUI.toc +++ b/pfUI.toc @@ -3,7 +3,7 @@ ## Author: Shagu ## Notes: A complete user interface replacement. ## Notes-ruRU: Полная замена пользовательского интерфейса. -## Version: 6.2.5 +## Version: 6.2.6 ## SavedVariables: pfUI_profiles, pfUI_addon_profiles, pfUI_cache ## SavedVariablesPerCharacter: pfUI_config, pfUI_init, pfUI_playerDB