From bd771d2e66d4427ca1c2c2d80dab9bd6d0a84630 Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Sat, 10 Aug 2013 18:39:12 +0000 Subject: [PATCH] Generalize TimeToEnergyFor to TimeToPowerFor and add more aliases. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@997 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- OvaleCondition.lua | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/OvaleCondition.lua b/OvaleCondition.lua index 3f17bfd..f484d87 100644 --- a/OvaleCondition.lua +++ b/OvaleCondition.lua @@ -2615,7 +2615,7 @@ OvaleCondition.conditions.otherbuffremains = OvaleCondition.conditions.otherdebu -- @paramsig number -- @param id The spell ID. -- @return The amount of power (energy, focus, rage, etc.). --- @see EnergyCost +-- @see EnergyCost, FocusCost, ManaCost, RageCost -- @usage -- if Energy() > PowerCost(rake) Spell(rake) @@ -2624,7 +2624,13 @@ OvaleCondition.conditions.powercost = function(condition) return 0, nil, cost, 0, 0 end OvaleCondition.conditions.energycost = OvaleCondition.conditions.powercost +OvaleCondition.conditions.focuscost = OvaleCondition.conditions.powercost +OvaleCondition.conditions.manacost = OvaleCondition.conditions.powercost +OvaleCondition.conditions.ragecost = OvaleCondition.conditions.powercost OvaleCondition.spellbookConditions.energycost = true +OvaleCondition.spellbookConditions.focuscost = true +OvaleCondition.spellbookConditions.manacost = true +OvaleCondition.spellbookConditions.ragecost = true OvaleCondition.spellbookConditions.powercost = true --- Test if the target exists and is alive. @@ -3349,23 +3355,35 @@ OvaleCondition.conditions.timetodie = function(condition) end OvaleCondition.conditions.deadin = OvaleCondition.conditions.timetodie ---- Get the number of seconds before the player has enough energy to cast the given spell. --- @name TimeToEnergyFor +--- Get the number of seconds before the player has enough primary resources to cast the given spell. +-- @name TimeToPowerFor -- @paramsig number -- @param id The spell ID. -- @return The number of seconds. --- @see TimeToMaxEnergy - -OvaleCondition.conditions.timetoenergyfor = function(condition) - local cost = select(4, API_GetSpellInfo(condition[1])) or 0 - if OvaleState.state.energy < cost then - local t = OvaleState.currentTime + (cost - OvaleState.state.energy) / OvaleState.powerRate.energy - return 0, nil, 0, t, -1 +-- @see TimeToEnergyFor, TimeToFocusFor, TimeToMaxEnergy + +OvaleCondition.conditions.timetopowerfor = function(condition) + local cost, _, powerType = select(4, API_GetSpellInfo(condition[1])) + local power = OvaleData.powerType[powerType] + local currentPower = OvaleState.state[power] + local powerRate = OvaleState.powerRate[power] + cost = cost or 0 + if currentPower < cost then + if powerRate > 0 then + local t = OvaleState.currentTime + (cost - currentPower) / powerRate + return 0, nil, 0, t, -1 + else + return 0, nil, OvaleState.currentTime + 3600, 0, 0 + end else return 0, nil, 0, 0, 0 end end +OvaleCondition.conditions.timetoenergyfor = OvaleCondition.conditions.timetopowerfor +OvaleCondition.conditions.timetofocusfor = OvaleCondition.conditions.timetopowerfor OvaleCondition.spellbookConditions.timetoenergyfor = true +OvaleCondition.spellbookConditions.timetofocusfor = true +OvaleCondition.spellbookConditions.timetopowerfor = true --- Get the number of seconds before the player reaches maximum energy for feral druids, non-mistweaver monks and rogues. -- @name TimeToMaxEnergy -- 1.7.9.5