Get an Epic Experience with Premium


Shaman Login to Add Favorites
  • World of Warcraft
  • 6,875 Monthly Downloads
  • Supports: 6.0.2
  • 15,380 Total Downloads
  • Updated 10/27/2014
  • Created 11/18/2013
  • 19 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: GNU General Public License version 3 (GPLv3)
  • Newest File: 2.02

About Hekili

Version 2.0x

Hekili v2.0x is out and available on Curse Client. For the latest, cutting-edge versions of this addon, please set your release preference to "Beta."


The major features added to the addon since version 1.0 are:

  • Extensive in-game customization. Modify any of the built-in displays or action lists, or make brand new ones. Use SimulationCraft-like or Lua syntax to determine if an ability should be shown.
  • Set keybinds to toggle your cooldowns, interrupts, hardcasts, or mode -- single target, cleave, or AOE. These toggles will dynamically show or hide action lists or abilities that don't meet your current criteria.
  • Use a keybind to pause the addon. A debugging mode is also available to show detailed tooltips when paused, to see exactly why a particular icon is shown at a particular time.
  • Ongoing optimization of the main engine. Instead of constantly updating every potentially useful bit of information, the addon now calculates each bit of information on demand.


Bear in mind, your settings from the 5.x version of this addon will not work with 6.0. The new version will reset any profile that wasn't created with Hekili v2.


Feel free to contact me directly if you have any issues. Private messages work well. Submitting a ticket is good as well. I do NOT get notifications if you comment on this page, unfortunately.

You can reach me on the MMO-Champion forums as Hekili, or on Twitter as @Hekili808.

r87 | kapulani | 2014-10-20 18:58:01 +0000 (Mon, 20 Oct 2014) | 1 line
Changed paths:
   M /trunk/Core.lua

 - Try firing ProcessActionLists() and UpdateDisplays() on separate timers to reduce CPU usage per cycle.
r86 | kapulani | 2014-10-20 06:49:17 +0000 (Mon, 20 Oct 2014) | 1 line
Changed paths:
   M /trunk/Core.lua

 - Correct a renamed variable, fixing an error in GetModifiers.
r85 | kapulani | 2014-10-20 04:08:57 +0000 (Mon, 20 Oct 2014) | 45 lines
Changed paths:
   M /trunk/Classes/Shaman.lua
   M /trunk/Classes.lua
   M /trunk/Core.lua
   M /trunk/Events.lua
   M /trunk/Hekili.lua
   M /trunk/MultilineEditor.lua
   M /trunk/Options.lua
   M /trunk/State.lua
   M /trunk/Targets.lua
   M /trunk/UI.lua
   M /trunk/Utils.lua

