A library with reusable code to detect failure at certain raid tasks. At last count there are 107 different "fails" that are tracked (updated for ToC/Icecrown courtesy of Maat/sztanpet/MysticalOS). Please note, this list is not always up-to-date.

The Icecrown Citadel list includes:

  • Fail_Rotface_OozeExplosion
  • Fail_Rotface_StickyOoze
  • Fail_Marrowgar_Whirlwind
  • Fail_Marrowgar_Coldflame
  • Fail_Marrowgar_SaberLash
  • Fail_Festergut_VileGas
  • Fail_Festergut_PungentBlight
  • Fail_Deathwhisper_DeathNDecay
  • Fail_Sindragosa_TailSmash
  • Fail_Sindragosa_FrostBreath
  • Fail_Sindragosa_BlisteringCold
  • Fail_Sindragosa_Cleave
  • Fail_Sindragosa_UnchainedMagic
  • Fail_Sindragosa_FrostBomb
  • Fail_Sindragosa_IceTomb
  • Fail_Professor_MutatedSlime
  • Fail_LanaThel_UncontrollableFrenzy
  • Fail_LanaThel_BloodboltSplash
  • Fail_BloodPrinces_SystemicShockVortex
  • Fail_LanaThel_DeliriousSlash
  • Fail_Gunship_Explosion
  • Fail_Gunship_Explosion_Knockback

The Onyxia's Lair list includes:

  • Fail_Onyxia_DeepBreath
  • Fail_Onyxia_FlameBreath
  • Fail_Onyxia_TailSweep
  • Fail_Onyxia_WarderCleave
  • Fail_Onyxia_WarderNova
  • Fail_Onyxia_Cleave

The Trial of The Crusader list includes:

  • Fail_Acidmaw_AcidicSpew
  • Fail_Acidmaw_ParalyticToxin
  • Fail_Acidmaw_SlimePool
  • Fail_Anubarak_Impale
  • Fail_Dreadscale_MoltenSpew
  • Fail_FactionChampions_Hellfire
  • Fail_Gorehowl_FireBomb
  • Fail_Icehowl_Trample
  • Fail_Jaraxxus_FelInferno
  • Fail_Jaraxxus_LegionFlame
  • Fail_Valkyr_Orb
  • Fail_Valkyr_Vortex
  • Fail_FactionChampions_Bladestorm

The Ulduar list includes:

  • Fail_Algalon_BigBang
  • Fail_Algalon_CosmicSmash
  • Fail_Auriaya_SonicScreech
  • Fail_Auriaya_Voidzone
  • Fail_Council_Overload
  • Fail_Council_RuneOfDeath
  • Fail_Deconstructor_Light
  • Fail_Deconstructor_Gravity
  • Fail_Deconstructor_Voidzone
  • Fail_Freya_NatureBomb
  • Fail_Freya_Sunbeam
  • Fail_Freya_UnstableEnergy
  • Fail_Hodir_BitingCold
  • Fail_Hodir_FlashFreeze
  • Fail_Hodir_Icicle
  • Fail_Kologarn_Eyebeam
  • Fail_Mimiron_BombBots
  • Fail_Mimiron_Flames
  • Fail_Mimiron_FrostBomb
  • Fail_Mimiron_LaserBarrage
  • Fail_Mimiron_NapalmShell
  • Fail_Mimiron_ProximityMine
  • Fail_Mimiron_Rocket
  • Fail_Mimiron_Shock
  • Fail_Mimiron_Siren
  • Fail_Mimiron_WaterSpray
  • Fail_Racorscale_Flame
  • Fail_Thorim_Blizzard
  • Fail_Thorim_LightningChain
  • Fail_Thorim_LightningCharge
  • Fail_Thorim_Smash
  • Fail_Vezax_Leech
  • Fail_Vezax_Saronite
  • Fail_Vezax_ShadowCrash
  • Fail_Yogg_DeathRay
  • Fail_Yogg_LunaticGaze
  • Fail_Yogg_OminousCloud
  • Fail_Yogg_Sanity

