generic.mac generic bot/pet macro template.

Macro depository for macros written before the user variable changes that broke all of them.

Moderator: MacroQuest Developers

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

generic.mac generic bot/pet macro template.

Post by grimjack » Fri Jun 06, 2003 12:39 pm

Could be used for any class. Look at the comments on how to get this working. You can add commands by adding more array entries.

Thanks
GrimJack
Edit: Added say, group, and tell commands. 9 word max.
Edit: Added sn command and fixed targeting mobs with multiple names.
example: /tell charname sn Ice comet
and
/tell charname moveto orc pawn
Edit: Added duck command for interupting spells.
Edit: Added stop command. Stop will cancel movement and spells being cast. Also added autoheal on and off command.
/tell botname autoheal on turns group watching and auto heal on
/tell botname autoheal off turns group watching and auto heal off
/tell botname autoheal reports autoheal setting
Edit: Added a ton of melee commands and fixed tell
Edit: Fixed say group and tell bug. Max is now 9 words.
Edit: Updated sn command. Will now use SpellSub.
Edit: Added Kagonis' Array Counter sub.
Edit: Fixed a minor enrage bug.

Code: Select all

|genbot.mac
|Generic bot for casters and melee.
|Make sure you edit this macro to add the commands you want.
|Use the generic spell1 and spell2 commands and subs as examples.
|for the most part you can copy/paste those and change the name of the spell
|you want it to cast.  Also update IsHealer to 1 if you want it to do heals, and
|update the spells used for Tankheal and Casterheal subs at the bottom.
|I hope this explains enough.
|Version 2.06
|Grimjack

#turbo 75
#Event Enraged "has become ENRAGED" 
#Event Offrage "is no longer enraged"
#event Collapse "Your gate is too unstable, and collapses."
#event FollowOff "You are no longer auto-following"
#event RootOff "Your Immobilize spell has worn off."
#event NoLOS "You cannot see your target." 
#Event CastStart "You begin casting"
#Event CastFizzle "Your spell fizzles!"
#Event CastInterrupt "Your spell is interrupted."
#Event CastNoMana "Insufficient Mana to cast this spell"
#Event CastTooFar "Your target is out of range, get closer!"
#Event Recovered "You haven't recovered yet..."
#Event CastResist "Your target resisted "
#Event Distracted "You are too distracted to cast a spell now!"
#Event NoTarget "You must first select a target for this spell!"
#Event Sitting "You must be standing to cast a spell."
#Event NoMem "You do not seem to have that spell memorized."
#Event Stunned "You can't cast spells while stunned!"
#define MasterName v50
#define CmdArrayNum v51
#define CmdArraySize v52
#define GroupMember v53
#define GroupMax v54
#define ChatInput1 v55
#define ChatInput2 v56
#define ChatInput3 v57
#define SitAfterCast v58
#define MyXLoc v59
#define MyYLoc v60
#define IsHealer v61
#define countdown v62
#define CmdList v63
#define RangeMin v70
#define RangeMax v71
#define FastRange v72
#define Combatstatus v73
#define Fail v94
#define DoAgain v95
#define StartCast v96
#define SpellSlot v97
#define SpellName v98
#define CastTime v99
#define CTimer t39
#chat tell

Sub Main
   /if n $strlen("$p0")<=0 {
     /echo Usage: /macro generic <Master Name>
     /endmacro
   }
   /varset MasterName $p0
   /varset IsHealer 0
   /varset RangeMin 10
   /varset RangeMax 12
   /varset FastRange 15
   /varset Combatstatus 0
   /varset a(1,0) afk
   /varset a(1,1) accept
   /varset a(1,2) reject
   /varset a(1,3) invite
   /varset a(1,4) mana
   /varset a(1,5) follow
   /varset a(1,6) stop
   /varset a(1,7) evac
   /varset a(1,8) moveto
   /varset a(1,9) sit
   /varset a(1,10) stand
   /varset a(1,11) sn
   /varset a(1,12) camp
   /varset a(1,13) duck
   /varset a(1,14) run
   /varset a(1,15) say
   /varset a(1,16) tell
   /varset a(1,17) group
   /varset a(1,18) cmds
   /varset a(1,19) autoheal
   /varset a(1,20) target
   /varset a(1,21) notarget
   /varset a(1,22) assist
   /varset a(1,23) saytarget
   /varset a(1,24) attack
   /varset a(1,25) noattack
