Go to most recent revision | Compare with Previous | Blame | View Log
--[[ Copyright (c) 2009, Adrian L Lange All rights reserved. You're allowed to use this addon, free of monetary charge, but you are not allowed to modify, alter, or redistribute this addon without express, written permission of the author. --]] local milling, prospecting = GetSpellInfo(51005), GetSpellInfo(31252) local macro = '/cast %s\n/use %s %s' local button = CreateFrame('Button', 'Molinari', UIParent, 'SecureActionButtonTemplate AutoCastShineTemplate') button:RegisterForClicks('LeftButtonUp') button:RegisterEvent('MODIFIER_STATE_CHANGED') -- multiply the size of the sparks for extra awesomeness for k, v in next, button.sparkles do v:SetWidth(v:GetWidth() * 3) v:SetHeight(v:GetHeight() * 3) end local function tooltipHook(self) if(self:GetItem() and IsAltKeyDown() and not InCombatLockdown()) then local text = GameTooltipTextLeft2:GetText() if(text and (text == ITEM_MILLABLE or text == ITEM_PROSPECTABLE)) then local scribe = text == ITEM_MILLABLE local anchor = GetMouseFocus() button:ClearAllPoints() button:SetAttribute('macrotext', macro:format(scribe and milling or prospecting, anchor:GetParent():GetID(), anchor:GetID())) button:SetAllPoints(anchor) button:Show() if(scribe) then AutoCastShine_AutoCastStart(button, 0.5, 1, 0.5) else AutoCastShine_AutoCastStart(button, 1, 0.5, 0.5) end end end end function button:MODIFIER_STATE_CHANGED(event, key) if((key == 'LALT' or key == 'RALT') and self:IsShown()) then if(InCombatLockdown()) then self:RegisterEvent('PLAYER_REGEN_DISABLED') else self:ClearAllPoints() self:Hide() AutoCastShine_AutoCastStop(self) end end end function button:PLAYER_REGEN_DISABLED(event) self:UnregisterEvent(event) self:ClearAllPoints() self:Hide() AutoCastShine_AutoCastStop(self) end button:SetAttribute('*type*', 'macro') button:SetFrameStrata('DIALOG') button:SetScript('OnLeave', function(self) self:Hide() end) button:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end) GameTooltip:HookScript('OnTooltipSetItem', tooltipHook) -- temporary fix for blizzard's bug with secure frames and anchoring on the ContainerFrame hooksecurefunc('ContainerFrame_GenerateFrame', function(frame, size, id) if(size ~= 1 and id == 0) then ContainerFrame1Item1:SetPoint('BOTTOMRIGHT', ContainerFrame1, 'BOTTOMRIGHT', -12, 30) end end)