Get an Epic Experience with Premium

Bitten's SpellFlash Library

Libraries Login to Add Favorites
  • World of Warcraft
  • 9,562 Monthly Downloads
  • Supports: 6.1.0
  • 6,683,219 Total Downloads
  • Updated 03/09/2015
  • Created 04/28/2012
  • 575 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: All Rights Reserved
  • Newest File: 60100.201503092107

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.

r393 | slippycheeze | 2015-03-10 04:07:20 +0000 (Tue, 10 Mar 2015) | 1 line
Changed paths:
   A /tags/60100.201503092107 (from /trunk:392)

Create tag 60100.201503092107
r392 | slippycheeze | 2015-03-10 04:07:01 +0000 (Tue, 10 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/LDB.lua

Be safer about LDB updates
r391 | slippycheeze | 2015-03-10 04:06:57 +0000 (Tue, 10 Mar 2015) | 4 lines
Changed paths:
   M /trunk/src/Events.lua

Disable debugging of "missing" spells.

In the long term this needs a real fix, but for now this avoids
cluttering the debug log with nothing but this report for many users.
r390 | slippycheeze | 2015-03-10 04:06:52 +0000 (Tue, 10 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/Debug.lua

Bump debug ring count to 250, from 100, messages
r389 | slippycheeze | 2015-03-10 04:06:48 +0000 (Tue, 10 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua

Play it safer calling UpdateLDB, since it sometimes is out of date
r388 | slippycheeze | 2015-03-10 04:06:43 +0000 (Tue, 10 Mar 2015) | 3 lines
Changed paths:
   M /trunk/src/LDB.lua

Protect against changing settings before the LDB update runs

This can happen if we don't have any flashing going on.
r386 | slippycheeze | 2015-03-09 02:21:39 +0000 (Mon, 09 Mar 2015) | 1 line
Changed paths:
   M /trunk/BittensSpellFlashLibrary.toc
   A /trunk/BittensSpellFlashLibrary.xml

Restore XML file to fix loading embedded versions of addon
r384 | slippycheeze | 2015-03-08 21:35:24 +0000 (Sun, 08 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/Debug.lua

Fix focus update for BSF report window
r383 | slippycheeze | 2015-03-08 21:35:20 +0000 (Sun, 08 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/LDB.lua
   M /trunk/src/OptionsFrames.lua

Add option to enable/disable minimap icon
r382 | slippycheeze | 2015-03-08 21:35:16 +0000 (Sun, 08 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/Debug.lua
   M /trunk/src/SlashCommands.lua

Improve clarity of the debug log ring code
r381 | slippycheeze | 2015-03-08 21:35:12 +0000 (Sun, 08 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua
   M /trunk/src/LDB.lua

Further LDB updates, including AoE target count text
r380 | slippycheeze | 2015-03-08 21:35:07 +0000 (Sun, 08 Mar 2015) | 1 line
Changed paths:
   M /trunk/src/Debug.lua

Work around Windows platform bug with lua date function
r379 | slippycheeze | 2015-03-07 01:33:08 +0000 (Sat, 07 Mar 2015) | 1 line
Changed paths:
   M /trunk/BittensSpellFlashLibrary.toc

Use backslash to appease Blizzard / WoW windows history...
r378 | slippycheeze | 2015-03-06 06:38:47 +0000 (Fri, 06 Mar 2015) | 5 lines
Changed paths:
   M /trunk/.pkgmeta
   M /trunk/BittensSpellFlashLibrary.toc
   A /trunk/src/LDB.lua
   M /trunk/src/SlashCommands.lua

Implement LDB and minimap icons for BSF reports

This doesn't do everything that I want it to do (eg: display info on
rotations, etc), but it is a good start in getting the machinery hooked
up and correct.
r377 | slippycheeze | 2015-03-06 05:54:08 +0000 (Fri, 06 Mar 2015) | 5 lines
Changed paths:
   M /trunk/.pkgmeta

Add externals to create LDB and minimap icons

This is a bump for packaging testing, but shortly these will be
implemented to allow users to see some internal state (AoE, rotation
mode, etc), and also to trigger the bug reporting window.
r376 | slippycheeze | 2015-03-06 05:54:04 +0000 (Fri, 06 Mar 2015) | 8 lines
Changed paths:
   M /trunk/.pkgmeta
   M /trunk/BittensSpellFlashLibrary.toc
   M /trunk/src/BittensSpellFlashLibrary.lua
   M /trunk/src/Debug.lua
   M /trunk/src/SlashCommands.lua

Implement `/bsf report` fully

This ditches the AceGUI dependency, and just hand-codes the window.
Which is awesome fun, I can tell you -- 1980 called and wants their UI
design code back.

Anyway, this now reports the extra details I need, includes guidance for
the user, and is generally pretty reasonable.
r375 | slippycheeze | 2015-03-02 06:16:34 +0000 (Mon, 02 Mar 2015) | 16 lines
Changed paths:
   D /trunk/.buildpath
   M /trunk/.pkgmeta
   D /trunk/.project
   M /trunk/BittensSpellFlashLibrary.toc
   D /trunk/BittensSpellFlashLibrary.xml
   A /trunk/src/Debug.lua
   M /trunk/src/SlashCommands.lua
   D /trunk/version_history.txt

Start implementing `/bsf report` to report issues

One of the ongoing problems has been that it is hard to get users to
report the right information when they feel like the rotation is off, or
a spell is missing, or something like that.

This is a start of a GUI interface to capture and export the debug log,
even if it wasn't shown, as well as details about spec, level, and
whatever other details turn out to be useful in the longer term for
debugging problems.

The biggest feature in this specific change is an attempt to
appropriately embed LibStub and AceGUI-3.0 into the packaged version, so
that I can use them in building this interface.  (Because there is no
way on earth that I am going to reimplement everything that they do
by hand.)
r373 | slippycheeze | 2015-02-25 02:07:43 +0000 (Wed, 25 Feb 2015) | 1 line
Changed paths:
   M /trunk/BittensSpellFlashLibrary.toc

Bump TOC for patch 6.1
r371 | slippycheeze | 2015-02-15 22:13:57 +0000 (Sun, 15 Feb 2015) | 9 lines
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua

Add Resolve, Versatility, and Crit query functions

These wrap up the logic of fetching and transforming the relevant values
into a percentage multiplier, so that we don't have to repeat the same
code everywhere.

In an ideal world the Blizzard functions would do this, but with random
stuff like needing to fetch and add two numbers for versatility, or
transform a percentage into a float, this makes life easier.
r370 | slippycheeze | 2015-02-15 22:13:52 +0000 (Sun, 15 Feb 2015) | 1 line
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua

Add c.GetResolve() to return resolve bonus to healing effects.
r368 | slippycheeze | 2015-02-15 09:05:26 +0000 (Sun, 15 Feb 2015) | 5 lines
Changed paths:
   M /trunk/src/BittensSpellFlashLibrary.lua
   M /trunk/src/Events.lua
   M /trunk/src/Flashing.lua

Improve integration of spell GetDelay into the delay flashing

Previously a spell-supplied GetDelay would override many of the core
features, including charges and power regen delay calculations; this
updates the code to integrate it cleanly into the core calculation.


First Previous Page 8 of 15 Next Last
  • #144

    Yep, that sure was the problem :P I guess I replaced the old versions while troubleshooting performance issues last week :) Thanks!

  • #139


    Just wondering how i can disable the red border that has replaced the blizz default proc highlighting, and get back the blizz default proc highlighting?

    I think spellflash is an awesome addon, but I use it in conjunction with the blizz default proc highlighting.  In the heat of battle, the blizz default grabs my attention much more than the red or the spellflash, which i find very helpful.

    Up until 5.2, I was using the updated class spellflash modules, but retained the 3.15.1 library which allowed the blizz default to continue, but I can't seem to get that to be the case since 5.2.  Any help on this would be greatly appreciated.

    Additionally, on my shadow priest, the macros won't flash.. i've tried disabling and re-enabling 'flash macros' numerous times.


  • #141

    Nevermind, I worked out how to restore the Blizzard default proc highlighting in the updated modules.

    And as for the priest spellflash not flashing macros, that might have had something to do with me mistyping 'showtooltip' in the macros and copying the error across all macros.. lol.  Fixed now :)



  • #140

    There is not currently a way to use one of my modules and still have the default animation for proc highlights. I just added a little more info to the FAQ question about it ("I like the default Blizzard proc highlighting. Give it back!").  In what situations are you finding it important to use a spell with a proc, but SpellFlash isn't flashing it?

    As for the macros - have you looked at "My macro is not flashing" in the FAQ?

    Author of Bitten's SpellFlash.

  • #135

    Addon randomly stopped working for me today.  I updated and even went as far as uninstalling and reinstalling it, but still not getting it to work.  Have also deleted the WFT folder. Was working earlier and now just the weapon imbument and totems flash. Any suggestions? 

    Last edited by innocencelost013 on 3/8/2013 3:05:26 PM
  • #137

    Thank you for adding the extra info in your edit - that helps narrow the problem down.  Try turning on debug info and see if it's printing a spell out to your chat log (see the hidden options).  If it is printing a spell out that either you do not know yet (your level is too low), or that you do not have on your bars, I know how to fix it.

    Oops, that won't work for the Shaman module.  If you don't already have it, try installing the separate copy of Bitten's SpellFlash Library.  If that fixes the problem for you, I know how to fix it so that you won't need the separate copy anymore.

    Last edited by Xemnosyst on 3/8/2013 3:20:59 PM

    Author of Bitten's SpellFlash.

  • #138

    Unfortunetally that didn't help. Same thing is still happening.  Spell rotation itself isn't coming up at all.  No errors are popping up for the Spellflash, but I did get one for Oqueue. Could be part of the problem?

  • #133

    My addon doesn't seem to work properly. Most of the time, Its on, but it doesnt respond like it does. No spellflashing..nothing..This is puzzling. Reloading UI doesnt seem to fix this problem 

    EDIT: When I restart the behaves properly, but thats the only time it does. 

    Last edited by Keelendis on 2/26/2013 11:34:30 AM
  • #134

    When does it stop working?  Are you getting a Lua error?  (See this question for instructions on checking for a Lua error.)

    Author of Bitten's SpellFlash.

  • #131

    Is there a way to install an other skin of the flashings? like it looks like normal blizz procs?

    Last edited by kaosly on 2/6/2013 10:04:52 PM
  • #132

    Not to my knowledge.  I did not make the part that does the flashing animation, BigRedBrent did.  He is the author of SpellFlash.

    Author of Bitten's SpellFlash.

  • #129

    After installing the update I've got nothing but errors. Here is the latest error message I received just by opening the talent box.

    Message: ...rface\AddOns\BittensSpellFlashLibrary\src\Events.lua:285: attempt to index upvalue 'u' (a nil value)

    Time: 01/31/13 14:25:46

    Count: 1

    Stack: ...rface\AddOns\BittensSpellFlashLibrary\src\Events.lua:285: in function <...rface\AddOns\BittensSpellFlashLibrary\src\Events.lua:279>
    [C]: in function `LoadAddOn'
    Interface\FrameXML\UIParent.lua:299: in function `UIParentLoadAddOn'
    Interface\FrameXML\UIParent.lua:349: in function <Interface\FrameXML\UIParent.lua:348>
    [C]: in function `TalentFrame_LoadUI'
    Interface\FrameXML\UIParent.lua:477: in function <Interface\FrameXML\UIParent.lua:472>

    Locals: self = <unnamed> {
     0 = <userdata>

    event = "ADDON_LOADED"
    (*temporary) = nil
    (*temporary) = "BittensSpellFlashLibrary"
    (*temporary) = "Blizzard_TalentUI"
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = "attempt to index upvalue 'u' (a nil value)"
    select = <function> defined =[C]:-1
    libName = "BittensSpellFlashLibrary"
    u = nil
    hookLAB = <function> defined @Interface\AddOns\BittensSpellFlashLibrary\src\Events.lua:145
    s = <table> {
     GetPrimaryThreatTarget = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2274
     CastingOrChanneling = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2035
     InParty = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2111
     RangedItemBuffDuration = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2694
     Debuff = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2637
     Shooting = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2845
     UsesMana = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2547
     DebuffStack = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2641
     BreakOnDamageCC = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:3538
     Equipped = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2814
     HasSpell = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1722
     CopyTable = <function> defined @Interface\AddOns\SpellFlashCore\SpellFlashCore.lua:79
     Poisoned = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:3581
     FlashPet = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:3686
     AuraDelay = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1619
     InRaidOrParty = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2119
     InGroup = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2119
     CrowedControlled = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:3558
     GetModuleFlashable = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1430
     Buff = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2608
     Class = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1853
     TestFlashSettings = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:622
     Dummy = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:305
     RegisterModuleOptionsWindow = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1426
     ClearAllModuleConfigs = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1465
     MainHandItemBuffDuration = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:2670
     CheckIfVehicleSpellCastable = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:3231
     UnregisterModuleEvent = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1499
     FlashForm = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:3690
     UpdatedVariables = <table> {
     Spec = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1709
     Moving = <function> defined @Interface\AddOns\SpellFlash\SpellFlash.lua:1845
     RegisterOtherAurasFunction = <function> defi

  • #130

    That is a puzzling error.  It seems to me this particular error must be caused by either a bad installation (you could try deleting and re-installing the library), or by an earlier error.  When you login or /reloadui, the first time the error pops up, could you please make sure you are viewing the first error for SpellFlash (using the Previous/Next buttons), and send me that text?  You could create a ticket so not everybody has to look at these error logs.

    Author of Bitten's SpellFlash.

  • #127

    does spell flash change on the execution phase

  • #128

    If you're using Bitten's modules, then yes they should.  You can consult the description of each individual module for an explanation of how exactly they change.

    Author of Bitten's SpellFlash.

  • 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 »

Darkest Dungeon Wiki Editing Contest