The Vault of Archavon list includes:

  • Fail_Koralon_MeteorFist
  • Fail_Archavon_ChokingCloud
  • Fail_Emalon_LightningNova
  • Fail_Emalon_ChainLightning
  • Fail_Koralon_FlameCinder

The Obsidian Sanctum list includes:

  • Sartherion's Lava Waves
  • Sartherion's Void Zones
  • Sartherion's Flame Breath
  • Sartherion's Tail Lash

The Eye of Eternity list includes:

  • Fail_Malygos_Dot
  • Fail_Malygos_ArcaneBreath

The Naxxramas list includes:

  • Heigan Dance
  • Kel'Thuzad's Void Zones
  • Sapphiron's Breath
  • Sapphiron's Cleave
  • Sapphiron's Tail Sweep
  • Frogger
  • Thaddius Left/Right
  • Thaddius Jump
  • Grobbulus - Dispelling Mutating Injection
  • Grobbulus - Standing in the poison cloud
  • Four Horseman - Mark
  • Four Horseman - Void Zone

Rewrite of FailBot logic to perform these detections.

This is an open repository. Feel free to add to it, and make fixes yourself.


Sample Code

local fail = LibStub("LibFail-1.0")
local fail_events = fail:GetSupportedEvents()

local function onFail(event, who, failtype)
   -- Use the spellid as a default localized string for the fail event
   local spell = GetSpellInfo(fail:GetEventSpellId(event)) or ""

   -- Use the "failtype" argument to print appropriate messages based on it.
   local failmsg
   if failtype == fail.FAIL_TYPE_NOTMOVING then
       failmsg = "%s fails at moving (%s)"

   print( failmsg:format(who, spell) )
