PDA

View Full Version : GoD: Elemental Alacrity AA


seveianrex
10-24-2008, 09:40 AM
{zone/MobAI.cpp}
~683, find:


if (SpecAttacks[SPECATK_FLURRY]) {
// perhaps get the values from the db?
if (MakeRandomInt(0, 99) < 20)
Flurry();
}


add below:


if (IsPet() && GetOwner()->IsClient()) {
int aa_chance = 0;
switch (GetOwner()->CastToClient()->GetAA(aaElementalAlacrity))
{
case 1:
aa_chance = 1;
break;
case 2:
aa_chance = 2;
break;
case 3:
aa_chance = 4;
break;
case 4:
aa_chance = 6;
break;
case 5:
aa_chance = 8;
break;
}
if (MakeRandomInt(1, 100) < aa_chance)
Flurry();
}

MNWatchdog
10-27-2008, 12:24 AM
Shouldnt it be 2,4,6,8,10?

AndMetal
10-27-2008, 12:52 AM
Shouldnt it be 2,4,6,8,10?

From EQ Summoners (http://www.eqsummoners.com/eq1/aa-short-library.html):

Elemental Alacrity
Level 65
3/6/9/12/15
Allows for pets to perform flurry attacks. While extremely expensive, this will boost overall pet damage in any situations. Higher ranks of Elemental Alacrity go off quite often and amount for a sizeable increase in overall damage. Estimates are 1.5 flurries per minute per rank (for an average of 3 additional swings per minute per rank). Level 5 adds up to 15 additional swings per minute.

Warning: extremely fudged math below.

If I remember correctly, delay / 10 = seconds between swings, so if we said a mage pet has 20 delay, they should swing ~30 times per minute with 1 hand. Add in 100% duel weild & double attack, that's 120 attacks per minute. If that's the case, then based on the above info from EQ Summoners, we should be hitting 2.5% more per rank.

So, 2% per level seems about right.

seveianrex
10-28-2008, 08:11 PM
From EQ Summoners (http://www.eqsummoners.com/eq1/aa-short-library.html):


Warning: extremely fudged math below.

If I remember correctly, delay / 10 = seconds between swings, so if we said a mage pet has 20 delay, they should swing ~30 times per minute with 1 hand. Add in 100% duel weild & double attack, that's 120 attacks per minute. If that's the case, then based on the above info from EQ Summoners, we should be hitting 2.5% more per rank.

So, 2% per level seems about right.

This code still needs to be tested.... Having trouble with my test port ATM. If someone wants to test the code out and let me know I'd be happy to commit to the SVN.

seveianrex
10-28-2008, 09:26 PM
Further to this, there are two other classes that I can see who get Pet Flurries and can therefore use the same bonuses. The resulting code, then, should be something like this:


if (IsPet() && GetOwner()->IsClient()) {
int aa_chance = 0;
// Magician AA
int aa_skill = GetOwner()->CastToClient()->GetAA(aaElementalAlacrity);
// Necromancer AA
if (aa_skill < 1) {
aa_skill = GetOwner()->CastToClient()->GetAA(aaQuickeningofDeath);
}
// Beastlord AA
if (aa_skill < 1) {
aa_skill = GetOwner()->CastToClient()->GetAA(aaWardersAlacrity);
}
switch (aa_skill)
{
case 1:
aa_chance = 2;
break;
case 2:
aa_chance = 4;
break;
case 3:
aa_chance = 6;
break;
case 4:
aa_chance = 8;
break;
case 5:
aa_chance = 10;
break;
}
if (MakeRandomInt(1, 100) < aa_chance)
Flurry();
}


Again, this is untested and until I can get my test port back up and running I'm not able to do that myself.