diff --git a/.pkgmeta b/.pkgmeta index b5d2e8cff7..12fcc069d1 100644 --- a/.pkgmeta +++ b/.pkgmeta @@ -50,7 +50,6 @@ plain-copy: - ElvUI_Libraries/Core/LibAnim - ElvUI_Libraries/Core/LibDeflate - ElvUI_Libraries/Core/LibElvUIPlugin-1.0 - - ElvUI_Libraries/Core/LibRangeCheck-3.0 - ElvUI_Libraries/Core/LibSimpleSticky - ElvUI_Libraries/Core/oUF - ElvUI_Libraries/Core/oUF_Plugins diff --git a/ElvUI/Cata/Modules/Skins/Gossip.lua b/ElvUI/Cata/Modules/Skins/Gossip.lua index 3e6f1d6437..e236f9a1aa 100644 --- a/ElvUI/Cata/Modules/Skins/Gossip.lua +++ b/ElvUI/Cata/Modules/Skins/Gossip.lua @@ -120,6 +120,11 @@ function S:GossipFrame() _G.QuestFont:SetTextColor(1, 1, 1) _G.ItemTextPageText:SetTextColor('P', 1, 1, 1) + _G.ItemTextMaterialBotLeft:SetAlpha(0) + _G.ItemTextMaterialBotRight:SetAlpha(0) + _G.ItemTextMaterialTopLeft:SetAlpha(0) + _G.ItemTextMaterialTopRight:SetAlpha(0) + hooksecurefunc(_G.ItemTextPageText, 'SetTextColor', ItemTextPage_SetTextColor) hooksecurefunc(GreetingPanel.ScrollBox, 'Update', GreetingPanel_Update) @@ -127,6 +132,11 @@ function S:GossipFrame() GossipFrame.Background:Hide() end else + _G.ItemTextMaterialBotLeft:SetDrawLayer('ARTWORK', 1) + _G.ItemTextMaterialBotRight:SetDrawLayer('ARTWORK', 1) + _G.ItemTextMaterialTopLeft:SetDrawLayer('ARTWORK', 1) + _G.ItemTextMaterialTopRight:SetDrawLayer('ARTWORK', 1) + local spellTex = createParchment(GreetingPanel) spellTex:SetInside(GreetingPanel.backdrop) GreetingPanel.spellTex = spellTex diff --git a/ElvUI/Classic/Modules/Skins/Gossip.lua b/ElvUI/Classic/Modules/Skins/Gossip.lua index 0f0257a52a..87fb64b72f 100644 --- a/ElvUI/Classic/Modules/Skins/Gossip.lua +++ b/ElvUI/Classic/Modules/Skins/Gossip.lua @@ -120,6 +120,11 @@ function S:GossipFrame() _G.QuestFont:SetTextColor(1, 1, 1) _G.ItemTextPageText:SetTextColor('P', 1, 1, 1) + _G.ItemTextMaterialBotLeft:SetAlpha(0) + _G.ItemTextMaterialBotRight:SetAlpha(0) + _G.ItemTextMaterialTopLeft:SetAlpha(0) + _G.ItemTextMaterialTopRight:SetAlpha(0) + hooksecurefunc(_G.ItemTextPageText, 'SetTextColor', ItemTextPage_SetTextColor) hooksecurefunc(GreetingPanel.ScrollBox, 'Update', GreetingPanel_Update) @@ -127,6 +132,11 @@ function S:GossipFrame() GossipFrame.Background:Hide() end else + _G.ItemTextMaterialBotLeft:SetDrawLayer('ARTWORK', 1) + _G.ItemTextMaterialBotRight:SetDrawLayer('ARTWORK', 1) + _G.ItemTextMaterialTopLeft:SetDrawLayer('ARTWORK', 1) + _G.ItemTextMaterialTopRight:SetDrawLayer('ARTWORK', 1) + local spellTex = createParchment(GreetingPanel) spellTex:SetInside(GreetingPanel.backdrop) GreetingPanel.spellTex = spellTex diff --git a/ElvUI/Core/Defaults/Global.lua b/ElvUI/Core/Defaults/Global.lua index 674d244b71..bf9a15ae4f 100644 --- a/ElvUI/Core/Defaults/Global.lua +++ b/ElvUI/Core/Defaults/Global.lua @@ -195,6 +195,7 @@ G.unitframe = { HUNTER = { ['19503'] = not E.Retail and 'Scatter Shot' or nil, ['2974'] = not E.Retail and 'Wing Clip' or nil, + ['2973'] = E.Cata and 'Raptor Strike' or nil, ['75'] = 'Auto Shot' }, MAGE = { diff --git a/ElvUI/Core/General/API.lua b/ElvUI/Core/General/API.lua index 195da743d8..c015a11f5a 100644 --- a/ElvUI/Core/General/API.lua +++ b/ElvUI/Core/General/API.lua @@ -409,7 +409,7 @@ function E:GetThreatStatusColor(status, nothreat) end function E:GetPlayerRole() - local role = (E.Retail or E.Cata) and UnitGroupRolesAssigned('player') or 'NONE' + local role = E.allowRoles and UnitGroupRolesAssigned('player') or 'NONE' return (role ~= 'NONE' and role) or E.myspecRole or 'NONE' end diff --git a/ElvUI/Core/General/Core.lua b/ElvUI/Core/General/Core.lua index 08694a6f41..bf83c56d01 100644 --- a/ElvUI/Core/General/Core.lua +++ b/ElvUI/Core/General/Core.lua @@ -71,6 +71,7 @@ E.physicalWidth, E.physicalHeight = GetPhysicalScreenSize() E.screenWidth, E.screenHeight = GetScreenWidth(), GetScreenHeight() E.resolution = format('%dx%d', E.physicalWidth, E.physicalHeight) E.perfect = 768 / E.physicalHeight +E.allowRoles = E.Retail or E.Cata or E.ClassicAnniv or E.ClassicAnnivHC E.NewSign = [[|TInterface\OptionsFrame\UI-OptionsFrame-NewFeatureIcon:14:14|t]] E.NewSignNoWhatsNew = [[|TInterface\OptionsFrame\UI-OptionsFrame-NewFeatureIcon:14:14:0:0|t]] E.TexturePath = [[Interface\AddOns\ElvUI\Media\Textures\]] -- for plugins? diff --git a/ElvUI/Core/Modules/Chat/Chat.lua b/ElvUI/Core/Modules/Chat/Chat.lua index 2b1086fd1b..bba8a98a5a 100644 --- a/ElvUI/Core/Modules/Chat/Chat.lua +++ b/ElvUI/Core/Modules/Chat/Chat.lua @@ -2801,7 +2801,7 @@ function CH:FCF_SetWindowAlpha(frame, alpha) end function CH:CheckLFGRoles() - if not E.Retail or not CH.db.lfgIcons or not IsInGroup() then return end + if not E.allowRoles or not CH.db.lfgIcons or not IsInGroup() then return end wipe(lfgRoles) diff --git a/ElvUI/Core/Modules/Misc/RaidUtility.lua b/ElvUI/Core/Modules/Misc/RaidUtility.lua index 4dc80e184a..22fdca02dd 100644 --- a/ElvUI/Core/Modules/Misc/RaidUtility.lua +++ b/ElvUI/Core/Modules/Misc/RaidUtility.lua @@ -809,21 +809,21 @@ function RU:Initialize() close:SetPoint('TOPRIGHT', utility, 'BOTTOMRIGHT', -x, -y) end end - ]=], E.Classic and 0 or E:Scale(1), E:Scale(30), E.Classic and 1 or 0)) + ]=], E.allowRoles and E:Scale(1) or 0, E:Scale(30), E.allowRoles and 0 or 1)) ShowButton:SetScript('OnDragStart', RU.DragStart_ShowButton) ShowButton:SetScript('OnDragStop', RU.DragStop_ShowButton) E.FrameLocks.RaidUtility_ShowButton = true RU:CreateTargetIcons() - local CloseButton = RU:CreateUtilButton('RaidUtility_CloseButton', RaidUtilityPanel, 'SecureHandlerClickTemplate', PANEL_WIDTH * 0.6, BUTTON_HEIGHT + (E.Classic and 0 or 8), 'TOP', RaidUtilityPanel, 'BOTTOM', 0, 0, _G.CLOSE, nil, nil, nil, RU.OnClick_CloseButton) + local CloseButton = RU:CreateUtilButton('RaidUtility_CloseButton', RaidUtilityPanel, 'SecureHandlerClickTemplate', PANEL_WIDTH * 0.6, BUTTON_HEIGHT + (E.allowRoles and 8 or 0), 'TOP', RaidUtilityPanel, 'BOTTOM', 0, 0, _G.CLOSE, nil, nil, nil, RU.OnClick_CloseButton) SecureHandlerSetFrameRef(CloseButton, 'RaidUtility_ShowButton', ShowButton) CloseButton:SetAttribute('_onclick', [=[self:GetParent():Hide(); self:GetFrameRef('RaidUtility_ShowButton'):Show()]=]) SecureHandlerSetFrameRef(RaidUtilityPanel, 'RaidUtility_CloseButton', CloseButton) local BUTTON_WIDTH = PANEL_WIDTH - 20 local RaidControlButton = RU:CreateUtilButton('RaidUtility_RaidControlButton', RaidUtilityPanel, nil, BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', RaidUtilityPanel, 'TOPLEFT', 5, -4, L["Raid Menu"], nil, nil, nil, RU.OnClick_RaidControlButton) - local ReadyCheckButton = RU:CreateUtilButton('RaidUtility_ReadyCheckButton', RaidUtilityPanel, nil, BUTTON_WIDTH * (E.Classic and 1 or 0.5), BUTTON_HEIGHT, 'TOPLEFT', RaidControlButton, 'BOTTOMLEFT', 0, -5, _G.READY_CHECK, nil, buttonEvents, RU.OnEvent_ReadyCheckButton, RU.OnClick_ReadyCheckButton) + local ReadyCheckButton = RU:CreateUtilButton('RaidUtility_ReadyCheckButton', RaidUtilityPanel, nil, (BUTTON_WIDTH * (E.allowRoles and 0.5 or 1)) + (E.allowRoles and 0 or 5), BUTTON_HEIGHT, 'TOPLEFT', RaidControlButton, 'BOTTOMLEFT', 0, -5, _G.READY_CHECK, nil, buttonEvents, RU.OnEvent_ReadyCheckButton, RU.OnClick_ReadyCheckButton) RU:CreateUtilButton('RaidUtility_DisbandRaidButton', RaidUtilityPanel, nil, BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', RaidControlButton, 'TOPRIGHT', 5, 0, L["Disband Group"], nil, nil, nil, RU.OnClick_DisbandRaidButton) local MainTankButton = RU:CreateUtilButton('RaidUtility_MainTankButton', RaidUtilityPanel, 'SecureActionButtonTemplate', BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', ReadyCheckButton, 'BOTTOMLEFT', 0, -5, _G.MAINTANK, nil, buttonEvents, RU.OnEvent_MainTankButton) @@ -840,13 +840,15 @@ function RU:Initialize() local RaidCountdownButton if hasCountdown then - RaidCountdownButton = RU:CreateUtilButton('RaidUtility_RaidCountdownButton', RaidUtilityPanel, nil, BUTTON_WIDTH * (E.Retail and 0.5 or 0.8), BUTTON_HEIGHT, 'TOPLEFT', MainTankButton, 'BOTTOMLEFT', 0, -5, L["Countdown"], nil, nil, nil, RU.OnClick_RaidCountdownButton) + RaidCountdownButton = RU:CreateUtilButton('RaidUtility_RaidCountdownButton', RaidUtilityPanel, nil, (BUTTON_WIDTH * ((E.Retail or E.Cata) and 0.8 or 1)) + ((E.Retail or E.Cata) and 0 or 5), BUTTON_HEIGHT, 'TOPLEFT', MainTankButton, 'BOTTOMLEFT', 0, -5, L["Countdown"], nil, nil, nil, RU.OnClick_RaidCountdownButton) end - if not E.Classic then + if E.allowRoles then RU:CreateUtilButton('RaidUtility_RoleCheckButton', RaidUtilityPanel, nil, BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', ReadyCheckButton, 'TOPRIGHT', 5, 0, _G.ROLE_POLL, nil, buttonEvents, RU.OnEvent_RoleCheckButton, RU.OnClick_RoleCheckButton) RU:CreateRoleIcons() + end + if not E.Classic then if _G.CompactRaidFrameManager then -- Reposition/Resize and Reuse the World Marker Button local marker = _G.CompactRaidFrameManagerDisplayFrameLeaderOptionsRaidWorldMarkerButton diff --git a/ElvUI/Core/Modules/Nameplates/Nameplates.lua b/ElvUI/Core/Modules/Nameplates/Nameplates.lua index 242d5aa616..e30b0094a9 100644 --- a/ElvUI/Core/Modules/Nameplates/Nameplates.lua +++ b/ElvUI/Core/Modules/Nameplates/Nameplates.lua @@ -560,7 +560,7 @@ function NP:GROUP_ROSTER_UPDATE() for i = 1, (isInRaid and GetNumGroupMembers()) or GetNumSubgroupMembers() do local unit = group..i if UnitExists(unit) then - NP.GroupRoles[UnitName(unit)] = not E.Retail and (GetPartyAssignment('MAINTANK', unit) and 'TANK' or 'NONE') or UnitGroupRolesAssigned(unit) + NP.GroupRoles[UnitName(unit)] = not E.allowRoles and (GetPartyAssignment('MAINTANK', unit) and 'TANK' or 'NONE') or UnitGroupRolesAssigned(unit) end end end diff --git a/ElvUI/Core/Modules/Nameplates/StyleFilter.lua b/ElvUI/Core/Modules/Nameplates/StyleFilter.lua index 08d7a116ac..2ebbfe4348 100644 --- a/ElvUI/Core/Modules/Nameplates/StyleFilter.lua +++ b/ElvUI/Core/Modules/Nameplates/StyleFilter.lua @@ -965,7 +965,7 @@ function NP:StyleFilterConditionCheck(frame, filter, trigger) end -- Unit Role - if E.Retail and trigger.unitRole and (trigger.unitRole.tank or trigger.unitRole.healer or trigger.unitRole.damager) then + if E.allowRoles and trigger.unitRole and (trigger.unitRole.tank or trigger.unitRole.healer or trigger.unitRole.damager) then local role = UnitGroupRolesAssigned(frame.unit) if trigger.unitRole[NP.TriggerConditions.roles[role]] then passed = true else return end end diff --git a/ElvUI/Core/Modules/Tooltip/Tooltip.lua b/ElvUI/Core/Modules/Tooltip/Tooltip.lua index 6468b6f9cd..4a90c75f1e 100644 --- a/ElvUI/Core/Modules/Tooltip/Tooltip.lua +++ b/ElvUI/Core/Modules/Tooltip/Tooltip.lua @@ -571,11 +571,11 @@ function TT:GameTooltip_OnTooltipSetUnit(data) TT:AddTargetInfo(self, unit) end - if E.Retail then - if TT.db.role then - TT:AddRoleInfo(self, unit) - end + if TT.db.role and E.allowRoles then + TT:AddRoleInfo(self, unit) + end + if E.Retail then if not InCombatLockdown() then if not isShiftKeyDown and (isPlayerUnit and unit ~= 'player') and TT.db.showMount and E.Retail then TT:AddMountInfo(self, unit) diff --git a/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua b/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua index a4c5daa8a2..1a3e16d616 100644 --- a/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua +++ b/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua @@ -27,7 +27,7 @@ function UF:GetRoleIcon(frame) local rnd = random(1, 3) return (rnd == 1 and 'TANK') or (rnd == 2 and 'HEALER') or 'DAMAGER' else - return (E.Retail or E.Cata) and UnitGroupRolesAssigned(frame.unit) + return E.allowRoles and UnitGroupRolesAssigned(frame.unit) end end diff --git a/ElvUI/ElvUI_Mainline.toc b/ElvUI/ElvUI_Mainline.toc index 61b44ca06a..fd850f83df 100644 --- a/ElvUI/ElvUI_Mainline.toc +++ b/ElvUI/ElvUI_Mainline.toc @@ -6,7 +6,7 @@ ## SavedVariablesPerCharacter: ElvCharacterDB ## OptionalDeps: SharedMedia, Tukui, Masque ## RequiredDeps: ElvUI_Libraries -## Interface: 110005 +## Interface: 110007 ## X-Tukui-ProjectID: -2 ## X-Tukui-ProjectFolders: ElvUI, ElvUI_Libraries, ElvUI_Options ## AddonCompartmentFunc: ElvUI_AddonCompartmentFunc diff --git a/ElvUI/LICENSE.txt b/ElvUI/LICENSE.txt index 56c6153c31..93e22c55f5 100644 --- a/ElvUI/LICENSE.txt +++ b/ElvUI/LICENSE.txt @@ -1,5 +1,5 @@ Custom License for: ElvUI - Copyright ©2009-2024 The contents of this addon, excluding third-party resources, are + Copyright ©2009-2025 The contents of this addon, excluding third-party resources, are copyrighted to their authors with all rights reserved. This addon is free to use and the authors hereby grant you the following rights: diff --git a/ElvUI/Mainline/Modules/DataTexts/DungeonScore.lua b/ElvUI/Mainline/Modules/DataTexts/DungeonScore.lua new file mode 100644 index 0000000000..277ea3c49c --- /dev/null +++ b/ElvUI/Mainline/Modules/DataTexts/DungeonScore.lua @@ -0,0 +1,51 @@ +local E, L, V, P, G = unpack(ElvUI) +local DT = E:GetModule('DataTexts') + +local ipairs = ipairs +local format = format + +local UNKNOWN = UNKNOWN +local HIGHLIGHT_FONT_COLOR = HIGHLIGHT_FONT_COLOR +local DUNGEON_SCORE_LINK_RATING = DUNGEON_SCORE_LINK_RATING:gsub('%%s', '') + +local GetMapUIInfo = C_ChallengeMode.GetMapUIInfo +local GetOverallDungeonScore = C_ChallengeMode.GetOverallDungeonScore +local GetDungeonScoreRarityColor = C_ChallengeMode.GetDungeonScoreRarityColor +local GetSpecificDungeonOverallScoreRarityColor = C_ChallengeMode.GetSpecificDungeonOverallScoreRarityColor +local GetPlayerMythicPlusRatingSummary = C_PlayerInfo.GetPlayerMythicPlusRatingSummary + +local function OnEnter() + DT.tooltip:ClearLines() + + local score = GetOverallDungeonScore() + local color = GetDungeonScoreRarityColor(score) or HIGHLIGHT_FONT_COLOR + + local classColor = E:ClassColor(E.myclass) + DT.tooltip:AddLine(format('|c%s%s|r', classColor.colorStr, E.myname), 1, 1, 1, true) + DT.tooltip:AddLine(E.myLocalizedClass, 1, 1, 1, true) + DT.tooltip:AddLine(format('%s|c%s%s|r', DUNGEON_SCORE_LINK_RATING, E:RGBToHex(color.r, color.g, color.b, 'ff'), score), nil, nil, nil, true) + + local summary = GetPlayerMythicPlusRatingSummary('player') + if summary and summary.runs then + for i, v in ipairs(summary.runs) do + if i == 1 then + DT.tooltip:AddLine(' ') + end + + local mapName = GetMapUIInfo(v.challengeModeID) or UNKNOWN + local scoreColor = GetSpecificDungeonOverallScoreRarityColor(v.mapScore) or HIGHLIGHT_FONT_COLOR + DT.tooltip:AddDoubleLine(mapName, format('%d (%s%d)', v.mapScore, v.finishedSuccess and '+' or '-', v.bestRunLevel), 1, 1, 1, scoreColor.r, scoreColor.g, scoreColor.b) + end + end + + DT.tooltip:Show() +end + +local function OnEvent(self) + local score = GetOverallDungeonScore() + local color = GetDungeonScoreRarityColor(score) or HIGHLIGHT_FONT_COLOR + + self.text:SetFormattedText('|c%s%s|r', E:RGBToHex(color.r, color.g, color.b, 'ff'), score) +end + +DT:RegisterDatatext('DungeonScore', nil, {'CHALLENGE_MODE_COMPLETED'}, OnEvent, nil, nil, OnEnter, nil, _G.DUNGEON_SCORE) diff --git a/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml b/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml index ce41e0184e..076f73b330 100644 --- a/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml +++ b/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml @@ -7,6 +7,7 @@