from retail

This commit is contained in:
NoM0Re
2025-01-13 19:15:17 +01:00
parent 43c9ccec1c
commit 74cc0c7ee8
3 changed files with 59 additions and 19 deletions
+10 -5
View File
@@ -1434,11 +1434,16 @@ local function CleanUpMatchDataForUnit(unit, filter)
for index, data in pairs(matchData[unit][filter]) do
matchData[unit][filter][index] = nil
for id, triggerData in pairs(data.auras) do
for triggernum in pairs(triggerData) do
matchDataByTrigger[id][triggernum][unit][index] = nil
matchDataChanged[id] = matchDataChanged[id] or {}
matchDataChanged[id][triggernum] = true
end
for triggernum in pairs(triggerData) do
if matchDataByTrigger[id] and matchDataByTrigger[id][triggernum]
and matchDataByTrigger[id][triggernum][unit]
and matchDataByTrigger[id][triggernum][unit][index]
then
matchDataByTrigger[id][triggernum][unit][index] = nil
matchDataChanged[id] = matchDataChanged[id] or {}
matchDataChanged[id][triggernum] = true
end
end
end
end
end
+39 -12
View File
@@ -899,9 +899,14 @@ function WeakAuras.ScanUnitEvents(event, unit, ...)
Private.ActivateAuraEnvironment(id);
local updateTriggerState = false;
for triggernum, data in pairs(triggers) do
local allStates = WeakAuras.GetTriggerStateForTrigger(id, triggernum);
if (RunTriggerFunc(allStates, data, id, triggernum, event, unit, ...)) then
updateTriggerState = true;
local delay = GenericTrigger.GetDelay(data)
if delay == 0 then
local allStates = WeakAuras.GetTriggerStateForTrigger(id, triggernum);
if (RunTriggerFunc(allStates, data, id, triggernum, event, unit, ...)) then
updateTriggerState = true;
end
else
Private.RunTriggerFuncWithDelay(delay, id, triggernum, data, event, unit, ...)
end
end
if (updateTriggerState) then
@@ -2262,6 +2267,7 @@ do
local spellCdsRune = CreateSpellCDHandler();
local spellDetails = {}
local mark_ACTIONBAR_UPDATE_COOLDOWN, mark_PLAYER_ENTERING_WORLD
function Private.InitCooldownReady()
cdReadyFrame = CreateFrame("Frame");
@@ -2292,21 +2298,35 @@ do
end
if GetTime() - cdReadyFrame.inWorld < 2 then
cdReadyFrame:SetScript("OnUpdate", cdReadyFrame.HandleEvent)
mark_PLAYER_ENTERING_WORLD = true
cdReadyFrame:Show()
return
end
if (event == "ACTIONBAR_UPDATE_COOLDOWN") then
mark_ACTIONBAR_UPDATE_COOLDOWN = true
cdReadyFrame:Show()
return
end
cdReadyFrame:SetScript("OnUpdate", nil)
Private.StartProfileSystem("generictrigger cd tracking");
if type(event) == "number" then-- Called from OnUpdate!
Private.CheckSpellKnown()
Private.CheckCooldownReady()
Private.CheckItemSlotCooldowns()
elseif(event == "SPELL_UPDATE_COOLDOWN"
or event == "RUNE_POWER_UPDATE" or event == "RUNE_TYPE_UPDATE" or event == "ACTIONBAR_UPDATE_COOLDOWN"
if mark_PLAYER_ENTERING_WORLD then
Private.CheckSpellKnown()
Private.CheckCooldownReady()
Private.CheckItemSlotCooldowns()
mark_PLAYER_ENTERING_WORLD = nil
mark_ACTIONBAR_UPDATE_COOLDOWN = nil
elseif mark_ACTIONBAR_UPDATE_COOLDOWN then
Private.CheckCooldownReady()
mark_ACTIONBAR_UPDATE_COOLDOWN = nil
end
elseif(event == "SPELL_UPDATE_COOLDOWN" or event == "RUNE_POWER_UPDATE"
or event == "PLAYER_TALENT_UPDATE"
or event == "CHARACTER_POINTS_CHANGED") then
Private.CheckCooldownReady();
or event == "CHARACTER_POINTS_CHANGED" or event == "RUNE_TYPE_UPDATE") then
if event == "SPELL_UPDATE_COOLDOWN" then
mark_ACTIONBAR_UPDATE_COOLDOWN = nil
end
Private.CheckCooldownReady();
elseif(event == "SPELLS_CHANGED") then
Private.CheckSpellKnown()
Private.CheckCooldownReady()
@@ -2326,8 +2346,15 @@ do
Private.CheckItemSlotCooldowns();
end
Private.StopProfileSystem("generictrigger cd tracking");
if mark_PLAYER_ENTERING_WORLD == nil and mark_ACTIONBAR_UPDATE_COOLDOWN == nil then
cdReadyFrame:Hide()
else
cdReadyFrame:Show()
end
end
cdReadyFrame:Hide()
cdReadyFrame:SetScript("OnEvent", cdReadyFrame.HandleEvent)
cdReadyFrame:SetScript("OnUpdate", cdReadyFrame.HandleEvent)
end
function WeakAuras.GetRuneCooldown(id)
+10 -2
View File
@@ -2691,6 +2691,16 @@ local function pAdd(data, simpleChange)
end
end
-- If the aura has a onHide animation we need to cancel it to ensure it's truely hidden now
if Private.regions[id] then
Private.CancelAnimation(Private.regions[id].region, true, true, true, true, true, true)
end
if clones[id] then
for _, region in pairs(clones[id]) do
Private.CancelAnimation(region, true, true, true, true, true, true)
end
end
Private.ClearAuraEnvironment(id);
for parent in Private.TraverseParents(data) do
Private.ClearAuraEnvironment(parent.id);
@@ -5581,5 +5591,3 @@ do
return data.regionType == "group" or data.regionType == "dynamicgroup"
end
end