H.H.T.D.
H.H.T.D.
In World of Warcraft healers have to die (H.H.T.D). This is a cruel truth that you're taught very early in the game. This add-on helps you influence this unfortunate destiny in a way or another depending on the healer's side...
This add-on is now known as H.H.T.D.
I originally chose the original name as a provocation to make one of the basic cruel truths of World of Warcraft perfectly obvious to everyone. Now I find this name too harsh, too long and mostly not specific enough to WoW.
As an author I could not stand that name anymore. This add-on does have an existence (and meaning) both in WoW and in the real world where obviously we don't want the death of our beloved healers...
While H.H.T.D is just an acronym of the original name, it will stay in World of Warcraft where it belongs.
Current features:
HHTD automatically adds healer symbols on top of players nameplate indicating their class and healing rank. Unlike other add-ons it only takes into account actively healing players. (It uses different symbols for friends and foes).
HHTD lets you apply custom marks on top of any unit's nameplate. These are the same marks as the default raid markers but you can set as many as you want and customize their look. These marks persist across game sessions. (They are only visible to you)
IMPORTANT NOTE: You have to enable nameplates, else you won't see any healer symbol!
HHTD lets you announce through a customizable message who the enemy and friendly healers are (using the Raid Warning channel if possible).
It will also help you protect the healers who are on your side alerting you when they are being attacked (check the option panel for details).
Helps you target healers easily when they are in a pack.
All of this applies to PVP and PVE.
NOTE: Type /HHTDG to open the configuration panel. There are many settings to check!
HHTD's options are not directly available in the "Interface" panel due to ongoing tainting issues Blizzard is not willing to fix.
That player is not a healer?
If you see a player marked as healer that should not be:
If their mark's background is NOT grey, check the 'Logging' option in the option panel (/HHTDG) ; then when you see such a player, reopen the option panel and check the content of the 'Logs' tab and report to me by opening a ticket. Please avoid comments on Curse.com as it's impossible to follow what happens there).
If their mark's background is grey then enable the 'Healer specialization detection' option so as to only report specialized healers ignoring others.
Also note that the healer's rank is displayed as a number in the center of the displayed mark so you can judge the importance of that player in the healing currently being done (the lower the number, the better the healer).
How it works
HHTD uses the combat log events to detect friendly and enemy healers who are currently healing other players (during the last 60s). HHTD detects specialized healers spells (for human players only) and differentiates specialized healers from hybrid ones.
HHTD also lets you choose a specified amount of healing healers have to reach before being marked as such (50% of your own health by default). This threshold is the only criterion used for NPCs.
When a healer is identified it will be marked with a healer symbol above their nameplate. If the healer is specialized, the symbol's background will be colored according to their class. In other cases the background will be grey.
In all cases a number in the center of the symbol indicates the rank of the healer, the lowest the number the better the healer (ie: '1' represents the most effective healer while '9' is the least effective).
You can force HHTD to only report specialized healers through HHTD's options (/hhtdg).
Needless to say that self-heals and heals to pets are filtered out.
Commands
/HHTDP (or /hhtdp) posts healers name to the raid channel ordered by effectiveness for all to see (Will use the Raid Warning channel if possible).
You need to configure the messages in the announce module options first.
You can bind the above command to a key (WoW key-bindings interface)
/HHTDG opens option panel
/HHTD gives you access to the command line configuration interface (useful for changing settings through macros...)
Planned features
- Detection when a friendly healer is being attacked and alert others through /yell, /say and emote.
Compatibility
HHTD is only compatible with nameplate add-ons which have been coded responsibly and do not modify internal parts of Blizzard nameplates (a very selfish behaviour as it prevents any other add-on from re-using them).
HHTD will detect these incompatibilities and report to you so that you can ask the culprit add-on authors to fix their code and make it compatible with ALL nameplate add-ons.
Guidelines for other add-on authors:
Do not call :Hide() or :Show() on nameplates' base frame. This breaks nameplate tracking for other add-ons by unduly firing OnHide/OnShow hooks...
Instead, make its sub-frames invisible by changing their size and/or setting them to the empty (not nil) texture. (check out how TidyPlates does)
Do not call :SetParent() on nameplates' subframes, this would prevent other add-ons from finding and hooking nameplate elements.
Do not use SetScript() EVER. You don't need it. :SetScript() shall only be used on frames YOU create. You can simply replace all your SetScript() calls by HookScript().
Videos
Here is a video by Hybridpanda featuring HHTD in the Eye of the Storm battleground:
YouTube - This makes me a sad Panda
Articles
Here are two excellent articles about HHTD by Cynwise (A must read if you have some doubts about the fairness of this add-on!) :
HHTD and the PvP Addons Arms Race
Using HHTD to Protect Friendly Healers
Here is another article written by Gevlon (a PVP healer).
type /hhtdg to open the configuration interface, or /hhtd for command-line access
Comments and suggestions are welcome :-)
To report issues or ask for new features, use the ticket system.
Bitcoin donation address: 1JkA5Ns1dMQLM4D8HUsbXyka6yhp312KnN
This is marking non players. I was doing dalies and saw a deer that had a plus symbol on it. Anyway to make this so it marks players only in pvp?
you can't search for this addon on curse.com
tried "Healers have to die" and "Healers-have-to-die"
it seems to be a bug with Curse's search tool: it doesn't like spaces in add-on names, if you just search for "healers" then "Healers have to die" will be part of the results. Anyway a search on Google for healers have to die leads you directly to this page.
Thanks for reporting this, I'll submit a bug report :)
Is this compatible with TidyPlates?
Yes it is
1x Healers-Have-To-Die-2.0.1-1-g0128ba1\NamePlateHooker.lua:600: PlateName: "Time-Lost Scryer" is no longer defined in registry
<in C code>
Healers-Have-To-Die-2.0.1-1-g0128ba1\NamePlateHooker.lua:600: in function "UpdateRanks"
Healers-Have-To-Die-2.0.1-1-g0128ba1\NamePlateHooker.lua:286: in function "?"
libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:147: in function <libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147>
<string>:"safecall Dispatcher[3]":4: in function <string>:"safecall Dispatcher[3]":4
<in C code>
<string>:"safecall Dispatcher[3]":13: in function "?"
libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:92: in function "SendMessage"
Healers-Have-To-Die-2.0.1-1-g0128ba1\Core.lua:997: in function <Healers-Have-To-Die\Core.lua:883>
Healers-Have-To-Die-2.0.1-1-g0128ba1\Core.lua:1192: in function "?"
libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:147: in function <libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147>
<string>:"safecall Dispatcher[19]":4: in function <string>:"safecall Dispatcher[19]":4
<in C code>
<string>:"safecall Dispatcher[19]":13: in function "?"
libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:92: in function "Fire"
...\DataStore\libs\AceEvent-3.0\AceEvent-3.0-3.lua:120: in function <...\DataStore\libs\AceEvent-3.0\AceEvent-3.0.lua:119>
Locals:
nil
Thanks for this report, this is fixed in the latest alpha.
1x Healers-Have-To-Die-2.0.1\NamePlateHooker.lua:465: attempt to index field "?" (a nil value)
Healers-Have-To-Die-2.0.1\NamePlateHooker.lua:465: in function <Healers-Have-To-Die\NamePlateHooker.lua:461>
Healers-Have-To-Die-2.0.1\NamePlateHooker.lua:489: in function <Healers-Have-To-Die\NamePlateHooker.lua:481>
Healers-Have-To-Die-2.0.1\NamePlateHooker.lua:527: in function "AddCrossToPlate"
Healers-Have-To-Die-2.0.1\NamePlateHooker.lua:408: in function "?"
libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:147: in function <libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147>
<string>:"safecall Dispatcher[4]":4: in function <string>:"safecall Dispatcher[4]":4
<in C code>
<string>:"safecall Dispatcher[4]":13: in function "?"
libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:92: in function "Fire"
Libs\LibNameplate-1.0\LibNameplate-1.0-36.lua:232: in function <Libs\LibNameplate-1.0\LibNameplate-1.0.lua:229>
Libs\LibNameplate-1.0\LibNameplate-1.0-36.lua:842: in function <Libs\LibNameplate-1.0\LibNameplate-1.0.lua:834>
Locals:
nil
Can you try with this alpha version? http://www.wowace.com/addons/healers-have-to-die/files/7244-2-0-1-1-g0128ba1/
thanks
This version appears to stop Tidyplates from functioning altogether, rather than just adding the familiar crosses on top of healers.
Great addon though, thanks for your continued work on it.
What version of TidyPlates are you using? It works perfectly for me. (I'm using TidyPlates (6.7.3 (R528)))
I'm using Tidy Plates 6.7.3 with the Threat Plates theme - 6.004.
And now it is working just fine... weird.
I get these errors
Message: Libs\LibNameplate-1.0\LibNameplate-1.0-33.lua:487: attempt to call upvalue "GetNumRaidMembers" (a nil value)
Time: 09/02/12 10:04:52
Count: 79
Stack: ...ve-To-Die\Libs\LibNameplate-1.0\LibNameplate-1.0.lua:540: in function <...ve-To-Die\Libs\LibNameplate-1.0\LibNameplate-1.0.lua:528>
(tail call): ?
Locals: self = <table> {
GetLevel = <function> defined @Interface\AddOns\Healers-Have-To-Die\Libs\LibNameplate-1.0\LibNameplate-1.0.lua:1047
GetReaction = <function> defined @Interface\AddOns\Healers-Have-To-Die\Libs\LibNameplate-1.0\LibNameplate-1.0.lua:1221
@Rhazzledazle:
This error comes from an outdated version of LibNamePlates. The current release of HHTD includes a more recent version of this library. Make sure you're using HHTD 2.0.1
I posted one post down earlier about the Libnameplates, thinking it was that because they were last updated Feb 2012. looks like they updated it, Plus I did not see your updated version, I'm sorry, i missed it in my Fav's folder. So many updated at aproxx the same time. lol
Thank you! It seems to be working fine now :)
Using the new updated UnitFramesImproved, and Trav's unitframes extension. Have been using both with HHTD since I got HHTD, great addon btw. Apparently they no longer with with HHTD. I killed both, no HHTD errors, turned on Trav's, no errors, killed Trav's, turned on UnitFramesImproved, no errors, turned both back on, I got the errors I listed above.
Not sure if this had anything to do with it but I did noticed that LibNameplate is not up-to-date, last was Updated 20 February 2012 http://www.curse.com/addons/wow/libnameplate-1-0
I love this add and rather rely on it, thank you for making and maintaining it!
I'm getting this LUA message since the patch (I am using the current beta release of HHTD too) which is preventing me from using the addon as it is constant. I have absolutely no idea what any of this means, but here it is:
Message: ...rface\AddOns\Healers-Have-To-Die\NamePlateHooker.lua:452: attempt to index field '?' (a nil value)
Time: 08/31/12 08:02:16
Count: 10
Stack: (tail call): ?
...rface\AddOns\Healers-Have-To-Die\NamePlateHooker.lua:452: in function <...rface\AddOns\Healers-Have-To-Die\NamePlateHooker.lua:450>
...rface\AddOns\Healers-Have-To-Die\NamePlateHooker.lua:579: in function `UpdateRanks'
...rface\AddOns\Healers-Have-To-Die\NamePlateHooker.lua:286: in function `?'
...der\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147: in function <...der\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147>
[string "safecall Dispatcher[3]"]:4: in function <[string "safecall Dispatcher[3]"]:4>
[C]: ?
[string "safecall Dispatcher[3]"]:13: in function `?'
...der\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:92: in function `SendMessage'
Interface\AddOns\Healers-Have-To-Die\Core.lua:961: in function <Interface\AddOns\Healers-Have-To-Die\Core.lua:849>
Interface\AddOns\Healers-Have-To-Die\Core.lua:1156: in function `?'
...der\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147: in function <...der\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147>
[string "safecall Dispatcher[19]"]:4: in function <[string "safecall Dispatcher[19]"]:4>
[C]: ?
[string "safecall Dispatcher[19]"]:13: in function `?'
...der\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:92: in function `Fire'
...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:52: in function <...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:51>
Locals: <none>
Hope there is something I can do my end to fix this if it is not something to do with the addon itself. If it is something I canf ix myself, I'd need some obvious instructions as I have no idea about this kind of thing.
Thanks for your time.
Thanks for this detailed report, does it happen in battlegrounds or in the wild?
Can you enable logging in the add-on options and once this bug happened post a screenshot of the log window (still in the options, there is a log tab) ?
And last but not least, are you using any add-on that modifies nameplates?