Updates for WoD

Sparbanken has taken over the development of this addon and is busy providing updates for WoD. The updated version has been dramatically overhauled and is available now for download. However, most classes do not come with defaults and will need to be configured manually using the new in-game interface. In order to set up defaults and test the new interface, we are seeking the help of a few knowledgeable players. After configuring the addon in-game for each class, the settings can be exported and shared with us so that we can load them as defaults. A tutorial for doing this is located here. If you're willing to help, please contact Sparbanken, Nothingsknower or make a ticket on the curseforge development page.

A tutorial for configuring the updated Alpha version is located here.


Watcher is a DPS improvement addon. Its goal is to provide useful and intelligent information in order to boost DPS.

Some classes have native support but other requires you to add spells manually. If you would like your class to get more native spells, then please configure the spells in game and get in touch with the addon manager to share your configuration.


Through the use of a priority table for attacks, Watcher times cooldowns and dots to provide information on which attack should be performed next.

Note that these are fairly old screenshots. With the 3.0+ release, all screenshots will be updated.

Attacks ready to be performed are displayed using a stack with the most prioritised attack shown on top.

Spells can be configured to be cast based on the presence (or lack there of) of an aura on you or your target, your target's health %, your mana/resource %, whether a spell can be stole or interrupted, whether you have a particular talent or glyph, among other options.

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

  • Avatar of Mpstark Mpstark Jul 27, 2013 at 00:06 UTC - 0 likes

    @tordenflesk: Go

    Thanks for trying out the development alpha! Bugs like this are bound to pop up here and again since the entire codebase has been rewritten. I hope that this hasn't ruined it for you and that you continue to test it out. I'd love to hear your thoughts about the functionality.

    As for the bug, I've been able to reproduce the problem on my machine (and what a bizarre one too! I wouldn't have ever caught that) and am working on it right now. A ticket has been created for you and you can monitor the status of your report there.

  • Avatar of tordenflesk tordenflesk Jul 26, 2013 at 08:31 UTC - 0 likes

    Setting the text to Monochrome Crashes WoW... and:

    66x Watcher-r20130726074857\Display-Display.lua:402: attempt to index field "Label" (a nil value)
    Watcher-r20130726074857\Display-Display.lua:402: in function "ClearIcon"
    Watcher-r20130726074857\Display-Display.lua:394: in function "ClearAllIcons"
    Watcher-r20130726074857\Display-Display.lua:429: in function "UpdateAll"
    Watcher-r20130726074857\Display-Display.lua:283: in function "DrawPriorityFrame"
    Watcher-r20130726074857\Display-Display.lua:155: in function <Watcher\Display.lua:155>
    self = <table> {
     totems = <table> {}
     defaults = <table> {}
     activePriorityList = 3
     optionsFrame = <unnamed> {}
     version = "3.0 Development Alpha"
     IconSpellCache = <table> {}
     db = <table> {}
     EnableModule = <func> @AtlasLoot_Loader\Libs\..\AceAddon-3.0.lua:363
     modules = <table> {}
     baseName = "Watcher"
     IterateEmbeds = <func> @AtlasLoot_Loader\Libs\..\AceAddon-3.0.lua:473
     CheckSecondaryResource = <func> @Watcher\Filters.lua:174
     CheckTalent = <func> @Watcher\Filters.lua:331
     CheckGlyph = <func> @Watcher\Filters.lua:339
     RemoveSpell = <func> @Watcher\Core.lua:415
     priorityListFilterLookup = <table> {}
     SetActivePriorityList = <func> @Watcher\Core.lua:652
     AddNewPriorityList = <func> @Watcher\Core.lua:597
     Enable = <func> @AtlasLoot_Loader\Libs\..\AceAddon-3.0.lua:325
     ShowHidePriorityFrame = <func> @Watcher\Display.lua:251
     Printf = <func> @Bagnon\libs\..\AceConsole-3.0.lua:69
     CheckSpellTalent = <func> @Watcher\Filters.lua:300
     PLAYER_REGEN_DISABLED = <func> @Watcher\Core.lua:370
     CheckSpellSpec = <func> @Watcher\Filters.lua:292
     message = "Hello!
    Welcome to the new version of Watcher. A bunch of things have changed around here and if you were using it before, your settings have been reset.
    Sorry about that.
    But sometimes, we as addon developers have to inconvience you to provide you with the best experience, which we hope that this new version will do.
     Enjoy the new version of Watcher!
    -- The Watcher Team"
     configurationSelections = <table> {}
     defaultModuleState = true
     CheckTotem = <func> @Watcher\Filters.lua:275
     GetSpellIdFromName = <func> @Watcher\Core.lua:343
     GetHealthPercent = <func> @Watcher\Core.lua:220
     AddNewPriorityListFilter = <func> @Watcher\Core.lua:618
     DisableModule = <func> @AtlasLoot_Loader\Libs\..\AceAddon-3.0.lua:381
     CheckAOE = <func> @Watcher\Filters.lua:272
     UpdateIcon = <func> @Watcher\Display.lua:436
     CheckTargetCastingInterruptable = <func> @Watcher\Filters.lua:257
     CheckHealth = <func> @Watcher\Filters.lua:195
     RegisterMessage = <func> @AskMrRobot\Libs\..\CallbackHandler-1.0.lua:118
     UnregisterMessage = <func> @AskMrRobot\Libs\..\CallbackHandler-1.0.lua:181
     CheckClassification = <func> @Watcher\Filters.lua:214
     DrawPriorityFrame = <func> @Watcher\Display.lua:280
     GetNextAvailableIcon = <func> @Watcher\Display.lua:384
     SetupPriorityFrame = <func> @Watcher\Display.lua:36
     CheckTimeToLive = <func> @Watcher\Filters.lua:211
     SpellIcons = <table> {}
     CheckTargetAura = <func> @Watcher\Filters.lua:233
     CheckUsability = <func> @Watcher\Filters.lua:93
     unitClassifications = <table> {}
     CheckSpec = <func> @Watcher\Filters.lua:325
     SetEnabledState = <func> @AtlasLoot_Loader\Libs\..\AceAddon-3.0.lua:455
     AddSpellToPriorityList = <func> @Watcher\Core.lua:640
     enabledState = true
     GetFilterSets = <func> @Watcher\Core.lua:467
     RegisterEvent = <func> @AskMrRobot\Libs\..\CallbackHandler-1.0.lua:118
     CheckPower =
    Related ticket: #21
    Last edited Jul 26, 2013 by tordenflesk
  • Avatar of Niselma30 Niselma30 Jul 13, 2013 at 14:32 UTC - 0 likes

    Watcher is a great addon but it was throwing off some serious errors last night! If you want me to I'll make a ticket overwise I'll post it here.

    Message: Interface\AddOns\Watcher\update.lua:83 GetSpellCooldown(): Invalid spell slot
    Time: 07/12/13 23:08:36
    Count: 2
    Stack: [C]: in function `GetSpellCooldown'
    Interface\AddOns\Watcher\update.lua:83 in function `UpdateSpell'
    Interface\AddOns\Watcher\Options.lua:1325 in function `?'
    Interface\AddOns\Watcher\Core.lua:958 in function `SetPriorityFrame'
    Interface\AddOns\Watcher\Core.lua:593 in function `CreatePriorityFrame'
    Interface\AddOns\Watcher\Options.lua:1110 in function <Interface\AddOns\Watcher\Options.lua:1107
    (tail call): ?

    Message: Interface\AddOns\Watcher\update.lua:77 attempt to perform arithmetic on field '?' (a nil value)
    Time: 07/12/13 23:10:00
    Count: 1713 ( and the number kept going up as well)
    Stack: Interface\AddOns\Watcher\update.lua:77 in function `UpdateSpell'
    Interface\AddOns\Watcher\Options.lua:1325 in function `?'
    Interface\AddOns\Watcher\Core.lua:965 in function <Interface\AddOns\Watcher\Core.lua:962

    Locals: self = <table> {
     defaults = <table> {
     powertypemin = <table> {
     sounds = <table> {
     CancelTimer = <function> defined @Interface\AddOns\Ace3\AceTimer-3.0\AceTimer-3.0.lua:161
     ShowHideFrame = <function> defined @Interface\AddOns\Watcher\Options.lua:1506
     dir = <table> {
     GetSeventhshowraidboss2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2636
     SetFont = <function> defined @Interface\AddOns\Watcher\Options.lua:2701
     SetLabelCol = <function> defined @Interface\AddOns\Watcher\Options.lua:1821
     GetShowCombat = <function> defined @Interface\AddOns\Watcher\Options.lua:1532
     SetDefaults = <function> defined @Interface\AddOns\Watcher\Core.lua:59
     Get2Keybind2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2241
     ScheduleTimer = <function> defined @Interface\AddOns\Ace3\AceTimer-3.0\AceTimer-3.0.lua:108
     SetFifthPriority = <function> defined @Interface\AddOns\Watcher\Options.lua:2462
     GetFont = <function> defined @Interface\AddOns\Watcher\Options.lua:2713
     SetSeventhPriority2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2601
     SetThirdshowraidboss2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2668
     SetSeventhshowraidboss2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2640
     ShowBarText = <function> defined @Interface\AddOns\Watcher\Options.lua:1355
     SetRipCombo = <function> defined @Interface\AddOns\Watcher\Options.lua:1778
     db = <table> {
     GetFifthPriority2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2577
     SetSegmentSize = <function> defined @Interface\AddOns\Watcher\Options.lua:2048
     SetLabel21 = <function> defined @Interface\AddOns\Watcher\Options.lua:1951
     GetSeventhPriority2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2597
     swingtype = 0
     GetThirdshowraidboss2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2664
     GetFifthPriority = <function> defined @Interface\AddOns\Watcher\Options.lua:2458
     SetLabel6 = <function> defined @Interface\AddOns\Watcher\Options.lua:1933
     Activateaxis = <function> defined @Interface\AddOns\Watcher\Options.lua:1998
     scan = <function> defined @Interface\AddOns\Watcher\Core.lua:407
     SetFifthPriority2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2581
     GetSegmentSize = <function> defined @Interface\AddOns\Watcher\Options.lua:1581
     GetLabel21 = <function> defined @Interface\AddOns\Watcher\Options.lua:1629
     unbindkeys2 = <function> defined @Interface\AddOns\Watcher\Options.lua:2355
     GetLabel23 = <function> defined @Interface\AddOns\Watcher\Options.lua:1637
     SetBar2Col = <function> defined @Interface\AddOns\Watcher\Options.lua:1845
     SetLabel24 = <function> defined @Interface\AddOns\Watcher\Options.lua:1969
     UNIT_ENTERED_VEHICLE = <function> defined @Interface\AddOns\Watcher\Core.lua:444
     AddPriorityTable = <function> defined @Interface\AddOns\Watcher\Options.lua:1321
     ActivateShowRaid = <function> defined @Interface\AddOns\Watcher\Options.lua:1481
     RAID_ROSTER_UPDATE = <function> defined @Interface\AddOns\Watcher\Core.lua:464
     GetBar8Col = <function> defined @Interface\AddOns\Watcher\Options.lua:1723
     GetSecondshowraidboss = <function> defined @Interface\AddOns\Watcher\Options.lua:2408
     offset = 0
     Set4Keybind1 = <function> defined @Interface\AddOns\Watcher\Options.lua:2130
     GetBar2Col = <function> defined @Interface\AddOns\Watcher\Options.lua:1693
     GetOptions = <function> defined @Interface\AddOns\Watcher\Options.lua:103
     name = "Watcher"
     Direct = <function> defined @Interface\AddOns\Watcher\spell_functions.lua:91
     Disable = <function> defined @Interface\AddOns\Ace3\AceAddon-3.0\AceAddon-3.0.lua:345

  • Avatar of eshin242 eshin242 Dec 14, 2010 at 02:45 UTC - 0 likes

    Hello, Not sure if this is the best place but I'll Start. I am a Hunter and since the 2.15 update Watcher has been broken when I try to use it. I thought it may just be something out of date but no luck there. I have tried to download multiple times but no go. I have also deleted and removed the addon, as well as make sure it's the only addon loaded. What I get when I try to configure or use it in any way I get the following lua error:

    Message: Interface\AddOns\Watcher\forecast.lua:38: attempt to perform arithmetic on global 'focusCostToCurr' (a nil value) Time: 12/13/10 18:39:17 Count: 1 Stack: Interface\AddOns\Watcher\forecast.lua:38: in function `EstFocus' Interface\AddOns\Watcher\update.lua:73: in function `UpdateSpell' Interface\AddOns\Watcher\Frames.lua:150: in function `SetPriorityFrame' Interface\AddOns\Watcher\Core.lua:527: in function `CreatePriorityFrame' Interface\AddOns\Watcher\Options.lua:1035: in function <Interface\AddOns\Watcher\Options.lua:1031> (tail call): ? [C]: ? [string "safecall Dispatcher[2]"]:9: in function <[string "safecall Dispatcher[2]"]:5> (tail call): ? ...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:798: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:613> (tail call): ? [C]: ? [string "safecall Dispatcher[3]"]:9: in function <[string "safecall Dispatcher[3]"]:5> (tail call): ? ...erface\AddOns\Chatter\Libs\AceGUI-3.0\AceGUI-3.0.lua:314: in function `Fire' ...en\Libs\AceGUI-3.0\widgets\AceGUIWidget-DropDown.lua:439: in function <...en\Libs\AceGUI-3.0\widgets\AceGUIWidget-DropDown.lua:430> (tail call): ? [C]: ? [string "safecall Dispatcher[3]"]:9: in function <[string "safecall Dispatcher[3]"]:5> (tail call): ? ...erface\AddOns\Chatter\Libs\AceGUI-3.0\AceGUI-3.0.lua:314: in function `Fire' ...s\AceGUI-3.0\widgets\AceGUIWidget-DropDown-Items.lua:345: in function <...s\AceGUI-3.0\widgets\AceGUIWidget-DropDown-Items.lua:335>

    Locals: <none>

    An error message then continues to cycle in my chat box. I really love this addon for hunters and the fact that I cant use it is very dissapointing. I'm open to suggestions of things to try but I think it may be on your end at this point.



  • Avatar of LunaEclipse LunaEclipse Dec 07, 2010 at 05:58 UTC - 0 likes

    I know this could be problematic because the power bar is also used by druids as a check for mana.

    From what I read of the API, when used to check a druids Eclipse Power, which is done the same as Runic Power, Rage, there is an option for Eclipse Power, the Value returned is between -100 Eclipse(Lunar) and 100 Eclipse(Solar). Hope this information is helpful if you decide to implement it.

  • Avatar of LunaEclipse LunaEclipse Dec 07, 2010 at 04:54 UTC - 0 likes

    Any chance of getting the power option to work for Balance Druids Solar/Lunar Power. Such as it showing the Wrath spell when moving from an Eclipse(Solar) to an Eclipse(Lunar), and Starfire spell when moving from an Eclipse(Lunar) to an Eclipse(Solar).

    Currently I can set it so it shows Wrath when I have the Eclipse(Solar) Buff, and Starfire when I have the Eclipse(Lunar) Buff, but it shows no spells when it is between Eclipses.

  • Avatar of Gellin Gellin Nov 01, 2010 at 18:49 UTC - 0 likes

    If you check the spellSetup.lua file you'll see the functions that are going to be used on initialisation to split up the auras and debuff and the fields which will perform this. The idea is that the track spell field will be replaced with seperate buffs and debuffs fields. Auras will be added to the fields as comma seperated lists and these lists will be split at runtime or whenever added to some aura tables. There is no way just yet to get the multiple tracking working though as I still have to retool the other files to use these new tables. This might be delayed further as I think I have found a better way to add the spell functions.

    Cast time support is supposed to do two things:

    • If a spell is being cast then time left on all spells must be greater than or equal to the cast time
    • The length of a aura will have its cast time subtracted from it in order to achieve 100% uptime.

    However, r45 has a bug in it and is probably not going to working for anybody.

    Last edited Nov 01, 2010 by Gellin
  • Avatar of LunaEclipse LunaEclipse Nov 01, 2010 at 03:45 UTC - 0 likes

    Okay, I was looking through the change log for r45, and it notes the following changes:

    • added initial functions for multiple aura tracking
    • added updated dk spells
    • addded new spellfunctions for things like health tracking
    • added base cast time support

    I looked in the addSpellFunctions.lua, but I can't see any code in there for multiple aura tracking. Is it something that must be done with a user created function in the class LUA's?

    Also the base cast time support, I am not sure what that means. Is that like the time it takes to cast the spell?

    Last edited Nov 01, 2010 by LunaEclipse
  • Avatar of XylanTrueheart XylanTrueheart Oct 14, 2010 at 20:29 UTC - 0 likes

    No choise but to post this here as there doesn't seem to be a ticket system enabled for this addon.

    Whenever I click on the addon in Interface preferences I get several errors the first one posted below. As seen by BugGrabber, English client.

    1x Watcher-Watcher v2.10 (r28)\Options.lua:283: attempt to index field 'countreq' (a nil value)
    AceConfigDialog-3.0-50:251: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:199>
    AceConfigDialog-3.0-50:1165: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1051>
    AceConfigDialog-3.0-50:1538: in function `FeedGroup'
    AceConfigDialog-3.0-50:1463: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1443>
    (tail call): ?:
    <in C code>: ?
    <string>:"safecall Dispatcher[3]":9: in function <[string "safecall Dispatcher[3]"]:5>
    (tail call): ?:
    AceGUI-3.0-33 (Ace3):314: in function `Fire'
    ...AceGUI-3.0\widgets\AceGUIContainer-DropDownGroup.lua:66: in function `SetGroup':
    AceConfigDialog-3.0-50:1603: in function `FeedGroup'
    AceConfigDialog-3.0-50:1814: in function `Open'
    AceConfigDialog-3.0-50:1842: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1840>
    (tail call): ?:
    <in C code>: ?
    <string>:"safecall Dispatcher[2]":9: in function <[string "safecall Dispatcher[2]"]:5>
    (tail call): ?:
    AceGUI-3.0-33 (Ace3):314: in function `Fire'
    ...GUI-3.0\widgets\AceGUIContainer-BlizOptionsGroup.lua:20: in function <...GUI-3.0\widgets\AceGUIContainer-BlizOptionsGroup.lua:19>:
    <in C code>: in function `Show'
    Interface\FrameXML\InterfaceOptionsFrame.lua:28: in function `InterfaceOptionsList_DisplayPanel':
    Interface\FrameXML\InterfaceOptionsFrame.lua:46: in function `InterfaceOptionsListButton_OnClick':
    <string>:"*:OnClick":2: in function <[string "*:OnClick"]:1>


    Last edited Oct 14, 2010 by XylanTrueheart: Clean up
  • Avatar of Foxx86 Foxx86 Sep 15, 2010 at 18:55 UTC - 0 likes

    I can help you with localization to Ru-version... Just open localiz-section on curseforge, like this addon maker did -

    And about "only warrior spell problem"... some my guild-mates tell me that is problems with priests and mages...


Date created
Apr 11, 2009
Last update
Oct 20, 2014
Development stage
  • enUS
GNU General Public License version 3 (GPLv3)
Curse link
Recent files