Actually, on further thought, that would create too large of a change as aggro levels increase. It should have the same effect if the target is at 1/2 of the top of the list's aggro regardless of whether that is 500:1000 or 50000:100000.
Instead, how about just this:
Code:
thedam = thedam * (cur->GetHateAmount(target)/cur->GetHateAmount(cur->GetHateTop()));
that way, it would scale it back linearly for any aggro levels
I don't know if linear is exactly what we want, but I think it'd be a step in the right direction.