Basic Shaman Bot

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

Moderator: MacroQuest Developers

theoneandonly
orc pawn
orc pawn
Posts: 26
Joined: Sun Apr 11, 2004 6:39 pm

Basic Shaman Bot

Post by theoneandonly » Wed May 19, 2004 5:01 pm

very basic....assists main tank (change the name of maintank, to whoever), and malos and slows...then will wait till it recieves exp to assist again to slow... if any bugs please post.

Code: Select all


#include spellcast.inc 
#event exp "You have gained#*#"
#event slow "slows down#*#"	

sub main
	/declare slowed int outer 
	/delay 1s
	/assist maintank
	/call cast "Malos"
	/call cast "Turgur's Insects"
	/doevents
	/delay 1s
	:goto checkcast
	/return
		
			:checkcast
				/if (${slowed}>0) :goto waitforexp
				/doevents
				/return

			:waitforexp 
				/doevents
				/delay 1s
				/doevents
				/if (${slowed}<1) :goto main
				:goto waitforexp
				/return
			



#sub_exp
	/varset slowed 0

#sub_slow
	/varset slowed 1


Scarf
decaying skeleton
decaying skeleton
Posts: 5
Joined: Fri May 28, 2004 5:12 pm

Post by Scarf » Sat May 29, 2004 1:50 pm

This isnt working at all, your subs are being declared wrong, they should be

Code: Select all

Sub Exp
and gotos should be

Code: Select all

/goto :checkcast
and im sure theres more. That being said i'd like you to fix this because this is exactly what i was looking for.

magictiger
a snow griffon
a snow griffon
Posts: 450
Joined: Sun Mar 21, 2004 2:24 pm

Post by magictiger » Sat May 29, 2004 2:30 pm

My god...
The event for shaman slow is #*# yawns.
This macro would never stop trying to slow the mob.
Please test before you post in the depot.

graveler2
decaying skeleton
decaying skeleton
Posts: 2
Joined: Mon May 31, 2004 12:44 am

Post by graveler2 » Wed Jun 02, 2004 10:23 pm

Actually, I bet he is using Balance of the Nihil (I don't even need to malos if I'm doing this spell for exp group...), which would actually look like:

Code: Select all

#event slow "#*#'s body slows down"
But then, you would have to change Turg to Balance on spell cast.

~Cheers

Ghedrain
decaying skeleton
decaying skeleton
Posts: 6
Joined: Wed Jun 09, 2004 11:35 am

Please move to Macro Help

Post by Ghedrain » Thu Jun 10, 2004 12:44 am

I have played around with this macro and cannot get it to work at all. I like the idea of a simple shaman bot macro. Here's the code that i changed from what theoneandonly posted as there were some errors in it.

Code: Select all

#include spellcast.inc 
#event exp "You have gained#*#" 
#event slow "yawns#*#"    

sub main 
   /declare slowed int outer 
   /delay 1s 
   /assist  maintank
   /call cast "Torgor's Insects" 
   /doevents 
   /delay 1s 
   /goto :checkcast 
   /return 
       
         :checkcast 
            /if (${slowed}>0) :goto waitforexp 
            /doevents 
            /return 

         :waitforexp 
            /doevents 
            /delay 1s 
            /doevents 
            /if (${slowed}<1) :goto main 
            :goto waitforexp 
            /return 
          
Sub Exp 
   /varset slowed 0 

Sub Slow 
   /varset slowed 1

Any help I could get with this would be much appreciated.

dok
a ghoul
a ghoul
Posts: 127
Joined: Mon Mar 15, 2004 3:38 pm

Post by dok » Thu Jun 10, 2004 2:48 am

from the following code, some quick observations that'd cause problems...

I believe Subs are required to /return. no clue what would happen if thats left out though.

#event slow "yawns#*#" is wrong. that would need to be something like "#*#yawns." or whatever the text would be. To include both types of slow messages, just add another #event

#event slow "#*#yawns"
#event slow "#"#body slows down."
etc

the Subs are all wrong. should be...
Sub Event_slow and Sub Event_exp

/if (${slowed}<1) :goto main is not correct since you dont have ":main" anywhere. probably bad form to use /call main from within main since you'd probably either run out of memory eventually or outright dump the macro.

Code: Select all

#include spellcast.inc 
#event exp "You have gained#*#" 
#event slow "yawns#*#"    