|||||||||||||||||||||||Personal Commands|||||||||||||||||||||||||||||||||
|||||||||||||||||||||||Personal Commands|||||||||||||||||||||||||||||||||
   /call CountArraySize 1
   /varset CmdArraySize $int($return)
   /varset CmdList "$a(1,0), $a(1,1), $a(1,2), $a(1,3), $a(1,4), $a(1,5) $a(1,6), $a(1,7), $a(1,8), $a(1,9), $a(1,10), $a(1,11), $a(1,12), $a(1,13), $a(1,14), $a(1,15), $a(1,16), $a(1,17), $a(1,18), $a(1,19), $a(1,20) $a(1,21), $a(1,22), $a(1,23), $a(1,24), $a(1,25), $a(1,26), $a(1,27), $a(1,28), $a(1,29), $a(1,30), $a(1,31), $a(1,32), $a(1,33), "$a(1,34), $a(1,35), $a(1,36), $a(1,37), $a(1,38), $a(1,39), $a(1,40)"
   /varset CmdArrayNum 0
   :MainLoop
   /call CheckGrpHealth
   /call Combatcheck
   /if $Combatstatus=="1" /call RangeSub 
|||||||||||||||||||||||Personal Commands|||||||||||||||||||||||||||||||||
|||||||||||||||||||||||Personal Commands|||||||||||||||||||||||||||||||||
   /doevents
   /varset CmdArrayNum 0
   /goto :MainLoop
/return

sub CountArraySize
   /varset l0 0
   :CountArrayLoop
    /if n $strlen("$a($p0,$l0)")<=0 {
       /goto :CountArrayEnd
   }
   /varadd l0 1
   /goto :CountArrayLoop
   :CountArrayEnd
/return $l0 

Sub CheckGrpHealth
   /varset GroupMember 0
   /varcalc GroupMax $group(count)-1
   /if n "$IsHealer"==0 /return
   :GroupLoop
   /doevents
   /if n $spawn($group($GroupMember),hp,pct)<41 {
      /if n $spawn($group($GroupMember),hp,pct)>=1 {
         /if "$spawn($group($GroupMember),class)"=="Warrior" /call Tankheal
         /if "$spawn($group($GroupMember),class)"=="Paladin" /call Tankheal
         /if "$spawn($group($GroupMember),class)"=="Shadow Knight" /call Tankheal
         /if "$spawn($group($GroupMember),class)"=="Monk" /call Tankheal
         /if "$spawn($group($GroupMember),class)"=="Ranger" /call Tankheal
       
      }
   }
   /if n $spawn($group($GroupMember),hp,pct)>=1 {
      /if n $spawn($group($GroupMember),hp,pct)<41 {
         /call CasterHeal
      }
   }
   /if n $GroupMember>=$GroupMax /return
   /varadd GroupMember 1
   /doevents
   /goto :GroupLoop
/return

Sub Combatcheck
   /if $EnrageVar=="1" {
      /if $target()=="TRUE" {
         /return
      } else {
         /varset EnrageVar 0
         /varset Combatstatus 0
      }
   }
   /if $target()=="FALSE" {
      /varset Combatstatus 0
      /if $combat=="TRUE" {
         /attack off
      }
      /return
   }
   /if $target()=="TRUE" {
      /if $combat=="TRUE" {
         /varset Combatstatus 1
         /return
      }
   }
/varset Combatstatus 0
/return



Sub Rangesub
   /face fast nopredict
   /if n $target(distance)>=$FastRange /call Fastmove
   /if n $target(distance)>$RangeMax {
      /press up
   }
   /if n $target(distance)<$RangeMin {
      /press down
   }
/return

Sub Fastmove
   :fastmoveloop
   /doevents
   /if $target()=="FALSE" {
      /varset Combatstatus 0
      /sendkey up up
      /if $combat=="TRUE" {
         /attack off
         /return
      }
   }
   /face fast nopredict
   /if n $target(distance)>$FastRange {
      /sendkey down up
   }
   /if n $target(distance)<=$FastRange {
         /if $Combatstatus=="1" {
            /if $EnrageVar=="0" {
            }
         }
      /sendkey up up
      /return
   }
   /goto :fastmoveloop
