mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Add confirmation system to prevent pfUI from using evaluation-only tracking
Problem: Macro conditional evaluations create tracking entries, but pfUI's AddEffect can fire during these evaluations (before actual cast), causing it to use incorrect combo point data. Flow before fix: 1. Macro evaluates [combo:>0] → TrackComboPointCast(0 CP, confirmed=false) 2. Macro evaluates again → TrackComboPointCast(1 CP, confirmed=false) 3. pfUI AddEffect fires → uses tracking (wrong timing!) ✗ 4. SPELLCAST_START fires (actual cast) Flow after fix: 1. Macro evaluates [combo:>0] → TrackComboPointCast(0 CP, confirmed=false) 2. Macro evaluates again → TrackComboPointCast(1 CP, confirmed=false) 3. SPELLCAST_START fires → sets confirmed=true ✓ 4. pfUI AddEffect fires → only uses tracking if confirmed=true ✓ Changes: - Added 'confirmed' field to tracking (default: false) - SPELLCAST_START sets confirmed=true when spell actually casts - pfUI AddEffect hook only uses tracking if confirmed=true - Clear confirmed flag after use to prevent reuse - Clear on failed/interrupted casts Debug shows: "Ignoring X tracking (not confirmed - evaluation only)" when preventing use of evaluation-only data.
This commit is contained in:
+10
-2
@@ -155,14 +155,22 @@ function Extension.HookPfUILibdebuff()
|
||||
-- Use name-based tracking which is populated BEFORE pfUI's AddEffect
|
||||
if CleveRoids.ComboPointTracking and CleveRoids.ComboPointTracking[effect] then
|
||||
local tracking = CleveRoids.ComboPointTracking[effect]
|
||||
if tracking.duration and (GetTime() - tracking.cast_time) < 0.5 then
|
||||
-- Only use tracking if it's confirmed (actual cast, not just evaluation)
|
||||
if tracking.duration and tracking.confirmed and (GetTime() - tracking.cast_time) < 0.5 then
|
||||
duration = tracking.duration
|
||||
-- Clear confirmed flag after use to prevent reuse
|
||||
tracking.confirmed = false
|
||||
if CleveRoids.debug then
|
||||
DEFAULT_CHAT_FRAME:AddMessage(
|
||||
string.format("|cff00ff00[pfUI AddEffect Hook]|r Overriding %s duration to %ds (from name tracking)",
|
||||
string.format("|cff00ff00[pfUI AddEffect Hook]|r Overriding %s duration to %ds (from confirmed tracking)",
|
||||
effect, duration)
|
||||
)
|
||||
end
|
||||
elseif CleveRoids.debug and tracking.duration and not tracking.confirmed then
|
||||
DEFAULT_CHAT_FRAME:AddMessage(
|
||||
string.format("|cffaaaa00[pfUI AddEffect Hook]|r Ignoring %s tracking (not confirmed - evaluation only)",
|
||||
effect)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user