Ovale Spell Priority 6.0.53
===========================

Changes from version 6.0.52:
----------------------------

-   Implement Assassination 4pT17 set bonus for rogues.

    The Assassination 4pT17 set bonus causes Envenom to refund one combo
    point, so detect when Envenom is cast and create a pending combo point
    event.

-   Restrict the tier set bonuses to the correct specialization.

    The same tier gear is worn by all specializations of the same class, and
    some abilities are used by more than one specialization, so we need to
    restrict the set bonus to the proper specialization.

-   Merge branch 'simulationcraft'.

    Pull in changes from MMO-Champion rogue forums from 2015-01-29.

-   Import profiles from MMO-Champion rogue forum, updated 2015-01-29.

    * Updated combat and subtlety profiles.

-   Default to not suggesting Time Warp and Bloodlust/Heroism.

    Change the default toggles for Time Warp and Bloodlust/Heroism to
    unchecked since these are raid cooldowns that are usually meant to be used
    at specific times.

    As a side effect, this fixes ticket 535 by @thejourney.  Thanks to
    @Reason2012 for the analysis and identification of the problem.

-   Regenerate reference and default scripts after translator changes.

-   Translate SimulationCraft's "righteous_fury" action.

    Wrap the action with a check for an "opt_righteous_fury_check" toggle.
    Remove the RighteousFury() and RighteousFuryOff() functions and rely on
    the SimC APLs to properly execute "righteous_fury".

-   Warlock: Insert a "life_tap" action earlier in the APL for Ovale.

    Ovale doesn't track mana costs of caster spells, so it doesn't ever fall
    through to the "life_tap" action at the end of the APL.

-   Paladin: Directly toggle Righteous Fury appropriately in precombat list.

    Holy and retribution toggle Righteous Fury off by default, while
    protection toggles it on.

-   Use class-unique names for all functions in generated scripts.

    This allows for separate scripts to be combined together into a single
    script without name collisions for functions or controls.

-   Translate SimulationCraft's "cooldown" property for trinkets.

-   Add BuffCooldownDuration() script condition.

    BuffCooldownDuration(id) returns the duration in seconds of the cooldown
    before a buff can be gained again.  It can be used to return the cooldown
    duration of a trinket by checking the cooldown duration of the
    corresponding trinket buff.

-   Fully describe MoP and WoD trinkets in the spell database.

    Add durations to the trinket auras, and sprinkle "buff" and "stat"
    properties into the ItemInfo() for trinkets so that the correct buff lists
    are added to.

    Add some missing 615+ trinkets and remove unimplemented trinkets.

-   Only Include() scripts if the including script declares icons.

    Don't Include() scripts if the including script only defines functions and
    script controls.  This guideline makes it easier to pick and choose what
    code is included in the final script.

-   Split trinket definitions into their own scripts.

-   Fix trinket buff IDs that have changed since the initial data-mining.

-   Add trinket buffs to the appropriate buff lists after script evaluation.

    After the script has been evaluated, check for the equipped trinkets and
    search for the associated buffs to add to the appropriate buff lists.

    For example:

        Define(lucky_double_sided_coin 118876)
            ItemInfo(lucky_double_sided_coin buff=lucky_flip_buff)
        Define(lucky_flip_buff 177597)
            SpellInfo(lucky_flip_buff duration=20 stat=agility)

    This causes the "Lucky" Flip buff to be added to the following buff lists:

      - trinket_proc_agility_buff
      - trinket_proc_agi_buff
      - trinket_proc_any_buff
      - trinket_stat_agility_buff
      - trinket_stat_agi_buff
      - trinket_stat_any_buff

    The "buff" and "stat" properties can be comma-separated values to list
    more than one buff or one stat.

    Remove trinket buff lists from OvaleData since they are dynamically
    managed during script evaluation.

-   Add GetEquippedTrinkets() method to OvaleEquipment.

    GetEquippedTrinkets() returns the item IDs of the trinkets in the two
    trinket slots as a tuple.

-   Extend some OvaleEquipment methods to take a list of item slots.

    The following methods are modified to accept a list of item slots instead
    of a single or no parameters:

    -  GetEquippedItem(...)
    -  GetEquippedItemLevel(...)

    The return value is the list of the item IDs in those slots, in order.

    -  HasEquippedItem(itemId, ...)

    Returns true if the item is in any of the listed slots, or check all of
    the slots if none are given.

-   Enhance OvaleData to store information from ItemInfo() at compile-time.

-   Import latest release.sh from curseforge-packager project.
