# HG changeset patch # User contrebasse # Date 1292017232 -3600 # Node ID a91e7552c682318eaf6707958628a7fb899d8e38 # Parent 239bedf571404f40ea4a963c3ca6d69d86806209 Use a whitelis instead of a blacklist. Used OnUpdate for mounts, didn't work well with UNIT_AURA diff -r 239bedf57140 -r a91e7552c682 Degaine.lua --- a/Degaine.lua Fri Dec 10 21:43:07 2010 +0100 +++ b/Degaine.lua Fri Dec 10 22:40:32 2010 +0100 @@ -9,7 +9,7 @@ -- (it's not possible to know if you were sitting or standing before) --@debug@ -local debug = true +local debug = false --@end-debug@ @@ -63,6 +63,25 @@ --------------------------------------------------------------- +-- Launch drawing weapons +--------------------------------------------------------------- +-- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs) +local Degaine_OnUpdate = function(self,t_elapsed) + t_left = t_left - t_elapsed; + if t_left<=0 then + ToggleSheath() + DegaineFrame:SetScript("OnUpdate", nil) + end +end +local start = function() + if Degaine_isAuto and not InCombatLockdown() then + t_left = delay + DegaineFrame:SetScript("OnUpdate", Degaine_OnUpdate) + end +end + + +--------------------------------------------------------------- -- Events config --------------------------------------------------------------- -- Events to watch @@ -94,17 +113,12 @@ UNIT_SPELLCAST_FAILED = true, UNIT_SPELLCAST_INTERRUPTED = true, UNIT_SPELLCAST_SUCCEEDED = true, - UNIT_AURA = function() - if IsMounted() then - wasMounted = true - else - if wasMounted then - wasMounted = false - start() - end - end - end } +local SpellWhiteList = { + [8690] = true, -- Heartstone + [818] = true, -- Basic Campfire +} +--[[ local SpellBlackList = { -- spells that don't stealth weapons (works with events1player) [1784] = true, -- Stealth (Rogue) [58984] = true, -- Shadowmeld (Nightelf stealth) @@ -124,6 +138,7 @@ [53428] = true -- Runeforge -- Archaeology ? } +--]] local events2playername = { -- the 2nd arg is playername CHAT_MSG_SAY = true, CHAT_MSG_YELL = true, @@ -138,7 +153,7 @@ -- I guess that's because a specific /cancelaura or alike is done -- hooksecurefunc("Dismount",start); ---[[ With OnUpdate +-- With OnUpdate local handleMountsFrame = CreateFrame("frame") local handleMountsOnUpdate do @@ -155,26 +170,6 @@ end end end ---]] - - ---------------------------------------------------------------- --- Launch drawing weapons ---------------------------------------------------------------- --- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs) -local Degaine_OnUpdate = function(self,t_elapsed) - t_left = t_left - t_elapsed; - if t_left<=0 then - ToggleSheath() - DegaineFrame:SetScript("OnUpdate", nil) - end -end -local start = function() - if Degaine_isAuto and not InCombatLockdown() then - t_left = delay - DegaineFrame:SetScript("OnUpdate", Degaine_OnUpdate) - end -end --------------------------------------------------------------- @@ -192,18 +187,20 @@ for k,_ in pairs(events) do DegaineFrame:RegisterEvent(k) end for k,_ in pairs(events1player) do DegaineFrame:RegisterEvent(k) end for k,_ in pairs(events2playername) do DegaineFrame:RegisterEvent(k) end + --DegaineFrame:RegisterEvent("UNIT_AURA") + handleMountsFrame:SetScript("OnUpdate",handleMountsOnUpdate) --@end-debug@ end --@end-debug@ - handleMountsFrame:SetScript("OnUpdate",handleMountsOnUpdate) end local desactivate = function() DegaineFrame:SetScript("OnUpdate", nil) - handleMountsFrame:SetScript("OnUpdate",nil) t_left = -1 for k,_ in pairs(events) do DegaineFrame:UnregisterEvent(k) end for k,_ in pairs(events1player) do DegaineFrame:UnregisterEvent(k) end for k,_ in pairs(events2playername) do DegaineFrame:UnregisterEvent(k) end + --DegaineFrame:UnregisterEvent("UNIT_AURA") + handleMountsFrame:SetScript("OnUpdate",nil) end Degaine_ToggleAuto = function() if Degaine_isAuto then @@ -230,13 +227,31 @@ --end --@end-debug@ + --[[ IsMounted() renvoie toujours false ici, on doit passer par OnUpdate + if event=="UNIT_AURA" then + if arg1=="player" then + DEFAULT_CHAT_FRAME:AddMessage("player") + if IsMounted() then + DEFAULT_CHAT_FRAME:AddMessage("ismounted") + wasMounted = true + else + DEFAULT_CHAT_FRAME:AddMessage("notmounted") + if wasMounted then + DEFAULT_CHAT_FRAME:AddMessage("wasmounted : start") + wasMounted = false + start() + end + end + end + else + --]] if events[event] then if type(events[event])~="function" or events[event]() then start() end elseif events1player[event] then if arg1=="player" then - if arg5==nil or not SpellBlackList[arg5] then -- arg5 is SpellID + if arg5==nil or SpellWhiteList[arg5] then -- arg5 is SpellID start() end end