Download
(120Kb)
Download
Updated: 01-15-10 09:53 AM
Pictures
File Info
Updated:01-15-10 09:53 AM
Created:10-19-09 04:54 PM
Downloads:74,871
Favorites:257
MD5:

Faceroller  Popular! (More than 5000 hits)

Version: 0.2.9
by: hungtar [More]

please accept my apology for abandoning this addon and not answering your support requests.

I don't play wow anymore and thus any request will remain unaswered.


What is Faceroller?

Faceroller is an addon in the spirit of Event Horizon with the look of Faceshooter. It's focus lies on using a minimal amount of screen space while showing anything you need to know at the moment.

It will show you only one icon on the screen: the highest priority ability, which should be used next. Once the ability was used, it will reevaluate all cooldowns and debuffs on your target and present you the next spell.

As this needs tracking of cooldowns and debuffs and making decisions what to suggest when, Faceroller is split into modules. And to get some use out of Faceroller, you will need a module that fits your talent spec (See below for a list of modules).

You will get little or no use out of Faceroller if your toon is below level 80!


What Faceroller is NOT

First and foremost, Faceroller is not all knowing. It only keeps track of your current target and therefore can assist you only with a single target.


How to use Faceroller

First, you will need a module that works with your spec. There are currently modules available for the following specs:

  • Warrior:
  • Shadow Priest
  • Balance Druid
  • Deathknight:
    • Frost 1 (included, experimental*, by hectolight, module name: dkdwfrost)
    • Frost 2 (included, experimental*, by Kallsuh, module name: dkdwfrost_Kall)
    • unholy
    • blood
  • Paladin:
    • Retribution
    • Prot (included, experimental*, by lloydbates)
  • Warlock:
  • Hunter:
    • mm/sv/bm hunters (included, all in one module named simplehunter)
  • Shaman:
    • Enhancement (included)
    • Elemental (included, experimental*)
  • Mage:
    • FFB (included, experimental*)
    • Arcane (included, experimental*)
  • Rogue:

* These modules may not always work as expected. If they don't, please leave a comment.

If you see the message "init failed for module ... (Reason: none given)" enable debug output with /fr debug. Make sure your character knows all the spells, required by the module you are using, before reporting it as a bug!

Install a module of your choice along with Faceroller. Start WoW. You can fire up the GUI with /fr config or by clicking on the LDB plugin (if you have a broker display).

Note: Faceroller rememberrs different modules for both specs, if you have dual spec. If you switch specs for the first time after installing Faceroller, don't forget to configure!

Note: All modules require your character to be level 80 to work!

Getting started with your own module

Writing your own module can be as easy as editing a lua table. See Faceroller_EasyExample (included in the zip) for an example how that works.

If the possibilities provided by the Easy* API are too restraining, you will need some knowledge of lua or you will have a hard time writing your own module. Have a look at Faceroller_ExampleModule (included in the zip). It's a simple module that does the same as Faceroller_EasyExample but with a more complex API. The comments are quiet extensive and should give you a good overview how things work.

The module Faceroller_SimpleEnhancementShaman uses a mixture of both and might help you as well with getting started.

Also, have a look at the documentation at github. If you have further questions, leave a comment.


Want to share your module?

If you wrote a module but you don't want to maintain it yourself, i can include it in the zip here. Just send me a PM or leave a comment where i can find your module. Note: since i won't be able to test all modules, new included modules will be marked as experimental for a few weeks. If too many people complain about an experimental module, it will get deleted. So please make sure it really works.

Following is a (possibly incomplete) list of specs, for which there is currently no module:
  • Feral Druid
  • Rogue: assassination, subtlety

Credits
  • Icon skin taken from oUF_Fleetfood.
  • Idea for corner indicators from Grid.
  • and a big Thank You to everyone that used an early Faceroller version and to those who report bugs and write modules!

version 0.2.9:
- added option for silent module init.
- call module option function even if /fr opt is called without argument.

