Genbot v13.3.2 [Updated 08/08/2004] Slim trim code rewrite!

Post your completed (working) macros here. Only for macros using MQ2Data syntax!

Moderator: MacroQuest Developers

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Sun Aug 08, 2004 10:28 am

Well, that fix you gave me works Vex, and Protect and Defend are now firing.

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.

Basically, if all I had was single pulls it wasn't too bad; on multi-pulls the bot would try to debuff every single mob in camp with no regard to the fact that our pally tank was dying. I took the debuffs out of my protect event and just melee+healed on the druid.

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.

I'm almost tuned to the point where the whole group can hold together pretty good withtout me touching much even while 4 boxing. All I have to do is keep an eye on adds with the chanterbot.

Pathing seems to get a little odd every now and then, and my toons were getting stuck on rocks, doorways, and such in the ldons we did, but I managed to work around that just fine.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Sun Aug 08, 2004 10:39 am

Oh, and from the looks of it, the IsPally value being changed to 1 causes genbot to ignore the reportautoheal toggle. My paladin was spamming me like crazy with it earlier to the point where I had to turn it off. Even with Verbosity set to 0 he was spamming.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

mikey
decaying skeleton
decaying skeleton
Posts: 5
Joined: Sat Jul 03, 2004 7:56 pm

botshortcut.inc

Post by mikey » Sun Aug 08, 2004 12:18 pm

:?: Is botshortcut.inc version 13.3 missing from this update? Am I missing any new good stuff by using my old 13.1.5 version?

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Sun Aug 08, 2004 12:28 pm

Go through the revision history on each genbot update thread, a lot has changed.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

Mimatas
a hill giant
a hill giant
Posts: 262
Joined: Wed Mar 10, 2004 4:22 pm

Post by Mimatas » Sun Aug 08, 2004 1:46 pm

combat doesn't stick... if my melee knocks a mob out of range, he won't move back into range. Is this intentional?

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Sun Aug 08, 2004 1:59 pm

Odd, my melee stuck to the mobs just fine. There was a couple instances where they'd path really oddly if another groupmember got in their way, but for the most part they stuck like glue. Do you have melee and autoengage toggled on?
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

Mimatas
a hill giant
a hill giant
Posts: 262
Joined: Wed Mar 10, 2004 4:22 pm

Post by Mimatas » Sun Aug 08, 2004 2:08 pm

attack isn't sticking to the mob. if I knock a mob out of my melee range, my toon will just sit there and get beat on till I tab over and move him closer.

:) hope this helps

bob_the_builder
a hill giant
a hill giant
Posts: 275
Joined: Tue Jul 22, 2003 1:22 pm

Post by bob_the_builder » Sun Aug 08, 2004 6:15 pm

Anyone getting divide by zero errors on zone or just something wrong on my end?

Bob

.. edit ... never mind was me, my HUD has an entery causes divide by zero on zone (0 mana). ANyways, no worries.

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Sun Aug 08, 2004 8:16 pm

The Handy Dandy Genbot Manual wrote:autoengage - Controls if the bot will close and engage when in combat. Default Value: OFF
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.

Below is what the combat section of my Ogre Warrior bot looks like, and he works fine:

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=250
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; I just keep moving up from room to room and pulling mobs along the way and the bots just sort of follow along without me having to tell them to. I did this because keeping them on perma-follow was causing odd pathing issues that I don't see when they aren't trying to attack while in follow mode. All I have to do using this setup is walk up to a mob and turn on autoattack, since my tankbot is the master and all the others are set up to defend him using debuffs, slows, snares, etc. If I had a wizard bot I'd probably have him chain nuke too.

Speaking of wizardbots, there should be a DoConcussion setting in the spells section for wizardbots where you can define to cast Concussion or use clicky elemental pants. We already have setups for Canni and Yaulp, why not concussion. In fact, DoHarvest should probably be defined too. I mean sure, you can just set up shortcuts to do these, but it seems to make more sense to have them automated similar to the way Yaulp and Canni are.

Oh, and I set my tankbot's master to be the group's healer; so that way when he finishes a mob he'll head for whatever happens to be aggro on the healer. I'm still working out a workable setup for my 4 box crew, but it runs pretty well as it is right now. Just a few more shortcuts and settings that need tweaking.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

