Code:
I'm not sure how this works on live, but this logic seems a little odd to me. It seems like the intent was that spell 4789 is always cast but only if there's also another spell to cast based on the aa/spell/item bonus.
Before we rip my code to shreds I think some basic understanding of the effect is needed and why it is coded like this.
This spell effect ONLY exists for the AA Touch of the Divine on live.
Thus coding this spell effect the priority is to ensure that functions correctly.
Touch of the Divine in the aa_effects table has a base1 and a base2
Base1 is the chance to fire the trigger
Base2 is a 'heal spell' that triggers.
The 'Touch of the Divine' buff has to be hard coded because it is just part of the spell effect independent of what spell triggers. There is no field in the spell data to set if you want this effect or not.
Everything after this point is basically just whatever we want to do.
First spell buffs and Item worn effects DO NOT exist on live for this and were implemented purely for custom use.
Third, question of how do we stack this. Which again does not exist on live.
You have at max 3 sources, 1 from AA, 1 from worn effect, 1 from spell effect.
I coded as add up all the effects to give yourself your total chance.
Then do all 3 effects together (obviously was little buggy!).
Logic being your taking the combined total chance so you get the combined total effect. As a custom dev this can be useful you could say have +HP on AA, + Mana on item, +end on spell OR whatever ect, but you'd get all 3 if you had all 3.
Alternatively you could also individually check each effect in say a random order, AA, item, spell. Iterate through each do the random checks based on the individual percentages, and stop when one fires off. This might end up being a better way since you can put the 'Touch of the Divine' only in the AA check and leave the others more open.
There are no right answers, but the core AA function must remain as is because that is what any live server will be using.
Kayen
GM Storm Haven