version 0.2.8:
- toc update.
- removed deadca7s unholy dk module.
- API changes for RegisterBuff:
- RegisterBuff(<spell>) works as before
- RegisterBuff(<spell>, true) now checks for buffs on player cast by anyone.
- RegisterBuff(<spell>, false, true) now checks for debuffs on player cast by player (used only in arcane mage module).

version 0.2.7:
- added deadca7s unholy dk module.

version 0.2.6:
- added Kallsuhs frost dk module.

version 0.2.5:
- added Opaques prot warrior module.

version 0.2.4:
- frame is now click-through.
- added options to arcane mage module.

version 0.2.3:
- frost dk module: HoW / SoE totem check.

version 0.2.2:
- bug fix in EasyChooseSpell.

version 0.2.1:
- bug fix: reset everything that can be set by a module when no module is set for the current spec.

version 0.2.0:
- don't load example modules.
- moved simplehunter and enh module to experimental modules.
- option to disable/enable corner indicators (disabled by default).

version 0.1.9.5:
- update to frost dk module, courtesy of hectolight (strength of earth totem overwriting horn of winter).

version 0.1.9.4:
- two times a charm ...

version 0.1.9.3:
- bug fix (check for possibly invalid gui saved variable).

version 0.1.9.2:
- hide old modules options when selecting another.
- with buttonfacade enabled, only use fade animations that will show properly.
- added hectolights frost dk module.
- added debug message to HasSpell to see which spell can't be found (/fr debug to enable debug messages).

version 0.1.9.1:
- call modules next skill function once in a while to make sure everything is up to date.
- LDB plugin icon update and tooltip added.

version 0.1.9:
- added /fr skin command.
- added more corner indicators to simplehunter module.
- fixed corner indicator scaling bug.

version 0.1.8:
- added lloydbates prot pala module.

version 0.1.7.3:
- guess arcane blast debuff.

version 0.1.7.2:
- more changes to arcane mage module.

version 0.1.7.1:
- track player debuffs.
- some changes to arcane mage module.

version 0.1.7:
- new gui (if i become discontent about the gui again, it will be gone for good).
- added arcane mage module (experimental).

version 0.1.6.2:
-fixed wrong spell id in elemental shaman module.
-fixed improved scorch and hot streak in ffb mage module (thanks to Baine, who did all the testing!)

version 0.1.6.1:
- faster updates for debuffs.

version 0.1.6:
- some stuff to reduce cpu load.
- ffb mage and ele shaman module (untested stuff).

version 0.1.5:
- bug fix: frame should once again show on unit that become attackable while they are targeted.

version 0.1.4:
- fadein/fadeout animation for frame.
- corner indicators for SimpleEnhancementShaman module.

version 0.1.3b:
- buttonfacade should work now ...

version 0.1.3:
- broke ldb and bf support when merging the modules. should work again.

version 0.1.2:
- reorganized sourcecode.
- fixed strata of corner indicators.
- added key binding to open the config.

version 0.1.1:
- gui improvements.

version 0.1.0:
- removed Faceroller_Config and Faceroller_Toy
- new gui: Faceroller_GUI
- gui features: ButtonFacade support, LDB plugin.

version 0.0.25:
- fixed typo in simplehunter module.

version 0.0.24:
- spell icon path for buffs and debuffs.

version 0.0.23:
- API improvements.

version 0.0.22:
- new API function UnregisterModule.
- new module: Faceroller_toy.

version 0.0.21:
- new API function EasyRegister.
- improvements to EasyChooseSpell.
- cooldowns, time left on buffs/debuffs should now always be correct.

version 0.0.20:
- fixed bugs in gui and core that keept it from working with secondary spec after login.
- option to show/hide frame in vehicles.

version 0.0.19:
- fixed a bug with saved variables and module init.
- added Faceroller_EasyExample module.

version 0.0.18:
- changed Easy* functions to work less stupid.

version 0.0.17:
- module options should now work with dual spec
- added EasySetup and EasyChooseSpell to API.

