Everthing I always wanted to know about hate
I posted this on the SOE forums today, while waiting for my update to load.
Hate is how mobs decide who to attack during a fight. Every character (player or npc) that does something threatening to a mob goes on that mobs hate list. Each hostile action is given a "threat" rating, and the hate list is sorted in order of threat. The NPC then targets the character with the biggest threat rating, and proceeds to do whatever nastiness that mob chooses to do.
I believe that it is a design principle of EQ2 that groups must cooperate in order for the main tank to keep aggro. A wizard and a scout of equal level and spell upgrade levels will always find it possible to take aggro from the tank if they start off the combat at full DPS. It doesn't mean he's a bad tank, it's supposed to work that way. In any case, everyone needs to know something about how hate works in order for a group to function at a high level.
Here's what generates threat:
- Melee and spell damage create threat. I presume this is on a 1-1 basis with the threat rating reported on taunts and threat reduction spells, though I don't really know.
- Healing someone (PC or NPC) in combat with a mob generates threat. Does each point of healing correspond to a point of threat, or is there a multiplier? I don't know. Does group healing generate a threat proportional to the number of people in the group? I don't think so, I think it's proportional to the amount healed on one character, the others are healed for free, but again, I don't know for sure.
- Pets generate aggro for themselves as long as they are alive. As soon as they die, all the threat that they generated is immediately transferred to the caster. This includes the temporary pets that most casters have, be they wolves, sharks, or constructs of logic, as well as the more permanent sorts of pets that summoners and necromancers specialize in. The consequence of this is that in longer fights with Epic mobs, using a temporary pet means certain death for it's caster.
- The hate produced by non-damaging hostile spells is a mixed bag. Some stuns generate no hate at all, while mezzes typically generate a lot of hate. I suspect that debuffs are like dots in that they accumulate threat over time, though it may be that they simply don't generate much threat at all, since they can often be started quite early in a fight without gaining aggro.
- Spells that are resisted often still produce threat. I'm not too certain whether this is every spell, every time, since I could swear that I have seen a pulling spell resisted and the mob not react. But a wizard that redoes his nuke when it is resisted often finds himself face-down in the mud not too much later.
- Taunts produce threat, as advertised. Taunts that are resisted do not produce threat.
- Being low on hitpoints increases your "threat", making it very hard to pull mobs off of you until you or they are dead.
Now there's a wrinkle here. There are spells descriptions that say "reduce threat by X and drop target 3 places on the hate list" or some such. This makes no sense if the hate list is instantaneously updated on every change in threat rating. The implication is that you don't necessarily move ahead of someone the instant you have one more point of threat than they do. Very interesting.
Here's how I think this works. I think the hate list has built-in hysteresis, or resistance to change. In order for you to move up on the hate list, it is insufficient to simply have more threat than the person above you, you must exceed the threat rating of that person by some set margin. It might be percentage based, for example, you might have to exceed the threat rating of the person above you on the hate list by 3 percent before taking over their slot. Or it might be a fixed amount, requiring you to exceed threat rating by 500 threat. Though I really think that it's more of a percentage.
It is a very open question as to what resistance is checked to resist a taunt. There are several possibilities:
- Taunt is checked against a hidden attribute we shall call "taunt resistance" PC's don't have this attribute for obvious reasons. This would imply that there is no debuff which can make it easier to land taunts. Or,
- Taunt is checked against mental resistance. There's a certain amount of sense to this. And if true, it would mean that tanks would really like to pull with a chaos-imbued doll (which lowers mental resistance). It's a long cast time, but on the pull, that may be acceptable. Or maybe,
- Taunt is checked against a resistance that depends on the class of the taunter and the combat art used. Taunting Slap would be checked as a crushing attack. Jeer would be checked versus mental. And so on. Or even maybe,
- Taunt is resisted with one of the normal spell resistances, but which one depends on the mob. I don't put much stock in this theory, mostly because it doesn't make any sense to me to model things that way. But that isn't really a knock-down argument against it either. It would take extra code to implement this, and I think the idea of "taunt resistance" would probably be superior in most ways.
The existence of hate-list hysteresis (resistance to changes in order) is that it reinforces the need to start dps low, and build it over time. If you pass the tank in threat at the end of a fight, it's much less of a problem than at the beginning. First of all, if the threshold is based on a percentage, then the numbers are much bigger at the end of the fight, and exceeding the threshold is all that much harder. Furthermore, the mob is likely to die before killing you if you get aggro at the end of a fight.