Thread: Game Mechanics: Taunt Skill
View Single Post
  #4  
Old 10-20-2009, 11:53 AM
Feittin Feittin is offline
Large Rat


Join Date: Oct 2009
Posts: 6
Default

I looked at the code on project eq svn for Taunt while I was looking into Endurance today, and learned a few things. This is only relevant if p1999 hasn't modified the Taunt logic from what was on project eq. I am playing a warrior I find that sometimes I can taunt mobs off others, and sometimes I cannot. So I am not sure if I am seeing the exact same results as you.

Here are the elements I looked into that make up taunt:

1. Hate Added From Attacking - Every attack adds hate even if the attack misses, is blocked, etc. The hate added is according to the the maximum weapon damage. This also includes DW and DA, so if you do two attacks, then your hate is bumped up two times that round according to weapon damage.

2. Taunt Skill - Taunt performs different logic depending on key conditions:

Move to Top of Hate List
Conditions:
A. Not already at top of hate list
B. Targeted mob is not at 20% hp or below
C. Mob's level is less than your level

If conditions A, B, and C above are all met, then there is a probability that you will move directly to the top of the hate list. This probability increases depending on the level difference between you and the mob.

Code:
int level_difference = level - who->GetLevel();
if (level_difference <= 5) {
        tauntchance = 25.0;     // minimum
        tauntchance += tauntchance * (float)GetSkill(TAUNT) / 200.0;    // skill modifier
        if (tauntchance > 65.0)
                tauntchance = 65.0;
}
else if (level_difference <= 10) {
        tauntchance = 30.0;     // minimum
        tauntchance += tauntchance * (float)GetSkill(TAUNT) / 200.0;    // skill modifier
        if (tauntchance > 85.0)
                tauntchance = 85.0;
}
else if (level_difference <= 15) {
        tauntchance = 40.0;     // minimum
        tauntchance += tauntchance * (float)GetSkill(TAUNT) / 200.0;    // skill modifier
        if (tauntchance > 90.0)
                tauntchance = 90.0;
}
else {
        tauntchance = 50.0;     // minimum
        tauntchance += tauntchance * (float)GetSkill(TAUNT) / 200.0;    // skill modifier
        if (tauntchance > 95.0)
                tauntchance = 95.0;
}
Add Hate
Regardless of whether the conditions to move to the top of the hate list above are met or not, an additional amount of hate is always randomly added for yourself when you use Taunt. This is a random value multiplied by your level.

Code:
who->CastToNPC()->AddToHateList(this, (MakeRandomInt(5, 10)*level));

So basically it means that warriors should always press taunt whenever it is available to add hate, especially when you are fighting even con mobs or higher. It also means that when fighting blue or green cons, there is a chance that no matter how much hate others have registered if you walk up and taunt the mob you will immediate be at the top of the hate list. For even and higher mobs...just keeping on spamming. Can anyone confirm p1999 source for taunt is similar to this one?

I should add that the above is just considering hate generation from the warrior. For the full picture we would have to look at how hate is generated for casters and how mobs react to their hate list, since there could be something that is causing the hate to not work as expected in those areas.
Last edited by Feittin; 10-20-2009 at 12:08 PM..