version 0.0.16:
- added module options to the GUI.

version 0.0.15:
- corner indicators
- destro wl module included.

version 0.0.14:
- module init fix with uninitialized options.

version 0.0.13:
- trying so set an invalid module should no longer destroy an existing, working setup.
- Faceroller_Config added (gui).

version 0.0.12:
- fix(?) for reactive abilities being incorrectly disabled.

version 0.0.11:
- updates to example module.
- update time_left for myTargetDebuffs.

version 0.0.10:
- Faceroller:HasGlyph(spellid) function
- Faceroller:GetSetItemSlotItems() (returns item id of head, shoulder, chest, legs, gloves)
- Faceroller.in_combat flag (boolean).
- hide frame when no module is set.
- unset current module with /fr mod none.

version 0.0.9:
- color frame red when out of range.
- color frame blue when out of power.
- FR_test3 is now Faceroller_SimpleEnhancementShaman.
- module init functions: may now 'return nil, <error-string>'
- some module updates.

version 0.0.8:
- show frame when target becomes attackable.
- simplehunter module: fixed handling of ES with lock and load.

version 0.0.7:
- example module update.
- hm fix in simplehunter module.

version 0.0.6:
- changed packing to fix minion problem.
- some module stuff

version 0.0.5:
- some more stuff for reactive abilities.

version 0.0.4:
- support for reactive abilities.
- options for when to show/hide the frame.

version 0.0.3:
- added missing slash commands.

version 0.0.2:
- fixed a "typo"

version 0.0.1:
- first beta release.
Optional Files (7)
File Name
Version
Size
Author
Date
Type
1.2c
2kB
05-14-11 03:29 AM
Addon
1.7
2kB
05-08-11 07:38 AM
Addon
1.2.1
102kB
02-13-11 02:06 PM
Patch
1.2
2kB
02-13-11 05:15 AM
Addon
4.0
1kB
01-02-11 01:25 PM
Addon
1.3.2
2kB
03-24-10 04:44 PM
Addon
1.1
2kB
10-25-09 01:16 PM
Addon


Post A Reply Comment Options
Unread 10-23-09, 02:52 PM  
Kunstbanause
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 54
Uploads: 4
Re: SimpleEnhancementShaman

1. Perhaps a way to detect combat status
Code:
if (UnitAffectingCombat("player") == nil) then
{
	print("NOT IN COMBAT")
}

if (UnitAffectingCombat("player") == 1) then
{
	print("IN COMBAT")
}
Last edited by Kunstbanause : 10-23-09 at 02:59 PM.
Report comment to moderator  
Reply With Quote
Unread 10-23-09, 03:05 PM  
hungtar
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 151
Uploads: 9
Re: SimpleEnhancementShaman

Originally posted by TekNoir

...
<snip>

If I might make some requests?

1. Perhaps a way to detect combat status (in or out of combat)? I was going to put in a suggestion to heal if low on life, high on mana, and out of combat. When I target something and the Faceroller button appears, it would yell "Heal yourself before you do something stupid!" or at least display the heal icon (preferably just the icon). That way I don't waltz into combat with too low of life, especially if I have the mana to spare.

2. Perhaps a better way to detect if in melee range than the way I have scripted? The way I wrote it feels a bit awkward. It also sometimes but rarely requires me to be struck once before it realizes I'm in melee range.

3. Perhaps an easier way to access glyphs and possibly talents? It took me quite some time to figure out exactly which spell id to use for a detected glyph.

4. Perhaps a better way to exclude spells from the rotation when you still need to keep up with their cooldown (e.g. Shamanistic Rage)? I used the p-variable and v.data (detecting zero; anything other than zero sorts according to priority), but it currently feels awkward. Acceptable as it currently is so it's certainly a low priority. Currently I believe you can just give anything you want out of rotation a .data of zero and then number everything else according to priority (with bigger == better) and then exclude zeros after the fact (as I did in my example).

That is all that I can think of for now. Thank you for your time and the wonderful addon!

---