sub main 
   /declare slowed int outer 
   /delay 1s 
   /assist  maintank 
   /call cast "Torgor's Insects" 
   /doevents 
   /delay 1s 
   /goto :checkcast 
   /return 
        
         :checkcast 
            /if (${slowed}>0) :goto waitforexp 
            /doevents 
            /return 

         :waitforexp 
            /doevents 
            /delay 1s 
            /doevents 
            /if (${slowed}<1) :goto main 
            :goto waitforexp 
            /return 
          
Sub Exp 
   /varset slowed 0 

Sub Slow 
   /varset slowed 1 


now, if I were to do this keeping it as simple as possible....

Macro kinda sucks since it doesn't allow the slower to do anything but slow, but its a start and a bit simpler then the above one. I haven't tested, or even run this, so no clue if it works.

Code: Select all

#include spellcast.inc 

sub main
    /declare slowspell string outer Togor's Insects
    /declare mainassist string outer myassistsname
    /declare prevtargetid int outer 0 

    :Loop
        /delay 1s
        /assist  ${mainassist}
        /delay 5
        /if (${Target.ID}==${prevtargetid}) /goto :Loop
        /varset prevtargetid ${Target.ID}
                
        :castspell
            /call cast ${slowspell}
            /if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
                /echo ${Target.Name} Slowed
                /goto :Loop
            }
            /if (${Macro.Return.Equal["CAST_IMMUNESLOW"]}) {
                /echo ${Target.Name} Immune
                /goto :Loop
            }
            /goto :castspell
/endmac

Now to have this really working right, you might want to add back in the #event exp, but that doesn't always work since out of range mobs dont give exp, nor do green mobs. I think if I were going to use something like this for myself, I'd throw in some soft of check with ${Spawn[${prevtargetid}]} to make sure the mob is still in the zone, its not a corpse, and is a npc.

User avatar
grimjack
Macro Author
Macro Author
Posts: 525
Joined: Thu Nov 07, 2002 6:51 am
Contact:

This macro.

Post by grimjack » Thu Jun 10, 2004 4:31 am

I don't play eq anymore and don't have a way to test but this is what I would probably change it to to get it working as advertised.

Code: Select all

|slow.mac - Assists and slows mobs.
|Usage: /macro slow.mac <assist name>

#include spellcast.inc 
#event slowed "put message here"
sub main 
   /declare slowed int outer
   /declare assist string outer
   /declare slowedid int outer
   /if (!${Defined[Param0]}) { 
      /echo Usage: /macro slow.mac <assist>
      /endmacro 
   } 
   /varset assist ${Param0}
   :mainloop
   /varset slowed 0
   /delay 1s
   /assist  ${mainassist} 
   /if (${Target.ID}==${prevtargetid}) /goto :mainloop
   /varset slowedid ${Target.ID}
   :reslow
   /call cast "Malos" 
   /call cast "Turgur's Insects" 
   /doevents 
   /delay 1s 
   /call checkcast
   /if ((${slowed}==0)&&(${Target.ID}==${slowedid})) /goto :reslow
   /goto :mainloop 
 /return 
       
Sub checkcast 
   /if (${slowed}==0) /return
   :waitloop
   /if (${Target.ID}!=${slowedid}) /return
   /delay 1s
   /goto :waitloop
/return 
          
Sub Event_slowed
   /varset slowed 1 
/return
As I said I don't have any way to test to make sure my syntax is correct but this should be close. I'm also shure there are many improvements(aggro managment ect ect...) that could be made but this was just a quick look.

Thanks
GrimJack
When they come to me, they're in trouble, or they want some. I bust people out of prison, hunt down vampires, fight alien gods -- All the fun jobs people are too squeamish or too polite to do themselves.

Call me a mercenary. Call me an assassin. Call me a villain. I am all that and more.

My name's John Gaunt, but out on the streets of Cynosure, I am called...
GrimJack

User avatar
aChallenged1
a grimling bloodguard
a grimling bloodguard
Posts: 1804
Joined: Mon Jun 28, 2004 10:12 pm

Post by aChallenged1 » Tue Jun 29, 2004 7:56 am

Having played a shaman, and almost always grouping with a shaman I can tell you it would be great if you could add a line that tells the group, or the raid (depending on how you set it up) that the mob has been slowed.

Also, a line to send in pet.

And now that I'm thinking about it. I'm going to have to put my nose to the grind stone and learn how to write macs and eventually plugins, because I can already see that what I really want is a Shammybot that buffs self/group/raidgroups/pet, special buffs for pet and MT (Ferine Avatar), does canni, does canni 5 (if availible), as well as assist and send pet and heal as necesarry.

I know there are gen bots, and that is where I guess I'll start. It's just that I saw title basic shaman bot and thought it would cover the basics.