mirror of
https://github.com/brues-code/pfUI.git
synced 2026-11-01 16:36:56 +00:00
Follow target-of-target frames with UNIT_TARGET
A frame whose unit is another unit's target (targettarget, targettargettarget, pettarget, focustarget, partyNtarget) has no token that unit events name, so it polled: bars every 0.2s, a full aura and portrait rescan every second, and a GUID compare to notice swaps. Such a frame now registers its unit events by the unit's GUID, which every unit event also fires with, and UNIT_TARGET by the GUID of every link of its chain. A link retargeting re-points the frame at once and queues one full refresh; the ticks are gone. The 0.2s visibility timer stays for them, since nothing reports a unit going out of sight. Nameplates register UNIT_TARGET on their own token, so a mob turning to someone else recolours its combat state immediately instead of after the colour cache and data tick run out. Drop pfScanActive and the namebuf delay: both guarded against the old target-swapping range scan, which no longer exists. focus.lua's instantRefresh was never read.
This commit is contained in:
@@ -608,6 +608,7 @@ nameplates:RegisterUnitEvent("UNIT_SPELLCAST_NOT_INTERRUPTIBLE", "target", "focu
|
||||
-- RegisterUnitEvent on an already-filtered registration swaps the units.
|
||||
plate.nameplate:RegisterUnitEvent("UNIT_AURA", arg1)
|
||||
plate.nameplate:RegisterUnitEvent("UNIT_FLAGS", arg1)
|
||||
plate.nameplate:RegisterUnitEvent("UNIT_TARGET", arg1)
|
||||
plate.nameplate:RegisterUnitEvent("UNIT_SPELLCAST_START", arg1)
|
||||
plate.nameplate:RegisterUnitEvent("UNIT_SPELLCAST_CHANNEL_START", arg1)
|
||||
plate.nameplate:RegisterUnitEvent("UNIT_SPELLCAST_STOP", arg1)
|
||||
@@ -765,6 +766,14 @@ nameplates:RegisterUnitEvent("UNIT_SPELLCAST_NOT_INTERRUPTIBLE", "target", "focu
|
||||
this.auraUpdate = true
|
||||
elseif event == "UNIT_FLAGS" then
|
||||
this.eventcache = true
|
||||
elseif event == "UNIT_TARGET" then
|
||||
-- the unit turned to someone else: recolour its combat state now
|
||||
-- rather than once the colour cache and the data tick run out
|
||||
if cfg.outcombatstate or cfg.barcombatstate then
|
||||
local cached = this.cachedGuid and combatColorCache[this.cachedGuid]
|
||||
if cached then cached.expires = 0 end
|
||||
this.eventcache = true
|
||||
end
|
||||
elseif event == "UNIT_SPELLCAST_START" or event == "UNIT_SPELLCAST_CHANNEL_START" then
|
||||
-- the payload carries no timing, so poll it (PollCastInfo picks cast
|
||||
-- vs channel)
|
||||
|
||||
Reference in New Issue
Block a user