/return

Sub Event_Chat 
   /varset CmdArrayNum 0 
   /if "$MasterName"=="$p1" { 
      :ArrayTime 
      /if "$arg(1,"$p2")"=="$a(1,$CmdArrayNum)" { 
         /call Do-$a(1,$CmdArrayNum) $p2 
         /return 
      } 
      /varadd CmdArrayNum 1 
      /if n $CmdArrayNum>=$CmdArraySize /return 
      /goto :ArrayTime 
   } else { 
       /tell $MasterName $p1 told me: $p2 
   } 
/return 

Sub Do-target
   /if n $strlen("$p1")<=0 {
      /return
   } else /if n $strlen("$p2")<=0 {
      /target "$p1"
   } else /if n $strlen("$p3")<=0 {
      /target "$p1 $p2"
   } else /if n $strlen("$p4)<=0 {
      /target "$p1 $p2 $p3"
   } else /target "$p1 $p2 $p3 $p4"
   /tell $MasterName my target is %t
/return

Sub Do-saytarget
   /tell $MasterName my target is %t
/return

Sub Do-assist
   /if n $strlen("$p1")<=0 {
      /assist $MasterName
      /delay 3
   } else /if n $strlen("$p2")<=0 {
      /assist "$p1"
   } else /if n $strlen("$p3")<=0 {
      /assist "$p1 $p2"
   } else /if n $strlen("$p4)<=0 {
      /assist "$p1 $p2 $p3"
   } else /assist "$p1 $p2 $p3 $p4"
   /tell $MasterName my target is %t
/return

Sub Do-attack
   /sit off
   /if n $strlen("$p1")<=0 {
      /assist $MasterName
      /delay 5
   } else /if n $strlen("$p2")<=0 {
      /target "$p1"
   } else /if n $strlen("$p3")<=0 {
      /target "$p1 $p2"
   } else /if n $strlen("$p4)<=0 {
      /target "$p1 $p2 $p3"
   } else /target "$p1 $p2 $p3 $p4"
   /tell $MasterName Attacking %t
   /attack on
/return

Sub Do-noattack
   /attack off
/return

Sub Do-sit
   /sit off
   /sit
/return

Sub Do-stand
   /sit off
/return

Sub Do-notarget
   /press esc
   /press esc
   /press esc
/return

