File Details
SimpleTauntAnnunce-1.1
- R
- Apr 3, 2026
- 29.49 KB
- 33
- 12.0.1+1
- Retail
File Name
SimpleTauntAnnunce.zip
Supported Versions
- 12.0.1
- 12.0.0
# 1.1.0 — WoW Midnight compatibility update (2025)
This release fully rewrites the event detection engine to be compatible with
WoW Midnight's anti-bot API restrictions. All previously working functionality
is preserved: dual audio notifications (own taunt vs. other tank's taunt),
raid icon display, class-colored names, and all configuration modes.
### Breaking changes
- **`COMBAT_LOG_EVENT_UNFILTERED` removed.** Blizzard made this event entirely
unregisterable in Midnight (even at top-level), as part of the anti-bot
initiative. The event detection engine has been replaced with
`UNIT_SPELLCAST_SUCCEEDED` (see below).
### New features / behaviour changes
- **New event engine: `UNIT_SPELLCAST_SUCCEEDED`.**
Detects taunt casts by the player, player's pet/vehicle, and visible
party/raid members without relying on the combat log.
- Own taunts and pet/vehicle taunts still trigger `soundOwn`.
- Other tanks' taunts still trigger `soundOther`.
- Group membership verified via `UnitInRaid()` / `UnitInParty()` (no
bitmask flags, which are now secret values in Midnight).
- Raid icons retrieved via `GetRaidTargetIndex()` instead of bitmask.
- **Known limitation:** Failed/immune taunts are no longer detectable.
`UNIT_SPELLCAST_SUCCEEDED` only fires for casts that land server-side.
The original "failed (immune)" annotation has been removed from messages.
### Bug fixes
#### Midnight anti-bot "secret values" mitigations
- **`COMBATLOG_OBJECT_RAIDTARGET*` constants** (`RAIDTARGET1`–`8`,
`RAIDTARGET_MASK`) can be `nil` in Midnight. Building a Lua table with
`nil` keys generates a fatal `"table index is nil"` error at addon load.
All constants are now captured at top-level with numeric fallbacks
(e.g. `COMBATLOG_OBJECT_RAIDTARGET1 or 0x00000100`).
- **`COMBATLOG_OBJECT_AFFILIATION_*` and `COMBATLOG_OBJECT_TYPE_PLAYER`**
same treatment — captured locally with historical bitmask fallbacks.
- **`Enum.PartyCategory`** is `nil` in Midnight. Replaced with a local
constant using a safe chain guard:
`(Enum and Enum.PartyCategory and Enum.PartyCategory.Instance) or 2`
- **`spellID` parameter as a "secret value" (multi-layer proxy).** For
`nameplate*` unit IDs, Midnight passes a special proxy value for `spellID`
that defeats successive layers of guards:
- Layer 1: reports as `<no value>` in debugger but is **truthy**
→ bypasses `if not spellID`
- Layer 2: `type()` returns `"number"` for it
→ bypasses `type(spellID) ~= 'number'`
- Layer 3: throws `"table index is secret"` when used as a table index
Final fix: **`pcall`** around the table lookup — immune to any future
changes in the proxy's impersonation strategy.
```lua
local ok, isTaunt = pcall(function() return tauntSpells[spellID] end)
if not ok or not isTaunt then return end
```
#### API removals / replacements
- **`LE_PARTY_CATEGORY_INSTANCE`** removed in WoW 10.0 (Dragonflight).
Replaced with `Enum.PartyCategory.Instance` (now further protected, see above).
- **`RAID_CLASS_COLORS[className].colorStr`** deprecated and removed.
Replaced with `C_ClassColor.GetClassColor(classFileName):WrapTextInColorCode(name)`.
- **`frame:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED')`** called from inside
an event handler triggers `ADDON_ACTION_FORBIDDEN` in Midnight. Even moving
the call to top-level triggers the same error, as the event itself is now
fully protected. Resolved by migrating to `UNIT_SPELLCAST_SUCCEEDED`.
#### Configuration panel (SimpleTauntAnnounce_Config)
- **`InterfaceOptionsCheckButtonTemplate`** removed in WoW 10.0.
Replaced with `UICheckButtonTemplate` plus a manually created
`GameFontHighlight` label.
- **`getglobal(frameName .. "Text")`** removed (was already deprecated since
WoW 3.0). Replaced with direct `CreateFontString` on the checkbox frame.
- **`UIDropDownMenuTemplate` and all `UIDropDownMenu_*` functions** removed in
Midnight. Replaced with a `UIPanelButtonTemplate` button that opens a native
context menu via `MenuUtil.CreateContextMenu()` (API introduced in WoW 10.0).
#### Profiling / info command
- **`UpdateAddOnCPUUsage`, `GetAddOnCPUUsage`, `GetFrameCPUUsage`,
`GetScriptCPUUsage`** removed in WoW 10.x. The `/sta info` CPU section is
now fully nil-guarded and silently skipped if APIs are unavailable.
- **`UpdateAddOnMemoryUsage` / `GetAddOnMemoryUsage`** wrapped with
`C_AddOns.*` namespace fallback for forward compatibility.
---
## 1.0.58 and earlier
Original releases by BeathsCurse. Changelog not included in this repository.
For historical versions see the original CurseForge/WoWInterface release page.