PS: Cannot figure how to add a file, so here is my revised code.

<snip>
...
(Cut a bit off the beginning and ending).

1. some easier way to check if in combat: sounds like a good idea and as it keeps coming up, i'll add something like this in one of the next releases. Something like Faceroller.in_combat as a boolean. We'll see

2. checking if in melee range: i don't know if there is a better way then what you did by using IsSpellInRange but there probably isn't. And as this would only be useful for some modules for some classes, i won't add this any time soon.

3. easier way to check for glyphs: thought about this, too. As you point out the annoying part is figuring out what the right spell id is. This is what i do:
  • go to wowhead, enter the glyphs name
  • click on "Uncategorized spells"
  • choose the one with the cogwheel icon
Once you have the spell id of the glyph, iterating over the glyph-slots is just easy cake. But yeah, would be nice if there was an easier way (like getting the glyphs spell id from the glyphs item id would already be an improvement). And checking for talents is not that accessible either. Haven't spend much time on either problem. Would be nice to have sometime in the future.

4. don't understand what you mean there. There is no rotation it's just that the cooldown line up nicely for enhancement shamans The spell that has the highest value for p (aka priority) and comes of cooldown in less then 0.5 seconds will be chosen. If you want to suggest something different when out of combat, check if out of combat, and return that. If i missed you point there (i probably did), please try to explain

Oh, i remember when i tried to upload my first addon here, i couldn't find the page to do that either
Last edited by hungtar : 10-23-09 at 03:15 PM.
Report comment to moderator  
Reply With Quote
Unread 10-23-09, 03:49 PM  
TekNoir
Premium Member
 
TekNoir's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 23
File comments: 15
Uploads: 1
Re: Re: SimpleEnhancementShaman

Originally posted by hungtar
4. don't understand what you mean there. There is no rotation it's just that the cooldown line up nicely for enhancement shamans The spell that has the highest value for p (aka priority) and comes of cooldown in less then 0.5 seconds will be chosen. If you want to suggest something different when out of combat, check if out of combat, and return that. If i missed you point there (i probably did), please try to explain
4. Currently, every spell added to the cooldown list is up for grabs when checking priority. In this example, I didn't want it to suggest Shamanistic Rage every time everything else is on cooldown, but I still needed to check the cooldown on Shamanistic Rage for its availability elsewhere in the script.

Some way to flag a spell in the cooldown list as ineligible for priority selection would be nice. I work around this in my settings files by setting everything I don't want to come up as priority zero and then replacing [ if n == 0 then ] with [ if n == 0 or p == 0 then ] and returning zero (so it shows a teacup if everything except Shamanistic Rage, or whatever I want excluded, is on cooldown).

I may be already doing it the best way. What I'm doing now works on all the scripts I have made. *shrug*

---

1. A simple boolean value would work fine.

2. Thank you for the consideration. It just bugs me that it sometimes (rarely) doesn't detect me being in range until I've taken damage. I will continue to look into it.

3. I wound up doing something similar. I would search for the glyph and then click on the green "use" text on the faux-tooltip. On the new page, I would select the "See also" tab under related. The correct spell id is there.

---

Thank you in advance for your time.
Last edited by TekNoir : 10-23-09 at 03:59 PM.
Report comment to moderator  
Reply With Quote
Unread 10-23-09, 04:38 PM  
hungtar
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 151
Uploads: 9
Re: Re: Re: SimpleEnhancementShaman

Originally posted by TekNoir
4. Currently, every spell added to the cooldown list is up for grabs when checking priority. In this example, I didn't want it to suggest Shamanistic Rage every time everything else is on cooldown, but I still needed to check the cooldown on Shamanistic Rage for its availability elsewhere in the script.

Some way to flag a spell in the cooldown list as ineligible for priority selection would be nice. I work around this in my settings files by setting everything I don't want to come up as priority zero and then replacing [ if n == 0 then ] with [ if n == 0 or p == 0 then ] and returning zero (so it shows a teacup if everything except Shamanistic Rage, or whatever I want excluded, is on cooldown).

