One thing I've been looking at was adding in the crowd control routine from Rusty's auto enchanter bot. It has a nice system to maintain a list of targets in range and cycles through them to check if they are aggro on a team member. It maintains a list of timers for each of the mobs it has mezzed and will remezz them accordingly.
This kind of situational awarness would add alot to genbot's value.
I also have been working on some aggro control logic for the healer routine. right now I have AFcleric set up for my cleric, but I've been trying to adapt routines into genbot because I want to standardize on one platform.
Here's what I put into AFcleric:
Code: Select all
|**------ Aggro Management logic --------|
if MT target health is under 80% or MT under emergency health or MT is not in combat
cast ch
else
if hot_timer for that toon has expired
cast hot
else
cast patch heal (divine light for example)
|--------------------------------------**|
Sub CarefulCHeal
/echo careful cheal routine called
/if ((${Target.Target.PctHPs}<=80) || (${Target.PctHPs}<=${Emer_heal_override}) || (!${Target.Combat})) {
/echo ${healspell} incoming on %T. stay close!
/call Cast "${healspell}" gem1 1s CheckHP
}
/else {
/echo %T, I realize you need a heal, but your target will come after me if you don't get a good aggro lock on it. If you hit ${Emer_heal_override} percent health I'll Complete Heal you anyway
/echo How about I toss a Heal over Time at you %T?
/call HotHeal
}
/return
Sub HotHeal
/echo hot heal routine called
/if ( !${Defined[hotTimer${Target.ID}]} ) /declare hotTimer${Target.ID} timer outer 0
/if (!${hotTimer${Target.ID}) {
/call Cast "${hotspell}" gem3 1s CheckHP
/varset hotTimer${Target.ID} ${HoTDuration}
}
/else {
/echo On second thought, maybe the mob won't notice a ${patchheal} on you, %t
/call Cast "${patchheal}" gem2 1s CheckHP
}
/return
Those routines appeared to work in the testing I've done so far.
We might want to crank the speed up to 40 also.
One thing that has been brought up is the fact that some bots, like Genbot, need to be told to assist. we might want to alias protect or guard mode into an auto assist function.
I just have not had time to integrate all this together. otherwise I'd have posted an update.
One bug I ran into was a problem where if you told the bot to assist and it was following someone the bot would ping pong back and forth between the person it was following and the mob. I got around that by defining a 'wasfollowing' variable that would get set if you entered the assist routine and had a follow target defined. It would also set an anchor so the bot would return to where it was and resume following its follow target.
I also had to create an always stand override to keep the bot from jumping up and down when it ran out of mana too. It seemed to be a race condition between trying to maintain a self buff and medding.
It would also be nice if we could use the crowd control routine to signal the bot not to sit down if there are any hostile mobs nearby.