That sounds like a good place for me to start
If we can get it moved to a system that iterates through the values, we can always have a default case, just like we do currently in spell_effects.cpp, that doesn't do anything. That way, we can get the AAs in, then focus on the spells effects.
Just thinking out loud, but from what I can see & remember, bonuses for the client are called from Client::CalcBonuses() in zone/bonuses.cpp:
Code:
void Client::CalcBonuses()
{
_ZP(Client_CalcBonuses);
memset(&itembonuses, 0, sizeof(StatBonuses));
CalcItemBonuses(&itembonuses);
CalcEdibleBonuses(&itembonuses);
RecalcWeight();
CalcSpellBonuses(&spellbonuses);
CalcAC();
CalcATK();
CalcHaste();
CalcSTR();
CalcSTA();
CalcDEX();
CalcAGI();
CalcINT();
CalcWIS();
CalcCHA();
CalcMR();
CalcFR();
CalcDR();
CalcPR();
CalcCR();
CalcMaxHP();
CalcMaxMana();
CalcMaxEndurance();
rooted = FindType(SE_Root);
}
so we already have functions for the big stuff. I would think we could then start with a similar function for AAs. I'm sure we could have it piggyback spellbonuses, although it might be better to add aabonuses into the Mob class in zone/mob.h, just in case we want to count it separately (but have to change several places in the source to look at itembonuses + spellbonuses + aabonuses).
I've been working on it, but don't have anything usable yet.
P.S. I moved the discussion since it doesn't really apply to just the Regen AA anymore.