I may be already doing it the best way. What I'm doing now works on all the scripts I have made. *shrug*

---

1. A simple boolean value would work fine.

2. Thank you for the consideration. It just bugs me that it sometimes (rarely) doesn't detect me being in range until I've taken damage. I will continue to look into it.

3. I wound up doing something similar. I would search for the glyph and then click on the green "use" text on the faux-tooltip. On the new page, I would select the "See also" tab under related. The correct spell id is there.

---

Thank you in advance for your time.
Ah, i see. There is lots of ways to accomplish that. One way would be to change the loop choosing the next spell to ignore spells with a data value of 0. Just changing "if v.cd < th then" in the for loop to "if v.cd < th and v.data ~= 0 then" should do the job.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 01:01 AM  
LiNK2088
A Deviate Faerie Dragon
AddOn Compiler - Click to view compilations

Forum posts: 10
File comments: 246
Uploads: 1
Is there a way for me to disable the addon in spec 1, but have faceroller_shadpriest running in spec 2?
Its kinda annoying when ur healing and everytime you target an enemy, the mind flay icon shows up.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 08:02 AM  
hungtar
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 151
Uploads: 9
Originally posted by LiNK2088
Is there a way for me to disable the addon in spec 1, but have faceroller_shadpriest running in spec 2?
Its kinda annoying when ur healing and everytime you target an enemy, the mind flay icon shows up.
Uh, yeah thats annoying! In 0.0.10 i changed the behaviour to hide/show the frame to always hide it when no module is set and you can now unset the module for the current spec with /fr mod none.

So a simple /fr mod none in your healing spec should fix that.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 11:18 AM  
ckaotik
A Fallenroot Satyr
 
