Commit Graph

12 Commits

Author SHA1 Message Date
Brues b7c3fe5333 Filter unit events with RegisterUnitEvent
ClassicAPI's RegisterUnitEvent registers for an event but only delivers it
when arg1 is one of the given units, so a handler for one unit stops waking
for every other one in the world. Convert the 26 registrations whose unit set
is fixed and known at registration time.

The rule throughout is register the superset and keep the handler's own
check: the filter narrows what arrives, it does not decide what to act on.
castbar is the case that matters -- the player's own casts only ever fire
arg1=="player", never "target"/"focus", so the target and focus bars must
register "player" too, and their UnitIsUnit test is what still rejects a
"player" event while you are targeting a mob.

Two that are not one-line swaps:

  actionbar's two unit events are keys in tables that also drive dispatch, so
  they cannot leave the tables -- and they cannot be plain-registered first,
  because a registration keeps its kind and RegisterUnitEvent over a plain
  one stays plain. They route through a small event_units map instead.

  swingtimer's UNIT_DIED carries a GUID, not a token. The filter is a plain
  case-insensitive string compare with no GUID resolution, so the player's
  own GUID -- fixed for the session -- filters it exactly.

Guards that are now unreachable stay put: the filter applies only when arg1
is a string, so an event that ever fires with a number or no argument is
delivered as if plainly registered, and the handler's own test is what still
rejects it.

Left alone: api/unitframes.lua (the frame's unit changes at runtime and the
handler also matches on GUID), nameplates' six nameplateN events, libdebuff
and libpredict's UNIT_HEALTH (genuinely any unit), and raid.lua's UNIT_PET
(any raid member can own the pet).
2026-09-09 13:24:17 -05:00
shagu 44612d52d0 libhealth: set default values as config fallback 2020-06-08 22:17:38 +02:00
shagu 5932c6db14 libhealth: abort on suspicious health values 2020-05-20 03:07:31 +02:00
shagu 6894567b21 libhealth: mark old cached hp values as valid 2020-05-04 00:01:41 +02:00
shagu 9ca9b91fe1 libhealth: skip if current is already a number 2020-05-03 13:43:40 +02:00
shagu 8b40c1dd4f libhealth: remove legacy db query function 2020-05-03 13:42:39 +02:00
shagu 241272748a libhealth: add function to query by name 2020-05-03 13:30:33 +02:00
shagu 556876b04e libhealth: skip healing combat events 2020-05-03 13:08:42 +02:00
shagu dfa396bb38 libhealth: options to configure estimation threshold 2020-05-03 13:07:27 +02:00
shagu 2d12e49ce3 libhealth: no longer overwrite api calls 2020-04-11 16:30:49 +02:00
shagu 64c9468ce3 libhealth: add option to enable health estimation 2020-03-26 10:32:17 +01:00
shagu aab545e3fc libhealth: initial version of npc health detection 2020-03-24 17:58:25 +01:00