General Performance Improvements
 - The following changes were implemented to improve addon speed and response times.
    1. Eliminated 'Verbose' option and replaced with 'Debug'.  Turning Debug on will enable the more informative tooltips added in v2.  Turning Debug off is about a 10% performance improvement, so you should probably turn it off when you're not actively troubleshooting an action list.
    2. The addon will no longer create default 'return true' scripts in cases where an action/display/queue has no script associated with it.  We'll just say that nil means yes.
    3. Improved short-circuit evaluation of most conditions in the engine, so things that are going to fail will fail faster, taking less CPU time to operate.  See below for more information.

 - ScriptElements() will be better at detecting numbers, especially floating point numbers.

 - Corrected an issue with modifiers (i.e.: wait,sec=X) where strings were not parsed accurately.

 - Removed the C_Timer.NewTickers from UI.lua engine and auditor will now trigger their next pulse at the end of the current one.  Supposedly, this will be more efficient, but may cause the engine to stall on error.  Will check the outcome.  You can disable and re-enable the addon to kickstart it again if you actually need to.

 - Grabbing fresh tables in ResetState() instead of purging the old ones.  Looks memory neutral, may not be a real performance improvement.

 - Added CacheDurableDisplayCriteria(), to reduce the number of comparisons per loop in ProcessActionLists().  Will need to confirm that all the proper cases where the criteria could change are flagged.

 - ProcessActionLists():  Revamped to reduce the number of unnecessary function calls per loop.
    1. No longer ResetState() for invisible displays.
    2. Script keys are slightly shorter to eliminate an unnecessary string concatenation.
    3. Use better short circuit evaluation on most conditions to fail earlier and waste less time.
    4. No longer gather values of script variables for priority queues and actions that are not ultimately used.  (That is, only collect values if the action is ultimately selected by the engine.)
    5. Removed another extraneous ResetState().

 - CheckDisplayCriteria():  Don't retest display criteria, just honor what was decided last time the engine cycled.

 - Cache player GUID.

 - Reorganize CLEU to short circuit faster, hopefully, for less wasted time (it was already pretty efficient, though).

 - Added "/hekili times" command to trigger a 60s profile of addon CPU usage, if you have CPU profiling enabled in your WoW client.

 - Added all relevant metatables from State.lua into Hekili.MT so I can use them in Core.lua

 - BuildUI() will create buttons and leave them hidden, instead of flickering with the default Bloodlust icon.

 - Changed Hekili.state to Hekili.State throughout the addon because capitalization is clearly the number one priority right now.

 - Made locals of some library functions to improve performance by roughly 30% per call.  Supposedly.

 - Lightning Shield's "max_stack" attribute will properly respect the "Improved Lightning Shield" perk that none of you have yet, therefore it will be 15 for Elemental Shamans.

 - Corrections to every single action list.  You should Reset Profile to get them.  (I'll make this easier in the future.)
r84 | kapulani | 2014-10-19 03:47:19 +0000 (Sun, 19 Oct 2014) | 1 line
Changed paths:
   M /trunk/Classes/Shaman.lua

 - Fix 'else' to 'elseif' in the handler for Chain Lightning.  Glad I left it flagged as alpha!
r83 | kapulani | 2014-10-19 01:29:10 +0000 (Sun, 19 Oct 2014) | 10 lines
Changed paths:
   M /trunk/Classes/Shaman.lua
   M /trunk/Classes.lua
   M /trunk/Core.lua
   M /trunk/UI.lua

 - Another tweak to make sure the right casts/cooldowns are reduced by the right kind of haste.
 - Ascendance now properly resets the Lava Burst cooldown.
 - Chain Lightning properly prioritizes MW5 > AS, then consumes MW stacks.
 - Earthquake now properly consumes Echo of the Elements, instead of telling you to cast it on repeat forever and ever.
 - Glyph of Frost Shock reduces the CD by 2 seconds, and apparently Frost Shock's CD is not reduced to 5s for Elemental Shamans.
 - Lava Burst isn't a nature spell, so it does not benefit from or consume Ancestral Swiftness.
 - Script loading has been cleaned up a bit, redundant code removed and modularized.
 - The addon will no longer gather variables from relevant scripts with every cycle, reducing active time and decreasing the likelihood of "script ran too long" errors.  Also, it was dumb.
 - Fixed mismatch for hardcast toggle vs. what the engine actually checked against.
 - Moved the diagnostic tooltip code into its own function.  Still needs more cleanup, but readability is improved slightly.
r82 | kapulani | 2014-10-15 22:33:45 +0000 (Wed, 15 Oct 2014) | 1 line
Changed paths:
   M /trunk/Classes/Shaman.lua

 - "Cleave" Mode will now act as a bridge between single-target and AOE.  There are special action lists for 2 - 4 targets, and then AOE is active for 5+ targets.  Feedback is welcome.  You'll have to reload your profile to get the changes to your @Enhancement, Primary display.
r81 | kapulani | 2014-10-15 19:27:25 +0000 (Wed, 15 Oct 2014) | 3 lines
Changed paths:
   M /trunk/Core.lua
   M /trunk/Events.lua
   M /trunk/Targets.lua

 - Corrected an issue with captions for debuff counts only working if your current target has the debuff.
 - Hide a dead tooltip that appears when changing your gear (artifact of weapon speed detection).
 - Provided myself with a hook to the Targets table for testing/debugging purposes.
r80 | kapulani | 2014-10-15 09:08:11 +0000 (Wed, 15 Oct 2014) | 1 line
Changed paths:
   M /trunk/Core.lua
   M /trunk/Options.lua

 - Resetting your profile no longer requires a /reloadui to reset fresh action lists.  This will also help prevent orphaned displays from being left behind (I hope).
r79 | kapulani | 2014-10-15 08:59:54 +0000 (Wed, 15 Oct 2014) | 8 lines
Changed paths:
   M /trunk/Classes/Shaman.lua
   M /trunk/Classes.lua
   M /trunk/Core.lua
   M /trunk/Events.lua
   M /trunk/Formatting.lua
   M /trunk/Hekili.toc
   M /trunk/Libs/Ace3.toc
   M /trunk/Libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc
   M /trunk/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/LibStub/LibStub.toc
   M /trunk/Libs/ForAllIndentsAndPurposes/ForAllIndentsAndPurposes.toc
   M /trunk/Libs/ForAllIndentsAndPurposes/defaulthooks.lua
   M /trunk/Libs/ForAllIndentsAndPurposes/indent.lua
   M /trunk/Libs/ForAllIndentsAndPurposes/test.lua
   M /trunk/Libs/LibCompress/Changelog-LibCompress-r49-release.txt
   M /trunk/Libs/LibCompress/LibCompress.toc
   M /trunk/Libs/LibCompress/lib/LibStub/LibStub.toc
   M /trunk/Libs/LibDualSpec-1.0/LibDualSpec-1.0.toc
   M /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-1.0.lua
   M /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-1.0.toc
   M /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-1.0.xml
   M /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-Database-1.0.lua
   M /trunk/Libs/LibItemBuffs-1.0/LibStub.lua
   M /trunk/Libs/LibItemBuffs-1.0/extractor/extractor.php
   M /trunk/Libs/LibPlayerSpells-1.0/Changelog-LibPlayerSpells-1.0-0.1.txt
   M /trunk/Libs/LibPlayerSpells-1.0/LibPlayerSpells-1.0.toc
   M /trunk/Libs/LibSharedMedia-3.0/LibSharedMedia-3.0.toc
   M /trunk/Libs/LibSpellRange-1.0/LibSpellRange-1.0.toc
   M /trunk/Libs/LibSpellRange-1.0/libs/LibStub/LibStub.toc
   M /trunk/Options.lua
   M /trunk/State.lua
   M /trunk/UI.lua

 - Fix a bug that caused all cooldowns to be reduced by haste, twice for abilities affected by Flurry.
 - Added Elemental Blast aura.
 - Corrected the Lava Burst handler (was mislabeled) and added Echo of the Elements functionality.
 - Updated Ascendance for Enhancement to check that remaining Stormstrike's CD is greater than half its max duration, rather than a flat 3 seconds.  This is a band-aid fix for situations with extremely high haste.  You will need to reload your addon profile to get the change (or delete the @Enhancement, Cooldowns list and reload your UI, then reselect the @Enhancement, Cooldowns list for both Enhancement displays).
 - Improved texture caching for Lava Beam, Chain Lightning, to prevent some potential glitches.  Corrected Lava Beam spell ID.
 - When creating a fresh game state and player is casting a spell, run the action handler *after* setting the cooldown so that buffs aren't consumed early.
 - Only displays for your current spec will be shown (icons, not options) when opening the configuration UI.  This prevents confusion when your displays are stacked.
 - The addon will no longer think you hate your friends when you debuff them with Exhaustion/Sated.
r78 | kapulani | 2014-10-15 01:31:30 +0000 (Wed, 15 Oct 2014) | 1 line
Changed paths:
   A /trunk/Actions.lua
   M /trunk/Bindings.xml
   A /trunk/Classes
   A /trunk/Classes/Paladin.lua
   A /trunk/Classes/Shaman.lua
   A /trunk/Classes/Warrior.lua
   A /trunk/Classes.lua
   A /trunk/Constants.lua
   M /trunk/Core.lua
   D /trunk/EleShaman.lua
   D /trunk/EnhShaman.lua
   M /trunk/Events.lua
   A /trunk/Formatting.lua
   M /trunk/Hekili.lua
   M /trunk/Hekili.toc
   M /trunk/Libs/Ace3.toc
   M /trunk/Libs/AceComm-3.0/AceComm-3.0.lua
   M /trunk/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua
   M /trunk/Libs/AceDB-3.0/AceDB-3.0.lua
   M /trunk/Libs/AceGUI-3.0/AceGUI-3.0.lua
   M /trunk/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
   M /trunk/Libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc
   M /trunk/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua
   M /trunk/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
   M /trunk/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/LibStub/LibStub.toc
   A /trunk/Libs/EditboxWidget.bak
   A /trunk/Libs/ForAllIndentsAndPurposes
   A /trunk/Libs/ForAllIndentsAndPurposes/ForAllIndentsAndPurposes.toc
   A /trunk/Libs/ForAllIndentsAndPurposes/changes
   A /trunk/Libs/ForAllIndentsAndPurposes/defaulthooks.lua
   A /trunk/Libs/ForAllIndentsAndPurposes/indent.bak
   A /trunk/Libs/ForAllIndentsAndPurposes/indent.lua
   A /trunk/Libs/ForAllIndentsAndPurposes/test.lua
   A /trunk/Libs/HekiliCustomEditor.lua
   A /trunk/Libs/LibCompress
   A /trunk/Libs/LibCompress/Changelog-LibCompress-r49-release.txt
   A /trunk/Libs/LibCompress/LibCompress.lua
   A /trunk/Libs/LibCompress/LibCompress.toc
   A /trunk/Libs/LibCompress/lib
   A /trunk/Libs/LibCompress/lib/LibStub
   A /trunk/Libs/LibCompress/lib/LibStub/LibStub.lua
   A /trunk/Libs/LibCompress/lib/LibStub/LibStub.toc
   A /trunk/Libs/LibCompress/lib.xml
   M /trunk/Libs/LibDualSpec-1.0/LibDualSpec-1.0.toc
   A /trunk/Libs/LibItemBuffs-1.0
   A /trunk/Libs/LibItemBuffs-1.0/.docmeta
   A /trunk/Libs/LibItemBuffs-1.0/.pkgmeta
   A /trunk/Libs/LibItemBuffs-1.0/LICENSE
   A /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-1.0.lua
   A /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-1.0.toc
   A /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-1.0.xml
   A /trunk/Libs/LibItemBuffs-1.0/LibItemBuffs-Database-1.0.lua
   A /trunk/Libs/LibItemBuffs-1.0/LibStub.lua
   A /trunk/Libs/LibItemBuffs-1.0/README.textile
   A /trunk/Libs/LibItemBuffs-1.0/extractor
   A /trunk/Libs/LibItemBuffs-1.0/extractor/.gitignore
   A /trunk/Libs/LibItemBuffs-1.0/extractor/composer.json
   A /trunk/Libs/LibItemBuffs-1.0/extractor/composer.lock
   A /trunk/Libs/LibItemBuffs-1.0/extractor/extractor.php
   A /trunk/Libs/LibPlayerSpells-1.0
   A /trunk/Libs/LibPlayerSpells-1.0/Changelog-LibPlayerSpells-1.0-0.1.txt
   A /trunk/Libs/LibPlayerSpells-1.0/LICENSE
   A /trunk/Libs/LibPlayerSpells-1.0/LibPlayerSpells-1.0.lua
   A /trunk/Libs/LibPlayerSpells-1.0/LibPlayerSpells-1.0.toc
   A /trunk/Libs/LibPlayerSpells-1.0/LibStub.lua
   A /trunk/Libs/LibPlayerSpells-1.0/README.textile
   A /trunk/Libs/LibPlayerSpells-1.0/data
   A /trunk/Libs/LibPlayerSpells-1.0/data/Deathknight.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Druid.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Hunter.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Mage.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Monk.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Paladin.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Priest.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Racials.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Rogue.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Shaman.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Tradeskills.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Warlock.lua
   A /trunk/Libs/LibPlayerSpells-1.0/data/Warrior.lua
   A /trunk/Libs/LibPlayerSpells-1.0/lib.xml
   M /trunk/Libs/LibSharedMedia-3.0/LibSharedMedia-3.0.toc
   M /trunk/Libs/LibSpellRange-1.0/LibSpellRange-1.0.toc
   M /trunk/Libs/LibSpellRange-1.0/libs/LibStub/LibStub.toc
   D /trunk/Locales
   D /trunk/Modules.lua
   A /trunk/MultilineEditor.lua
   M /trunk/Options.lua
   M /trunk/State.lua
   M /trunk/Targets.lua
   A /trunk/Textures
   A /trunk/Textures/DEATHKNIGHT.blp
   A /trunk/Textures/DEATHKNIGHT.png
   A /trunk/Textures/DRUID.blp
   A /trunk/Textures/DRUID.png
   A /trunk/Textures/HUNTER.blp
   A /trunk/Textures/HUNTER.png
   A /trunk/Textures/MAGE.blp
   A /trunk/Textures/MAGE.png
   A /trunk/Textures/PALADIN.blp
   A /trunk/Textures/PALADIN.png
   A /trunk/Textures/PRIEST.blp
   A /trunk/Textures/PRIEST.png
   A /trunk/Textures/Pause.blp
   A /trunk/Textures/Pause.png
   A /trunk/Textures/ROGUE.blp
   A /trunk/Textures/ROGUE.png
   A /trunk/Textures/SHAMAN.blp
   A /trunk/Textures/SHAMAN.png
   A /trunk/Textures/WARLOCK.blp
   A /trunk/Textures/WARLOCK.png
   A /trunk/Textures/WARRIOR.blp
   A /trunk/Textures/WARRIOR.png
   M /trunk/UI.lua
   M /trunk/Utils.lua
   M /trunk/embeds.xml

SVN commit of Hekili v2.
r77 | kapulani | 2014-09-23 03:29:41 +0000 (Tue, 23 Sep 2014) | 1 line
Changed paths:
   M /trunk/EleShaman.lua
   M /trunk/EnhShaman.lua

- Fix for Synapse Springs handling...  Enjoy it until WoD.
r76 | kapulani | 2014-07-07 08:17:40 +0000 (Mon, 07 Jul 2014) | 1 line
Changed paths:
   M /trunk/Hekili.lua
   M /trunk/Hekili.toc

 * BUGFIX: Stop polluting AceGUI for no discernable reason.


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 »

VIP trip to SMITE World Championship