ckaotik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 29
File comments: 168
Uploads: 5
Something that just occured to me:
As an elemental shaman, you might have the Totem of Wrath glyph (which gives you 30% of the totem's spellpower as a bonus, 5min buff duration). Problem is that Faceroller only checks for buff names, now imagine another elemental shaman dropping hit wrath totem - so I do have the regular "Totem of Wrath" buff. Still, I'm missing my personal-glyph-buff, which is unfortunately also names "Totem of Wrath" ... I would need a way to distinguish the glyph buff (only one spell id I assume) from the regular totem buff (different ids for different ranks) so I can drop my totem again, in case the buff fades
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 11:51 AM  
hungtar
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 151
Uploads: 9
Originally posted by ckaotik
Something that just occured to me:
As an elemental shaman, you might have the Totem of Wrath glyph (which gives you 30% of the totem's spellpower as a bonus, 5min buff duration). Problem is that Faceroller only checks for buff names, now imagine another elemental shaman dropping hit wrath totem - so I do have the regular "Totem of Wrath" buff. Still, I'm missing my personal-glyph-buff, which is unfortunately also names "Totem of Wrath" ... I would need a way to distinguish the glyph buff (only one spell id I assume) from the regular totem buff (different ids for different ranks) so I can drop my totem again, in case the buff fades
Only buffs you apply to yourself will appear in the buffs table passed to the NextSpell function. Another shamans totem of wrath buff should not appear, if you check for it. But the other way around, if you only want to check for a buff, whoever cast it, that wouldn't work.
Last edited by hungtar : 10-24-09 at 11:52 AM.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 12:30 PM  
ckaotik
A Fallenroot Satyr
 
ckaotik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 29
File comments: 168
Uploads: 5
Originally posted by hungtar
Only buffs you apply to yourself will appear in the buffs table passed to the NextSpell function.
Okay, so that bit works Now I got another problem, mainly that debuffs[spellname].time_left does not work. For my flame shock it creates this:

Code:
myDebuffs={
    Flammenschock={
      time_left=26.996999999999,
      count=0,
      active=true
    }
}
- wich should be only *my* debuffs, like the one you get from heroism, right? Anyways, the property "time_left" doesn't change one bit and 27 seconds is the defautl duration for my flame shock.

On the other hand, I get
Code:
debuffs={
},

buffs={
     Wasserschild={
       time_left=379.53899998194,
       count=4,
       active=true
     },
     ["Totem des Ingrimms"]={
       time_left=81.448999981942,
       count=0,
       active=true
     }
},
That is, debuffs is entirely empty (wich is where I would expect my flame shock to be stored) and buffs contains my current buffs (that bit works as intended)
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 12:51 PM  
hungtar
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 151
Uploads: 9
Originally posted by ckaotik
Okay, so that bit works Now I got another problem, mainly that debuffs[spellname].time_left does not work. For my flame shock it creates this:

Code:
myDebuffs={
    Flammenschock={
      time_left=26.996999999999,
      count=0,
      active=true
    }
}
- wich should be only *my* debuffs, like the one you get from heroism, right? Anyways, the property "time_left" doesn't change one bit and 27 seconds is the defautl duration for my flame shock.

On the other hand, I get
Code:
debuffs={
},

buffs={
     Wasserschild={
       time_left=379.53899998194,
       count=4,
       active=true
     },
     ["Totem des Ingrimms"]={
       time_left=81.448999981942,
       count=0,
       active=true
     }
},
That is, debuffs is entirely empty (wich is where I would expect my flame shock to be stored) and buffs contains my current buffs (that bit works as intended)
The argument myDebuffs to the NextSkill function holds the debuffs applied by you to your current target (the words used to describe that, in Faceroller_ExampleModule, for that argument are a little ... ambiguous ... will correct that). The debuffs argument, holds any other buffs:
  • Faceroller:RegisterDebuff(X) will track the debuff X in debuffs
  • Faceroller:RegisterDebuff(X, true) will track the debuff X in myDbuffs

time_left not being updated for everything in myDebuffs is a bug and will be fixed in 0.0.11. Thanks for the bug report
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 12:59 PM  
Sano
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 29
Uploads: 4
I'm having some issues with .enabled. It gets reset occasionally even though the spell has not been cast. I suspect it's SPELL_UPDATE_USABLE() doing it, though I haven't had time to test.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 01:14 PM  
hungtar
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 151
Uploads: 9
Originally posted by Sano
I'm having some issues with .enabled. It gets reset occasionally even though the spell has not been cast. I suspect it's SPELL_UPDATE_USABLE() doing it, though I haven't had time to test.
it most probably is. If i remember correct i added that because an ability could get stuck in enabled state. Will check this again.

Edit: ok, was easy enough to get it stuck again without turning .enabled off in SPELL_UPDATE_USABLE. In 0.0.12, it will turn .enabled off in PLAYER_TARGET_CHANGED (because that is what i did to get it stuck: changes targets with reactive, on next melee swing, ability enabled). Let me know where it break now
Last edited by hungtar : 10-24-09 at 01:31 PM.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 02:18 PM  
Cralor
Mmm... cookies!!!
 
Cralor's Avatar
AddOn Author - Click to view AddOns

Forum posts: 772
File comments: 313
Uploads: 5
Can we get some screenshots in the near future? Looks interesting. Great job to all who have been working on the project.
__________________
Never be satisfied with satisfactory.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 03:01 PM  
hungtar
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 151
Uploads: 9
Originally posted by Cralor
Can we get some screenshots in the near future? Looks interesting. Great job to all who have been working on the project.
at the moment there isn't anything besides a spell icon to take screenshots of. As soon as the GUI is done, i'll add some.
Report comment to moderator  
Reply With Quote
Unread 10-24-09, 07:16 PM  
Kunstbanause
A Defias Bandit
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 54
Uploads: 4
Originally posted by Cralor
Can we get some screenshots in the near future? Looks interesting. Great job to all who have been working on the project.
Faceroller_RetPaladin @YouTube http://www.youtube.com/watch?v=r-z7iMBDRFA
Last edited by Kunstbanause : 10-24-09 at 07:17 PM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: