mixxit / solinia3-core

Core RPG Plugin
https://www.spigotmc.org/resources/solinia3-rpg-plugin.47010/
Other
9 stars 4 forks source link

Agility not providing Armor Class #222

Closed Ferreluke closed 5 years ago

Ferreluke commented 5 years ago

It appears that agility is not granting armor class bonuses. "Agility determines how much melee damage enemies inflict. Above 75, the AC provided for each Agility is slight. Below 75 agility causes a large AC hit. For example, on a level 60 ogre SK, going from 76 to 85 AGI provides 3 AC. But going from 66 to 75 AGI provides 45 AC." At the moment, it seems like AC on even max level characters is quite low. I don't know if this was intentional or something simply overlooked for now. Level 69 Ranger with high-tier gear for example: https://eq.magelo.com/profile/496399 AC on that character profile is 1220 wearing gear on the cusp of late-game high-tier.

mixxit commented 5 years ago

Are you considering the 231 aas the player has spent their direct ac is only 631

mixxit commented 5 years ago

image

image

Ferreluke commented 5 years ago

Either way, that character's base AC is higher than any of our current character's total AC, and agility is giving no direct increase to AC at the moment--making it a useless stat; unless it's performing some hidden benefit. Again, I'm not certain if that's what you intended or something that was overlooked. Was just bringing it to your attention for clarification or adjustment. If we're going by EQ numerical standards, our players are on par with health and stats, but they're still far behind in AC, attack, and mana.

mixxit commented 5 years ago

I assure you that agility is a heavily used stat

mixxit commented 5 years ago

What is your current AC?

Ferreluke commented 5 years ago

For Xander it's just under 500 when fully equipped

mixxit commented 5 years ago

See agility on whats its used on: http://everquest.allakhazam.com/wiki/eq:Stats

Here is the formula for defense (please update the wiki)

defense = (defenseskill * 400 / 225) + ((8000 * (agility - 40)) / 36000)

Here is the formula for mana for non wisdom/int casters

maxmana = ((850 * getLevel()) + (85 * agility * getLevel())) / 425

Here is the AC modifier for agility

if agility is greater than 70
divide agility by 20 and add to AC
apply ac softcap to total ac if final ac formula has exceeded class/level softcap for ac for that player

Your AC sounds fine to me and it's definitely not a useless stat

Ferreluke commented 5 years ago

Agility is supposed to add an increase to the numerical value for AC, correct?

mixxit commented 5 years ago

see above

Ferreluke commented 5 years ago

Above says it should. But it is not currently

mixxit commented 5 years ago

like i posted above it is applying currently in code, but you may have hit the softcap for ac for your class/level

Ferreluke commented 5 years ago

The AA that raises my soft cap has no effect on my AC, so I doubt it

mixxit commented 5 years ago

there isnt an aa that raises the softcap

mixxit commented 5 years ago

these are the paladin/shadowknight fixed softcaps

int[] palshd_softcaps = { 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498 };

Ferreluke commented 5 years ago

I also tested it on other characters with no where near as much AC, and still no AC increase from added agility. I can't see the name of the AA, because I've maxed it, but there is one that affects the AC soft cap.

mixxit commented 5 years ago

you get a modifier from CombatStability that helps here is the formula

double softcap = getACSoftcap();
double returns = getSoftcapReturns();

// TODO itembonuses

int total_aclimitmod = 0;

total_aclimitmod += getSpellBonuses(SpellEffectType.CombatStability);

total_aclimitmod += Utils.getHighestAAEffectEffectType(getBukkitLivingEntity(), SpellEffectType.CombatStability);

if (total_aclimitmod > 0)
   softcap = (softcap * (100 + total_aclimitmod)) / 100;
   softcap += shield_ac;
if (ac > softcap) {
   double over_cap = ac - softcap;
   ac = softcap + (over_cap * returns);
}
Ferreluke commented 5 years ago

That's the one

mixxit commented 5 years ago

Proven to work, closing this