Moderator: MacroQuest Developers

I don't think the bot will chase mobs without having autoengage set to on. I know that I set autoengage and melee to ON for all my tank/dps bots and they never fail to chase the mobs down (Unless they happen to get stuck on a piece of terrain and go running off in the wrong direction). You didn't give a lot of info about how you have your combat section set up, so I have to go under the assumption that you have autoengage turned off; since all my bots work fine as far as staying in melee range goes, and this appears to be the parameter that sets it.The Handy Dandy Genbot Manual wrote:autoengage - Controls if the bot will close and engage when in combat. Default Value: OFF
Code: Select all
archery=off
autobehind=off
autoengage=on
bash=off
backstab=off
disarm=on
evade=off
flyingkick=off
frenzy=off
kick=off
slam=on
taunt=on
petona=off
tauntdisc=on
WarTauntDisc=Incite
GuardRadius=50
defend=on
protect=on
ProtectList=Georgebush|Johnkerry
NeverKill=things you never want to attack separated by |
ProtectOrDefendCheckRadius=50
melee=on
MeleeRange=12
MeleeMaxRadius=250Code: Select all
Sub Main
/declare TargetX float outer 910.58
/declare TargetY float outer 1338.59
/declare AvoidLocX float outer 592.14
/declare AvoidLocY float outer 1132.62
/declare AvoidDist float outer 200
/declare HeadingDiff float outer
:RunLoop
/call HeadingDiff ${Me.Heading.DegreesCCW} ${Heading[${TargetY},${TargetX}].DegreesCCW}
/varset HeadingDiff ${Macro.Return}
/if (${Math.Distance[${AvoidLocY},${AvoidLocX}]}<${AvoidDist}) {
/call AvoidanceHeading ${AvoidLocY} ${AvoidLocX}
/face heading ${Macro.Return}
} else {
/face loc ${TargetY},${TargetX}
}
/delay 5
/keypress forward hold
/if (${Math.Distance[${TargetY},${TargetX}]}>10) /goto :RunLoop
/keypress forward
/echo there
/return
|----------------------------------------------------------------------------
| Name: HeadingDiff <AngleA> <AngleB>
| Description: Sub to work out the number of degrees between two headings
|----------------------------------------------------------------------------
sub HeadingDiff(float AngleA,float AngleB)
/declare DiffAngle float inner
/if (${AngleA}>${AngleB}) {
/varset DiffAngle ${Math.Calc[${AngleA}-${AngleB}]}
} else {
/varset DiffAngle ${Math.Calc[${AngleB}-${AngleA}]}
}
/if (${DiffAngle}>180) {
/varset DiffAngle ${Math.Calc[360-${DiffAngle}]}
}
/return ${DiffAngle}
|----------------------------------------------------------------------------
| Name: AvoidanceHeading <AvoidY> <AvoidX>
| Description: Sub to work out the shortest angle to turn to avoid the supplied loc
|----------------------------------------------------------------------------
sub AvoidanceHeading(float AvoidY,float AvoidX)
/declare AvoidLeft float inner
/declare AvoidRight float inner
/declare DiffLeft float inner
/declare DiffRight float inner
/varset AvoidLeft ${Math.Calc[${Heading[${AvoidY},${AvoidX}].DegreesCCW}-95]}
/varset AvoidRight ${Math.Calc[${Heading[${AvoidY},${AvoidX}].DegreesCCW}+95]}
/call HeadingDiff ${Me.Heading.DegreesCCW} ${AvoidLeft}
/varset DiffLeft ${Macro.Return}
/call HeadingDiff ${Me.Heading.DegreesCCW} ${AvoidRight}
/varset DiffRight ${Macro.Return}
/if (${DiffLeft}<${DiffRight}) {
/return ${AvoidLeft}
} else {
/return ${AvoidRight}
}
/return
Hmm. . . You mean heals weren't firing at all? But when you turned off protect, they did? Strange. Heals should be prioritized over other spells, so I didn't think they should be ignored for other duties. Protect fired spells get added to the stack, AFTER heals, just like everything else.Noticed an issue with protect events though; the bot appears to ignore all other duties while carrying it out, including most importantly healing. Noticed tonight with my druid when he was main healing a ldon.
Adding the /return there is necessary./call ChatOut 3 "Interrupted ${CastType.Arg[1,-]}: ${CastName}. I need to heal somebody instead!"
/varset CastLastResult SPELL_IntentionalInterruption
/return
The new heal code appears to be working pretty good otherwise; it looked as if my druid was holding out a lot better on mana in this version.
Er, how does that work? MeleeMaxRadius only limits the maximum range at which the bot will still consider it's combat target to be "in play". Once the mob is outside of that range, genbot assumes the mob has warped or gated or something, and will not move after it.I set my MeleeMaxRadius to 250 for LDoNs, so I don't have to keep telling my bots to follow and stay when I move up
Yes, that's exactly what I mean. I had a debuff routine configured for my protect event; and I didn't turn protect off, I just took the debuffs out and reloaded. When I removed my debuffs from the event and reloaded genbot he went back to healing fine. I even tried it with only one spell in the Event and let it run on a couple multi-pulls and he ran into the same problem. It's not a big issue, I'm just not going to run my debuff routine via the protect event until its fixed.Vexix wrote:Erm, A_Druid_00, don't really follow your feedback.
Hmm. . . You mean heals weren't firing at all? But when you turned off protect, they did? Strange. Heals should be prioritized over other spells, so I didn't think they should be ignored for other duties. Protect fired spells get added to the stack, AFTER heals, just like everything else.![]()
Both StopForHeals and StopIfHealed were toggled on.Vexix wrote:Did you try setting the StopForHeals toggle on? This would have your druid interrupt his other spell anyway, as soon as he saw the need for a heal.
I'll give it a shot, but I probably won't be able to do any testing until the weekend.Vexix wrote:Er, actually, the interrupt for heals will work better with:
Adding the /return there is necessary.p/call ChatOut 3 "Interrupted ${CastType.Arg[1,-]}: ${CastName}. I need to heal somebody instead!"
/varset CastLastResult SPELL_IntentionalInterruption
/return
Well, while it may not be in completely, I considered the stop for heals and stop when healed code to be a big part of what I was looking for in the heal department. I guess I should have said the new healing changes instead of code.Vexix wrote:Er, new heal code is not in yet. I just threw in the interrupts ahead of the overall rewrite, since that seemed a priority for many. Still have to unify pally heals and other heals, add back in heal messages, improve heal prioritization, etc. . .
That would explain why my tankbot wasn't engaging anything unless it was attacking my healer master.Vexix wrote:Incidentally, ProtectList in the .ini doesn't work yet. Protect only works on the master at the moment.
That's exactly what I do. The casters that I bot all have weapons that proc nifty things. The cleric has Hammer of Holy Vengeance which procs a really small group heal a LOT, the Druid has Hammer of Hours which procs a 750 DD and 150DD Ruj Poison Aug, and the chanter has some VT dagger that procs a mana tap. They're not much, but its better than just having them sit there doing nothing while FM.Vexix wrote:Er, how does that work? MeleeMaxRadius only limits the maximum range at which the bot will still consider it's combat target to be "in play". Once the mob is outside of that range, genbot assumes the mob has warped or gated or something, and will not move after it.
If your casters aren't set up to melee, they shouldn't move unless you tell them to.![]()
That'll be awesome, as its something that defines a wizard's aggro control ability. I don't bot any wizards myself, but if I did, I'd want it to be doing as much DPS with as little aggro as possible.Vexix wrote:The concussion thing will get handled when I go over the chaincasting bit. It will just be another spell to add to the chain.
Interesting, never though of using DoCanni. Are you able to define multiple canni spells? Wizards get like multiple harvest spells as well as a Harvest AA I think. Could you feasibly set the DoCanni routine to check if all these Spells/AAs are up and use them if they are?Vexix wrote:Harvest is an interesting one. Perhaps I should work on adding an event type setting, similar to advbot, which will handle these kinds of spells. I want to move more general instead of having a docanni, doharvest, domanastone, etc. (Although, actually I already use the docanni for my manastone, with no problem.)