Sub Do-sn
   /assist $MasterName
   /if n $strlen("$p1")<=0 {
      /return
   } else /if n $strlen("$p2")<=0 {
      /tell "$MasterName" Casting $p1 on %T
      /call SpellSub $p1
   } else /if n $strlen("$p3")<=0 {
      /tell "$MasterName" Casting $p1 $p2 on %T
      /call SpellSub "$p1 $p2"
   } else /if n $strlen("$p4)<=0 {
      /tell "$MasterName" Casting $p1 $p2 $p3 on %T
      /call SpellSub "$p1 $p2 $p3"
   } else {
      /tell "$MasterName" Casting $p1 $p2 $p3 $p4 on %T
      /call SpellSub "$p1 $p2 $p3 $p4"
   /stand
   /if "$SitAfterCast"=="1" /sit on
   /press esc
/return 

Sub Do-afk
   /varset CmdArrayNum 0
   /if n $strlen("$p1")<=0 {
      /afk
   } else /if n $strlen("$p2")<=0 {
      /afk $p1
   } else /if n $strlen("$p3")<=0 {
      /afk $p1 $p2
   } else /if n $strlen("$p4")<=0 {
      /afk $p1 $p2 $p3
   } else /if n $strlen("$p5")<=0 {
      /afk $p1 $p2 $p3 $p4
   } else /if n $strlen("$p6")<=0 {
      /afk $p1 $p2 $p3 $p4 $p5
   } else /if n $strlen("$p7")<=0 {
      /afk $p1 $p2 $p3 $p4 $p5 $p6
   } else /if n $strlen("$p8")<=0 {
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7
   } else /if n $strlen("$p9")<=0 {
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8
   } else {
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9
   }
   /afk
/return

Sub Do-say
   /varset CmdArrayNum 0
   /if n $strlen("$p1")<=0 {
      /return
   } else /if n $strlen("$p2")<=0 {
      /say $p1
   } else /if n $strlen("$p3")<=0 {
      /say $p1 $p2
   } else /if n $strlen("$p4")<=0 {
      /say $p1 $p2 $p3
   } else /if n $strlen("$p5")<=0 {
      /say $p1 $p2 $p3 $p4
   } else /if n $strlen("$p6")<=0 {
      /say $p1 $p2 $p3 $p4 $p5
   } else /if n $strlen("$p7")<=0 {
      /say $p1 $p2 $p3 $p4 $p5 $p6
   } else /if n $strlen("$p8")<=0 {
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7
   } else /if n $strlen("$p9")<=0 {
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8
   } else /if n $strlen("$p10")<=0 {
   } else {
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9
   }
/return

Sub Do-group
   /varset CmdArrayNum 0
   /if n $strlen("$p1")<=0 {
      /return
   } else /if n $strlen("$p2")<=0 {
      /g $p1
   } else /if n $strlen("$p3")<=0 {
      /g $p1 $p2
   } else /if n $strlen("$p4")<=0 {
      /g $p1 $p2 $p3
   } else /if n $strlen("$p5")<=0 {
      /g $p1 $p2 $p3 $p4
   } else /if n $strlen("$p6")<=0 {
      /g $p1 $p2 $p3 $p4 $p5
   } else /if n $strlen("$p7")<=0 {
      /g $p1 $p2 $p3 $p4 $p5 $p6
   } else /if n $strlen("$p8")<=0 {
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7
   } else /if n $strlen("$p9")<=0 {
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8
   } else /if n $strlen("$p10")<=0 {
   } else {
      /g "$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9
   }
/return

Sub Do-tell
   /varset CmdArrayNum 0
   /if n $strlen("$p1")<=0 {
      /return
   } else /if n $strlen("$p2")<=0 {
      /return
   } else /if n $strlen("$p3")<=0 {
      /tell $p1 $p2
   } else /if n $strlen("$p4")<=0 {
      /t $p1 $p2 $p3
   } else /if n $strlen("$p5")<=0 {
      /t $p1 $p2 $p3 $p4
   } else /if n $strlen("$p6")<=0 {
      /t $p1 $p2 $p3 $p4 $p5
   } else /if n $strlen("$p7")<=0 {
      /t $p1 $p2 $p3 $p4 $p5 $p6
   } else /if n $strlen("$p8")<=0 {
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7
   } else /if n $strlen("$p9")<=0 {
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8
   } else {
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9
   }
/return


Sub Do-accept
   /press esc
   /press esc
   /invite
/return

Sub Do-reject
   /press esc
   /press esc
   /disband
/return

Sub Do-invite
   /if n $strlen("$p1")<=0 {
      /assist $MasterName
      /delay 3
   } else /if n $strlen("$p2")<=0 {
      /target "$p1"
   } else /if n $strlen("$p3")<=0 {
      /target "$p1 $p2"
   } else /if n $strlen("$p4)<=0 {
      /target "$p1 $p2 $p3"
   } else /target "$p1 $p2 $p3 $p4"
   /tell $MasterName Inviting %t
   /invite
/return

Sub Do-mana
   /dismount
   /press F1
   /tell $MasterName $char(mana,pct)m
   /press esc
/return

Sub Do-follow
   /target $MasterName
   /face
   /follow
   /tell $MasterName Autofollow on %t.
/return

Sub Do-stop
   /tell $MasterName Stoping.
   /sendkey up up
   /varset Fail 1
   /press d
   /press d
   /press esc
   /press esc
   /press esc
   /press right
/return

Sub Do-evac
   /tell $MasterName Moving to you and casting Evac!
   /call Do-moveto evac $MasterName
   /delay 2s
   /call SpellSub "Evacuate"
/return 

Sub Do-sit
   /stand
   /sit on
/return

Sub Do-stand
   /stand
/return

Sub Do-camp
   /tell $MasterName Camping out.
   /stand
   /sit 
   /camp
/return  

Sub Do-duck
   /press d
   /varset Fail 1
   /varset CTimer 0
   /press d
/return  

Sub Do-autoheal
   /if n $strlen("$p1")<=0 {
      /tell $MasterName Autoheal=$IsHealer
      /return
   }
   /if $p1=="off" /varset IsHealer 0
   /if $p1=="on" /varset IsHealer 1
   /tell $MasterName Autoheal=$IsHealer
/return

Sub Do-cmds
   /tell "$MasterName" Commands: "$CmdList"
/return  

Sub Do-moveto
   /sit off
   /varset countdown 0
   /varset MyXLoc $char(x)
   /varset MyYLoc $char(y)
   /if n $strlen("$p1")<=0 {
      /assist $MasterName
      /delay 3
   } else /if n $strlen("$p2")<=0 {
      /target "$p1"
   } else /if n $strlen("$p3")<=0 {
      /target "$p1 $p2"
   } else /if n $strlen("$p4)<=0 {
      /target "$p1 $p2 $p3"
   } else /target "$p1 $p2 $p3 $p4"
   /if $p1=="me" /target $MasterName
   /tell $MasterName Moving to %t.
   :gotopointloop
   /doevents
   /if $target()==FALSE {
      /sendkey up up
      /return
   }
   /face fast nopredict
   /if n $target(distance)>15 /sendkey down up
   /if n $target(distance)<=15 {
      /sendkey up up
      /return
   }
   /face fast nopredict
   /if n $countdown>=3 {
      /call Detectobst
      /varset countdown 0
   }
   /varadd countdown 1
   /doevents
   /goto :gotopointloop
   }
   /sendkey up up
   /face
