ForgeUI

ForgeUI

228k Downloads

Nameplates - Show certain buff/debuff & dispell-able (de)buff icons

GreatTeacherOni opened this issue ยท 9 comments

commented

It would be nice for healers to be able to have the option to show icons for certain buffs (like Runes of Protection (absorb spell) or Healing Salve (HoT that heals on getting hit : targets you + 9 allies) / debuffs (so you see who got the trackable debuff so you pay more attention to that guy, since he needs more healing/absorbs) & dispell-able (de)buffs (e.g. Life Elemental orbs in DS that you need to dispell or other debuffs that reduce/negate healing on that specific person, e.g. the big guy in Swordsmaiden right before Ondu Life-Weaver which gives the tank a debuff that negates healing).

How i would like it to be implemented:
I would want to see the (de)buff icon either below/on top or beside the nameplate (below would be my preferred but you could add all options). [Here is an example of how it can look like. This one is the ignite tracking icon of SSToolkit on the enemy, just so you get the gist of it https://media-curse.cursecdn.com/attachments/136/810/3673b40f08c29971fe99ca959541d4ca.png]
So maybe we can track those (de)buffs like LUI aura does it by spell name/id.
Also make the visibility independent, meaning i want to be able to see the icon even if nameplates are set to "hide when full hp & full shields" - which leads to the question: would there be an option to "hide when full hp & full shields" but "hide when full hp (but if shields took dmg make it visible again)" ?
So someone who got full hp but the buff/debuff/dispell-able (de)buff i still want to be able to see it no matter how my actual nameplates are set to.

Example: I am on my Healslinger on Avatus - Tanks are about to take dmg from annihilation/obliterate (the cast where they take big amounts of dmg) and i use Runes of Protection on them (i want to see an icon on the players that got hit by Runes of Protection which gives them an absorb and maybe the amount of the absorb - it would also be nice if there was an option to make nameplates visible again if they got an absorb shield from me but that one is not important & only if easily implemented)

commented

i added some screenshots that preview how optiplates does it
http://i.imgur.com/MhxKArE.png - icon (Runes of Protection) with timer counting down to 0 over allies that got hit by my RoP ability
http://i.imgur.com/GDsDrq7.png - icon with simple & full tooltip enabled in buff options (u can see name and value of absorb spell)
http://i.imgur.com/FDrbP20.png - visibility options
http://i.imgur.com/2IDAWai.png - buff options (whitelist & blacklist of specific spells. use ";" (w/o ") to add more)

commented

TBH this is a pretty complex feature with lots of quirks, I mean look at this http://pastebin.com/YU8T9K7e
Also, window names like "StupidWorkaroundBuffWindow" in optiplates XML file telling me that it was annoying to code :)

Anyways, I never considered ForgeUI nameplates as powerfull nameplates addon with tons of features, it is more like lightweight replacement of default nameplates with most requested functionality, and if I really needed powerful nameplates addon I'd just pick optiplates for that.

commented

@veex-ua you are exactly right about ForgeUI nameplates not supposed to be the best and most complext. Well no single addon from ForgeUI is supposed to be best in that category. So I was not event thinking about full feature as described by @GreatTeacherOni .

But I was thinking about something more simple. If you take buff window (special window for displaying buffs/debuffs) I know there are some switches which allow you to show for example only dispellable debuffs. So we could start building on this.

Or another idea was just to have two text boxes to white-list/black-list buffs and debuffs and filter them same way as in Buff Filter addon. I haven't look at how it's done propperly yet, but I doubt it will be super difficult.

I will definetlly try to do something in next few days to exactly know what we are dealing with.

BTW @veex-ua you have big problem with "Close issue" button :D

commented

@adamjedlicka I know what you thinking, was thinking something similar when saw this issue. After some fast research of optiplates it turns out that major part of this feature is buff-debuff displaying priority. Without this system things doesn't look that pretty. Like dispellable debuff is highest priority followed by white-listed debuff etc, and if you go with simple destroying/re-creating of buff-container windows it will turn out quite resource heavy function so need more complex system of re-allocating existing windows for future buffs. This followed by the need of constant repositioning of existings windows. Actually optiplates buff handling code are very well writen and give some overall understanding what you'll have to deal with. Deffinately check it out. Maybe I'm exaggerating overall difficulty of this and you'll come up with something simple.

And yeah, this friggin "Close and comment" button is annoying ๐Ÿ˜„

commented

http://i.imgur.com/RkooEzn.jpg

This took me maybe two minutes. List of dispellable debuffs next to nameplate. This easily can be done buffs, debuffs, displlable buffs/debuffs, non-dispellable buffs/debuffs and buffs/debuffs caused by the player.

To filter these buffs you can request all displayed buffs with GetChildren(), the you get its id with GetId() and with GameLib.GetSpell(spellId) you get spell object which you can get its name via GetName() and the show/hide it with Show(false). Not trivial at all but not hard neither.

commented

This could be done. Ill think about it.

commented

It would be sooooooo amaaaaaaaaaaaaazing ๐Ÿ‘

commented

I guess this is "BuffWindow" carbine's control? I've yet to see how it works, but if it has all these kind of filters to filter self/others buff/debuff dispellable/non then it's indeed gonna be much easier :) I was thinking more towards unit:GetBuffs() and then work with resulting table...

commented

It's BuffContainerWindow You just use SetUnit(unit) on it, so it knows which unit buffs use and it adds/removes them aitomatically. You can look in to unit frames. It's exactly the same.