diff --git a/mods/actionbar-float.lua b/mods/actionbar-float.lua index 55e4212..7ffbf56 100644 --- a/mods/actionbar-float.lua +++ b/mods/actionbar-float.lua @@ -29,7 +29,7 @@ module.enable = function(self) MainMenuBar:SetPoint("BOTTOM", 0, 8) -- align actionbutton textures and add border - for _, prefix in pairs(actionbars) do + for _, prefix in ipairs(actionbars) do for i = 1, NUM_ACTIONBAR_BUTTONS do local button = _G[prefix .. "Button" .. i] local texture = _G[prefix.."Button"..i.."NormalTexture"] @@ -60,6 +60,7 @@ module.enable = function(self) -- keep the custom reputation position without replacing Blizzard's updater local function UpdateReputationPosition() + ReputationWatchBar:ClearAllPoints() if MainMenuExpBar:IsShown() then ReputationWatchBar:SetPoint("BOTTOM", MainMenuBar, "TOP", 0, -7) else @@ -74,7 +75,7 @@ module.enable = function(self) MainMenuBarMaxLevelBar:SetAlpha(0) -- remove textures - for _, texture in pairs(texture_removals) do + for _, texture in ipairs(texture_removals) do if texture then texture:SetTexture() texture:Hide() diff --git a/mods/actionbar-reagents.lua b/mods/actionbar-reagents.lua index 0a445b7..d09d79a 100644 --- a/mods/actionbar-reagents.lua +++ b/mods/actionbar-reagents.lua @@ -45,6 +45,9 @@ module.enable = function(self) -- Tooltip scans are only required when the action layout changed. if this.rescan then + -- Rebuild the active reagent set so items no longer referenced by any + -- action slot stop being counted after actionbar changes. + reagent_counts = {} for slot = 1, 120 do reagentcounter.ScanSlot(slot) end @@ -56,7 +59,7 @@ module.enable = function(self) end -- update all actionbar buttons - for _, prefix in pairs(bars) do + for _, prefix in ipairs(bars) do for i = 1, NUM_ACTIONBAR_BUTTONS do local button = _G[prefix .. "Button" .. i] if button then @@ -92,10 +95,14 @@ module.enable = function(self) -- remove reagent counts if existing reagents = reagents and string.gsub(reagents, " %((.+)%)", "") - -- update on reagent requirement changes - if reagents and reagent_slots[slot] ~= reagents then + if reagents then reagent_counts[reagents] = reagent_counts[reagents] or 0 reagent_slots[slot] = reagents + else + -- The slot can stay occupied while changing from a reagent spell to a + -- normal action; clear the previous reagent instead of leaving a stale + -- counter on the button. + reagent_slots[slot] = nil end end end diff --git a/mods/chat-timestamps.lua b/mods/chat-timestamps.lua index 1fcf85f..5ea9229 100644 --- a/mods/chat-timestamps.lua +++ b/mods/chat-timestamps.lua @@ -28,17 +28,30 @@ module.enable = function(self) local format = clock == 24 and "%H:%M:%S" or "%I:%M:%S %p" local color = rgbhex({ rgb.r, rgb.g, rgb.b, rgb.a }) - -- add hooks to each frame - for i=1,NUM_CHAT_WINDOWS do - local frame = _G["ChatFrame"..i] - if frame and not frame.ShaguTweaksExtrasTimestampAddMessage then - frame.ShaguTweaksExtrasTimestampAddMessage = frame.AddMessage - frame.AddMessage = function(self, msg, a1, a2, a3, a4, a5) - if not msg then return end + local function InstallTimestampHooks() + for i = 1, NUM_CHAT_WINDOWS do + local frame = _G["ChatFrame"..i] + if frame and not frame.ShaguTweaksExtrasTimestampAddMessage then + frame.ShaguTweaksExtrasTimestampAddMessage = frame.AddMessage + frame.AddMessage = function(self, msg, a1, a2, a3, a4, a5) + if not msg then return end - msg = color .. left .. date(format) .. right .. "|r " .. msg - self:ShaguTweaksExtrasTimestampAddMessage(msg, a1, a2, a3, a4, a5) + msg = color .. left .. date(format) .. right .. "|r " .. msg + self:ShaguTweaksExtrasTimestampAddMessage(msg, a1, a2, a3, a4, a5) + end end end end + + -- Install after the normal ShaguTweaks module pass. Chat Tweaks in the + -- main fork also wraps AddMessage, and its module order is intentionally + -- unordered. Waiting for PLAYER_ENTERING_WORLD makes timestamps the outer + -- wrapper every time, so history consistently stores the displayed time. + local installer = CreateFrame("Frame", nil, UIParent) + installer:RegisterEvent("PLAYER_ENTERING_WORLD") + installer:SetScript("OnEvent", function() + InstallTimestampHooks() + this:UnregisterAllEvents() + this:Hide() + end) end diff --git a/mods/macro-tweaks.lua b/mods/macro-tweaks.lua index 383c5d9..8f08eda 100644 --- a/mods/macro-tweaks.lua +++ b/mods/macro-tweaks.lua @@ -137,9 +137,7 @@ module.enable = function(self) end end) - _G.SLASH_EQUIP1 = "/equip" - _G.SLASH_EQUIP2 = "/use" - _G.SlashCmdList.EQUIP = function(msg) + local function EquipOrUse(msg) if not msg or msg == "" then return end local bag, slot @@ -164,4 +162,9 @@ module.enable = function(self) UseInventoryItem(slot) end end + + -- Keep the original Macro Tweaks conveniences, but do not steal /equip or + -- /use from another addon that already registered either command. + RegisterSlashAlias("SHAGUTWEAKS_EQUIP", "/equip", EquipOrUse) + RegisterSlashAlias("SHAGUTWEAKS_USE", "/use", EquipOrUse) end