Get an Epic Experience with Premium

Bitten's SpellFlash Library

Libraries Login to Add Favorites
  • World of Warcraft
  • 347,938 Monthly Downloads
  • Supports: 6.0.3
  • 6,247,147 Total Downloads
  • Updated 01/25/2015
  • Created 04/28/2012
  • 518 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: All Rights Reserved
  • Newest File: 60000.20

About Bitten's SpellFlash Library

When you download one of Bitten's SpellFlash class modules, it comes with a copy of this addon. You do not need to download this addon separately. If you have it installed, you can delete it. That is, of course, unless you like to install the "nolib" versions of addons - but in that case you should know what you are doing and I don't need to give you any more instruction. :)

This is a library to make SpellFlash modules easier to create. Please see the FAQ before posting a question. If that doesn't address your issue, or you have a suggestion to improve this addon, please either leave a comment or create a ticket.

If you are an addon author and want to learn more, read on. If you are not an addon author, there is nothing here you need to worry about - read on only only if you're curious.

Help with cooldown and (de)buff timing

There are often times when want to know whether a certain (de)buff will be present when it's time to cast the next spell. If you use a naive approach of simply checking for the presence of a buff now, and it falls off half way through your current cast, you may have been flashing the wrong spell. There are clones of many (de)buff and cooldown checking functions that allow you to get the information you need easily. For example this library function:

function c.GetMyDebuffDuration(name, noGCD)
    return s.MyDebuffDuration(c.GetID(name)) - c.GetBusyTime(noGCD)

Passing a value for noGCD will cause it to ignore the global cooldown, which is useful for spells that are not on the gcd. Otherwise it uses the longer of the gcd and your current cast.

International support without cluttering your code with spell IDs

There are clones of several often-used SpellFlash functions that translate from the spell name you pass to their spell id. For example, you can replace calls that look like

s.Buff(74434--[[Soulburn]], "player")

With calls that look like


Without fear of your code breaking when used on a non-English client. There is also a function, c.GetID("name"), that you can use if a cloned function does not exist in the library. Note that for these functions to work, you must have the spell or buff defined in a.spells.

Estimated Harm and Heal Target Counts

During your rotation function you will have access to the estimated harm and heal targets, to smoothly ramp through AoE rotatinos:

if c.EstimatedHarmTargets > 2 then
if c.EstimatedHealTargets > 5 then
Learning More

There are several other little features, like simplifying your Spam function while supporting options to turn rotations on and off. Feel free to browse the source to learn more. All of Bitten's SpellFlash modules use this library, so any of them provide examples of how to use it.

r364 | slippycheeze | 2015-01-25 20:06:26 +0000 (Sun, 25 Jan 2015) | 1 line
Changed paths:
   A /tags/60000.20 (from /trunk:363)

Create tag 60000.20
r363 | slippycheeze | 2015-01-25 20:06:09 +0000 (Sun, 25 Jan 2015) | 5 lines
Changed paths:
   M /trunk/src/Flashing.lua

Support Combo Points and multiple power types, including secondary power types.