for _, event in ipairs(fail_events) do
	fail.RegisterCallback("SampleAddon", event, onFail)

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Laren Laren Jul 30, 2010 at 16:48 UTC - 0 likes

    Would it make sense to add a fail for non tanks getting parried by a boss that has parry-haste enabled (e.g. Deathwhisper, Sindragosa, Halion)?

    Currently for my guild, tank deaths as a result of parry hasted boss swings (<= 0.4s) seems to be a major issue on our way to a Halion kill on heroic 25 man. Only one of our warriors seems to be very consistent in not getting parried at all in contrary to the rest of our melee DPS.

  • Avatar of hiah hiah May 20, 2010 at 02:47 UTC - 0 likes

    Could somebody link me something where i can see what fail is what. E.g. the Deathwhisper Fails, Shade and Shade_Explosion, which is the "got meleed from a ghost"-fail and which is the "got hit from the explosion"

    etc. etc.


  • Avatar of deleted_26001 deleted_26001 Apr 13, 2010 at 19:55 UTC - 0 likes

    Hi, any chance of Mystic Buffet reaching 6 stacks can announce a fail? It's for the All you can eat Achievement at Sindragosa and have no easy way of spotting who goes over 5.

    Last edited Apr 13, 2010 by deleted_26001
  • Avatar of mysticalos mysticalos Oct 30, 2009 at 05:06 UTC - 0 likes

    Icecrown is shaping up ;)

  • Avatar of sztanpet sztanpet Oct 23, 2009 at 10:22 UTC - 0 likes

    are you using the appropriate repo url (the development url not the public url), have you set your svn password or your ssh public key, whichever is more appropriate, etc

  • Avatar of mysticalos mysticalos Oct 23, 2009 at 09:14 UTC - 0 likes

    I know anyone with a curse account and svn and good code base could add their own fails in past, it even says above "This is an open repository. Feel free to add to it, and make fixes yourself"

    Has this changed? cause i had tried fixing a the missing spelids and adding malygos arcanebreath myself but i got permission denied after i had made all the changes and tried to commit :(. I helped with all the ony fails and like half the toc fails for ensidiafails, fixed all the spellids on ones maat did too :P I think he's used to waking up to new tickets from me every couple days or so. One bad raid night, or bad pug on an alt and I have ideas for new fails hehe.

    The change to breath I only suggested cause i figured there was a reason maat didn't use spellid method. It was used at first but it was changed when during last code cleanup I'm assuming for some reason. Wow devs were pretty bad coders back then anyways, 93 spell ids, and 6 (maybe 7 or 8 i don't remember count) scripted events determining which set is used based on her location was a pretty ugly.

    Last edited Oct 23, 2009 by mysticalos
  • Avatar of sztanpet sztanpet Oct 23, 2009 at 08:12 UTC - 0 likes

    IRC(#wowace @ freenode) is a good place to talk about the addon, looking at comments or tickets is very sporadic, you have a bigger chance of alerting the devs on there, freenode has a nice webchat too making things much simplre, but if you do come around please remember that we are not always present so you might not get a response instantly

    also, where is auriaya voidzone listed twice? edit: yea i see it now, its on the main page, fixed

    edit2: regarding the onyxia deep breath fail, yes that could be nicer way to do it, but the existing method being a resource hog is not really relevant, this is not the thing that will slow your addons down

    Last edited Oct 23, 2009 by sztanpet
  • Avatar of mysticalos mysticalos Oct 23, 2009 at 05:37 UTC - 0 likes

    tried to submit changes to repository but it's no longer open? :\

    Was gonna fix the long standing ticket #1. :P

        -- Malygos - Arcane Breath
        if (spellId == 56272 or spellId == 60072) and is_playerevent then -- not a fail for tanks, but we dont care about that here
            self:FailEvent("Fail_Malygos_Breath", destName, self.FAIL_TYPE_WRONGPLACE)

    This is of course assuming the event is registered in all the appropriate areas, locals, fail_events,zones_with_fails,event_spellids,fails_where_tanks_dont_fail

    Btw, should really look at tickets more often. Light/gravity bomb is STILL broken on 10 man and bug was reported last June. the 10 man spellids for light/gravity bomb are missing.

    searing light missing ID:

    Gravity Bomb missing id:

    Last edited Oct 23, 2009 by mysticalos
  • Avatar of mysticalos mysticalos Oct 22, 2009 at 21:51 UTC - 0 likes

    is used by onyxia ONLY, there is no reason to use if self:GetMobId(sourceGUID) = 10184 then return end

    The function is used on add cleave because that spellid is shared, with 104 creatures.

    also you listed void zone twice for auriaya ;)

    The deep breath method is crued and probably a resource hog for 2432534635r spellids. That's what I used at first when i originally gave fail to maat. But he made up a new method that used spellname and spellzone instead I think. I'd have to look at code again to see what he used. But something like "if spellname="breath" and zone="onyxia's Lair" :) Plus it ruled out posiblity of any missing spellids causing a missed fail.

    Last edited Oct 23, 2009 by mysticalos
  • Avatar of wxx011 wxx011 Jun 14, 2009 at 02:44 UTC - 0 likes

    sorry,when I into Mimiron Stage 2,I got this error message

    LibFail-1.0-65 (Skada):320: Usage: UnitDebuff(\"unit\", [index] or [\"name\", \"rank\"][, \"filter\"])\nLibFail-1.0-65 (Skada):320: in function <...terface
    LibFail-1.0.lua:307>\nLibFail-1.0-65 (Skada):250: in function <...terface
    LibFail-1.0.lua:244>\n\n -

Should We Put Default Localization Strings In This Project

  1. Choice:

  1. Results
  2. 0 comments


Date created
Dec 19, 2008
Last update
Mar 12, 2013
Development stage
MIT License
Curse link
Reverse relationships
Recent files
  • A: r261 for 5.0.5 Mar 12, 2013
  • A: r260 for 5.0.4 Aug 29, 2012
  • R: 1.0.259 for 4.2.0 Jun 28, 2011
  • A: r258 for 4.2.0 Jun 28, 2011
  • R: 1.0.257 for 4.0.6 Apr 26, 2011



Embedded library