Fix ticket 293 - TimeToHealthPercent.
Johnny C. Lam [09-26-13 - 05:34]
Fix ticket 293 - TimeToHealthPercent.
Add new script condition TimeToHealthPercent() that returns the number of
seconds before the target's health percent reaches the given amount, e.g.,
if target.TimeToHealthPercent(25) <5 UsePotion()
Patch from @ShmooDude.
git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1027 d5049fe3-3747-40f7-a4b5-f36d6801af5f
diff --git a/OvaleCondition.lua b/OvaleCondition.lua
index 5a16b1d..40babff 100644
--- a/OvaleCondition.lua
+++ b/OvaleCondition.lua
@@ -3332,18 +3332,14 @@ end
--- Get the estimated number of seconds remaining before the target is dead.
-- @name TimeToDie
--- @paramsig number or boolean
--- @param operator Optional. Comparison operator: less, more.
--- @param number Optional. The number to compare against.
+-- @paramsig number
-- @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 number of seconds.
--- @return A boolean value for the result of the comparison.
-- @see DeadIn
-- @usage
-- if target.TimeToDie() <2 and ComboPoints() >0 Spell(eviscerate)
--- if target.TimeToDie(less 2) and ComboPoints() >0 Spell(eviscerate)
OvaleCondition.conditions.timetodie = function(condition)
local timeToDie = TimeToDie(GetTarget(condition))
@@ -3351,6 +3347,30 @@ OvaleCondition.conditions.timetodie = function(condition)
end
OvaleCondition.conditions.deadin = OvaleCondition.conditions.timetodie
+--- Get the estimated number of seconds remaining before the target is reaches the given percent of max health.
+-- @name TimeToHealthPercent
+-- @paramsig number
+-- @param percent The percent of max health of the target.
+-- @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 number of seconds.
+-- @see TimeToDie
+-- @usage
+-- if target.TimeToHealthPercent(25) <15 Item(virmens_bite_potion)
+
+OvaleCondition.conditions.timetohealthpercent = function(condition)
+ local timeToDie, health, maxHealth = TimeToDie(GetTarget(condition))
+ local percent = condition[1]
+ local healthPercent = health / maxHealth * 100
+ if healthPercent >= percent then
+ local t = timeToDie * (healthPercent - percent) / healthPercent
+ return 0, nil, t, OvaleState.maintenant, -1
+ end
+ return 0, nil, 0, 0, 0
+end
+OvaleCondition.conditions.timetolifepercent = OvaleCondition.conditions.timetohealthpercent
+
--- Get the number of seconds before the player has enough primary resources to cast the given spell.
-- @name TimeToPowerFor
-- @paramsig number