This extends the core support for power management in DelayPriorityFlash
to include secondary power types (Combo Points, specifically) as well as
Energy and Rage, and to correctly handle delays for them.
r362 | slippycheeze | 2015-01-25 20:06:04 +0000 (Sun, 25 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/Flashing.lua

Add energy support to power delay calculations
r360 | slippycheeze | 2015-01-24 07:03:34 +0000 (Sat, 24 Jan 2015) | 9 lines
Changed paths:
   M /trunk/src/Events.lua

Support event handles at the class addon level, not just rotations

More and more classes share various logic across their specs; in many
cases it makes more sense to have a "class rotation addon" level handler
for various events that captures information for later use than to
duplicate the same code across all three rotations.

This adds that capability to the core, calling the addon event hook
prior to the rotation event hook.  Both are dispatched if present.
r357 | slippycheeze | 2015-01-20 21:54:15 +0000 (Tue, 20 Jan 2015) | 9 lines
Changed paths:
   M /trunk/src/Flashing.lua

Move (primary) power check and wait into core

Many specs use some form of power that regenerates -- energy, focus,
mana (eg: pally) -- that is in limited supply.  Everyone had to
implement their own checks for power, and delay implementation for "how
long will this take".

This moves support into the core, and uses it for rage checks on
warriors, which is as good a test case as anything.
r356 | slippycheeze | 2015-01-20 21:54:11 +0000 (Tue, 20 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/Flashing.lua

Always check cooldown wait, even without annotation
r355 | slippycheeze | 2015-01-20 21:54:07 +0000 (Tue, 20 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/Events.lua

Implement event for entering combat.
r354 | slippycheeze | 2015-01-20 21:54:03 +0000 (Tue, 20 Jan 2015) | 12 lines
Changed paths:
   M /trunk/src/Events.lua

Expose "canLandWithin" to test if a spell can land in a duration

This is useful for various specs, who want to cast a spell while a
debuff is present on the target, but don't actually trigger it.

For example, the frost Mage pet applies a debuff that generates frost
charges, so you want to put priority on Frostbolt, if it will land
before the debuff expires.

Right now this exposes the raw mechanic, not a high level interface to
"cast with this debuff", because the source of the debuff is usually
going to be less than simple -- or you wouldn't be doing this.
r353 | slippycheeze | 2015-01-20 21:53:59 +0000 (Tue, 20 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua
   M /trunk/src/Events.lua

Handle moved tinsert => table.insert in WoD
r350 | slippycheeze | 2015-01-17 04:47:49 +0000 (Sat, 17 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/Flashing.lua

Handle nil rotation in finding flash color
r348 | slippycheeze | 2015-01-12 06:55:30 +0000 (Mon, 12 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua

Add c.Form, to wrap s.Form without needing to do manual ID traslation
r346 | slippycheeze | 2015-01-12 05:29:36 +0000 (Mon, 12 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua
   M /trunk/src/Events.lua
   M /trunk/src/Flashing.lua
   M /trunk/src/Foods.lua
   M /trunk/src/OptionsFrames.lua
   D /trunk/src/Simulations.lua

Clean up luacheck warnings and errors
r345 | slippycheeze | 2015-01-12 05:29:32 +0000 (Mon, 12 Jan 2015) | 5 lines
Changed paths:
   M /trunk/src/Flashing.lua
   M /trunk/src/SlashCommands.lua

Remove AoE mode, add rotation default flash color overrides

This is used in the pally module, since every spell is gold, and that
has low contrast with the default flashing color.  Since this is a
significant change, the new feature is optional.
r344 | slippycheeze | 2015-01-12 05:29:27 +0000 (Mon, 12 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua

Whitespace cleanup, no function change
r342 | slippycheeze | 2015-01-03 09:30:51 +0000 (Sat, 03 Jan 2015) | 10 lines
Changed paths:
   M /trunk/src/Flashing.lua

Add support for spell.Debug to dig into why a spell failed to flash

This is something I have written, and deleted, about a dozen times while
trying to figure out Blizzard bugs (like "this spell has range, but is
never, ever in range" on Earthquake).

This codifies it, and makes it reasonably efficient, in that it returns
one extra value from a function, a constant string, and performs one
extra conditional dereference, load, check set, without function calls
if debugging is not enabled.
r340 | slippycheeze | 2015-01-01 22:59:53 +0000 (Thu, 01 Jan 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua

Don't print messages about "nil" spells being undefined.
r338 | slippycheeze | 2015-01-01 00:28:23 +0000 (Thu, 01 Jan 2015) | 9 lines
Changed paths:
   M /trunk/src/Flashing.lua

Support spell charges natively in rotation flashing

This extends the PriorityFlash and DelayPriorityFlash code to natively
support spells that use charges, such that they will be treated as
unflashable when there are no charges available.

This allows all the hand-coded implementations of the same (or the bugs
where they should have been considered and were not) to be replaced with
the core just doing the right thing™.


First Previous Page 8 of 14 Next Last
  • #121

    Having the same problem as Xiebinrui

  • #119

    I'm glad you like them!  That's a strange issue w/ the Curse client.  You should definitely let them know if version 5 doesn't fix it.

    Author of Bitten's SpellFlash.

  • #116

    Loving the new proc system with the red border! Best thing ever!

  • #117

    I'm glad!  I already mentioned this to you, but for anyone else who reads it: please let me know if you think you should be using one of those procs but something else is flashing.  (For a single target boss fight, of course.)

    Author of Bitten's SpellFlash.

  • #114

    Thank you so much for this wonderful addon. However, I can tell that I'm not the only one who experiencing issues with regard to procs. Would be lovely to have them back, really miss it on my DK. Thanks!

  • #115

    Please try the beta, where that issue is addressed.

    <Edit:> The changes for proc highlights are now released (no longer in beta).

    Last edited by Xemnosyst on 11/15/2012 10:55:06 PM

    Author of Bitten's SpellFlash.

  • #112

    Hi, latest Beta generates a LUA error.

    Excellent addon, do keep up the good work by the way.

     It also places an action bar button in the middle of the screen.

    <Lua error snipped by Bitten to avoid clutter.>

    Last edited by Xemnosyst on 11/14/2012 10:57:04 AM
  • #113

    Thank you for the report.  I made a *possible* fix, please try it and let me know.

    Last edited by Xemnosyst on 11/22/2012 11:47:57 AM

    Author of Bitten's SpellFlash.

  • #109

    I think and hope I have come up with a solution to make everyone happy regarding proc highlighting.  It will change the border around spells that would have proc highlighting to be red.  Note that they will only appear if "Default Proc Highlighting" is selected in the main SpellFlash options.

    Please try the beta and let me know how it works for you.  I tested it with the stock Blizzard action bars, and with Bartender.  If you use something else and try the beta, please leave a note to let me know whether it worked for you.

    <Edit:> This change is now released (no longer in beta - simply update like normal).

    Last edited by Xemnosyst on 11/15/2012 10:55:48 PM

    Author of Bitten's SpellFlash.

  • #107
    Inline Aura
    Quote from Xemnosyst »

    Inline Aura by itself, or only in combination with this library?

      Inline Aura in combination with this library... but only verseions 3.15.3 and 3.15.4. All earlier version (3.15.2 and before) work great with Inline Aura.

  • #111

    I just reactivated Inline Arua (I disabled it for a while) and played around on my druid shapeshifting & such in combat without any issues yet.  I will keep it on and hopefully experience a problem myself, but so far I have no idea what would be causing it.

    Last edited by Xemnosyst on 11/14/2012 12:04:11 AM

    Author of Bitten's SpellFlash.

  • #100
    Found a bug in Bitten's SpellFlash Library

    Appears to be a bug introduced in version 3.15.3 and it's still present in 3.15.4.

    The druid shapeshifting ability is affecting what spells/abilities are shown on the main cast bar.

    In my humanoid form I have 5 spells on my main spell bar. Spots one through five. In my cat form I have 11 spots filled on my main spell bar. Spots 1-7 and 9-12.

    Sometimes, while fighting, when I pop out of cat for a rejuve, moonfire or faerie fire and return back to cat form, I only see the first 5 of my cat abilities. I can still access abilites 6-12 via the keyboard shortcut, but I can no longer see them or click on them. At this point, even if I shapeshift in and out of cat form, I can't recover the buttons.

    It's not until the fight is over, and I shapeshift in and out of cat form, that I can finally recover my lost buttons. This problem does not seem to appear outside of a fight.

    Tried to do a bit of troubleshooting too, so I placed another ability in slot 9 in my humanoid form. When I shifted out to cast, and returned to cat form, button 9 remained, and all the others dissappeared. It appears that the only buttons that are "remembered" to be restored are the ones that have a spell in them. Anything blank is not updated/refreshed or whatever it is doing.

    As a temporary solution, I have resorted to using version 3.14.2 as that version does not have this bug.

  • #101

    I just tried it on my druid and did not experience the same issue.  I tried with both the default action bars, and with Bartender.  Are you using some other action bar addon, perhaps?

    Last edited by Xemnosyst on 11/8/2012 11:36:42 PM

    Author of Bitten's SpellFlash.

  • #106

    My setup, and what I have to do to recreate it pretty consistantly:

    Humanoid form:
    1. Moonfire
    2. Wrath
    3. Entangling Roots
    4. Faerie Fire
    5. Hurricane

    Cat form:
    1. Rake
    2. Mangle
    3. Swipe
    4. Rip
    5. Ferocious Bite
    6. Tiger's Fury
    7. Berserk
    8. null
    9. Thrash
    0. Ravage
    -. Pounce
    =. Shred

    Kill something putting 5 combo points on with Mangle; spend combo points with Ferocious Bite. Shift into humanoid form, and pull using Faerie Fire; before the GCD (global cool down) is up, start spamming cat form.

    This almost always causes the buttons to disappear.

  • #105

    I've tested Inline Aura with everything but SpellFlash turned on, and it worked just fine.

    This doesn't mean that SpellFlash is the one at fault... it very well could be Inline Aura has a bug, and that the 3.15.3 release of Bitten's SpellFlash Library has brought forth the bug.

    (Remember, everyone was playing nicely in releases 3.15.2 and before)

    Last edited by QuinicAcid on 11/9/2012 7:11:43 PM
  • To post a comment, please login or register a new account.
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 »

Gamepedia Free-shirt Giveaway