Ovale Spell Priority 6.0.54
===========================

Changes from version 6.0.53:
----------------------------

-   Translate SimulationCraft's "natural_shadow_word_death_range".

    This operand is true if the target's health is below 20 percent.

-   Translate SimulationCraft's "ptr" operand.

    Modify the PTR() script condition to have the same return semantics as the
    "ptr" operand: 1 if on the PTR, 0 otherwise.

-   Monks pool energy, too.

    Fixes problems with brewmaster monk APLs not falling thorugh to Tiger Palm
    when there's not enough energy for other actions.

-   If a spell is replaced, use the spell information for the replacement.

-   Monk: Fix energy cost of Rushing Jade Wind and note that RJW replaces SCK.

-   Monk: Add support for Glyph of Expel Harm.

-   Generalize "health percent" requirement check to players and pets.

    Add new requirement handlers to check the health percent:

    * health_pct
    * pet_health_pct

    Properly unregister requirement handlers in OnDisable() method.

-   Regenerate blood death knight scripts from improved SimC APL.

-   GetSpecialization() returns the non-global spec number, not the spec name.

-   Fix misspelled variable that was breaking WoWMock's GetSpecialization().

-   Death Knight: Suggest Blood Tap in the main icon for blood DKs.

-   Only suggest Anti-Magic Shell if there is incoming magic damage.

-   Extend DamageTaken() script condition to allow asking for magic damage.

    DamageTaken() now takes an extra named parameter "magic".  If magic=1 is
    passed as a parameter, then DamageTaken() returns only the magic damage
    taken.

-   OvaleDamageTaken now tracks magic damage.

    The GetRecentDamage(seconds) method now returns two values: the first is
    the total damage taken and the second is the total magic damage taken.

-   Translate SimulationCraft's "<rune>.death" operand.

-   Support all level 60 talents in the Blood DK SimulationCraft APL.

    These changes improve upon the released SimulationCraft APL when measured
    using TMI-6.  This profile has been fed back to the SimulationCraft
    project in issue #2419.

-   Regenerate MMO-Champion rogue scripts based on profiles from 2015-01-29.

-   Translate SimulationCraft's "energy.deficit" operand.

-   Translate SimulationCraft's "cooldown.honor_among_thieves.{up,down}".

    Ovale implements Honor Among Thieves as a hidden buff, so instead of
    checking for a spell cooldown, translate those operands into the
    appropriate checks for the hidden buff.

-   Accumulate and display statistics for the refresh intervals.

-   Allow for lazily refreshing the best action only when necessary.

    If the "Update Interval" is set to zero, then only refresh the best action
    when events trigger the need to refresh the game state.  This reduces the
    CPU usage of the addon when out of combat.

-   Make use of "elapsed" parameter passed into OnUpdate() handler.

    The OnUpdate() handler was manually computing an elapsed value, but was
    calling GetTime() on each frame refresh.  This change avoids some extra
    function calls.

-   The best action should be refreshed whenever an event happens.

    Add entries into Ovale.refreshNeeded whenever we receive an event that
    changes the game state so that the best action calculation is not delayed.
