fix(sync): enforce THROTTLE as hard floor on threat broadcasts

Large threat deltas could bypass the 0.4 s gate entirely, sending
unbounded SendAddonMessage traffic in early combat (3.3.5 servers
disconnect chatty senders). Throttle now always applies; the
MIN_DELTA filter is checked separately afterwards.
This commit is contained in:
Florian Andrew George Berthold 2026-06-10 02:13:58 +02:00
parent 3f71d66b0e
commit d0c64d75eb

View file

@ -34,7 +34,7 @@ local Omen = LibStub("AceAddon-3.0"):GetAddon("Omen")
if not Omen then return end
local PREFIX = "OMSYNC"
local THROTTLE = 0.4 -- min seconds between sends per (subject, mob)
local THROTTLE = 0.4 -- hard floor: min seconds between sends per (subject, mob)
local STALE = 8 -- seconds; entries older than this are ignored
local MIN_DELTA = 0.05 -- 5%; smaller changes don't trigger a send
@ -98,7 +98,8 @@ function Omen:SyncBroadcastThreat(subjectGUID, mobGUID, value, isTanking)
local age = now - prev.time
local maxV = math.max(value, prev.value, 1)
local pct = math.abs(value - prev.value) / maxV
if age < THROTTLE and pct < MIN_DELTA then return end
if age < THROTTLE then return end -- hard rate floor
if pct < MIN_DELTA then return end
end
lastSend[subjectGUID][mobGUID] = { value = value, time = now }