commit 170dda70c3bb45a0b0ee19b39c4f315de3204e32
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Jan 10 12:00:32 2017 -0500

    Fix for 'casting' debuff on enemies who are casting.

commit b28f7455cce7b913904c8e004f79b0815d68f68d
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Jan 10 11:30:13 2017 -0500

    Make the addon actually, you know, load...

commit db22036fa1cf3388c30f52763ca1d220fccc6835
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Jan 10 11:22:11 2017 -0500

    7.1.5 - Lock in PTR to live changes, fix broken version detection.

commit ce1203457218280b7fcc4dfd7c087eefc5564784
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Jan 10 02:09:03 2017 -0500

    7.1.5...
    
    OK, lots and lots of stuff.  Basically, this is the big update that
    hopefully makes 7.1.5 work for Enhancement, Elemental (suuuper beta),
    Windwalker, Brewmaster, Retribution, and Protection.
    
    Shaman:
    + Improved Totem Mastery detection, has its own buff now, can check the
    remaining time more effectively.
    + Moved fake buffs to ID -100 and lower.
    + Aftershock refunds 0.3 MP.
    - Removed "Prioritize Buffs" setting as its no longer relevant to the
    Enhancement APL.
    + Added "Fury of Air: Maelstrom Padding" setting so that you can keep
    yourself from overspending Maelstrom when you're keeping Fury of Air up.
    o Left the "Maelstrom: Boulderfist" setting but it's not actually used
    for the moment.
    - Removed/hid the "Maelstrom: Crash Lightning" setting since it's not
    relevant to the current APL.
    + Fixed Ascendance ID for Elemental.
    + Made Boulderfist benefit from Gathering of the Maelstrom.
    + Updated Earth Elemental CD and duration.
    + Earth Shock, Earthquake, Elemental Blast, Flame Shock, Frost Shock,
    Icefury, Lava Beam, etc. will spend a stack of Elemental Focus.
    + Frost Shock will spend a stack of Icefury.
    + Icefury will generate 24 MP.
    + Fury of Air will cost 3 MP.
    + Gave Lightning Bolt a VERY HIGH travel time to see if that stabilizes
    some MP forecasting.
    + LB + Power of the Maelstrom generates 14 MP.  Hopefully.  I'm hoping
    it's guaranteeing an Overload and not just giving 2x MP if you're lucky
    enough to Overload.  Needs testing.
    + Overcharge LB cooldown is 12 * haste.
    + Rockbiter gives 20 MP + Gathering of the Maelstrom bonus.
    + Rockbiter will actually apply Landslide now.
    + Storm Elemental CD/duration halved.
    + Totem Mastery is no longer usable if 15 seconds remain on its buffs
    (i.e., you're in-range of the totems and duration is still > 15s).
    + New default APLs.  Pray for Omarion.
    
    Paladins:
    o Changed Blade of Wrath's talent ID???
    o Judgment's duration is 8 seconds.  Feign function disabled in favor of
    new travel-time prediction.
    o Liadrin's Fury Unleashed gives 1 HP every 4 sec (was 2.5 sec).
    + Try to model haste gains from Crusade when spending HP.
    o NEED TO MODEL HASTE LOSS FROM CRUSADE DROPPING IN STATE.ADVANCE().
    o Divine Intervention reduces Divine Shield CD by 20%.
    o Execution Sentence costs 0 HP with Divine Purpose, otherwise TFoJ
    reduces by 1.
    o Execution Sentence removes DP first, then TFoJ.  Not both.
    - Greater Blessing of Might is gone.
    o Judgment has a travel time of 30 yd/sec.
    o Word of Glory spending accounts for Divine Purpose, TFoJ.
    o Modified WoG's heal.
    o New defaults displays/APLs.
    
    Classes:
    + Support new prev.#.ability syntax for new APLs.
    + Improve weapon swing projections at start of combat (improves
    Maelstrom projections).
    + Add 'casting' as a debuff since some APLs check for
    target.debuff.casting.up.
    + Added 'run_action_list' which jumps to another action list and does
    not return to the caller.
    + Trimmed potion listing, made potion.usable() check if you have any
    potions to use.
    + Started with retireDefaults( .. ) which will eventually wipe old
    defaults instead of leaving them in your profile.
    
    Core:
    o Indentation cleanup.
    o TODO:  ADD CHAIN LIGHTNING/LAVA BEAM TO ICON CACHE.
    o Cleanups for time/ready scripts, modifications to make cycle_targets
    work a bit better (and more automatically).
    o Delay text added for Monks since they may be waiting to use something
    that's usable based on energy regeneration.
    
    Events:
    + Track casts on/off/regardless-of GCD status.
    + Watch Fury of Air ticks for Maelstrom projection purposes.
    
    Options:
    + Made some "modifiers" more user-friendly, but the interface is shit.
    Will update again soon.
    + Improved the importer a lot, but still a long ways to go.

commit e80e03f4e88c495ecfb9f72cd85b30cc0e0cc43a
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Wed Dec 7 22:40:32 2016 -0500

    Reversions, Bugfixes
    
    CLASSES
    o Potions belong on the 'potions' toggle rather than 'cooldowns'.
    
    STATE
    o Revert cooldown.X.remains change due to issues.
    
    CORE
    o Advance to the end of GCD after each cycle again, until a better
    solution is found.

commit 2cfd1e270ec6cc931b7d68a6da80add594d821c9
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Dec 6 22:28:08 2016 -0500

    BETA:  Fixes to latest beta, Paladin, Shaman.
    
    PALADIN
    o Fix toggle for Artifact Ability (under 'toggle' rather than
    'settings').
    
    SHAMAN
    o Fix Aftershock refunds to not cause an error.
    
    STATE
    o Trying modification to target counts; if the addon has detected more
    enemies than nameplates have shown, trust the addon's detection.  We'll
    see how this goes.  (Should fix issues when Blizzard bugs out on hitbox
    sizes, i.e. EN Dragons).
    o Instead of advancing to the end of the GCD, trying cooldown.X.remains
    returning X's remaining CD or the remaining GCD, whichever is greater.
    Should apply only to offGCD abilities.  Makes the addon more friendly to
    weaving offGCD stuff like interrupts.
    
    UI
    o Fix an outstanding bug with the notification panel creating a dead
    spot for mouse interaction.

commit 501ab17c88b70ebb0f4db7b8ac5220fcff598080
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Dec 6 13:44:26 2016 -0500

    Elemental: Fix Earthquake, Stormstrike, Windstrike

commit 35b7a8a5eaef5af8862d7b2094654b8738775674
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Dec 6 13:28:05 2016 -0500

    Elemental Shaman Support, Legendaries, Bugfixes, Engine Improvements...
    
    CLASSES:  Add support for Xavaric's Magnum Opus shield buff.
    
    SHAMAN:  Add initial Elemental Shaman support.  May be missing some
    artifact and legendary mechanics.
    
    + Elemental Shaman:  *WARNING*  SimulationCraft importing does not work
    for the default APL at this time.  This will have to wait for an
    importer overhaul, since the current importer does not support
    'target_if'.
    + Elemental Shamans: nameplate targets will not be used because you
    cannot reliably detect the number of targets clustered at range.  This
    means targets won't be counted until you hit them.
    + Eye of the Twisting Nether: Added to many damaging abilities.  Can
    count your Twisting Nether buffs with twisting_nether.count (i.e., if
    you want to wait to pop a cooldown until you have all your buffs up).
    + Legendaries:  Implement mechanics from class/spec legendaries.  Not
    sure if Spiritual Journey will work right, yet.
    
    CORE:
    o Abilities that are channeled will run their handlers at the start of
    their cast rather than the end.
    + Added a delay counter on the upper left of primary icons.  This counts
    down to let you know that an ability may be ready, but the addon
    recommends waiting to use it.  This is useful for stuff like 'use Tiger
    Palm at 65 Energy' but you actually have only 40.  May need to make this
    'optional' or at least prettier.
    
    EVENTS:
    + Add preliminary support for tracking what spells are 'in the air',
    i.e., were cast but have not yet landed.  This will be used to improve
    recommendations following abilities that have a travel time and effects
    that fire when the spell hits (rather than when the spell was cast).
    
    ARTIFACT DATA:
    o Attempt to prevent the artifact API bug, yet again.
    
    OPTIONS:
    o Use [[ ]] for storing display/list default names so that `/hekili
    makedefaults' doesn't freak out with names that have apostrophes.
    o Add a new importer warning for APLs that can't be properly read.
    
    SCRIPTS
    o storeValues() will always clear the table before exiting if there are
    no new elements to store.
    
    STATE
    o spendCharges() will set a cooldown to 0 if you're left with at least 1
    charge.
    o The calculated haste / spell_haste / melee_haste values will now use
    values from the state.stat table, which allows ability handlers that
    update haste values to impact project cast times/GCD times/etc.
    + Added 'refreshable' option that returns true if a debuff with the same
    name as the tested ability has less than 30% of the debuff's duration.
    This could use more finesse.
    + reset():  Wipe modified stat values and get fresh values during future
    queries.
    - reset():  Use global_cooldown wherever class.gcd was previously used.
    o reset():  Don't advance to the end of the GCD any longer; may help
    with recommendations for stuff that was off-GCD.
    + advance():  Advance times will be rounded to the ceiling of the
    hundredth second (0.01).  1.505 becomes 1.51 as does 1.501.  This helps
    improve consistency of recommendations (reducing flicker) and also
    addresses an issue where abilities that would be recommended based on a
    calculated future time (i.e., reaching a cap or energy level) wouldn't
    actually pass the threshold by some infinitesimal margin so we were
    spending a charge before we gained it.
    + advance():  Add hook to allow class/spec modules to do extra stuff
    after advance() completes its work.  The first usage of this is to try
    to support Spiritual Journey's Feral Spirit cooldown reduction.
    + isReady():  Check timeToReady() for all actions that are being tested
    using Time Scripts.
    
    UI
    + When showing the values used in a diagnostic tooltip (Debug enabled
    and Paused), show each element in alphabetical order for easier reading
    ).
    + Add font strings for delays, keybindings (still not supported yet).
    Delay and KB is at 67% of prmary font size; should probably make these
    into options at a later date.
    
    UTILS
    o Moved orderedPairs here so I can use it the editor and tooltips or
    wherever else I might want.

commit b892fb5f9717d00f62ec5d26a00bb6c2cf20ab7e
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Wed Nov 30 10:47:09 2016 -0500

    Update Paladin default displays.

commit f979fccc52cc3ba802cb6826ed205ade13c6572c
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Wed Nov 30 10:46:41 2016 -0500

    Fix for Default Imports
    
    *BUGFIX*
    
    The default display export strings were incorrectly storing which action
    lists were attached to them.  This worked okay for most people who don't
    have custom or old action lists, but not for others.  This should fix
    the bug and default settings should properly be recovered at
    login/reload.

commit d0d803553cc3111597ed4bcb53c5ce802ea7540f
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Wed Nov 30 00:26:58 2016 -0500

    New Specialization Support (Protection Paladin) and New Script Type!
    
    Initial support for Protection Paladins.  It's possible and even likely
    that some buff IDs are incorrect and some mechanics are not yet modeled
    correctly.  We'll see!
    
    *Protection Paladins*
    Protection stuff includes new Class Settings for toggling defensives
    on/off ('use_defensives' in scripts), set a health threshold for
    Hand/Light of the Protector self-heals (if met, 'use_self_heals' is
    true), set a damage threshold for how much incoming damage you must be
    receiving before Shield of the Righteous is recommended defensively (the
    default action list still avoids capping SotR charges).
    
    *New Script Type: Time*
    While the default SimC like scripts are sufficient in the vast majority
    of cases, sometimes it is more important to calculate *when* an action
    list entry should be ready rather than if it is ready now (or when the
    ability's cooldown/resources are available).
    
    Example:  You have 8 seconds remaining before Shield of the Righteous
    will reach 3 charges.  You want Shield of the Righteous to be used when
    you are capped on charges, so you aren't wasting charge time gained from
    Judgment.
    
    SimC-like Conditions:
    
    cooldown.shield_of_the_righteous.charges=cooldown.shield_of_the_righteous.charges_max
    
    This will be false UNTIL you've reached 3 charges.
    
    Time Script:
    
    (cooldown.shield_of_the_righteous.charges_max-cooldown.shield_of_the_righteous.charges_fractional)*action.shield_of_the_righteous.recharge
    
    This will find out how much remaining charge is required and multiply by
    recharge time (which should equal 8 seconds, based on the case we
    provided).
    
    Using the Time Script will tell the addon to anticipate that Shield of
    the Righteous *will be* ready in 8 seconds, instead of the default
    behavior of saying "no, it's not ready yet" and then checking again
    after something else has been recommended.
    
    Time Scripts have access to additional values to help with
    decision-making:  'delay' is the time until the ability is off-cooldown
    or until you will have resources (based on resource regeneration) --
    whichever is greater.  'spend' is the amount of resources required to
    use the ability.  'spend_type' is the type of resources spent by the
    ability.
    
    Time Scripts are heavily restricted -- you can't write full functions
    and you cannot access the global environment.  You can provide an
    equation that gives a numeric value, and use simple conditions like:
    
    holy_power.current>1 and 2 or 0
    
    ...which would equal 2 if you have more than one Holy Power, or 0 if you
    have 1 or fewer Holy Power.
    
    *Double Checking*
    If no ability's criteria is successful in your action lists, the addon
    will now advance by 1s and try again.  It will do this twice before
    giving up on providing you with a recommendation.
    
    *BUGFIXES*
    - Recommending an offGCD ability will no longer trick the addon engine
    into thinking that the GCD was reset.

commit dac5f6c486ca6ff377bb06d647895e75b9093e8e
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Tue Nov 29 01:38:52 2016 -0500

    Additional support for Paladin abilities.
    
    Corrected 'repentence' to 'repentance'.
    Added many previously unsupported or unlisted abilities available to
    Retribution Paladins.
    Added hook in state.spend() to support Crusade gaining stacks from
    expending holy power.
    Added 'target.is_undead' and 'target.is_demon' -- used internally to
    apply Wake of Ashes stun.
    Added support for healing spells actually healing (so that if you
    recommend Flash of Light based on current health, your predicted health
    value changes and something else would get recommended next).
    
    Cleaned up some descriptions in the /hekili options UI.  Auto/Manual
    given more descriptive names.
    
    Fix stat.spell_power to actually give a useful value.

commit c2b3d260b60af8d1c04f707dc18348d2e2350fe2
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Mon Nov 28 19:23:11 2016 -0500

    Clear up some import confusion.
    
    Told GitHub to ignore some libraries that the Curse packager will
    manage.

commit 3f24786b17d37f025652e7bcfd46b00b039f4c7d
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Mon Nov 28 19:12:04 2016 -0500

    Initial GitHub upload of Hekili for 7.1.0 (with some PTR support).

commit 39ae038d02fae9b088100c5749474c4bd5d33da2
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Mon Nov 28 18:57:36 2016 -0500

    :space_invader: Added .gitattributes & .gitignore files

commit cf46692a79904a78c9c597dfb65669605959dda6
Author: Hekili <Hekili@users.noreply.github.com>
Date:   Mon Nov 28 18:56:24 2016 -0500

    Initial commit