Daeas
a lesser mummy
a lesser mummy
Posts: 32
Joined: Fri May 07, 2004 1:45 pm

Post by Daeas » Mon Aug 09, 2004 1:28 am

ok 2 errors for me atm...
This top pic of the code spew only occurs in combat or follow situations. This is a continous spam of the mq2 window and I am unfamiliar of anything i did differently then i have before.

This bottom pic happened to me when i played my mage tonight. When I have the petona=on code in the ini file the follwing occurs and it kills genbot on the mage. The only thing I did was turn on the pet assist and turn off the heal and set up my channels.

My apologies about not having the code but the pics was all i could think of to do while i was in game tonight.

http://www.angelfire.com/un/daeas

Thanks in advance folks.

~Daeas

ascii38
a grimling bloodguard
a grimling bloodguard
Posts: 506
Joined: Sat Jul 17, 2004 8:06 pm

Post by ascii38 » Mon Aug 09, 2004 2:48 am

Are you using advpath from the snippets forum? Sub Delay is defined in advpath2.inc and LastLoc appears to be an advpath variable. I know that it's listed as being an optional component, but I'm guessing that the current version needs it.

- &

User avatar
Fippy
a snow griffon
a snow griffon
Posts: 499
Joined: Tue Jul 16, 2002 10:42 am

Post by Fippy » Mon Aug 09, 2004 11:11 am

Ok Vex i finally hunted down the avoidance code I had. It was all in old style params etc and embeded within a hunting script so I have converted it and wrapped it in a simple main sub. The main loop check condition needs some work to stop you just running around in a circle but you should get the general idea. The subs could probably be simplified a bit too.

Code: 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
Fippy

This is my girl. But Rizwank had her first :-)
[img]http://www.btinternet.com/~artanor/images/fairy_bounce09.gif[/img]

Vexix
Genbot Janitor
Posts: 245
Joined: Sat Apr 17, 2004 10:10 am

Post by Vexix » Mon Aug 09, 2004 11:37 am

Erm, A_Druid_00, don't really follow your feedback.
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.
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. :?

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.

Er, actually, the interrupt for heals will work better with:
/call ChatOut 3 "Interrupted ${CastType.Arg[1,-]}: ${CastName}. I need to heal somebody instead!"
/varset CastLastResult SPELL_IntentionalInterruption
/return
Adding the /return there is necessary.
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, 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. . .

Incidentally, ProtectList in the .ini doesn't work yet. Protect only works on the master at the moment.
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
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. :?

The concussion thing will get handled when I go over the chaincasting bit. It will just be another spell to add to the chain.

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. ;) )

Sorry bout the lastloc issue. I'll put in a declare into the next release.

--Vexix

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Mon Aug 09, 2004 12:20 pm

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. :?
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: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.
Both StopForHeals and StopIfHealed were toggled on.
Vexix wrote:Er, actually, the interrupt for heals will work better with:
/call ChatOut 3 "Interrupted ${CastType.Arg[1,-]}: ${CastName}. I need to heal somebody instead!"
/varset CastLastResult SPELL_IntentionalInterruption
/return
Adding the /return there is necessary.p
I'll give it a shot, but I probably won't be able to do any testing until the weekend.
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. . .
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:Incidentally, ProtectList in the .ini doesn't work yet. Protect only works on the master at the moment.
That would explain why my tankbot wasn't engaging anything unless it was attacking my healer master.
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'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:The concussion thing will get handled when I go over the chaincasting bit. It will just be another spell to add to the chain.
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: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. ;) )
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?

On the subject sort of, are you currently able to define alt abilities as part of a chain casting routine at all? For Example: Paladins get the Divine Stun AA. Is it possible to add "alt Divine Stun" or "alt ###" to the chain stun event line and have it work? I meant to try it with my pally this weekend, but I was busy playing with other issues so I didn't get to it.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Mon Aug 09, 2004 2:20 pm

Another question. Is there a reason for the bot clearing its target before each routine sn call? Example: When I call my debuff routine he clears his target and reacquires 3 times, once for each sn command.

Is it necessary for any reason that I'm not aware of? It just looks... bottish to me for some reason. I don't know anyone who clears their current target before acquiring a new one, and it makes me nervous.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]