/return

Sub Detectobst
   /if n $MyXLoc==$char(x) /if $MyYLoc==$char(y) /call Hitobst 5
   /varset MyXLoc $char(x)
   /varset MyYLoc $char(y)
/return


sub Hitobst
   /sendkey up up
   /sendkey down down 
   /if n $rand(99)>50 {
      /delay 2s
      /sendkey up down
      /sendkey down Right
      /delay $p0 
      /sendkey up Right
      /sendkey down up
      /delay 2s
      /sendkey up up
   } else {
      /delay 2s
      /sendkey up down
      /sendkey down left
      /delay $p0 
      /sendkey up left
      /sendkey down up
      /delay 2s
      /sendkey up up       
   }
   /sendkey up down
   /sendkey up Right
   /sendkey up Left
   /sendkey down up
/return

Sub SpellSub
   /sendkey up up
   /if n Combatstatus==1 /delay 3s
   /varset Fail 0
   /varset SpellName "$p0"
   /varset SpellSlot "$char(gem,"$SpellName")"
   /varset CastTime "$spell("$SpellName",casttime)"
   :BeginCast
   /varset DoAgain 0
   /varset StartCast 0
   /call WaitForStart
   :TimerLoop
   /doevents
   /if n $DoAgain==1 /goto :BeginCast
   /if n $Fail==1 /return
   /doevents
   /if n $DoAgain==1 /goto :BeginCast
   /if n $Fail==1 /return
   /if n $CTimer>0 /goto :TimerLoop
   /delay 2
   /doevents
   /if n $DoAgain==1 /goto :BeginCast
/return


Sub WaitForStart
   /cast $SpellSlot
   :StartLoop
   /doevents
   /if n $Fail==1 /return
   /if n $DoAgain==1 /return
   /if n $StartCast==0 {
      /goto :StartLoop
   }
   /varset CTimer "$CastTime"s
/return

Sub Event_Enraged
   /if $target()=="TRUE" {
      /if n $Combatstatus==1 {
         /varset EnrageVar 1
         /attack off
      }
      /varset EnrageVar 1
   }
/return 

Sub Event_Offrage
   /if $target()=="TRUE" {
      /if n $Combatstatus==1 {
         /varset EnrageVar 0
         /attack
      
      }
      /varset EnrageVar 0
   }
/return

Sub Event_CastStart
   /varset StartCast 1
/return

Sub Event_CastFizzle
   /delay 2
   /varset DoAgain 1
/return

Sub Event_CastInterrupt
   /delay 2
   /varset DoAgain 1
/return

Sub Event_FollowOff
   /press esc
   /press esc
   /delay 5
   /tell $MasterName Auto Follow Off.
