About
Library for instant health updates via combat log. Only group members; other units do not receive instant updates.
Because of technical limitations melee auto attack damage is not instant.
Usage
local InstantHealth = LibStub("LibInstantHealth-1.0")
Use InstantHealth.UnitHealth(unit) where you would use UnitHealth(unit), InstantHealth.UnitHealthMax(unit) where you would use UnitHealthMax(unit), and instead of
frame:SetScript("OnEvent", onEvent)
frame:RegisterEvent(event)
frame:RegisterUnitEvent(event, unit1, unit2)
frame:UnregisterEvent(event)
register the events like this
InstantHealth.RegisterCallback(frame, event, onEvent, frame)
InstantHealth.RegisterCallback(frame, event, function (self, event, unit)
if unit == unit1 or unit == unit2 then
onEvent(self, event, unit)
end
end, frame)
InstantHealth.UnregisterCallback(frame, event)
where event is "UNIT_HEALTH", "UNIT_MAXHEALTH", or "UNIT_HEALTH_FREQUENT".
UNIT_HEALTH, UNIT_MAXHEALTH and UNIT_HEALTH_FREQUENT events fire when they normally would; additionally, UNIT_HEALTH_FREQUENT is fired when the health is updated via combat log events.
Because of the potentially large number of UNIT_HEALTH_FREQUENT events, it is recommended to update health bars etc. in OnUpdate if necessary, and not on each UNIT_HEALTH_FREQUENT event.
It is not recommended to use InstantHealth.UnitHealth(unit) and InstantHealth.UnitHealthMax(unit) within event handlers of Blizzard's UNIT_HEALTH, UNIT_MAXHEALTH, UNIT_HEALTH_FREQUENT, and COMBAT_LOG_EVENT/COMBAT_LOG_EVENT_UNFILTERED.

