Get an Epic Experience with Premium

Ovale Spell Priority

Buffs & Debuffs Login to Add Favorites
  • 27 Likes
  • World of Warcraft
  • 5,025 Monthly Downloads
  • Supports: 5.4.1
  • 1,525,193 Total Downloads
  • Updated 04/12/2014
  • Created 08/17/2008
  • 662 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: GNU General Public License version 2 (GPLv2)
  • Newest File: 5.4.8
or

About Ovale Spell Priority

Ovale Spell Priority shows you what spell or ability you should use in order to maximize your damage.

It displays one or more icons that show the cooldown of an action. The action is conditionally defined through a user-defined script, e.g. you may display either Corruption if the DoT is not on your target or Shadow Bolt if the Corruption DoT is already on your target.

Default scripts are available for all dps classes and specs, based on SimulationCraft. You may also customize the default script to suit your needs (see Documentation) or use scripts made by other users.

See the video of a survival hunter using Ovale during Wrath of the Lich King.

Please use the forums to submit scripts or discuss them. If you want to report bugs, use the ticket manager.

Features

  • Default scripts for every DPS class and talent specialization.
  • Tracks DoTs, buffs, debuffs, cooldowns, combo points, runes, mana, everything that a player would need to choose what to do.
  • Adapts to your talent points and glyphs.
  • Change quickly the configuration at any time with configurable checkboxes and drop-down lists that can be shown/hidden by clicking on the icons, e.g. switching between single and multi-target damage, setting the curse to cast.
  • Multi-target DoT tracking: remember which target had a DoT and when the DoT will expire, allowing the script author to support multi-target dotting.
  • Compatible with the action icon skinning library Masque.
  • 100% configurable: everything is in an easy-to-understand script that you can modify and test in real-time without reloading your UI.
  • Can be used to track crowd-control spells on your focus.
  • Scoring system: evaluate how well you followed the script. Add a new Ovale panel in Recount and Skada, with a score between 0 (very bad) and 1000 (perfect).
  • Up to two-spells-ahead accuracy with some classes.

FAQ

Why does it not work for me?

Try to reset your Profile in the Ovale settings. Most problems come from faulty scripts.

Why is the key binding displayed for an action wrong?

The action may be in several action bars, e.g., the bars that you can cycle through or the bars that appear in special cases like Shadowform or Cat Form.

Why is the key binding not displayed at all?

The action must be in your standard Blizzard action bar in order for Ovale to know which key binding is used.

Why is the icon sometimes red?

The cooldown that is displayed in an icon is not always the true action cooldown. If this cooldown is longer than the action cooldown, then the icon is red. In most cases, it means that if you use this action too soon, then you will overwrite or clip a DoT, which may not be what you want.

Why can't I click on the icon to cast the spell?

Blizzard does not allow this. Only a predefined sequence of spells can be bound to an action icon and this sequence can not change in combat.

On my low-level character, there is nothing at all.

You need to reach level 10 and choose a specialization.

There is no bane or curse (or whatever) in the rotation.

Click the icon and select the bane or curse that you want to use from the dropdown menu list.

Custom scripts

------------------------------------------------------------------------
r1134 | jlam | 2013-11-07 21:00:50 +0000 (Thu, 07 Nov 2013) | 1 line
Changed paths:
   A /tags/5.4.8 (from /trunk:1133)

Tagging as 5.4.8 release.
------------------------------------------------------------------------
r1133 | jlam | 2013-11-07 20:59:45 +0000 (Thu, 07 Nov 2013) | 16 lines
Changed paths:
   M /trunk/scripts/OvalePriest.lua

Fix error with using Mind Blast in default priest script.

- Remove spurious "test" parameter to SpellInfo that shouldn't be there.

- If a condition that returns a number is used as a boolean, then boolean
  evaluation rules dictate that non-zero is true and zero is false.  Fix:

    if SpellCooldown(mind_blast) Spell(mind_blast)

  was probably intended to be:

    if SpellCooldown(mind_blast) == 0 Spell(mind_blast)

  which is simply just:

    Spell(mind_blast)
------------------------------------------------------------------------
r1131 | jlam | 2013-11-07 00:06:59 +0000 (Thu, 07 Nov 2013) | 3 lines
Changed paths:
   M /trunk/OvaleBestAction.lua

Fix bug where a table wasn't cleared before re-using.

This fixes problems with using comparison operators noted by @Wiljo.
------------------------------------------------------------------------
r1129 | jlam | 2013-11-06 18:52:27 +0000 (Wed, 06 Nov 2013) | 4 lines
Changed paths:
   M /trunk/OvaleBestAction.lua

Fix "==" operator broken in r1045.

