From e6a1be113a65f9bac854216f2d0bcebe12a2d70a Mon Sep 17 00:00:00 2001 From: Simpy Date: Sat, 25 Jan 2025 03:08:45 -0500 Subject: [PATCH 1/8] 13.82 --- CHANGELOG.md | 19 +++++++++++++++++++ ElvUI/Core/init.lua | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c31ddf8666..c0c538a811 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +### Version 13.82 [ January 25th 2025 ] +* Working on something to profile the performance of ElvUI and oUF functions. +* Optimized part of the framework and aura filtering for Unitframes and Nameplates. +* Range of Unitframes uses a new system; you can now select which spells determine range in options. +* Range Tags removed because we no longer use the library that provided the range distancing. +* System Datatext uses a new method to track FPS and holding Shift will show Average FPS, along with Lowest and Highest FPS. +* Smooth Bar toggles for Top Aura status bars as well as Health, Power, Castbar, Classbar, Aurabars for Unitframe and Nameplates. +* Multishot and Aimed Shot cast time added to Castbars (for Classic). +* Stone Bulwark added to Whitelist and Turtle Buff filters. +* Combat Indicator allowed on raid frames. +* Equipment Datatext was broken. +* Chat having a silly little pixel at the bottom center should be gone. +* Support for CUSTOM_CLASS_COLORS directly, under Blizzard Improvements. +* Unitframe option Max Allowed Groups is now Retail only. +* Role icon support for Classic Anniversary realms. +* Datatext added to track Mythic+ score. (Thanks Rubgrsch) +* Nameplates can be toggled by conditions (Instance Type or if Resting) for Friendly, Enemy; this also can override the nameplate stacking setting. +* Dual Spec profiles can be enabled for Classic Anniversary realms. + ### Version 13.81 [ November 19th 2024 ] * Blacklisted Auras: Well-Honed Instincts * Unitframe color options added to set Health Breakpoint, only for Friendly units, and Color Backdrop. (Thanks BeeVa) diff --git a/ElvUI/Core/init.lua b/ElvUI/Core/init.lua index d37b94243c..24fc853e4d 100644 --- a/ElvUI/Core/init.lua +++ b/ElvUI/Core/init.lua @@ -127,7 +127,7 @@ end function E:ParseVersionString(addon) local version = GetAddOnMetadata(addon, 'Version') if strfind(version, 'project%-version') then - return 13.81, '13.81-git', nil, true + return 13.82, '13.82-git', nil, true else local release, extra = strmatch(version, '^v?([%d.]+)(.*)') return tonumber(release), release..extra, extra ~= '' From f7a3e8d3371b52b93ce9df196e3a882f6828f684 Mon Sep 17 00:00:00 2001 From: Hurstilol <85832226+Hurstilol@users.noreply.github.com> Date: Sat, 25 Jan 2025 09:10:41 +0100 Subject: [PATCH 2/8] Update Filters.lua (#1449) Wrong number of ticks for FoF shown, reduced by 1 to match the ingamebehaviour --- ElvUI/Mainline/Filters/Filters.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ElvUI/Mainline/Filters/Filters.lua b/ElvUI/Mainline/Filters/Filters.lua index 1e4cc42560..2071090886 100644 --- a/ElvUI/Mainline/Filters/Filters.lua +++ b/ElvUI/Mainline/Filters/Filters.lua @@ -1171,7 +1171,7 @@ G.unitframe.ChannelTicks = { [120360] = 15, -- Barrage [257044] = 7, -- Rapid Fire -- Monk - [113656] = 5, -- Fists of Fury + [113656] = 4, -- Fists of Fury } -- Spells that chain, second step From 96961eb740cbf1481fb3cf81ba15a00254a20b8c Mon Sep 17 00:00:00 2001 From: Repooc Date: Sat, 25 Jan 2025 18:55:51 -0500 Subject: [PATCH 3/8] RegisterUnitEvent is nil --- ElvUI/Core/Modules/UnitFrames/UnitFrames.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua b/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua index 3c2be19f74..5a42c3d3ec 100644 --- a/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua +++ b/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua @@ -2145,7 +2145,7 @@ function UF:Initialize() if E.Retail or E.Cata then UF:RegisterEvent('PLAYER_TALENT_UPDATE', 'UpdateRangeSpells') elseif E.ClassicSOD and E.myclass == 'MAGE' then - UF:RegisterUnitEvent('UNIT_INVENTORY_CHANGED', 'player') + UF:RegisterEvent('UNIT_INVENTORY_CHANGED') end UF:DisableBlizzard() From 2c41ae901df8a936b25b244d6c37206c6136ecdd Mon Sep 17 00:00:00 2001 From: Repooc Date: Sat, 25 Jan 2025 21:55:21 -0500 Subject: [PATCH 4/8] should be able to use this for whom ever allows roles, no? --- ElvUI_Options/Core/Tooltip.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ElvUI_Options/Core/Tooltip.lua b/ElvUI_Options/Core/Tooltip.lua index 09fa695fd3..2da684ae72 100644 --- a/ElvUI_Options/Core/Tooltip.lua +++ b/ElvUI_Options/Core/Tooltip.lua @@ -23,7 +23,7 @@ General.targetInfo = ACH:Toggle(L["Target Info"], L["When in a raid group displa General.playerTitles = ACH:Toggle(L["Player Titles"], L["Display player titles."], 2) General.guildRanks = ACH:Toggle(L["Guild Ranks"], L["Display guild ranks if a unit is guilded."], 3) General.alwaysShowRealm = ACH:Toggle(L["Always Show Realm"], nil, 4) -General.role = ACH:Toggle(L["ROLE"], L["Display the unit role in the tooltip."], 5, nil, nil, nil, nil, nil, nil, not E.Retail) +General.role = ACH:Toggle(L["ROLE"], L["Display the unit role in the tooltip."], 5, nil, nil, nil, nil, nil, nil, not E.allowRoles) General.showMount = ACH:Toggle(L["Current Mount"], L["Display current mount the unit is riding."], 6, nil, nil, nil, nil, nil, nil, not E.Retail) General.gender = ACH:Toggle(L["Gender"], L["Displays the gender of players."], 7) General.showElvUIUsers = ACH:Toggle(L["Show ElvUI Users"], L["Show ElvUI users and their version of ElvUI."], 8) From fe60c958c97e55b82199ee1f1a4c3376e079c780 Mon Sep 17 00:00:00 2001 From: Simpy Date: Sat, 25 Jan 2025 22:03:33 -0500 Subject: [PATCH 5/8] dont bother checking the itemlink when its not player either --- ElvUI/Core/Modules/UnitFrames/UnitFrames.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua b/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua index 5a42c3d3ec..08a23c2490 100644 --- a/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua +++ b/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua @@ -1030,10 +1030,12 @@ do local chestSlotItem, legSlotItem -- local cache of the items function UF:UNIT_INVENTORY_CHANGED(_, unit) -- limited to Mages only currently + if unit ~= 'player' then return end + local ChestItem = GetInventoryItemLink('player', ChestSlotID) -- Mage: Regeneration local LegItem = GetInventoryItemLink('player', LegSlotID) -- Mage: Mass Regeneration - if unit == 'player' and (chestSlotItem ~= ChestItem or legSlotItem ~= LegItem) then + if chestSlotItem ~= ChestItem or legSlotItem ~= LegItem then chestSlotItem = ChestItem legSlotItem = LegItem From 809957ad409cad9d9e56de8d47e11b785c27a3c7 Mon Sep 17 00:00:00 2001 From: Simpy Date: Sun, 26 Jan 2025 18:31:59 -0500 Subject: [PATCH 6/8] fix fake castbar displaying when disabled --- ElvUI_Libraries/Core/oUF/elements/castbar.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ElvUI_Libraries/Core/oUF/elements/castbar.lua b/ElvUI_Libraries/Core/oUF/elements/castbar.lua index 8c567673a1..9a5bb37431 100644 --- a/ElvUI_Libraries/Core/oUF/elements/castbar.lua +++ b/ElvUI_Libraries/Core/oUF/elements/castbar.lua @@ -714,6 +714,10 @@ local function Disable(self) self:UnregisterEvent('UNIT_SPELLCAST_NOT_INTERRUPTIBLE', CastInterruptible) end + -- ElvUI block + self:UnregisterEvent('UNIT_SPELLCAST_SENT', UNIT_SPELLCAST_SENT) + -- end block + element:SetScript('OnUpdate', nil) end end From 6e3f84e88a2da443cbabde73181686be23954e8b Mon Sep 17 00:00:00 2001 From: Simpy Date: Sun, 26 Jan 2025 19:05:39 -0500 Subject: [PATCH 7/8] account for rapid fire when casting fake casts (aimed + multishot) --- ElvUI_Libraries/Core/oUF/elements/castbar.lua | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ElvUI_Libraries/Core/oUF/elements/castbar.lua b/ElvUI_Libraries/Core/oUF/elements/castbar.lua index 9a5bb37431..0bd779e92a 100644 --- a/ElvUI_Libraries/Core/oUF/elements/castbar.lua +++ b/ElvUI_Libraries/Core/oUF/elements/castbar.lua @@ -115,6 +115,7 @@ local GetUnitEmpowerHoldAtMaxTime = GetUnitEmpowerHoldAtMaxTime -- GLOBALS: CastingBarFrame, CastingBarFrame_OnLoad, CastingBarFrame_SetUnit local tradeskillCurrent, tradeskillTotal, mergeTradeskill = 0, 0, false +local specialAuras = {} -- ms modifier local specialCast = {} -- ms duration if oUF.isClassic then specialCast[2643] = 500 -- Multishot R1 @@ -128,6 +129,24 @@ if oUF.isClassic then specialCast[20902] = 3000 -- Aimed Shot R4 specialCast[20903] = 3000 -- Aimed Shot R5 specialCast[20904] = 3000 -- Aimed Shot R6 + + specialAuras[3045] = 0.6 -- Rapid Fire (1 - 0.4, 40%) +end + +local function SpecialActive(frame, filter) + if not next(specialAuras) then return end + + local index = 1 + local name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(frame.unit, index, filter) + while name do + local speedMod = specialAuras[spellID] + if speedMod then + return speedMod + end + + index = index + 1 + name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(frame.unit, index, filter) + end end -- end block @@ -253,6 +272,11 @@ local function CastStart(self, real, unit, castGUID, spellID, castTime) castTime = castDuration -- prefer a real duration time, otherwise use the static duration end + local speedMod = SpecialActive(self, 'HELPFUL') + if speedMod then + castTime = castTime * speedMod + end + castID = castGUID startTime = GetTime() * 1000 endTime = startTime + castTime From b511d4ad69fbdb9067a021eb7f6cbf6e9208d33b Mon Sep 17 00:00:00 2001 From: Simpy Date: Sun, 26 Jan 2025 19:20:50 -0500 Subject: [PATCH 8/8] go by unit instead of frame.unit --- ElvUI_Libraries/Core/oUF/elements/castbar.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ElvUI_Libraries/Core/oUF/elements/castbar.lua b/ElvUI_Libraries/Core/oUF/elements/castbar.lua index 0bd779e92a..f75a71fe76 100644 --- a/ElvUI_Libraries/Core/oUF/elements/castbar.lua +++ b/ElvUI_Libraries/Core/oUF/elements/castbar.lua @@ -133,11 +133,11 @@ if oUF.isClassic then specialAuras[3045] = 0.6 -- Rapid Fire (1 - 0.4, 40%) end -local function SpecialActive(frame, filter) +local function SpecialActive(unit, filter) if not next(specialAuras) then return end local index = 1 - local name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(frame.unit, index, filter) + local name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(unit, index, filter) while name do local speedMod = specialAuras[spellID] if speedMod then @@ -145,7 +145,7 @@ local function SpecialActive(frame, filter) end index = index + 1 - name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(frame.unit, index, filter) + name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(unit, index, filter) end end -- end block @@ -272,7 +272,7 @@ local function CastStart(self, real, unit, castGUID, spellID, castTime) castTime = castDuration -- prefer a real duration time, otherwise use the static duration end - local speedMod = SpecialActive(self, 'HELPFUL') + local speedMod = SpecialActive(unit, 'HELPFUL') if speedMod then castTime = castTime * speedMod end