Ovale Spell Priority is a rotation-helper addon that 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 specializations, based on SimulationCraft. You may also customize the default script to suit your needs (see Documentation) or use scripts made by other users.
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.
Changes from version 6.1.2:
- Regenerate scripts based on SimulationCraft profiles from release-612-01.
- Merge branch 'simulationcraft'.
Pull in changes from SimulationCraft release-612-01.
- Import Tier17M profiles from SimulationCraft tag "release-612-01".
- Add some default values for health and maxHealth, just in case.
- Short-circuit a search through the queued spellcasts in an edge case.
- Suppress some debug warnings that are a little too verbose.
- Teach SimulationCraft translator to check existing state before changing.
Insert a check using GetState() to verify that the new state set by
SetState() actually changes the state. This ensures that a script is not
spinning at the same SetState() once the state has changed.
- Remove obsolete OvaleLatency module.
The way that the OvaleLatency module tried to compute latency had stopped
working quite a while ago after Blizzard implemented spell queues so that
a player could queue the next spell before the previous one had finished
- Ovale_SpellFinished only tells "hit" or "miss", not "critical".
- Move SendMessage() calls closer to the end of functions.
AceEvent IPC messages aren't handled asynchronously, so sending a message
means that listener's handlers for that message are invoked at that point.
Move the SendMessage() call closer to the end of the function to ensure
that all relevant state is set before listeners' handlers are invoked.
- Fix some misspelled words.
- Channelled spells finish when UNIT_SPELLCAST_CHANNEL_STOP is received.
- Channelled spells seem to always have a line ID of zero in UNIT events.
- Add the appropriate methods to OvalePaperDoll to save spellcast info.
Avoid calling OvalePaperDoll:UpdateSnapshot() to save the spellcast
information explicitly within OvaleFuture.
Also just save the spellcast information upon successful spellcast.
- Add Auto Attack as a white attack that should be ignored by OvaleFuture.
- Rogue: Allow toggling Vanish suggestions for situational usage.
This is only for assassnation and combat rogues because Vanish is a major
DPS cooldown for subtlety rogues.
- Clean-up: remove deprecated functions from OvaleGUID.
- Create a dummy spellcast for the simulator if no actual spellcast is used.
Extend the SaveSpellcastInfo() methods in the modules to take an optional
"state" parameter so that those methods can save state information to the
- Call the correct method to save spellcast information.
- Mage: Only enter any part of the burn phase is the checkbox is toggled on.
- Fix priority so that units that don't receive UNIT_AURA events are lowest.
- Warlock: Fix aura IDs for Dark Soul: Knowledge and Misery.
Fix copy and paste error that resulted in incorrect spell IDs for
"dark_soul_knowledge_buff" and "dark_soul_misery_buff". The spell IDs for
the spells are correct, but the auras were using the spell ID for Dark
Fix from ticket 583 by @LunaEclipse.
- Use OvaleHealth instead of ad-hoc code for health and TTD calculations.
- Add OvaleHealth module to track the health of targets.
OvaleHealth keeps track of health of mobs by GUID by listening for CLEU
damage and heal events and has the following methods that mirror the
OvaleHealth also has a method to determine the "time to die" of a unit:
Move code from OvaleAura that was noted as needing to move to an
- Regenerate scripts based on SimulationCraft profiles from 2015-04-08.
- Merge branch 'simulationcraft'.
Pull in changes from SimulationCraft git master from 2015-04-08.
- Import Tier17M profiles from SimulationCraft git master from 2015-04-08.
- Change that way that SimulationCraft states are translated into Ovale.
Ovale now avoids pre-computing the state and just allows the running of
the script to set the state.
- Support SimulationCraft's "prev_off_gcd" operand.
Translate into PreviousOffGCDSpell(), which returns true if the given
spell matches the most recently cast off-GCD spell.
- Cache both the most recent GCD and off-GCD spellcasts in OvaleFuture.
- Save whether a spell triggers the GCD in the spellcast information.
- Regenerate scripts based on SimulationCraft profiles from 2015-04-07.
- Mage: Add function to compute damage of Pyroblast.
- Allow function names to contains numbers when translating from APLs.
- Warlock: Rename the "grimoire_<pet>" spells to "service_<pet>".
This change makes the names used in Ovale scripts match the ones used by
SimulationCraft in its APLs.
- Remove unnecessary check for a known spell for SpellCooldown() condition.
The script condition allows for passing a shared cooldown name for a
collection of spells that share the same cooldown. The check for a known
spell ID was breaking this usage.
- Return correct values for OvaleCooldown:GetSpellCooldown(sharedCd).
The GetSpellCooldown() method was incorrectly skipping the setting of the
return values in the case where the method parameter was a shared cooldown
- Track the hunter Frenzy buff on the pet instead of the player.
- Merge branch 'simulationcraft'.
Pull in changes from SimulationCraft git master from 2015-04-07.
- Import Tier17M profiles from SimulationCraft git master from 2015-04-07.
- Re-add support for "tick_dmg" property to SImulationCraft "dot" operands.
- Re-add support for SimulationCraft properties used by fire mage APLs.
The following SimulationCraft action and character properties are
supported once again:
The Ovale script conditions Damage() and CritDamage() have been restored,
but only allow for script functions to compute the damage. The built-in
formulas for calculating damage have been removed since they are simply
not general enough to handle the few cases where scripts require this
- Support SimulationCraft's "<state>_duration" mage operands.
- Support SimulationCraft's "burn_phase" mage state operand.
- Support for SimulationCraft's dancing_rune_weapon pet operands.
- Support for SimulationCraft's "choose_target" mage action.
- Death Knight: Add spell definitions for Chains of Ice.
- Shaman: Move Earthquake back to the AoE icon.
In patch 6.1.2 Earthquake is no longer worth casting in the single-target
- Only interrupt using Mind Freeze in the APLs if not glyphed.
- Merge branch 'simulationcraft'.
Pull in changes from SimulationCraft git master from 2015-04-06.
- Import Tier17M profiles from SimulationCraft git master from 2015-04-06.
These are the profiles from the git master preceding the tagging of
- Improve formatting of debugging messages in OvaleFuture.
- Force a frame refresh if a trace is triggered.
- Add more debugging to OvaleAura.
- Hunter: Match aura ID of the Pre-Steady Focus buff in OvaleSteadyFocus.
Fixes ticket 587 by @LunaEclipse.
- Add state to OvaleSteadyFocus to properly handle the aura on spellcast.
- Fix use of default values in state method AddAuraToGUID().
If start or ending were nil parameters to the method, then the arithmetic
used within the method to determine the aura's duration would fail due to
arithmetic on nil values.
- Rogue: Add subterfuge_buff definition.
Fixes ticket 580 by @Wiljo.
- Remove tracking code for most recent spell landed in OvaleFuture.
This was only used to keep snapshot information for past spellcasts in
order to query "last" stats, but those conditions and usage have been
removed from scripts, since snapshots have largely been removed from the
game except for certain persistent damage multipliers.
- Adjust to changed API presented by OvaleFuture.
- Rewrite OvaleFuture to more accurately track player and pet spellcasts.
Begin tracking spellcasts from the moment that the spellcast is queued in
the spell queue (UNIT_SPELLCAST_SENT) through successful spellcast
(UNIT_SPELLCAST_SUCCEEDED) and a finishing event (CLEU) to note whether
the spell hit or miss the target.
Be much more accurate about the target of spellcasts. When a spell is
queued, a preliminary target is determined based on the name of the
target, focus, and mouseover units. The target of the spellcast is fixed
up using CLEU events that reveal the GUID of the target of the spellcast.
Fix the simulator state upon reset to properly set the information for any
Remove tracing of particular spells in favor of more consistent debugging
statements to better show the flow of event processing.
- Simplify code using new module method "GetMethod".
Instead of explicit checks for self.method over module.method, just use
"GetMethod" to return the function reference.
- Add new mirrored method "GetMethod" that returns other mirrored methods.
- Properly save the time of the snapshot of player's stats.
- Add "DebugTimestamp" method to auto-add a GetTime() for debugging.
- Mage: Move Arcane Power to the CD icon so it doesn't hide true short CDs.
- Improvements to OvaleGUID module.
- Remove a small memory leak.
- Rename methods to match the names or to follow the naming pattern of the
Blizzard API functions.
- Allow methods to return multiple values if the result is a one to many
mapping, e.g., GUID to unit IDs.
- Raise an Ovale_PetChanged event with the GUID of the player's pet.
- Add additional Lua files needed to properly run Ovale:OnEnable().
- Don't hide global symbols with a local one of the same name in functions.
This fixes a long-standing bug in the testing code where Ovale:OnEnable()
wasn't being run before the OnEnable() methods of the modules.
- Remove the "Update Interval" option.
We always lazily update the best action for each icon based on events that
trigger the need to update.
- Remove unnecessary module dependency on OvaleGUID.
- Consistently filter out white attacks from being tracked by OvaleFuture.
- Use GUIDs instead of unit IDs in Ovale.refreshNeeded table.
This avoids needing to map some GUIDs to unit IDs.
- Use Ovale.playerGUID instead of calling UnitGUID() on PLAYER_LOGIN.
- Use Ovale.playerClass instead of calling UnitClass() in each module.
- Cache player GUID and class in main addon to be used within modules.
- Use OvaleSpellBook:IsHarmfulSpell() to check if a spell is "offensive".
- Pass target's GUID as an additional parameter to GetDamageMultiplier().
This is needed to correctly check requirements for the given spell when
cast on the target.
- Consistently use GUIDs instead of unit IDs where possible in Ovale APIs.
This avoids a lot of unnecessary translating back and forth between GUIDs
and unit IDs.
- Translate SimulationCraft's "enemies" operand.
- Remove the "wait" statement from the Ovale language.
It was too difficult to mix the imperative style of processing that "wait"
used with the time-span comparison style of processing that Ovale uses
otherwise within a single script. Remove it to simplify the language.
The "wait" statement can be replaced with appropriate conditionals (see
OvaleSimulationCraft module for how it translates "wait").
- Drop action priorities from the Ovale language.
Only allow natural ordering of actions within groups instead of letting
explicit priority settings override the group order. This makes script
code easier to understand.
- Remove unnecessary ResetState() methods from OvaleCooldown and OvaleTotem.
These modules uses a serial number (age) in each state table to track
whether the information in the table is up to date, so out-of-date tables
are implicitly invalidated by checking the table's age against the module's
age when fetching the table.
- Warrior: Suggest Charge & Heroic Leap only if the checkbox option is on.
Allow the "not in melee range" toggle to gate the suggestions for Charge
and Heroic Leap so they can be turned off manually by the player. This is
needed for certain fights where the mob is off the platform, e.g., Kromog,
and the range-checking tools misbehave.
- Compute "xor" using one fewer operation.
- Fireball replaces Frostfire Bolt for fire mages in 6.1.
- Import Tier17M profiles from SimulationCraft tag "release-610-06".
You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.
*Clicking the donate button above will take you to PayPal.com
*Clicking the donate button above will take you to Pledgie.com