This fixes scripts that compare a condition's return value using equality,
e.g., pet.Health() == 0.
------------------------------------------------------------------------
r1125 | jlam | 2013-11-06 17:23:18 +0000 (Wed, 06 Nov 2013) | 5 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Fix ticket 312 - TimeToDie not working.

Timespan computations were not working when the start a time interval was
infinity (math.huge the time to die to be a very large number
instead of infinity so that (start, math.huge is still a valid timespan.
------------------------------------------------------------------------
r1123 | jlam | 2013-11-04 18:59:57 +0000 (Mon, 04 Nov 2013) | 3 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Fix TotemExpires and TotemPresent when passed "totem=..."

This was broken in r1074 during a code cleanup.
------------------------------------------------------------------------
r1120 | jlam | 2013-10-31 19:06:34 +0000 (Thu, 31 Oct 2013) | 1 line
Changed paths:
   M /trunk/scripts/OvaleDeathKnight.lua
   M /trunk/scripts/OvaleDruid.lua
   M /trunk/scripts/OvaleHunter.lua
   M /trunk/scripts/OvaleMage.lua
   M /trunk/scripts/OvaleMonk.lua
   M /trunk/scripts/OvalePaladin.lua
   M /trunk/scripts/OvalePriest.lua
   M /trunk/scripts/OvaleRogue.lua
   M /trunk/scripts/OvaleShaman.lua
   M /trunk/scripts/OvaleWarlock.lua
   M /trunk/scripts/OvaleWarrior.lua

Allow the Lua garbage collector to G/C unused scripts.
------------------------------------------------------------------------
r1119 | jlam | 2013-10-31 19:06:27 +0000 (Thu, 31 Oct 2013) | 4 lines
Changed paths:
   M /trunk/Ovale.toc
   D /trunk/defaut/Chaman.lua
   D /trunk/defaut/Chasseur.lua
   D /trunk/defaut/Chevalier.lua
   D /trunk/defaut/Demoniste.lua
   D /trunk/defaut/Druide.lua
   D /trunk/defaut/Guerrier.lua
   D /trunk/defaut/Mage.lua
   D /trunk/defaut/Moine.lua
   D /trunk/defaut/Paladin.lua
   D /trunk/defaut/Pretre.lua
   D /trunk/defaut/Voleur.lua
   D /trunk/defaut/scripts.xml
   A /trunk/scripts/OvaleDeathKnight.lua (from /trunk/defaut/Chevalier.lua:1118
   A /trunk/scripts/OvaleDruid.lua (from /trunk/defaut/Druide.lua:1118
   A /trunk/scripts/OvaleHunter.lua (from /trunk/defaut/Chasseur.lua:1118
   A /trunk/scripts/OvaleMage.lua (from /trunk/defaut/Mage.lua:1118
   A /trunk/scripts/OvaleMonk.lua (from /trunk/defaut/Moine.lua:1118
   A /trunk/scripts/OvalePaladin.lua (from /trunk/defaut/Paladin.lua:1118
   A /trunk/scripts/OvalePriest.lua (from /trunk/defaut/Pretre.lua:1118
   A /trunk/scripts/OvaleRogue.lua (from /trunk/defaut/Voleur.lua:1118
   A /trunk/scripts/OvaleShaman.lua (from /trunk/defaut/Chaman.lua:1118
   A /trunk/scripts/OvaleWarlock.lua (from /trunk/defaut/Demoniste.lua:1118
   A /trunk/scripts/OvaleWarrior.lua (from /trunk/defaut/Guerrier.lua:1118
   M /trunk/scripts/scripts.xml

Move default scripts to new location under "scripts".

The "scripts" directory is the new repository for all scripts or
script-includes distributed with Ovale.
------------------------------------------------------------------------
r1118 | jlam | 2013-10-31 19:06:21 +0000 (Thu, 31 Oct 2013) | 15 lines
Changed paths:
   M /trunk/Ovale.toc
   M /trunk/OvaleCompile.lua
   M /trunk/OvaleScripts.lua
   A /trunk/scripts
   A /trunk/scripts/scripts.xml

Rudimentary support for Include(name) directives in scripts.

- Include(name) will cause the the contents of <name> from the script
  library to be inserted at that point prior to compiling the script.

- Include() may be nested, i.e., a script may include a script that
  includes another script, etc.

- A script that is intended to be included in other scripts and not to be
  listed as a selectable script for evaluation at runtime should be
  registered with OvaleScripts using:

    :RegisterScript(class, name, description, code, scriptType)

  where scriptType is anything other than "script", e.g., "include"
------------------------------------------------------------------------
r1117 | jlam | 2013-10-31 19:06:14 +0000 (Thu, 31 Oct 2013) | 15 lines
Changed paths:
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleCompile.lua
   M /trunk/OvaleCondition.lua
   M /trunk/OvaleFrame.lua
   M /trunk/OvaleTimeSpan.lua
   M /trunk/compiler.pl

True time-span implementation.

A time-span is a union of continuous interval subsets of the real number
line (0, infinity).  Internally represented by an array of numbers
representing alternately the left and right endpoints of an interval.
Point sets and empty sets are both considered empty.

Pre-allocate tables when creating parse tree nodes in OvaleCompile to be
reused for time-span evaluation within OvaleBestAction.

Convert OvaleBestAction to use time-spans for correctness when dealing
with arbitrary unions and intersections of time intervals when evaluating
nodes.

This fixes ticket 306 - "and" "or" bugged by @Wiljo.
------------------------------------------------------------------------
r1116 | jlam | 2013-10-31 19:06:08 +0000 (Thu, 31 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Fix ticket 307 - TimeToDie(comparison number) improperly returns true

Add some arguments for TestOvaleValue missing in r1114.  This fixes
TimeToDie and TimeToHealthPercent.
------------------------------------------------------------------------
r1114 | jlam | 2013-10-26 22:24:13 +0000 (Sat, 26 Oct 2013) | 3 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Narrow the domains for which changing values are valid.

This is a temporary fix for ticket 306 - "and" "or" bugged.
------------------------------------------------------------------------
r1113 | jlam | 2013-10-26 22:23:55 +0000 (Sat, 26 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleTimeSpan.lua

Simplify some logic for doing time span operations.
------------------------------------------------------------------------
r1111 | jlam | 2013-10-24 05:40:57 +0000 (Thu, 24 Oct 2013) | 9 lines
Changed paths:
   M /trunk/.pkgmeta
   M /trunk/Ovale.toc

Create a proper "no-lib" version of Ovale.

- Strip out all libraries if a "no-lib" version is requested.

- Remove LibDualSpec-1.0 from the list of required library dependencies
  since its use in OvaleOptions only requires that it be an optional
  dependency.

- Sort the OptionalDeps metadata in the TOC file.
------------------------------------------------------------------------
r1110 | jlam | 2013-10-24 05:40:51 +0000 (Thu, 24 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleCompile.lua
   M /trunk/OvaleOptions.lua
   M /trunk/OvaleScripts.lua

Don't load/reference script code for other classes that won't be used.

Only register scripts that are for the current class and allow the garbage
collector to sweep away unused code strings.
------------------------------------------------------------------------
r1109 | jlam | 2013-10-24 05:40:45 +0000 (Thu, 24 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleScripts.lua

Reference OvalePaperDoll in a simpler way.
------------------------------------------------------------------------
r1108 | jlam | 2013-10-24 05:40:38 +0000 (Thu, 24 Oct 2013) | 12 lines
Changed paths:
   M /trunk/OvaleAura.lua

Fix ticket 304 - Buff tracking bugged.

OvaleAura was missed in the code sweep to use time spans in r1045.

OvaleAura was using nil to represent infinity in auras for both duration
and expiration time.  This caused OvaleCondition to consider these auras
as invalid because OvaleCondition is much more strict now when checking
the start and ending times for auras.  Use math.huge (the correct value to
represent infinity for time spans) instead.

This bug only appeared when the aura has "infinite" duration, or no
expiration time.
------------------------------------------------------------------------
r1106 | jlam | 2013-10-23 07:20:26 +0000 (Wed, 23 Oct 2013) | 5 lines
Changed paths:
   M /trunk/OvaleCompile.lua

Rename the parameter to add a spell to a list from "list" to "addlist".

This fixes a collision between this new meaning and the original meaning,
which was to check whether "list=X item=Y" matches a list named "X" having
value "Y".
------------------------------------------------------------------------
r1105 | jlam | 2013-10-23 07:20:19 +0000 (Wed, 23 Oct 2013) | 7 lines
Changed paths:
   M /trunk/OvaleCompile.lua

Support test conditions for SpellAdd{,Target}{Buff,Debuff}().

This change also allows for multiple SpellAddBuff() lines (and similarly
for the other conditions) for the same spell to have a cumulative effect.

This makes it possible to declare separate information depending on spec
or talents or glyphs.
------------------------------------------------------------------------
r1104 | jlam | 2013-10-23 07:20:13 +0000 (Wed, 23 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleAura.lua

Fix return value of OvaleAura:GetAura().

This was a code commit missed in r942 from when the function signature
changed.
------------------------------------------------------------------------
r1103 | jlam | 2013-10-23 07:20:07 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleState.lua

Triggering Lunar Eclipse resets the cooldown of Starfall.
------------------------------------------------------------------------
r1102 | jlam | 2013-10-23 07:20:00 +0000 (Wed, 23 Oct 2013) | 3 lines
Changed paths:
   M /trunk/OvaleState.lua

Spell cooldowns are triggered when a spell has finished casting.

This change has no run-time effect, but is a documentation issue.
------------------------------------------------------------------------
r1101 | jlam | 2013-10-23 07:19:54 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvalePaperDoll.lua

Raise an Ovale event for a spec change to help synchronize modules.
------------------------------------------------------------------------
r1100 | jlam | 2013-10-23 07:19:48 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleAura.lua

Rename Ovale_AuraRefreshed to Ovale_AuraChanged.
------------------------------------------------------------------------
r1099 | jlam | 2013-10-23 07:19:42 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Sort conditions alphabetically for ease of maintenance.
------------------------------------------------------------------------
r1098 | jlam | 2013-10-23 07:19:35 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Move private method to the proper section.
------------------------------------------------------------------------
r1097 | jlam | 2013-10-23 07:19:29 +0000 (Wed, 23 Oct 2013) | 5 lines
Changed paths:
   M /trunk/OvaleCompile.lua
   M /trunk/OvaleCondition.lua

Back out r935 and remove the damage=Func parameter feature.

This feature added dependency loops and is removed in favor of directly
adding functions to scripts via AddFunction() with asValue=1 to force
constant evaluation.
------------------------------------------------------------------------
r1096 | jlam | 2013-10-23 07:19:23 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/Ovale.toc

Change load order of files to match dependencies.
------------------------------------------------------------------------
r1095 | jlam | 2013-10-23 07:19:17 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/Ovale.toc
   A /trunk/locales.xml

Move loading of locales into an XML file.
------------------------------------------------------------------------
r1094 | jlam | 2013-10-23 07:19:10 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/Ovale.toc
   A /trunk/defaut/scripts.xml

Move loading of scripts into an XML file for encapsulation.
------------------------------------------------------------------------
r1093 | jlam | 2013-10-23 07:19:04 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvalePaperDoll.lua

Only show the snapshot count when the Paper doll debug option is checked.
------------------------------------------------------------------------
r1092 | jlam | 2013-10-23 07:18:58 +0000 (Wed, 23 Oct 2013) | 6 lines
Changed paths:
   M /trunk/OvalePool.lua
   M /trunk/OvalePoolGC.lua

Clean up table pool modules.

Modify constructors so that prototype inheritance works properly.

Remove the Reset() method and just call Drain() from the constructor to
empty out the pool to start.
------------------------------------------------------------------------
r1091 | jlam | 2013-10-23 07:18:52 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/compiler.pl

Properly handle public properties inherited from parent class.
------------------------------------------------------------------------
r1090 | jlam | 2013-10-23 07:18:45 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvalePoolGC.lua

Remove unnecessary properties from OvalePoolGC.
------------------------------------------------------------------------
r1089 | jlam | 2013-10-23 07:18:39 +0000 (Wed, 23 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvalePool.lua
   M /trunk/OvalePoolGC.lua

Fix leaks to global namespace in OvalePool and OvalePoolGC.
------------------------------------------------------------------------
r1087 | jlam | 2013-10-20 03:48:04 +0000 (Sun, 20 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Add conditions for agility, intellect, spirit, stamina and strength.
------------------------------------------------------------------------
r1085 | jlam | 2013-10-19 17:27:18 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleSpellBook.lua

Fix infinite loop introduced in r1083 when scanning pet spellbooks.
------------------------------------------------------------------------
r1084 | jlam | 2013-10-19 17:24:31 +0000 (Sat, 19 Oct 2013) | 7 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Fix ticket 302 noting inconsistent return value for SpellCooldown().

Modify SpellCooldown to have constant value of 0 if the spell is off of
cooldown.  This matches natural expectations for how to use this script
condition.

Make similar changes to other cooldown conditions.
------------------------------------------------------------------------
r1083 | jlam | 2013-10-19 17:24:25 +0000 (Sat, 19 Oct 2013) | 15 lines
Changed paths:
   M /trunk/OvaleSpellBook.lua

Get correct spell ID for spells in the spellbook.

When looping through the spellbook, GetSpellBookItemName() doesn't always
return the name of the spell that's currently showing in the spellbook;
instead it might show the underlying spell that may have been replaced by
a new spell by either talents, glyphs, Symbiosis, etc.

Use GetSpellLink() instead to get the hyperlink of the actual spell that's
showing in the spellbook and parse it to determine the correct spell ID
and spell name.  Associate both the original (replaced) spell ID and the
the true spell ID with the correct spell name as some scripts, e.g.
Leafkiller's feral script, reference the spell using the replaced spell
ID.

Fix by @ShmooDude and closes his tickets 282 and 283.
------------------------------------------------------------------------
r1081 | jlam | 2013-10-19 07:54:23 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleBestAction.lua

Placate compiler.pl
------------------------------------------------------------------------
r1080 | jlam | 2013-10-19 07:54:17 +0000 (Sat, 19 Oct 2013) | 20 lines
Changed paths:
   M /trunk/OvaleBestAction.lua

Support "casting" the return value of custom functions into constants.

A custom function is one that is defined by AddFunction.  If the function
is defined as:

    AddFunction FuncName asValue=1 { ... }

then the function is evaluated normally, then typecast to a constant as
follows:

(1) If the return value is a time span (a "boolean" value), then if the
    current time of the simulation is within the time span, then return 1,
    or 0 otherwise.

(2) If the return value is a linear function, then if the current time of
    the simulation is within the function's domain, then the function is
    simply evaluated at the current time, or 0 otherwise.

(3) If the return value is an action, then return 1 if the action is off
    of cooldown, or 0 if it is on cooldown.
------------------------------------------------------------------------
r1079 | jlam | 2013-10-19 07:54:11 +0000 (Sat, 19 Oct 2013) | 9 lines
Changed paths:
   M /trunk/OvaleCompile.lua

Allow for custom functions in scripts to support the usual parameters.

The new syntax is:

    AddFunction FuncName param1=value1 param2=value2 { ... }

Where the parameter=value pairs can be used to determine if that function
meets the current conditions, e.g., mastery=1 to only have that function
be valid in the first specialization.
------------------------------------------------------------------------
r1078 | jlam | 2013-10-19 07:54:05 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvalePaperDoll.lua

Add temporary debugging code that tracks snapshots while in combat.
------------------------------------------------------------------------
r1077 | jlam | 2013-10-19 07:53:59 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Fix the return value of TimeInCombat() script condition.
------------------------------------------------------------------------
r1076 | jlam | 2013-10-19 07:53:53 +0000 (Sat, 19 Oct 2013) | 5 lines
Changed paths:
   M /trunk/Ovale.lua
   M /trunk/Ovale.toc
   M /trunk/OvaleCompile.lua
   M /trunk/OvaleData.lua
   M /trunk/OvaleFuture.lua
   M /trunk/OvaleRecount.lua
   A /trunk/OvaleScore.lua
   M /trunk/OvaleSkada.lua

Refactor spell-scoring to new module OvaleScore.

Fix scores not being sent to damage meters in change introduced in r855,
where the wrong module names were being used, so none were ever found
despite proper registration of the damage meter functions.
------------------------------------------------------------------------
r1075 | jlam | 2013-10-19 07:53:47 +0000 (Sat, 19 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleFuture.lua
   M /trunk/OvaleState.lua

Account for damage-multiplier auras that stack.

An aura whose effect stacks can set "stacking=1" in a SpellInfo
declaration.
------------------------------------------------------------------------
r1074 | jlam | 2013-10-19 07:53:40 +0000 (Sat, 19 Oct 2013) | 5 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Sanity check arguments to script conditions.

Set local variables for all of the expected condition parameters at the
start of the condition implementation, and set the target as well if used.
Also properly set default values for script conditions.
------------------------------------------------------------------------
r1073 | jlam | 2013-10-19 07:53:35 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Remove broken and unused EffectiveMana() script condition.
------------------------------------------------------------------------
r1072 | jlam | 2013-10-19 07:53:29 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Rename some variables for code consistency.
------------------------------------------------------------------------
r1071 | jlam | 2013-10-19 07:53:22 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvalePower.lua
   M /trunk/OvaleState.lua

Track player's power using events in OvalePower.
------------------------------------------------------------------------
r1070 | jlam | 2013-10-19 07:53:16 +0000 (Sat, 19 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleFrame.lua

Back out r1042 which added a time component to OvaleBestAction:Compute().

OvaleBestAction should always refer to the state maintained by OvaleState,
otherwise, there could be errors in computing an action.
------------------------------------------------------------------------
r1069 | jlam | 2013-10-19 07:53:10 +0000 (Sat, 19 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Rename "atTime" back to "origin" in OvaleConditions.

The use of atTime here doesn't match the semantics of atTime in
OvaleBestAction and it's clearer to use a different name.
------------------------------------------------------------------------
r1068 | jlam | 2013-10-19 07:53:04 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleTimeSpan.lua

Clarify how the complement of a time span is calculated.
------------------------------------------------------------------------
r1067 | jlam | 2013-10-19 07:52:58 +0000 (Sat, 19 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Remove comment for removed TickValue() primary condition.
------------------------------------------------------------------------
r1066 | jlam | 2013-10-19 07:52:52 +0000 (Sat, 19 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleCompile.lua

Clear functions defined by AddFunction before compiling the script.

Old function names were lingering between script compilations.
Noted by @ShmooDude.
------------------------------------------------------------------------
r1065 | jlam | 2013-10-19 07:52:46 +0000 (Sat, 19 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleCompile.lua

Fix ticket 301 - Allow Define() to take decimal values.

Extend Define() to allow for non-alphanumeric values.  Also allow for "_",
".", and "=" in the value.  Spaces are still prohibited.
------------------------------------------------------------------------
r1063 | jlam | 2013-10-15 03:07:01 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Fix the return values of BuffExpires and BuffPresent in corner cases.
------------------------------------------------------------------------
r1062 | jlam | 2013-10-15 03:06:54 +0000 (Tue, 15 Oct 2013) | 6 lines
Changed paths:
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleCondition.lua
   M /trunk/OvalePower.lua
   M /trunk/OvaleState.lua

Rename some power-related variables for clarity.

    OvalePower.POWER -> POWER_INFO
    OvalePower.power -> powerType

Rename some local variables that use the values above in the same way.
------------------------------------------------------------------------
r1061 | jlam | 2013-10-15 01:26:32 +0000 (Tue, 15 Oct 2013) | 8 lines
Changed paths:
   M /trunk/OvaleAura.lua
   M /trunk/OvaleCondition.lua

Fix ticket 299 - BuffAmount()

Add a new condition BuffAmount that returns one of the three values
associated with a unit aura (see UnitAura documentation for more details).
Make existing TickValue into an alias for BuffAmount as they are basically
identical.

Implementation from @ShmooDude.
------------------------------------------------------------------------
r1060 | jlam | 2013-10-15 01:26:26 +0000 (Tue, 15 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleCondition.lua
   M /trunk/OvaleEquipement.lua

Add new script condition HasEquippedItem(itemId).

This is a generic condition that can test whether a particular itemId is
currently equipped.
------------------------------------------------------------------------
r1059 | jlam | 2013-10-15 01:26:19 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleEquipement.lua

Store the item levels of equipped items in OvaleEquipement.
------------------------------------------------------------------------
r1058 | jlam | 2013-10-15 01:26:10 +0000 (Tue, 15 Oct 2013) | 10 lines
Changed paths:
   M /trunk/OvaleBestAction.lua

Allow for multiplication and division of conditions that return numbers.

All "numbers" are actually linear functions of the form:

    f(t) = a + (t - b)*c.

Multiplication and division of linear functions does not yield a linear
function in the general case, but the resulting function can be
approximated with a first order Taylor series expansion around the current
time point.
------------------------------------------------------------------------
r1057 | jlam | 2013-10-15 01:26:04 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleBestAction.lua

Clean up OvaleBestAction:GetActionInfo() and add additional comments.
------------------------------------------------------------------------
r1056 | jlam | 2013-10-15 01:25:58 +0000 (Tue, 15 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleBestAction.lua

Fix the calculation of number of ticks of a channelled spell.

This properly accounts for which type of haste affects the channelled
spell.
------------------------------------------------------------------------
r1055 | jlam | 2013-10-15 01:25:51 +0000 (Tue, 15 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleCompile.lua

Split "actions" from "functions", where actions are Spell/Item/Macro, etc.

Actions are final actions to be suggested, while functions return booleans
or values.
------------------------------------------------------------------------
r1054 | jlam | 2013-10-15 01:25:45 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Sanity check some values before doing arithmetic with them.
------------------------------------------------------------------------
r1053 | jlam | 2013-10-15 01:25:38 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleIcone.lua

Clamp infinite time values to one hour when displayed on an icon.
------------------------------------------------------------------------
r1052 | jlam | 2013-10-15 01:25:31 +0000 (Tue, 15 Oct 2013) | 7 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Update most conditions to support comparisons, e.g., ComboPoints(more 0).

The CPU usage of an AttackPower() > 1000 call is about twice that of an
AttackPower(more 1000) call, so update most of the script conditions to
take comparators.

From @ShmooDude in pullup request #7 with changes by @jlam.
------------------------------------------------------------------------
r1051 | jlam | 2013-10-15 01:25:24 +0000 (Tue, 15 Oct 2013) | 7 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Add new comparators "atMost" and "atLeast" for condition parameters.

This allows for expressing "<= limit" or ">= limit", e.g., the following
two conditions are the same:

    Chi(atMost 3)
    Chi() <= 3
------------------------------------------------------------------------
r1050 | jlam | 2013-10-15 01:25:17 +0000 (Tue, 15 Oct 2013) | 6 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Add new private method TestOvaleValue().

TestOvaleValue() returns either an "Ovale value", which is a linear
function, or an "Ovale boolean", which is a time span.

Reimplement TestValue() and Compare() using TestOvaleValue().
------------------------------------------------------------------------
r1049 | jlam | 2013-10-15 01:25:10 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleBestAction.lua

Clarify comment on the return value of a node evaluated as a boolean.
------------------------------------------------------------------------
r1048 | jlam | 2013-10-15 01:25:04 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Fix the return value of the PTR() condition for MoP 5.4.
------------------------------------------------------------------------
r1047 | jlam | 2013-10-15 01:24:58 +0000 (Tue, 15 Oct 2013) | 5 lines
Changed paths:
   M /trunk/OvaleCondition.lua

Fix return value of Chi().

Chi is a resource like holy power or combo points that doesn't have a rate
of regeneration; instead, it is gained on lost strictly through abilities
(while in combat).
------------------------------------------------------------------------
r1046 | jlam | 2013-10-15 01:24:51 +0000 (Tue, 15 Oct 2013) | 1 line
Changed paths:
   M /trunk/OvaleCondition.lua

Fix return value of MaxFocus().
------------------------------------------------------------------------
r1045 | jlam | 2013-10-15 01:24:45 +0000 (Tue, 15 Oct 2013) | 4 lines
Changed paths:
   M /trunk/Ovale.toc
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleCondition.lua
   A /trunk/OvaleTimeSpan.lua
   M /trunk/compiler.pl

Implement time spans, which are continuous open intervals of time.

Convert OvaleBestAction and OvaleCondition to use actual time spans
instead of start/ending/nil to represent times.
------------------------------------------------------------------------
r1044 | jlam | 2013-10-15 01:24:39 +0000 (Tue, 15 Oct 2013) | 8 lines
Changed paths:
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleCompile.lua

Split the generic "operator" node into "arithmetic" and "compare" nodes.

"Arithmetic" and "compare" nodes return different things when computed, so
split the computation into separate functions.

Modify the arithmetic computations so that the resulting values have an
origin of atTime, since all computations will ultimately be carried out at
t = atTime.
------------------------------------------------------------------------
r1043 | jlam | 2013-10-15 01:24:32 +0000 (Tue, 15 Oct 2013) | 8 lines
Changed paths:
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleCompile.lua

Remove support for the older "natural English" script syntax.

The older syntax for scripts tried to express time spans using natural
English phrases, but were more difficult to write and were nonsensical
when put together with other valid expressions that use the modern syntax.

Remove support for the old syntax to simplify the compiler and the script
engine.
------------------------------------------------------------------------
r1042 | jlam | 2013-10-15 01:24:25 +0000 (Tue, 15 Oct 2013) | 4 lines
Changed paths:
   M /trunk/OvaleBestAction.lua
   M /trunk/OvaleFrame.lua

Add a time component to the :Compute method of OvaleBestAction.

The time represents the time at which to evaluate the time spans
associated with the script nodes.
------------------------------------------------------------------------
r1041 | jlam | 2013-10-15 01:24:19 +0000 (Tue, 15 Oct 2013) | 4 lines
Changed paths:
   M /trunk/README.md

Remove reference to the wowdps.com SimC profile importer.

Currently, the importer doesn't generate working scripts and causes
needless tickets to be filed to the project.
------------------------------------------------------------------------
r1040 | jlam | 2013-10-15 01:24:12 +0000 (Tue, 15 Oct 2013) | 7 lines
Changed paths:
   M /trunk/OvaleAura.lua
   M /trunk/OvaleCompile.lua
   M /trunk/OvaleDamageTaken.lua
   M /trunk/OvaleFuture.lua
   M /trunk/OvalePaperDoll.lua
   M /trunk/OvalePool.lua
   M /trunk/OvalePoolGC.lua
   M /trunk/OvaleQueue.lua
   M /trunk/OvaleState.lua
   M /trunk/compiler.pl

Code cleanup.

- Simplify constructors for OOP classes.
- Fix leak to global namespace.
- Be cleaner about using "function static" variables.
- List private functions/methods used, including base Lua API functions.
- Quiet harmless warnings in compiler.pl slightly.
------------------------------------------------------------------------

Comments

First Previous Page 60 of 61 Next Last
  • #26
    1. I may do that in a future version. Thank you for the suggestion.
    2. I tried that (the option is still here in the appearence menu, check "Predictive (EXPERIMENTAL)"), but I found that the result was more confusing than useful. You may test it if you want, I could use some feedback.

    It is a feature to show the border of the HS/Cleave button even if there is nothing to cast. If thought it was weird if the button kept disappearing/appearing every two seconds. If a majority of people don't like that, I may change it.

    I don't know what you mean about the question mark, I don't have it. It is likely a bug. Did you change the default script? Could you show me a screenshot?
  • #28
    For the "Predictive" fuction you can see what I mean if you have the posibility to test CLCRet addon (http://wow.curse.com/downloads/wow-addons/details/clcret.aspx) for ret pallies, has some nice features, but yours is just so much cooler because it's usable for all classes.
  • #27
    Hi,

    Thanks for the reply

    I have tested the "Predictive (EXPERIMENTAL)" feature, and yeah it seems a bit more confusing than helpful. Maybe make both icons visible, so there are 2 icons at all times instead of the scrolling feature (a small icon for next skill and a normal sized icon for the skill you should use now?)

    Here's a screenshot of the ? I talked about (http://hellbound.apathia.dk/img/upload/WoWScrnShot_110109_113024.jpg). They turn red if I'm out of range of the target.

    As for the iconborder on cleave/hs - it seems a little odd that the border is there without anything to cast imo. Maybe you could change it so that the hs/cleave icon has it's own size-scroller, and make it possible to move it individualy from the other icons?
  • #29
    I will add the option to remove the borders.

    About the ?, it looks that it is the keyboard shortcut that is not displayed properly. I see that you use ButtonFacade. Which skin it is? And what addon do you use to move the icons?
  • #30
    I use apathy skin for button facade, but I don't have keyboard shortcuts activated.

    What do you mean by: "And what addon do you use to move the icons?" if you mean action bars I am using Dominos.
  • #31
    I added the option to hide the border and the option to hide the icons if the target is friendly (in 3.2.14).

    I installed Dominos and Apathy but I was not able to reproduce the bug. Could you confirm that if you hide the shortcuts in Ovale, the question marks disappear? Or do you mean that it is already the shorcuts in Ovale that you hide?
  • #24
    Sweet Addon ! Tested it today on my Arms an i LOVE it !
    Keep up the good Work !
  • #22
    Is this addon for lvl 80 only or does it work for lower levels (10-40) as well?
  • #23
    It works for lower levels too for some classes. It does not work for mage, but it works for warrior, for example. It works for all classes at level 60.
  • #20
    Warlocks destro rotation does not include Chaos Bolt.
  • #21
    Added in 3.2.10. Thank you.
  • #17
    Hi!

    I love this addon. It really helps to keep my rotation tighter and more efficient.

    However, I've run into a problem since the last couple updates. It used to be that my Heroic Strikes would disappear once I activated it, and not show up again until it goes off. This behavior seems to have changed. Now, as long as it's conditions are met, "Mana (MORE 50), it will always be there and not go away, making it harder to tell when I should hit it again. I don't believe my scripts have changed. They still say "{Spell(HEROICSTRIKE doNotRepeat=1)}"

    It may have been I've mucked something up, since I have customized my script, but any help is appreciated.

    I just updated to 3.2.9 and the problem is still there.
  • #18
    Ah.. The Zen of Posting... as soon as I post asking for help, I figure it out.

    Seems the scripting languange has changed a wee bit. I backed up my custom script, and reset to Default. Looks like a different script from the one I based mine on. It has new commands and what not. Spellinfo(Heroicstrike Toggle=1) is the one I'm interested in, I think.

    You're probably already working on updating the documentation, but I should be able to figure it out from this new script, most of it is self-explanatory once you get the hang of it. One question though, what's "ScoreSpells" do? I don't even have an inkling.
  • #19
    Oh, sorry, you're right. I removed the doNoRepeat parameter without any notice. I will update the documentation as soon as I find the time to do it.

    Yes, you should use SpellInfo(HEROICSTRIKE toggle=1). It says that heroic strike is a "next attack" ability.

    ScoreSpells is a new feature that allows to test how well you follow the script. Any time you cast a spell that is in the list, Ovale checks if the spell was the spell on the icon. If it was the case, you score from 0 to 1, 0 if you were slow, 1 if you were fast. The score is displayed on Recount.
  • #15
    I get this when i try to run it on my blood DK

    Message: ..\AddOns\Ovale\Ovale.lua line 960:
    attempt to compare number with nil
    Debug:
    (tail call): ?
    [C]: ?
    Ovale\Ovale.lua:960: CalculerMeilleureAction()
    Ovale\Ovale.lua:1042: CalculerMeilleureAction()
    Ovale\Ovale.lua:1089: CalculerMeilleureAction()
    Ovale\OvaleFrame.lua:134: OnUpdate()
    Ovale\OvaleFrame.lua:59:
    Ovale\OvaleFrame.lua:5
  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

ESO Prize Pack Giveaway!