/return

Sub Event_Sitting
   /stand
   /delay 2
   /varset DoAgain 1
/return

Sub Event_CastTooFar
   /varset Fail 1
   /tell $MasterName Too far away.
   /varset CTimer 0
/return

Sub Event_Distracted
   /tell $MasterName I can't cast. I'm too distracted.
   /varset Fail 1
   /varset CTimer 0
/return

Sub Event_NoTarget
   /varset Fail 1
   /tell $MasterName I have no target to cast on.
   /varset CTimer 0
/return

Sub Event_NoMem
   /tell $MasterName That spell is not memed.
   /varset Fail 1
   /varset CTimer 0
/return

Sub Event_RootOff
   /tell $MasterName Root has worn off.
/return

Sub Event_CastNoMana
   /tell $MasterName OOM. Medding 16 seconds and trying again.
   /sit off
   /sit on
   /delay 16s
   /sit off
   /varset DoAgain 1
/return

Sub Event_Stunned
   /tell $MasterName Stunned waiting 3 seconds to try again.
   /delay 3s
   /varset DoAgain 1
/return

Sub Event_Recovered
   /delay 2s
   /varset DoAgain 1
/return

Sub Event_CastResist
   /tell $MasterName Resisted. Trying again.
   /varset DoAgain 1
/return

Sub Event_Collapse
   /varset DoAgain 1
/return

Sub Event_NoLOS
   /tell $MasterName I can't see my target.
   /varset Fail 1
   /varset CTimer 0
/return


Sub Tankheal
         /if n $group($GroupMember)==$char(id) /press F1
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember)
         /stand
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||| Edit Edit heal message
||| Edit Spell to auto cast on Melee
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
         /g COMPLETE HEAL on %T in 10seconds
         /call SpellSub "Complete Heal"
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
         /if "$SitAfterCast"=="1" /sit on
         /press esc
/return

Sub Casterheal
         /if n $group($GroupMember)==$char(id) /press F1
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember)
         /stand
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||| Edit Edit heal message
||| Edit Spell to auto cast on Non Melee
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
         /g Healing %T
         /call SpellSub "Supernal Remedy"
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
         /if "$SitAfterCast"=="1" /sit on
         /press esc
/return


|||||||||||||||||||||||Personal Commands|||||||||||||||||||||||||||||||||
Last edited by grimjack on Fri Jun 27, 2003 5:23 am, edited 24 times in total.

Amadeus
The Maestro
The Maestro
Posts: 2036
Joined: Sat Jun 29, 2002 3:51 pm

Post by Amadeus » Sat Jun 07, 2003 5:34 am

You know what would be neat? A generic bazaar mule macro ;)

hmm...I should post this under requests ..hehe

fwiggles
a hill giant
a hill giant
Posts: 161
Joined: Mon Jun 17, 2002 8:29 pm

Post by fwiggles » Sat Jun 07, 2003 11:14 pm

good macro, i probably wont' test it, but i like it a lot
[color=red]Latest survey shows that 3 out of 4 people make up 75% of the world's population.[/color]

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

Any other ideas?

Post by grimjack » Mon Jun 09, 2003 1:34 am

Any other ideas for the generic macro? I added duck to all my bots so that you can interupt spells.

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

Post by grimjack » Fri Jun 27, 2003 5:22 am

Fixed a minor enrage bug.
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

IHQ
decaying skeleton
decaying skeleton
Posts: 2
Joined: Mon Jun 30, 2003 1:14 pm

addon?

Post by IHQ » Mon Jun 30, 2003 5:36 pm

Could probably add horse/lizard support for you Duck command.

macrotoon
a ghoul
a ghoul
Posts: 106
Joined: Wed Sep 18, 2002 4:38 pm

Post by macrotoon » Mon Jul 07, 2003 5:04 pm

adding dismount to the code should be a no brainer for anyone that actually trys

Furor
a lesser mummy
a lesser mummy
Posts: 44
Joined: Sun Nov 30, 2003 8:25 pm

Quick question

Post by Furor » Sun Nov 30, 2003 8:27 pm

Grim can you tell me what your bug was with enrage. Ever since i upgraded to MQ2 my event enrage does not work on my macro

Thanks