Quantcast

- Some changes to the syntax introduced in 3.3.6. Now forceduration is a parameter to TargetDebuffPresent/Expires() functions. It can be a duration in seconds if SpellInfo is not defined for the spell.

Sidoine De Wispelaere [12-30-09 - 17:07]
- Some changes to the syntax introduced in 3.3.6. Now forceduration is a parameter to TargetDebuffPresent/Expires() functions. It can be a duration in seconds if SpellInfo is not defined for the spell.
- The syntax of between X and X has been changed. Now it is "less than Ns between X and Y" or "more than Ns between X and Y" which should be more explicit
- added "buff" text

git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@178 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Filename
Condition.lua
Locale-enUS.lua
Locale-frFR.lua
Ovale.lua
Ovale.toc
OvaleCompile.lua
defaut/Druide.lua
diff --git a/Condition.lua b/Condition.lua
index 7a652f2..8207975 100644
--- a/Condition.lua
+++ b/Condition.lua
@@ -204,7 +204,7 @@ local function GetTargetAura(condition, filter, target)
 		stacks = 1
 	end
 	local spellId = condition[1]
-	local aura = Ovale:GetAura(target, filter, spellId)
+	local aura = Ovale:GetAura(target, filter, spellId, condition.forceduration)
 	-- if Ovale.trace then
 	--	Ovale:Print("GetTargetAura = start = ".. nilstring(aura.start) .. " end = "..nilstring(aura.ending).." stacks = " ..nilstring(aura.stacks).."/"..stacks)
 	-- end
@@ -613,6 +613,10 @@ Ovale.conditions=
 		end
 		return compare(Ovale.pointsTalent[condition[1]], condition[2], condition[3])
 	end,
+	TargetDispellableBuffPresent = function(condition)
+
+		return nil
+	end,
 	-- Test if a buff is present on the target
 	-- 1 : buff spell id
 	-- stacks : how many stacks
diff --git a/Locale-enUS.lua b/Locale-enUS.lua
index 657ec91..d65b2fc 100644
--- a/Locale-enUS.lua
+++ b/Locale-enUS.lua
@@ -41,4 +41,5 @@ L["Prédictif"] = "Two abilities"
 L["Affiche les deux prochains sorts et pas uniquement le suivant"] = "Display two abilities and not only one"
 L["Défilement"] = "Scrolling"
 L["Les icônes se déplacent"] = "Scroll the icons"
-L["multidot"] = "Damage Over Time on multiple targets"
\ No newline at end of file
+L["multidot"] = "Damage Over Time on multiple targets"
+L["buff"] = "Buffs"
\ No newline at end of file
diff --git a/Locale-frFR.lua b/Locale-frFR.lua
index 3c6e826..629af7b 100644
--- a/Locale-frFR.lua
+++ b/Locale-frFR.lua
@@ -41,4 +41,5 @@ L["Prédictif"] = "Deux sorts"
 L["Affiche les deux prochains sorts et pas uniquement le suivant"] = true
 L["Défilement"] = true
 L["Les icônes se déplacent"] = true
-L["multidot"] = "Multicible pour DoTs"
\ No newline at end of file
+L["multidot"] = "Multicible pour DoTs"
+L["buff"] = "Améliorations"
\ No newline at end of file
diff --git a/Ovale.lua b/Ovale.lua
index ef7209b..fbc8b13 100644
--- a/Ovale.lua
+++ b/Ovale.lua
@@ -782,7 +782,7 @@ function Ovale:AddRune(time, type, value)
 	end
 end

-function Ovale:GetAura(target, filter, spellId)
+function Ovale:GetAura(target, filter, spellId, forceduration)
 	if not self.aura[target] then
 		self.aura[target] = {}
 	end
@@ -815,8 +815,12 @@ function Ovale:GetAura(target, filter, spellId)
 			myAura.mine = (unitCaster == "player")
 			myAura.start = expirationTime - duration

-			if self.spellInfo[name] and self.spellInfo[name].forceduration then
-				duration = self.spellInfo[name].duration
+			if self.spellInfo[name] and forceduration then
+				if self.spellInfo[name].duration then
+					duration = self.spellInfo[name].duration
+				else
+					duration = forceduration
+				end
 			end

 			if expirationTime>0 then
