feat: HideCooldownErrors / MuteErrorSpeech option

Adds the 'Hide Ability not ready warnings' option to FasterLootPanel and
wires up a hook on UIErrorsFrame.AddMessage that suppresses the red
'Ability not ready', 'Spell is not ready' and 'Another action is in
progress' messages when the option is on. Other errors (out of range,
line of sight, etc.) still appear normally.

Includes the saved-var loaders / setters in eventHandler and the default
'Off' init in LeaPlusLC:Isolated().
This commit is contained in:
2026-05-24 18:26:43 +02:00
parent 9157d38c40
commit 41b9479a0a
+38 -3
View File
@@ -1784,6 +1784,8 @@ function LeaPlusLC:Isolated()
LeaPlusLC:MakeCB(FasterLootPanel, "SmallerErrorFrame", "Smaller Error Frame", 16, -92, false, "If checked, your red error text frame, will be only one line long.")
LeaPlusLC:MakeCB(FasterLootPanel, "FasterErrorFrame", "Faster Error Frame", 16, -112, false, "If checked, your red error text frame, will be faster to fade|n(1 second instead of 5).")
LeaPlusLC:MakeCB(FasterLootPanel, "NoLootWorldforged", "Skip auto-loot for Worldforged items", 16, -132, false, "If checked, worldforged items will be left in the loot window instead of being auto-looted, so you can decide which ones to keep.")
LeaPlusLC:MakeCB(FasterLootPanel, "HideCooldownErrors", "Hide 'Ability not ready' warnings", 16, -152, false, "If checked, the red 'Ability not ready', 'Spell is not ready' and 'Another action is in progress' messages are suppressed.|nOther errors (out of range, line of sight, etc.) still appear.")
LeaPlusLC:MakeCB(FasterLootPanel, "MuteErrorSpeech", "Mute error sound", 16, -172, false, "If checked, the spoken error sound (e.g. \"I can't do that yet\") is silenced.|nToggles the Sound_EnableErrorSpeech CVar.")
LeaPlusLC:MakeTx(FasterLootPanel, "Full Inventory Sound", 356, -72)
LeaPlusLC:MakeSL(FasterLootPanel, "FullInvSound", "Drag to set the desired sound played when your inventory is Full. Set 0 to disable sound.", 0, 3, 1, 356, -92, "%.0f")
@@ -1824,9 +1826,35 @@ function LeaPlusLC:Isolated()
end
SetErroFrameFadeTime()
--===== Hook UIErrorsFrame.AddMessage once to suppress cooldown nag when toggled on =====--
if not LeaPlusLC.cooldownErrorFilterInstalled then
local origAddMessage = UIErrorsFrame.AddMessage
UIErrorsFrame.AddMessage = function(self, msg, ...)
if LeaPlusLC["HideCooldownErrors"] == "On"
and (msg == SPELL_FAILED_NOT_READY
or msg == ERR_ABILITY_COOLDOWN
or msg == SPELL_FAILED_SPELL_IN_PROGRESS
or msg == SPELL_FAILED_ITEM_NOT_READY) then
return
end
return origAddMessage(self, msg, ...)
end
LeaPlusLC.cooldownErrorFilterInstalled = true
end
local function SetMuteErrorSpeech()
if LeaPlusLC["MuteErrorSpeech"] == "On" then
SetCVar("Sound_EnableErrorSpeech", 0)
else
SetCVar("Sound_EnableErrorSpeech", 1)
end
end
SetMuteErrorSpeech()
LeaPlusCB["FullInvSound"]:HookScript("OnValueChanged", SetFullInvSliderText)
LeaPlusCB["SmallerErrorFrame"]:HookScript("OnClick", SetErrorFrameHeight)
LeaPlusCB["FasterErrorFrame"]:HookScript("OnClick", SetErroFrameFadeTime)
LeaPlusCB["MuteErrorSpeech"]:HookScript("OnClick", SetMuteErrorSpeech)
@@ -1848,9 +1876,12 @@ function LeaPlusLC:Isolated()
LeaPlusLC["SmallerErrorFrame"] = "Off"
LeaPlusLC["FasterErrorFrame"] = "Off"
LeaPlusLC["NoLootWorldforged"] = "Off"
LeaPlusLC["HideCooldownErrors"] = "Off"
LeaPlusLC["MuteErrorSpeech"] = "Off"
LeaPlusLC["FullInvSound"] = 1
UIErrorsFrame:SetHeight(60)
UIErrorsFrame:SetTimeVisible(5)
SetCVar("Sound_EnableErrorSpeech", 1)
-- Refresh panel
FasterLootPanel:Hide();
FasterLootPanel:Show()
@@ -17097,9 +17128,11 @@ local function eventHandler(self, event, arg1, arg2, ...)
LeaPlusLC:LoadVarNum("ViewPortResizeBottom", 0, 0, 300) -- Resize bottom border
LeaPlusLC:LoadVarNum("ViewPortAlpha", 0, 0, 0.9) -- Border alpha
LeaPlusLC:LoadVarNum("FullInvSound", 1, 0, 3)
LeaPlusLC:LoadVarChk("SmallerErrorFrame", "Off") -- Release in PvP Exclude Alterac Valley
LeaPlusLC:LoadVarChk("FasterErrorFrame", "Off") -- Release in PvP Exclude Alterac Valley
LeaPlusLC:LoadVarChk("SmallerErrorFrame", "Off") -- Smaller error frame
LeaPlusLC:LoadVarChk("FasterErrorFrame", "Off") -- Faster error frame
LeaPlusLC:LoadVarChk("NoLootWorldforged", "Off") -- CoA: skip auto-loot for worldforged items
LeaPlusLC:LoadVarChk("HideCooldownErrors", "Off") -- Hide "Ability not ready" red text
LeaPlusLC:LoadVarChk("MuteErrorSpeech", "Off") -- Mute spoken error sound
LeaPlusLC:LoadVarChk("NoRestedEmotes", "Off") -- Silence rested emotes
@@ -17551,8 +17584,10 @@ local function eventHandler(self, event, arg1, arg2, ...)
LeaPlusDB["ViewPortAlpha"] = LeaPlusLC["ViewPortAlpha"]
LeaPlusDB["FullInvSound"] = LeaPlusLC["FullInvSound"]
LeaPlusDB["SmallerErrorFrame"] = LeaPlusLC["SmallerErrorFrame"]
LeaPlusDB["FasterErrorFrame"] = LeaPlusLC["SmallerErrorFrame"]
LeaPlusDB["FasterErrorFrame"] = LeaPlusLC["FasterErrorFrame"]
LeaPlusDB["NoLootWorldforged"] = LeaPlusLC["NoLootWorldforged"]
LeaPlusDB["HideCooldownErrors"] = LeaPlusLC["HideCooldownErrors"]
LeaPlusDB["MuteErrorSpeech"] = LeaPlusLC["MuteErrorSpeech"]
LeaPlusDB["NoRestedEmotes"] = LeaPlusLC["NoRestedEmotes"]
LeaPlusDB["MuteGameSounds"] = LeaPlusLC["MuteGameSounds"]