Log in

View Full Version : Implementing an Innate Proc AA?


Xanathol
05-17-2019, 10:23 PM
Hey Folks,

I'm trying to implement an innate proc AA (Warrior agro proc) and now that I've updated to the latest & greatest, I'm trying to figure my way out around the new AA tables and such. Needless to say, what I have thus far isn't exactly working.

Here's what I've got so far.

In aa_ability:

id name category classes races drakkin_heritage deities status type charges grant_only first_rank_id enabled
30200 Spite -1 1 65535 127 131071 0 3 0 0 30200 1


In aa_ranks:

id upper_hotkey_sid lower_hotkey_sid title_sid desc_sid cost level_req spell spell_type recast_time expansion prev_id next_id
30200 -1 -1 366527 366527 0 1 -1 0 0 0 -1 -1


In aa_rank_effects:

rank_id slot effect_id base1 base2
30200 1 85 12266 0


I also have a new spell at ID 12266 and of course new DB_STR entries.

The AA shows up and is purchasable (though I wish it was auto-granted) but it never procs. Never a message or anything in the client (and sadly I don't know wth the logs go to in the code - debugview picked up nothing).

Did I miss something? Is it more a procing issue? And how do I turn on logging? Thanks!


Edit: finally found the new logging system info - that is NICE! No closer to implementing this AA though. :(

Xanathol
05-18-2019, 02:26 AM
Been digging around more all night and I don't see where effect ID 85 is ever loaded in bonuses.cpp->Mob->ApplyAABonuses. In testing, it looks like Touch of the Cursed doesn't work either, so it seems the funcitonality is missing?

I added the following and modified the AA info in aa_rank_effects to give Touch of the Cursed a 5% chance to proc (base2) and now it works, though I question whether I am missing something somewhere else, making this unnecessary.


case SE_WeaponProc:
for( int i = 0; i < MAX_PROCS; i++ )
{
if( PermaProcs[i].spellID == base1 )
{
// this is a stupid catch all so higher ranks replace this one; needs improvement
PermaProcs[i].spellID = SPELL_UNKNOWN;
}
}
this->AddProcToWeapon( base1, true, base2, base1 );

break;