Get an Epic Experience with Premium

Bitten's SpellFlash Library

Libraries Login to Add Favorites
  • World of Warcraft
  • 325,085 Monthly Downloads
  • Supports: 6.0.3
  • 6,211,570 Total Downloads
  • Updated 01/25/2015
  • Created 04/28/2012
  • 516 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 9 of 14 Next Last
  • #104
    Quote from QuinicAcid »

    After testing with all my addons, it's Inline Aura that's causing the problems.

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

    Author of Bitten's SpellFlash.

  • #103

    After testing with all my addons, it's Inline Aura that's causing the problems.

  • #102

    I will try turning off my other addons one by one to see if they may be conflicting... but here is the list:

    Ackis Recipe List
    Inline Aura
    Minimap Button Frame
    Successful Interrupt Announcer

    Also, the only SpellFlash items that I have enabled are:

    The only addons that affect buttons or bars are ButtonForge (just adds extra bars, which Spellflash can't reach anyways) and InlineAura (used for inbutton timers and counters). I suspect it may be InlineAura, though. I'll start by turning everything off, and turning them on one by one and see what I find.

    Last edited by QuinicAcid on 11/9/2012 5:07:14 PM
  • #99

    We want a choice to keep Blizzard's proc highlighting alongside Spell Flash. Why force the change on us instead of giving us a choice? I'm very much used to the blizzard proc highlighting and I find it unnerving to play without it. Good luck with your addon, I find it impossible to use now that it dominates my bars.

  • #108

    I agree.  I rely heavily on the default blizz ui proc flashing.  I find it very handy in conjunction with spellflash, as I don't rely solely on spellflash for my next cast, I use it more as a guide.  I've read the last section of the FAQ.  Tried other options, but when it comes to proc notification, nothing comes close to being as good as the default blizz flashing (for me). 

    It's a shame it isn't a toggle'able option, as I previously really enjoyed spellflash.  Was very useful, particularly for interrupts.

    Last edited by skaali23 on 11/12/2012 8:16:16 PM
  • #110

    Please try the beta and let me know how it works for you.

    Author of Bitten's SpellFlash.

  • #97

    Is there anyway to change the spellslash animation? it hurts my eyes

  • #98

    Have you checked out the options for the size & default color of the flashing?  If those options aren't enough, it is really a question for the main SpellFlash addon.  I make modules that tell it which buttons to flash; BigRedBrent writes the main addon that actually does the flashing.

    Last edited by Xemnosyst on 11/7/2012 4:17:03 PM

    Author of Bitten's SpellFlash.

  • #94

    seriously I cant stand SPAM specially from an addon, "No talent defined: Sanctified Wrath, No Glyph Defined: Avenging Wrath" is what I get constantly spammed 5 per second, turn off your libary and it doesn't spam turn it on and it does, its bloody annoying I'm disabling this crap til you fix it cause it wasn't doing before your latest update.

  • #95

    Thank you for the report.  I just released a new version of the Pally module that will fix it.

    The change in this latest library release was designed to reveal bugs in my modules, which it appears to have done very effectively.  It turns out there was a bug in the Prot Pally code that I never knew about.

    I'm sorry you had to experience the chat frame spam.  Going forward it will reveal bugs to me as I work on rotations, before any users have to see them.  I did not think any modules already had such a bug.

    Last edited by Xemnosyst on 11/5/2012 1:45:54 PM

    Author of Bitten's SpellFlash.

  • #92

    Thank you to everyone who reported the "tried to call protected function" error with the last release.  I believe I have fixed it.  Let me know if any issues persist.

    Author of Bitten's SpellFlash.

  • #93

    On the other hand, I'm not sure my new solution will work as universally.  It successfully suppresses the Blizzard proc highlighting in their default UI and with action bar addons that use LibActionButton (such as Bartender).  If anybody is using another popular action bar addon for which proc highlights are still showing, let me know and perhaps I can find a way to turn those off, too.

    Author of Bitten's SpellFlash.

  • #91

    <Lua error snipped by Bitten to avoid clutter.>

    Last edited by Xemnosyst on 11/5/2012 11:55:30 AM
  • #90

    With 3.15.3 I get...

    <Lua error snipped by Bitten to avoid clutter.>

    when I cast Ice Barrier as a mage

    Last edited by Xemnosyst on 11/5/2012 11:55:13 AM
  • #88

    Your latest update 3.15.3 isn't playing nice with the mod 'nUI', it's generating a ton of these type of errors (bugsack) whenever you're in combat:

    <Lua error snipped by Bitten to avoid clutter.>

    Last edited by Xemnosyst on 11/5/2012 11:54:59 AM
  • 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 »

CoachVicious Giveaway!