From e98772bd2ae946bdfa2c7521e3fc34fbe6a33877 Mon Sep 17 00:00:00 2001 From: Sidoine De Wispelaere Date: Tue, 26 Jan 2010 19:48:10 +0000 Subject: [PATCH] - added click through option - better buffnocd support - stacks more than 1 spell when lagging - warlock: drain soul can be interrupted - shadow priest: bug with vampiric touch - death knight: does not show Icy Touch if Glyph of Howling Blast - hunter; buffnocd allows better lock and load modeling / show dragonhawk when full mana git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@215 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- Locale-enUS.lua | 3 +- Locale-frFR.lua | 3 +- Ovale.lua | 89 +++++++++++++++++++++++++++++++++++++------------- OvaleFrame.lua | 7 +++- OvaleIcone.lua | 4 +++ defaut/Chasseur.lua | 6 +++- defaut/Chevalier.lua | 2 +- defaut/Demoniste.lua | 1 + defaut/Pretre.lua | 7 ++-- 9 files changed, 90 insertions(+), 32 deletions(-) diff --git a/Locale-enUS.lua b/Locale-enUS.lua index 8a761d3..3905f5b 100644 --- a/Locale-enUS.lua +++ b/Locale-enUS.lua @@ -43,4 +43,5 @@ L["Défilement"] = "Scrolling" L["Les icônes se déplacent"] = "Scroll the icons" L["multidot"] = "Damage Over Time on multiple targets" L["buff"] = "Buffs" -L["Inverser la boîte à cocher "] = "Toggle check box" \ No newline at end of file +L["Inverser la boîte à cocher "] = "Toggle check box" +L["Ignorer les clics souris"] = "Ignore mouse clicks" \ No newline at end of file diff --git a/Locale-frFR.lua b/Locale-frFR.lua index 9e724cb..a1bdcbd 100644 --- a/Locale-frFR.lua +++ b/Locale-frFR.lua @@ -43,4 +43,5 @@ L["Défilement"] = true L["Les icônes se déplacent"] = true L["multidot"] = "Multicible pour DoTs" L["buff"] = "Améliorations" -L["Inverser la boîte à cocher "] = true \ No newline at end of file +L["Inverser la boîte à cocher "] = true +L["Ignorer les clics souris"] = true \ No newline at end of file diff --git a/Ovale.lua b/Ovale.lua index 2b551af..9e3a441 100644 --- a/Ovale.lua +++ b/Ovale.lua @@ -36,8 +36,7 @@ Ovale.score = 0 Ovale.maxScore = 0 Ovale.serial = 0 Ovale.counter = {} -Ovale.lastSpellName = nil -Ovale.lastSpellTime = 0 +Ovale.lastSpell = {} Ovale.arbre = {} @@ -217,6 +216,14 @@ local options = get = function(info) return Ovale.db.profile.apparence.highlightIcon end, set = function(info, value) Ovale.db.profile.apparence.highlightIcon = value; Ovale:UpdateFrame() end }, + clickThru = + { + order = 15, + type = "toggle", + name = L["Ignorer les clics souris"], + get = function(info) return Ovale.db.profile.apparence.clickThru end, + set = function(info, value) Ovale.db.profile.apparence.clickThru = value; Ovale:UpdateFrame() end + } } }, code = @@ -361,8 +368,12 @@ function Ovale:COMBAT_LOG_EVENT_UNFILTERED(event, ...) if sourceName == UnitName("player") then if string.find(event, "SPELL_") == 1 then local spellId, spellName = select(9, ...) - if spellName == self.lastSpellName then - self.lastSpellName = nil + for i,v in ipairs(self.lastSpell) do + if v.name == spellName then + self:Print("on supprime " ..spellName.." a "..time) + table.remove(self.lastSpell, i) + break + end end end if string.find(event, "SPELL_AURA_") == 1 then @@ -587,8 +598,18 @@ end function Ovale:UNIT_SPELLCAST_SENT(event,unit,name,rank,target) -- self:Print("UNIT_SPELLCAST_SENT"..event.." unit="..unit.." name="..name.." tank="..rank.." target="..target) if unit=="player" then - self.lastSpellName = name - self.lastSpellTime = GetTime() + local newSpell = {} + newSpell.name = name + newSpell.time = GetTime() + local si = self.spellInfo[name] + + if si and si.buffnocd and UnitBuff("player", GetSpellInfo(si.buffnocd)) then + newSpell.nocd = true + else + newSpell.nocd = false + end + self.lastSpell[#self.lastSpell+1] = newSpell +-- self:Print("on ajoute "..name.." a ".. GetTime()) end if unit=="player" and self.enCombat then @@ -920,7 +941,15 @@ function Ovale:GetCD(spellName) end end -function Ovale:AddSpellToStack(spellName, startCast, endCast, nextCast) +local function nilstring(text) + if text == nil then + return "nil" + else + return text + end +end + +function Ovale:AddSpellToStack(spellName, startCast, endCast, nextCast, nocd) -- self.spellStack.length = self.spellStack.length + 1 -- if not self.spellStack[self.spellStack.length] then -- self.spellStack[self.spellStack.length] = {} @@ -984,6 +1013,24 @@ function Ovale:AddSpellToStack(spellName, startCast, endCast, nextCast) if cd then cd.start = startCast cd.duration = newSpellInfo.cd + if nocd then + cd.duration = 0 + end + if newSpellInfo.buffnocd and not nocd then + local buffAura = self:GetAura("player", "HELPFUL", newSpellInfo.buffnocd) + if self.traceAura then + if buffAura then + self:Print("buffAura stacks = "..buffAura.stacks.." start="..nilstring(buffAura.start).." ending = "..nilstring(buffAura.ending)) + self:Print("startCast = "..startCast) + else + self:Print("buffAura = nil") + end + self.traceAura = false + end + if buffAura and buffAura.stacks>0 and buffAura.start and buffAura.start<=startCast and (not buffAura.ending or buffAura.ending>startCast) then + cd.duration = 0 + end + end cd.enable = 1 if newSpellInfo.toggle then cd.toggled = 1 @@ -1016,7 +1063,11 @@ function Ovale:AddSpellToStack(spellName, startCast, endCast, nextCast) newAura.stacks = 1 end if Ovale.trace then - self:Print("adding aura "..spellName.." to "..target.." "..newAura.start..","..newAura.ending) + if spellName then + self:Print("adding aura "..spellName.." to "..target.." "..newAura.start..","..newAura.ending) + else + self:Print("adding nil aura") + end end end end @@ -1059,6 +1110,13 @@ function Ovale:InitCalculerMeilleureAction() v.toggled = nil end + for i,v in ipairs(self.lastSpell) do + if not self.spellInfo[v.name] or not self.spellInfo[v.name].toggle then + if self.maintenant - v.time<1 then + self:AddSpellToStack(v.name, v.time, v.time, v.time, v.nocd) + end + end + end -- On attend que le sort courant soit fini local spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitCastingInfo("player") if (spell) then @@ -1067,12 +1125,6 @@ function Ovale:InitCalculerMeilleureAction() local spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitChannelInfo("player") if (spell) then self:AddSpellToStack(spell, startTime/1000, endTime/1000, endTime/1000) - elseif self.lastSpellName then - if not self.spellInfo[self.lastSpellName] or not self.spellInfo[self.lastSpellName].toggle then - if self.lastSpellName and self.maintenant - self.lastSpellTime<1 then - self:AddSpellToStack(self.lastSpellName, self.lastSpellTime, self.lastSpellTime, self.lastSpellTime) - end - end end end end @@ -1118,13 +1170,6 @@ function Ovale:GetGCD(spellName) end -local function nilstring(text) - if text == nil then - return "nil" - else - return text - end -end function Ovale:GetActionInfo(element) if not element then @@ -1558,7 +1603,7 @@ function Ovale:ChargerDefaut() list = {}, apparence = {enCombat=false, iconWidth = 64, iconHeight = 64, margin = 4, smallIconWidth=28, smallIconHeight=28, raccourcis=true, numeric=false, avecCible = false, - verrouille = false, vertical = false, predictif=false, highlightIcon = true}, + verrouille = false, vertical = false, predictif=false, highlightIcon = true, clickThru = false}, skin = {SkinID="Blizzard", Backdrop = true, Gloss = false, Colors = {}} } }) diff --git a/OvaleFrame.lua b/OvaleFrame.lua index 3d00741..71c47e9 100644 --- a/OvaleFrame.lua +++ b/OvaleFrame.lua @@ -235,6 +235,8 @@ do end end + self.frame:EnableMouse(not Ovale.db.profile.apparence.clickThru) + local left = 0 local maxHeight = 0 local maxWidth = 0 @@ -296,6 +298,7 @@ do icon:SetPoint("TOPLEFT",self.frame,"TOPLEFT",action.left + (l-1)*action.dx,action.top - (l-1)*action.dy) icon:SetSize(action.width, action.height) icon:SetHelp(node.params.help) + icon:EnableMouse(not Ovale.db.profile.apparence.clickThru) if LBF then icon:SetSkinGroup(self.skinGroup) @@ -356,7 +359,9 @@ do frame:SetWidth(100) frame:SetHeight(100) frame:SetPoint("CENTER",UIParent,"CENTER",0,0) - frame:EnableMouse() + if not Ovale.db.profile.apparence.clickThru then + frame:EnableMouse() + end frame:SetMovable(true) frame:SetFrameStrata("BACKGROUND") frame:SetScript("OnMouseDown", frameOnMouseDown) diff --git a/OvaleIcone.lua b/OvaleIcone.lua index b1770ad..72423c7 100644 --- a/OvaleIcone.lua +++ b/OvaleIcone.lua @@ -202,4 +202,8 @@ function OvaleIcone_OnLoad(self) self.Update = Update self.SetSize = SetSize self.SetHelp = SetHelp + if Ovale.db.profile.clickThru then + self:EnableMouse(false) + end end + diff --git a/defaut/Chasseur.lua b/defaut/Chasseur.lua index be99ce6..2808920 100644 --- a/defaut/Chasseur.lua +++ b/defaut/Chasseur.lua @@ -19,6 +19,8 @@ Define(CALLOFTHEWILD 53434) Define(CHIMERASHOT 53209) Define(READINESS 23989) Define(SILENCINGSHOT 34490) +Define(ASPECTOFTHEVIPER 34074) +Define(ASPECTOFTHEDRAGONHAWK 61846) Define(TALENTTRACKING 1623) Define(TRACKBEASTS 1494) @@ -30,7 +32,8 @@ Define(TRACKHUMANOIDS 19883) Define(TRACKUNDEAD 19884) SpellAddTargetDebuff(EXPLOSIVESHOT EXPLOSIVESHOT=2) -SpellInfo(EXPLOSIVESHOT cd=6) +SpellAddBuff(EXPLOSIVESHOT LOCKANDLOAD=-1) +SpellInfo(EXPLOSIVESHOT cd=6 buffnocd=LOCKANDLOAD) SpellAddTargetDebuff(SERPENTSTING SERPENTSTING=15) SpellAddTargetDebuff(BLACKARROW BLACKARROW=15) SpellInfo(BLACKARROW cd=26) @@ -48,6 +51,7 @@ ScoreSpells(HUNTERSMARK BLACKARROW SERPENTSTING CHIMERASHOT AIMEDSHOT MULTISHOT AddIcon help=main { + if ManaPercent(more 95) and BuffPresent(ASPECTOFTHEVIPER) Spell(ASPECTOFTHEDRAGONHAWK) if TalentPoints(TALENTTRACKING more 0) and Tracking(TRACKBEASTS no) and Tracking(TRACKDEMONS no) and Tracking(TRACKDRAGONKIN no) and Tracking(TRACKELEMENTALS no) and Tracking(TRACKGIANTS no) and Tracking(TRACKHUMANOIDS no) and Tracking(TRACKUNDEAD no) Spell(TRACKBEASTS) diff --git a/defaut/Chevalier.lua b/defaut/Chevalier.lua index 2450ff6..78f3087 100644 --- a/defaut/Chevalier.lua +++ b/defaut/Chevalier.lua @@ -94,7 +94,7 @@ AddIcon help=main if TargetDebuffExpires(FROSTFEVER 0 mine=1) and Runes(frost 1) { if Glyph(GLYPHHOWLINGBLAST) Spell(HOWLINGBLAST) - Spell(ICYTOUCH) + unless Glyph(GLYPHHOWLINGBLAST) Spell(ICYTOUCH) } if TargetDebuffExpires(BLOODPLAGUE 0 mine=1) and Runes(unholy 1) diff --git a/defaut/Demoniste.lua b/defaut/Demoniste.lua index aa9c8a7..27c9e77 100644 --- a/defaut/Demoniste.lua +++ b/defaut/Demoniste.lua @@ -44,6 +44,7 @@ AddListItem(curse weakness SpellName(CURSEWEAKNESS)) SpellInfo(HAUNT cd=8) SpellInfo(CONFLAGRATE cd=10) SpellInfo(CHAOSBOLT cd=12) +SpellInfo(DRAINSOUL canStopChannelling=3) SpellAddTargetDebuff(CORRUPTION CORRUPTION=18) SpellAddTargetDebuff(CURSEAGONY CURSEAGONY=24) SpellAddTargetDebuff(CURSEELEMENTS CURSEELEMENTS=300) diff --git a/defaut/Pretre.lua b/defaut/Pretre.lua index 52a3751..6cb005d 100644 --- a/defaut/Pretre.lua +++ b/defaut/Pretre.lua @@ -64,11 +64,8 @@ if BuffPresent(SW stacks=5) and TargetDebuffExpires(SWP 0 mine=1) and TargetDead } #Refresh VT -unless CheckBoxOn(multidot) -{ - if TargetDebuffExpires(VT 1 mine=1 haste=spell) and TargetDeadIn(more 8) - Spell(VT) -} +if TargetDebuffExpires(VT 1 mine=1 haste=spell) and TargetDeadIn(more 8) + Spell(VT) #cast MB if up unless BuffPresent(Heroism) or BuffPresent(Bloodlust) -- 1.7.9.5