Thread: Heal Aggro
View Single Post
  #1  
Old 11-25-2008, 02:58 PM
Romai
Fire Beetle
 
Join Date: Mar 2006
Posts: 6
Default Heal Aggro

I've been hearing that the main issue atm with heal aggro is the fact that you get too much aggro for healing someone who is barely even on the hate list.

For example, a warrior pulls 3 mobs, does a bit of damage to each of them (lets say < 1000) and then you heal a monk who was standing near by for 2000 and the mobs jump you.

In order to combat this, I was thinking we could change the following code in entities.cpp. I'd also like to point out that I'm not 100% sure if I'm interpreting how this code section works correctly, so please tell me if I'm wrong.

Current:
Code:
void EntityList::AddHealAggro(Mob* target, Mob* caster, int16 thedam)
{
...
  if(caster){
	if(!cur->CheckAggro(caster))
		cur->AddToHateList(caster, 1);
	else
		cur->AddToHateList(caster, thedam);
  }
...
}
To: (changing the else branch in the above code)
Code:
else {
	thedam = thedam / (((cur->GetHateAmount(cur->GetHateTop()) - cur->GetHateAmount(target))*1)+1);
	cur->AddToHateList(caster, thedam);
}
My idea is to take the current amount that would be added into the hate list and scale it depending on where the target being healed is on the hate list. It would divide the hate by the difference in hate level from the top of the list to the target, +1 to avoid a divide by 0 and to ensure that it never actually increases the hate. The *1 is there as a placeholder mostly to allow it to be tuned easily. > 1 will lower the aggro more, < 1 will lower the aggro less. If this was actually used, I'd probably put that into a rule to make it easier to maintain.

It might not be exactly what we need, but it should at least provide some relationship between aggro generation and the targets position on the hate list.
Reply With Quote