Johnny C. Lam [10-15-13 - 01:26]
diff --git a/OvaleAura.lua b/OvaleAura.lua
index 6cfb176..ed3b4bd 100644
--- a/OvaleAura.lua
+++ b/OvaleAura.lua
@@ -74,7 +74,7 @@ local OVALE_CLEU_TICK_EVENTS = {
--</private-static-properties>
--<private-static-methods>
-local function UnitGainedAura(guid, spellId, filter, casterGUID, icon, count, debuffType, duration, expirationTime, isStealable, name, value)
+local function UnitGainedAura(guid, spellId, filter, casterGUID, icon, count, debuffType, duration, expirationTime, isStealable, name, value1, value2, value3)
local self = OvaleAura
if not self_aura[guid][filter] then
self_aura[guid][filter] = {}
@@ -130,7 +130,7 @@ local function UnitGainedAura(guid, spellId, filter, casterGUID, icon, count, de
aura.mine = mine
aura.source = casterGUID
aura.name = name
- aura.value = value
+ aura.value1, aura.value2, aura.value3 = value1, value2, value3
-- Snapshot stats for DoTs.
if mine then
@@ -263,7 +263,7 @@ local function ScanUnitAuras(unitId, guid)
end
else
local casterGUID = OvaleGUID:GetGUID(unitCaster)
- local added = UnitGainedAura(guid, spellId, filter, casterGUID, icon, count, debuffType, duration, expirationTime, isStealable, name, value1)
+ local added = UnitGainedAura(guid, spellId, filter, casterGUID, icon, count, debuffType, duration, expirationTime, isStealable, name, value1, value2, value3)
if added then
Ovale.refreshNeeded[unitId] = true
end
diff --git a/OvaleCondition.lua b/OvaleCondition.lua
index 4822348..c127805 100644
--- a/OvaleCondition.lua
+++ b/OvaleCondition.lua
@@ -518,6 +518,67 @@ OvaleCondition.conditions.armorsetparts = function(condition)
return Compare(OvaleEquipement:GetArmorSetCount(condition[1]), comparator, limit)
end
+--- Get the current tick value of a periodic aura on the target.
+-- @name TickValue
+-- @paramsig number or boolean
+-- @param id The spell ID of the aura or the name of a spell list.
+-- @param operator Optional. Comparison operator: less, atMost, equal, atLeast, more.
+-- @param number Optional. The number to compare against.
+-- @param filter Optional. The type of aura to check.
+-- Default is any.
+-- Valid values: any, buff, debuff
+-- @param target Optional. Sets the target to check. The target may also be given as a prefix to the condition.
+-- Defaults to target=player.
+-- Valid values: player, target, focus, pet.
+-- @return The tick value.
+-- @return A boolean value for the result of the comparison.
+-- @see TicksRemain
+-- @usage
+-- if DebuffRemains(light_stagger) >0 and TickValue(light_stagger) >10000
+-- Spell(purifying_brew)
+
+--- Get the value of a buff as a number. Not all buffs return an amount.
+-- @name BuffAmount
+-- @paramsig number
+-- @param id The spell ID of the aura or the name of a spell list.
+-- @param operator Optional. Comparison operator: less, atMost, equal, atLeast, more.
+-- @param number Optional. The number to compare against.
+-- @param target Optional. Sets the target to check. The target may also be given as a prefix to the condition.
+-- Defaults to target=player.
+-- Valid values: player, target, focus, pet.
+-- @param any Optional. Sets by whom the aura was applied. If the aura can be applied by anyone, then set any=1.
+-- Defaults to any=0.
+-- Valid values: 0, 1.
+-- @param value Optional. Sets which aura value to return from UnitAura().
+-- Defaults to value=1.
+-- Valid values: 1, 2, 3.
+-- @return The value of the buff as a number.
+-- @see DebuffAmount
+-- @see TickValue
+-- @usage
+-- if DebuffAmount(stagger) >10000 Spell(purifying_brew)
+-- if DebuffAmount(stagger more 10000) Spell(purifying_brew)
+
+OvaleCondition.conditions.buffamount = function(condition)
+ self_auraFound.value1, self_auraFound.value2, self_auraFound.value3 = nil, nil, nil
+ local comparator, limit = condition[2], condition[3]
+ local start, ending = GetAura(condition, self_auraFound)
+ local value = condition.value or 1
+ local amount
+ if value == 1 then
+ amount = self_auraFound.value1 or 0
+ elseif value == 2 then
+ amount = self_auraFound.value2 or 0
+ elseif value == 3 then
+ amount = self_auraFound.value3 or 0
+ else
+ amount = 0
+ end
+ return Compare(amount, comparator, limit)
+end
+OvaleCondition.conditions.debuffamount = OvaleCondition.conditions.buffamount
+OvaleCondition.conditions.tickvalue = OvaleCondition.conditions.buffamount
+
--- Get the current attack power of the player.
-- @name AttackPower
-- @paramsig number or boolean
@@ -3613,33 +3674,6 @@ OvaleCondition.conditions.threat = function(condition)
return Compare(threatpct, comparator, limit)
end
---- Get the current tick value of a periodic aura on the target.
--- @name TickValue
--- @paramsig number or boolean
--- @param id The spell ID of the aura or the name of a spell list.
--- @param operator Optional. Comparison operator: less, atMost, equal, atLeast, more.
--- @param filter Optional. The type of aura to check.
--- Default is any.
--- Valid values: any, buff, debuff
--- @param number Optional. The number to compare against.
--- @param target Optional. Sets the target to check. The target may also be given as a prefix to the condition.
--- Defaults to target=player.
--- Valid values: player, target, focus, pet.
--- @return The tick value.
--- @return A boolean value for the result of the comparison.
--- @see TicksRemain
--- @usage
--- if DebuffRemains(light_stagger) >0 and TickValue(light_stagger) >10000
--- Spell(purifying_brew)
-
-OvaleCondition.conditions.tickvalue = function(condition)
- self_auraFound.value = nil
- local comparator, limit = condition[2], condition[3]
- local start, ending = GetAura(condition, self_auraFound)
- local value = self_auraFound.value or 0
- return Compare(value, comparator, limit)
-end
-
--- Get the total number of ticks of a periodic aura.
-- @name Ticks
-- @paramsig number or boolean