Simple Taunt Announce - reborn

Simple Taunt Announce reborn

File Details

SimpleTauntAnnounce 1.1.4

  • R
  • Apr 24, 2026
  • 32.68 KB
  • 97
  • 12.0.1+1
  • Retail

File Name

SimpleTauntAnnounce-1.1.4.zip

Supported Versions

  • 12.0.1
  • 11.2.7

1.1.4 — Midnight secret boolean hotfix IV (2026)

Follow-up hotfix to 1.1.3. The previous pcall pattern wrapped only the call to the unit API, but Midnight's secret boolean system also blocks boolean evaluation of the return value when that evaluation occurs outside the pcall. This caused 1401+ errors per session from SafeUnitIsUnit.

Bug fixes

  • Boolean evaluation of secret values must occur inside pcall. pcall(UnitIsUnit, a, b) returns the secret boolean as its second value; testing it with ok and result and true or false outside the pcall still throws. Fixed by wrapping both the call and the if r then check inside a single closure for all three helpers:
    • SafeUnitIsUnit — primary fix (reported error)
    • IsPrimaryTank — preventive fix (same vulnerable pattern)
    • IsUnitInGroup — preventive fix (same vulnerable pattern)

Technical notes

The correct Midnight pattern for any combat/unit API that returns a boolean:

local ok, result = pcall(function()
    local r = SomeAPI(args)
    if r then return true end   -- boolean test inside pcall
    return false
end)
return ok and result or false   -- result is now a plain bool, safe to test

Direct if/not/and tests on the return value of pcall — even when pcall itself succeeded — are not sufficient if the API returns a secret boolean.


Follow-up hotfix to 1.1.2. Blizzard extended the secret boolean system to UnitIsUnit(), which now returns a tainted proxy for non-player unit IDs such as "targettarget". This caused 1052 error spam per session.

Bug fixes

  • UnitIsUnit() returns a secret boolean. All five call sites replaced with a new SafeUnitIsUnit(a, b) helper that wraps the call in pcall and returns a plain Lua boolean. Affected paths:
    • Own-taunt detection (player / pet / vehicle check)
    • findNewTank loop (skip-self guard)
    • PATH B group-member guard

Technical notes

Midnight's taint system now covers the return values of UnitIsUnit, UnitDetailedThreatSituation, UnitInRaid, UnitInParty, GetRaidTargetIndex, and spellID from UNIT_SPELLCAST_SUCCEEDED. Any boolean or identifier returned by a combat/unit API in Midnight must be consumed through pcall. Direct if/not tests will crash.