From 9157d38c40d30c5aabfd9e476c25e0d6808df84b Mon Sep 17 00:00:00 2001 From: Florian Berthold Date: Sun, 24 May 2026 18:26:43 +0200 Subject: [PATCH] fix: guard InterfaceOptions globals, SetHighlightTexture, dynamic class list CoA-Beta client compat: - L15198 InterfaceOptions_AddCategory is nil on the CoA reworked FrameXML; guard with 'if InterfaceOptions_AddCategory then ... end' so the Plus options panel registration is skipped silently rather than aborting addon init. - L16477-16478 InterfaceOptionsFrame:HookScript and VideoOptionsFrame:HookScript are nil on the CoA client; guard each individually so PLAYER_LOGIN doesn't crash. - L17186 SetHighlightTexture(0) passes the integer 0 (FDID style) which silently no-ops on 3.3.5. Use "" so the highlight is actually cleared on locked Plus option buttons. - L20066 hardcoded 9-class list excluded DEATHKNIGHT and all CoA custom classes from LeaPlusDB.Cooldowns. Build the list dynamically via GetNumClasses + GetClassInfo so every playable class on the realm gets a cooldown table. --- Leatrix_Plus.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Leatrix_Plus.lua b/Leatrix_Plus.lua index 3dd534e..3d828ee 100644 --- a/Leatrix_Plus.lua +++ b/Leatrix_Plus.lua @@ -15164,7 +15164,7 @@ function LeaPlusLC:Player() pTex:SetAlpha(0.2) pTex:SetTexCoord(0, 1, 1, 0) - InterfaceOptions_AddCategory(interPanel) + if InterfaceOptions_AddCategory then InterfaceOptions_AddCategory(interPanel) end end @@ -16443,8 +16443,8 @@ function LeaPlusLC:RunOnce() ---------------------------------------------------------------------- -- Hide Leatrix Plus if game options panel is shown - InterfaceOptionsFrame:HookScript("OnShow", LeaPlusLC.HideFrames); - VideoOptionsFrame:HookScript("OnShow", LeaPlusLC.HideFrames); + if InterfaceOptionsFrame then InterfaceOptionsFrame:HookScript("OnShow", LeaPlusLC.HideFrames); end + if VideoOptionsFrame then VideoOptionsFrame:HookScript("OnShow", LeaPlusLC.HideFrames); end ---------------------------------------------------------------------- -- Block friend requests @@ -17150,7 +17150,7 @@ local function eventHandler(self, event, arg1, arg2, ...) -- Remove hover from configuration button if there is one local temp = { LeaPlusCB[option]:GetChildren() } if temp and temp[1] and temp[1].t and temp[1].t:GetTexture() == "Interface\\WorldMap\\Gear_64.png" then - temp[1]:SetHighlightTexture(0) + temp[1]:SetHighlightTexture("") temp[1]:SetScript("OnEnter", nil) end end @@ -20027,8 +20027,12 @@ function LeaPlusLC:SlashFunc(str) -- Create main table LeaPlusDB["Cooldowns"] = {} - -- Create class tables - local classList = { "WARRIOR", "PALADIN", "HUNTER", "SHAMAN", "ROGUE", "DRUID", "MAGE", "WARLOCK", "PRIEST" } + -- Create class tables (dynamic: covers DEATHKNIGHT and CoA custom classes) + local classList = {} + for i = 1, GetNumClasses() do + local _, classFile = GetClassInfo(i) + if classFile then tinsert(classList, classFile) end + end for index = 1, #classList do if LeaPlusDB["Cooldowns"][classList[index]] == nil then LeaPlusDB["Cooldowns"][classList[index]] = {}