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/Modules/UnitFrames/UnitFrames.lua b/ElvUI/Core/Modules/UnitFrames/UnitFrames.lua index 3c2be19f74..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 @@ -2145,7 +2147,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() 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 ~= '' diff --git a/ElvUI/Mainline/Filters/Filters.lua b/ElvUI/Mainline/Filters/Filters.lua index b7e89848ff..83b949311b 100644 --- a/ElvUI/Mainline/Filters/Filters.lua +++ b/ElvUI/Mainline/Filters/Filters.lua @@ -1124,7 +1124,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 diff --git a/ElvUI_Libraries/Core/oUF/elements/castbar.lua b/ElvUI_Libraries/Core/oUF/elements/castbar.lua index 8c567673a1..f75a71fe76 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(unit, filter) + if not next(specialAuras) then return end + + local index = 1 + local name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(unit, index, filter) + while name do + local speedMod = specialAuras[spellID] + if speedMod then + return speedMod + end + + index = index + 1 + name, _, _, _, _, _, _, _, _, spellID = oUF:GetAuraData(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(unit, 'HELPFUL') + if speedMod then + castTime = castTime * speedMod + end + castID = castGUID startTime = GetTime() * 1000 endTime = startTime + castTime @@ -714,6 +738,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 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)