Get an Epic Experience with Premium

Ovale Spell Priority

Buffs & Debuffs Login to Add Favorites
  • 27 Likes
  • World of Warcraft
  • 5,632 Monthly Downloads
  • Supports: 5.4.1
  • 1,526,983 Total Downloads
  • Updated 04/21/2014
  • Created 08/17/2008
  • 665 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 59 of 62 Next Last
  • #55
    It allows mulidoting, i.e. if you cast VT on a target, it won't ask you to cast VT on another target until the first one expires. In the case of SWP the coins warn you that a SWP that you cast on another target is about to expire. There was a bug in multidoting in 3.3.* versions that should be fixed in 3.3.3. Thank you for reporting the issue.
  • #50
    Pro addon bro.
  • #49
    im not really good with code...

    Im an unholy DK, how do i make it so that it wont tell me to burn death runes to use blood strike (i want to only use scourge strike, or IT + PS if diseases are down, with death runes)? usually since i hit blood strike twice to burn my blood runes, one death rune becomes available before the other, and the addon see's one death rune available, and tells me to use blood strike.
  • #56
    It should be fixed in 3.3.3, sorry if I'm late. Please tell me if you still see any error with unholy script.
  • #46
    I use it as a mage (arcane/fire 20/51) and the only spell it shows me in the left icon is fireball... No living bomb, no scorch... Maybe a problem with the default script ? If anyone could share his script, i'd be really happy...
  • #47
    Well, in fact, i tried it against training dummies in SW, and it doesn't work here, but seems to work against other mobs...
  • #48
    Some training dummies have only one hit point. The script considers that this target is about to die and will not ask you to cast living bomb or scorch. It may be your problem, try on boss level dummies in that case.
  • #40
    I want to provide my services as a beta tester for this addon.
  • #43
    Ok, I will send you a PM next time I release a beta version. It may avoid all these bug fix releases since last week version.
  • #38
    I LOVE THIS ADDON!!!!!!!!!!!!!!!!!
  • #39
    OH on your long cool down abilities mouse over you have a mis-spelling it should say damage but it says damagage.
  • #41
    Thank you, it will be fixed in next version
  • #37
    Date: 2009-12-06 09:37:04
    ID: 1
    Error occured in: Global
    Count: 40
    Message: ..\AddOns\Ovale\Ovale.lua line 553:
    attempt to index upvalue 'Recount' (a nil value)
    Debug:
    (tail call): ?
    Ovale\Ovale.lua:553: ?()
    ...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:146:
    ...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:146
    [string "safecall Dispatcher[5]"]:4:
    [string "safecall Dispatcher[5]"]:4
    [C]: ?
    [string "safecall Dispatcher[5]"]:13: ?()
    ...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: Fire()
    Ace3\AceEvent-3.0\AceEvent-3.0.lua:120:
    Ace3\AceEvent-3.0\AceEvent-3.0.lua:119
    AddOns:
    Swatter, v3.1.14 ()
    WowheadLooter, v30203
    Ace3, v
    AckisRecipeList, v1.0 2722
    Align, v
    Altoholic, v3.2.003b
    ArkInventory, v3.02
    AucAdvanced, v5.1.DEV.2530
    AucDb, v5.1.DEV.3583
    AucFilterBasic, v5.1.DEV.4432
    AucFilterOutlier, v5.1.DEV.4432
    AucMatchUndercut, v5.1.DEV.2531
    AucScanData, v5.1.DEV.4432
    AucStatClassic, v5.1.DEV.4432
    AucStatHistogram, v5.1.DEV.4466
    AucStatiLevel, v5.1.DEV.4536
    AucStatPurchased, v5.1.DEV.4474
    AucStatSales, v5.1.DEV.2842
    AucStatSimple, v5.1.DEV.4472
    AucStatStdDev, v5.1.DEV.4549
    AucStatWOWEcon, v5.1.DEV.2530
    AucUtilAHWindowControl, v5.1.DEV.3311
    AucUtilAppraiser, v5.1.DEV.2530
    AucUtilAskPrice, v5.1.DEV.3175
    AucUtilAutoMagic, v5.1.DEV.3142
    AucUtilBroker, v0.9.0c
    AucUtilCompactUI, v5.1.DEV.2530
    AucUtilEasyBuyout, v5.1.DEV.3583
    AucUtilFixAH, v ()
    AucUtilGlypher, v5.1.DEV.2545
    AucUtilItemSuggest, v5.1.DEV.3108
    AucUtilPriceLevel, v5.1.DEV.2545
    AucUtilScanButton, v5.1.DEV.2530
    AucUtilScanFinish, v5.1.DEV.2530
    AucUtilScanProgress, v5.1.DEV.2530
    AucUtilSearchUI, v5.1.DEV.3655
    AucUtilSimpleAuction, v5.1.DEV.4546
    AucUtilVendMarkup, v5.1.DEV.2530
    AutoBar, vv3.2.0.787
    AutoRoller, v1.1
    Babylonian, v5.1.DEV.130
    BadBoy, v4.0.1.4
    BadBoyCCleaner, v2.2.0
    BadBoyLevels, v2.1.4
    Bartender4, v4.4.1
    Bazooka, v1.7.0
    BeanCounter, v5.1.DEV.4548
    BrokerAllXP, vr36
    Brokerrepair, v2.1
    BunnyHunter, v1.2
    Carbonite, v3.23
    CarboniteTransfer, v1.01
    Chatter, v1.0
    ClassLoot, vr110
    Collectinator, vBeta 3
    Configator, v5.1.DEV.130
    Congratz, vv0.4.3
    Constructor, v ()
    CurseProfiler, v
    DataStore, v3.2.003
    DataStoreAchievements, v3.2.003
    DataStoreAuctions, v3.2.003
    DataStoreCharacters, v3.2.003
    DataStoreContainers, v3.2.003
    DataStoreCrafts, v3.2.003
    DataStoreCurrencies, v3.2.003
    DataStoreInventory, v3.2.003
    DataStoreMails, v3.2.003
    DataStorePets, v3.2.003
    DataStoreQuests, v3.2.003
    DataStoreReputations, v3.2.003
    DataStoreSkills, v3.2.003
    DataStoreSpells, v3.2.003
    DataStoreStats, v3.2.003
    DataStoreTalents, v3.2.003
    DBMBurningCrusade, v
    DBMCore, v
    DBMLDB, v
    DBMPartyWotLK, v
    DebugLib, v5.1.DEV.130
    Enchantrix, v5.1.DEV.4432
    FishingBuddy, v0.9.8b
    Gatherer, v3.1.14
    GathererDBWowhead, v1.0.2009-02-18
    GearScore, v3.0.012 - Release
    GFWLinkerator, v3.2
    GroupCalendar5, v5.0.1
    GuildDonationHelper, v1.0.4
    Informant, v5.1.DEV.3721
    InspectEquip, v1.7.0
    LibExtraTip, v1.1
    LibHealComm40, v
    LightHeaded, v298
    LightHeadedDataE, v298
    LightHeadedDataQIDNames, v298
    LilSparkysWorkshop, v1.00
    LinkWrangler, v1.79
    OptionHouse, v
    Outfitter, v4.9
    Ovale, v3.2.24
    Overachiever, v0.50
    OverachieverTrade, v0.50
    Postal, v3.2.2
    Quartz, v1.0
    QuartzBuff, v1.0
    QuartzFlight, v1.0
    QuartzFocus, v1.0
    QuartzGCD, v1.0
    QuartzInterrupt, v1.0
    QuartzLatency, v1.0
    QuartzMirror, v1.0
    QuartzPet, v1.0
    QuartzPlayer, v1.0
    QuartzRange, v1.0
    QuartzSwing, v1.0
    QuartzTarget, v1.0
    QuartzTimer, v1.0
    QuartzTradeskill, v1.0
    RatingBuster, v
    ShadowedUnitFrames, v
    SickOfClickingDailies, vv6.3.3d-beta
    SickOfClickingDailiesAltTracking, vv6.3.3d-beta
    Skada, v1.2-22
    SkadaAbsorbs, v1.0
    SkadaCC, v1.0
    SkadaDamage, v1.0
    SkadaDamageTaken, v1.0
    SkadaDeaths, v1.0
    SkadaDebuffs, v1.0
    SkadaDispels, v1.0
    SkadaEnemies, v1.0
    SkadaFailbot, v1.0
    SkadaHealing, v1.0
    SkadaPower, v1.0
    SkadaThreat, v1.0
    Skillet, v
    SlideBar, v3.1.14 ()
    SpellFlash, v2.19
    Stubby, v5.1.DEV.130
    TipHelper, v ()
    WIM, v3.2.2
    XBar, v3.27
    XBuffBar, v3.10
    XCompanionBar, v3.07
    XCustomBar, v3.05
    XTrackBar, v3.03
    XTradeBar, v3.07
    BlizRuntimeLib_enUS v3.2.2.30200
    (ck=ebd)

  • #42
    Thank you, fixed in 3.2.26
  • #35
    Hi, I just started using this addon on my DK which even though i'm getting an error i can already tell will do wonders for my rotation. As Unholy i get when Scourge Strike is suppose to come up:
    Message: Interface\AddOns\Ovale\OvaleIcone.lua:40: attempt to perform arithmetic on local 'actionCooldownStart' (a nil value)
    Time: 12/06/09 00:49:38
    Count: 2445

    [C]: ?
    Interface\AddOns\Ovale\OvaleIcone.lua:40: in function `Update'
    Interface\AddOns\Ovale\OvaleFrame.lua:162: in function `OnUpdate'
    Interface\AddOns\Ovale\OvaleFrame.lua:60: in function

    Locals: self = Icon1n1 {
    0 =
    SetHelp = defined @Interface\AddOns\Ovale\OvaleIcone.lua:144
    __bf_framelevel = {
    }
    Update = defined @Interface\AddOns\Ovale\OvaleIcone.lua:4
    cd = Icon1n1Cooldown {
    }
    icone = Icon1n1Icon {
    }
    SetSize = defined @Interface\AddOns\Ovale\OvaleIcone.lua:133
    shouldClick = false
    __bf_normaltexture = Icon1n1NormalTexture {
    }
    aPortee = Icon1n1Count {
    }
    remains = Icon1n1Name {
    }
    debutAction = 32676.853
    actionCourante = "Interface\Icons\Spell_Deathknight_ClassIcon"
    finAction = 32676.853
    ancienneAttente = 32678.306
    shortcut = Icon1n1HotKey {
    }
    __bf_skinlayer = {
    }
    help = "main"
    focusText = {
    }
    normalTexture = Icon1n1NormalTexture {
    }
    skinGroup = {
    }
    SetSkinGroup = defined @Interface\AddOns\Ovale\OvaleIcone.lua:128
    SetNormalTexture = defined =[C]:-1
    }
    minAttente = 32678.306
    actionTexture = "Interface\Icons\Spell_Deathknight_ClassIcon"
    actionInRange = 1
    actionCooldownStart = nil
    actionCooldownDuration = nil
    actionUsable = 1
    actionShortcut = nil
    actionIsCurrent = nil
    actionEnable = 1
    spellName = "Obliterate"
    actionTarget = "target"
    red = nil
    (*temporary) = Icon1n1Icon {
    0 =
    }
    (*temporary) = 1
    (*temporary) =
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = "attempt to perform arithmetic on local 'actionCooldownStart' (a nil value)"

    and as blood when heart strike it up:
    Message: Interface\AddOns\Ovale\OvaleIcone.lua:40: attempt to perform arithmetic on local 'actionCooldownStart' (a nil value)
    Time: 12/06/09 00:51:09
    Count: 2665

    [C]: ?
    Interface\AddOns\Ovale\OvaleIcone.lua:40: in function `Update'
    Interface\AddOns\Ovale\OvaleFrame.lua:162: in function `OnUpdate'
    Interface\AddOns\Ovale\OvaleFrame.lua:60: in function

    Locals: self = Icon1n1 {
    0 =
    SetHelp = defined @Interface\AddOns\Ovale\OvaleIcone.lua:144
    __bf_framelevel = {
    }
    Update = defined @Interface\AddOns\Ovale\OvaleIcone.lua:4
    cd = Icon1n1Cooldown {
    }
    icone = Icon1n1Icon {
    }
    SetSize = defined @Interface\AddOns\Ovale\OvaleIcone.lua:133
    shouldClick = false
    __bf_normaltexture = Icon1n1NormalTexture {
    }
    aPortee = Icon1n1Count {
    }
    remains = Icon1n1Name {
    }
    debutAction = 32768.716
    actionCourante = "Interface\Icons\Spell_Deathknight_DeathStrike"
    finAction = 32768.716
    ancienneAttente = 32768.969
    shortcut = Icon1n1HotKey {
    }
    __bf_skinlayer = {
    }
    help = "main"
    focusText = {
    }
    normalTexture = Icon1n1NormalTexture {
    }
    skinGroup = {
    }
    SetSkinGroup = defined @Interface\AddOns\Ovale\OvaleIcone.lua:128
    SetNormalTexture = defined =[C]:-1
    }
    minAttente = 32768.969
    actionTexture = "Interface\Icons\Spell_Deathknight_DeathStrike"
    actionInRange = 1
    actionCooldownStart = nil
    actionCooldownDuration = nil
    actionUsable = 1
    actionShortcut = nil
    actionIsCurrent = nil
    actionEnable = 1
    spellName = "Blood Strike"
    actionTarget = "target"
    red = nil
    (*temporary) = Icon1n1Icon {
    0 =
    }
    (*temporary) = 1
    (*temporary) =
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = "attempt to perform arithmetic on local 'actionCooldownStart' (a nil value)"

    Sorry if i'm just noobing it up but any help would be great and keep up the good work with this addon.
  • 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 »

Leaguepedia PAX Skin Giveaway