Skip to content

Commit 78d044c

Browse files
committed
Minor rewrite of the level up detection, to hopefully fix inconsistent auto talenting on level up
1 parent d86494e commit 78d044c

File tree

1 file changed

+45
-10
lines changed

1 file changed

+45
-10
lines changed

modules/Leveling.lua

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,60 @@ TLM.LevelingModule = Module;
1717

1818
Module.CombatLockdownQueue = {};
1919

20+
function Module:OnInitialize()
21+
self.listener = CreateFrame("Frame");
22+
self.listener.Reset = function(listener)
23+
listener.PLAYER_LEVEL_UP = false;
24+
listener.TRAIT_TREE_CURRENCY_INFO_UPDATED = false;
25+
listener.elapsed = 0;
26+
listener:Hide();
27+
end
28+
self.listener:Reset();
29+
self.listener:SetScript("OnUpdate", function(listener, elapsed)
30+
listener.elapsed = listener.elapsed + elapsed;
31+
if listener.elapsed > 5 then
32+
listener:Reset();
33+
return;
34+
end
35+
if listener.PLAYER_LEVEL_UP and listener.TRAIT_TREE_CURRENCY_INFO_UPDATED then
36+
listener:Reset();
37+
if InCombatLockdown() then
38+
self:AddToCombatLockdownQueue(self.ReapplyLoadout, self);
39+
return;
40+
end
41+
RunNextFrame(function()
42+
self:ReapplyLoadout();
43+
end);
44+
end
45+
end);
46+
47+
end
48+
2049
function Module:OnEnable()
21-
self:RegisterEvent("PLAYER_LEVEL_UP");
50+
self:RegisterEvent("PLAYER_LEVEL_UP", "OnEvent");
51+
self:RegisterEvent("TRAIT_TREE_CURRENCY_INFO_UPDATED", "OnEvent");
2252
end
2353

2454
function Module:OnDisable()
2555
self:UnregisterEvent("PLAYER_LEVEL_UP");
56+
self:UnregisterEvent("TRAIT_TREE_CURRENCY_INFO_UPDATED");
57+
self.listener:Reset();
2658
end
2759

28-
function Module:PLAYER_LEVEL_UP(_, level)
60+
function Module:OnEvent(event, ...)
2961
if not Config:GetConfig("autoApplyOnLevelUp") then return; end
30-
if level >= 10 then
31-
if InCombatLockdown() then
32-
self:AddToCombatLockdownQueue(self.ReapplyLoadout, self);
33-
return;
34-
end
35-
RunNextFrame(function()
36-
self:ReapplyLoadout();
37-
end);
62+
if event == "PLAYER_LEVEL_UP" then
63+
local level = ...;
64+
if level < 10 then return; end
65+
elseif event == "TRAIT_TREE_CURRENCY_INFO_UPDATED" then
66+
local treeID = ...;
67+
local specID = PlayerUtil.GetCurrentSpecID();
68+
if not specID then return; end
69+
local playerTreeID = C_ClassTalents.GetTraitTreeForSpec(specID);
70+
if treeID ~= playerTreeID then return; end
3871
end
72+
self.listener:Show();
73+
self.listener[event] = true;
3974
end
4075

4176
function Module:ReapplyLoadout()

0 commit comments

Comments
 (0)