@@ -1281,17 +1285,32 @@ function Ovale:CalculerMeilleureAction(element)
 		local tempsA = Ovale:CalculerMeilleureAction(element.a)
 		if (tempsA==nil) then
 			if Ovale.trace then Ovale:Print(element.type.." return nil") end
-			return nil
+			if element.comparison == "more"	then
+				return 0
+			else
+				return nil
+			end
 		end
 		local tempsB = Ovale:CalculerMeilleureAction(element.b)
 		if (tempsB==nil) then
 			if Ovale.trace then Ovale:Print(element.type.." return nil") end
-			return nil
+			if element.comparison == "more"	then
+				return 0
+			else
+				return nil
+			end
 		end
-		if (tempsA>tempsB and tempsA-tempsB<element.time) then
+		local diff
+		if tempsA>tempsB then
+			diff = tempsA - tempsB
+		else
+			diff = tempsB - tempsA
+		end
+
+		if element.comparison == "more" and diff>element.time then
 			if Ovale.trace then Ovale:Print(element.type.." return 0") end
 			return 0
-		elseif (tempsB>tempsA and tempsB-tempsA<element.time) then
+		elseif element.comparison == "less" and diff<element.time then
 			if Ovale.trace then Ovale:Print(element.type.." return 0") end
 			return 0
 		end
diff --git a/Ovale.toc b/Ovale.toc
index 2835845..4c60db9 100644
--- a/Ovale.toc
+++ b/Ovale.toc
@@ -3,7 +3,7 @@
 ## Notes: Show the icon of the next spell to cast
 ## Notes-frFR: Affiche l'icône du prochain sort à lancer
 ## Author: Sidoine
-## Version: 3.3.6
+## Version: 3.3.7
 ## OptionalDeps: Ace3, ButtonFacade, Recount
 ## SavedVariables: OvaleDB
 ## SavedVariablesPerCharacter: OvaleDBPC
diff --git a/OvaleCompile.lua b/OvaleCompile.lua
index 795303d..2c9af07 100644
--- a/OvaleCompile.lua
+++ b/OvaleCompile.lua
@@ -143,8 +143,8 @@ local function ParseBefore(a,b)
 	return AddNode(newNode)
 end

-local function ParseBetween(t,a,b)
-	local newNode = {type="between", time=tonumber(t), a=node[tonumber(a)], b=node[tonumber(b)]}
+local function ParseBetween(comp,t,a,b)
+	local newNode = {type="between", comparison=comp, time=tonumber(t), a=node[tonumber(a)], b=node[tonumber(b)]}
 	return AddNode(newNode)
 end

@@ -211,7 +211,7 @@ local function ParseAddIcon(params, text)
 	while (1==1) do
 		local was = text
 		text = string.gsub(text, "(%w+)%s*%((.-)%)", ParseFunction)
-		text = string.gsub(text, "(%d+%.?%d*)s%s+between%s+node(%d+)%s+and%s+node(%d+)", ParseBetween)
+		text = string.gsub(text, "([lesmor]+)%s+than%s+(%d+%.?%d*)s%s+between%s+node(%d+)%s+and%s+node(%d+)", ParseBetween)
 		text = string.gsub(text, "node(%d+)%s+and%s+node(%d+)", ParseAnd)
 		text = string.gsub(text, "node(%d+)%s+or%s+node(%d+)", ParseOr)
 		text = string.gsub(text, "(%d+%.?%d*)s%s+before%s+node(%d+)", ParseBefore)
diff --git a/defaut/Druide.lua b/defaut/Druide.lua
index 36d9381..5cda8ee 100644
--- a/defaut/Druide.lua
+++ b/defaut/Druide.lua
@@ -59,7 +59,7 @@ SpellInfo(SHRED combo=1)
 SpellInfo(SAVAGEROAR combo=-5)
 SpellInfo(RIP combo=-5 duration=12)
 SpellInfo(FEROCIOUSBITE combo=-5)
-SpellInfo(RIP glyph=GLYPHOFSHRED forceduration=1 addduration=6)
+SpellInfo(RIP glyph=GLYPHOFSHRED addduration=6)
 SpellInfo(RIP glyph=GLYPHOFRIP addduration=4)

 AddIcon help=main