Moderator: MacroQuest Developers

Code: Select all
//Stuff added to give credit where it is due. Yay Plazmic and your macro
#turbo
#chat tell
#event CantSee "You cannot see your target"
#event HitsYou "s YOU for "
#event HitsYou " YOU, but misses."
#event Fizzle "Your spell fizzles!"
#event Fizzle "You haven't recovered yet..."
#event Fizzle "Spell recovery time not yet met."
#event Fizzle "Your spell is interrupted."
#define MANABUFFER 30
#define MASTERNAME <name of master>
#define CASTTIMER t0
#define CASTNEXTTIMER t1
#define NEXTOUCHTIMER t2
#define NEXTHOTTIMER t3
#define MANATIMER t4
#define OKTOCAST v80
#define FIZZLECHECK v82
#define HOTSPELL v74
#define HOTHP v75
#define HOTDUR v76
#define HEALHP v77
#define HEALSPELL v78
Sub Main
/varset v99 0
/varset OKTOCAST 1
/varset v0 0
/varset MANATIMER 1
:Loop
/doevents
/if n $char(ability,"sense heading")>0 /doability "sense heading"
/if n $OKTOCAST==0 /goto :SkipHealing
/varset l6 $group(lowhp)
/varset l7 $spawn($l6,hp,pct)
/varset l8 $spawn($l6,class)
/varset l9 0
/if n $l7>60 /goto :SkipHealing
/if n $l7<40 /varset l9 3
/if "$l8"=="Enchanter" /if n $l7<50 /varset l9 1
/if "$l8"=="Wizard" /if n $l7<50 /varset l9 1
/if "$l8"=="Magician" /if n $l7<50 /varset l9 1
/if "$l8"=="Necromancer" /if n $l7<50 /varset l9 1
/if "$l8"=="Cleric" /if n $l7<60 /varset l9 2
/if "$l8"=="Druid" /if n $l7<60 /varset l9 2
/if "$l8"=="Shaman" /if n $l7<60 /varset l9 2
/if "$l8"=="Cleric" /if n $l7<30 /varset l9 1
/if "$l8"=="Druid" /if n $l7<30 /varset l9 1
/if "$l8"=="Shaman" /if n $l7<30 /varset l9 1
/if n $l9==3 /if n $char(mana,cur)<$int($spell("Complete Healing",mana)+MANABUFFER) /varset l9 1
/if n $l9==1 /if n $char(mana,cur)<$int($spell("Divine Light",mana)+MANABUFFER) /varset l9 2
/if n $l9==2 /if n $char(mana,cur)<$int($spell("Celestial Healing",mana)+MANABUFFER) /varset l9 0
/if n $l9==3 /call CastSpell $l6 "Complete Healing"
/if n $l9==2 /call CastSpell $l6 "Celestial Healing"
/if n $l9==1 /call CastSpell $l6 "Divine Light"
/if n $l9==2 /if n $OKTOCAST==0 /varset NEXTHOTTIMER 18s
:SkipHealing
/doevents
/if n $char(hp,pct)<10 /call GetOutOfDodge
/goto :Loop
/return
Sub Event_Chat
/if "$p0"!="MASTERNAME" /return
/if "$p2"~~"sit" /call Do_Sit $p0
/if "$p2"~~"come" /call Do_Come $p0
/if "$p2"~~"gate" /call Do_Gate $p0
/if "$p2"~~"mana" /tell $p0 $char(mana,pct)m ($char(mana,cur)/$char(mana,max))
/if "$p2"~~"help" /tell $p0 Help: sit, come, gate, mana
/return
Sub Do_Sit
/if $char(state)==STAND {
/tell $p0 Sitting down
/sit
}
/return
Sub Do_Come
/target $p0
/if $target(type)!=PC /return
/tell $p0 Coming to you
/gotoxy target
/face fast heading $target(heading)
/if $char(state)==STAND /sit
/return
Sub Do_Gate
/tell $p0 Gating
/gate
/return
Sub GetOutOfDodge
/gate
/delay 30s
/sit
/delay 2s
/camp
/endmacro
Sub Event_Timer
/if t$p0==CASTNEXTTIMER /varset OKTOCAST 1
/if t$p0==MANATIMER {
/gsay $char(mana,pct)m
/varset MANATIMER 3m
}
/return
Sub ClearBadTargets
/if $target(type)==CORPSE /target clear
/for l0 0 to 5
/if n $target(id)==$group($l0) /target clear
/next l0
/return
Sub Event_HitsYou
/if n $char(hp,pct)<10 /call GetOutOfDodge
/if n $NEXTOUCHTIMER>0 /return
/varset NEXTOUCHTIMER 12s
/tell MASTERNAME Ouch, I'm getting whacked by $target(name,clean)!
/target clear
/return
Sub Event_Fizzle
/varset FIZZLECHECK 1
/return
Sub CastSpell
| $p0: id to cast on
| $p1: spell to cast
| $l0: Was sitting?
| $l1: Real target
/if $char(state)==STUN /return
/varset l0 0
/varset l1 $target(id)
/varset l2 0
:DoCast
/varset OKTOCAST 1
/if n $char(mana,cur)<$int($spell("$p1",mana)+MANABUFFER) /goto :Exit
/if n $l2==0 /gsay Casting $p1 on << $spawn($p0,name,clean) >>
/varset l2 1
/sendkey up up
/sendkey up down
/varset OKTOCAST 0
/varset FIZZLECHECK 0
/target id $p0
/if $char(state)==SIT /varset l0 1
/if n $l0==1 /stand
/cast "$p1"
/varset CASTTIMER $int($spell("$p1",casttime)*10+5)
/if n $l1!=0 /target id $l1
/if n $l1==0 /target clear
/if $target()==TRUE /call ClearBadTargets
/varset l1 $target(id)
:WaitCast
/doevents
/if n $FIZZLECHECK==0 /if n $CASTTIMER>0 /goto :WaitCast
/if n $FIZZLECHECK==0 /goto :Exit
/delay 1
/goto :DoCast
:Exit
/if n $l1==0 /target clear
/if n $l1!=0 /call ClearBadTargets
/if n $l0==1 /sit
/varset CASTNEXTTIMER $int($spell("$p1",recasttime)*10+5)
/return


lets assume your character's ,which you will be controlling the bot with, name is Smurf then the line shoud bedawnoffatex wrote: #define MASTERNAME <name of master> //edit this
Code: Select all
#define MASTERNAME SmurfCode: Select all
//edit this
donations for this month's patches.

Code: Select all
//Stuff added to give credit where it is due. Yay Plazmic and your macro
#turbo
#chat tell
#event CantSee "You cannot see your target"
#event HitsYou "s YOU for "
#event HitsYou " YOU, but misses."
#event Fizzle "Your spell fizzles!"
#event Fizzle "You haven't recovered yet..."
#event Fizzle "Spell recovery time not yet met."
#event Fizzle "Your spell is interrupted."
#define MANABUFFER 30
#define MASTERNAME Blueballs~
#define CASTTIMER t0
#define CASTNEXTTIMER t1
#define NEXTOUCHTIMER t2
#define NEXTHOTTIMER t3
#define MANATIMER t4
#define OKTOCAST v80
#define FIZZLECHECK v82
#define HOTSPELL v74
#define HOTHP v75
#define HOTDUR v76
#define HEALHP v77
#define HEALSPELL v78
Sub Main
/varset v99 0
/varset OKTOCAST 1
/varset v0 0
/varset MANATIMER 1
:Loop
/doevents
/if n $char(ability,"sense heading")>0 /doability "sense heading"
/if n $OKTOCAST==0 /goto :SkipHealing
/varset l6 $group(lowhp)
/varset l7 $spawn($l6,hp,pct)
/varset l8 $spawn($l6,class)
/varset l9 0
/if n $l7>60 /goto :SkipHealing
/if n $l7<40 /varset l9 3
/if "$l8"=="Enchanter" /if n $l7<50 /varset l9 1
/if "$l8"=="Wizard" /if n $l7<50 /varset l9 1
/if "$l8"=="Magician" /if n $l7<50 /varset l9 1
/if "$l8"=="Necromancer" /if n $l7<50 /varset l9 1
/if "$l8"=="Cleric" /if n $l7<60 /varset l9 2
/if "$l8"=="Druid" /if n $l7<60 /varset l9 2
/if "$l8"=="Shaman" /if n $l7<60 /varset l9 2
/if "$l8"=="Cleric" /if n $l7<30 /varset l9 1
/if "$l8"=="Druid" /if n $l7<30 /varset l9 1
/if "$l8"=="Shaman" /if n $l7<30 /varset l9 1
/if n $l9==3 /if n $char(mana,cur)<$int($spell("Complete Healing",mana)+MANABUFFER) /varset l9 1
/if n $l9==1 /if n $char(mana,cur)<$int($spell("Supernal Remedy",mana)+MANABUFFER) /varset l9 2
/if n $l9==2 /if n $char(mana,cur)<$int($spell("Celestial Healing",mana)+MANABUFFER) /varset l9 0
/if n $l9==3 /call CastSpell $l6 "Complete Healing"
/if n $l9==2 /call CastSpell $l6 "Celestial Healing"
/if n $l9==1 /call CastSpell $l6 "Supernal Remedy"
/if n $l9==2 /if n $OKTOCAST==0 /varset NEXTHOTTIMER 18s
:SkipHealing
/doevents
/if n $char(hp,pct)<10 /call GetOutOfDodge
/goto :Loop
/return
Sub Event_Chat
/if "$p0"!="MASTERNAME" /return
/if "$p2"~~"sit" /call Do_Sit $p0
/if "$p2"~~"come" /call Do_Come $p0
/if "$p2"~~"gate" /call Do_Gate $p0
/if "$p2"~~"mana" /tell $p0 $char(mana,pct)m ($char(mana,cur)/$char(mana,max))
/if "$p2"~~"help" /tell $p0 Help: sit, come, gate, mana
/return
Sub Do_Sit
/if $char(state)==STAND {
/tell $p0 Sitting down
/sit
}
/return
Sub Do_Come
/target $p0
/if $target(type)!=PC /return
/tell $p0 Coming to you
/gotoxy target
/face fast heading $target(heading)
/if $char(state)==STAND /sit
/return
Sub Do_Gate
/tell $p0 Gating
/gate
/return
Sub GetOutOfDodge
/gate
/delay 30s
/sit
/delay 2s
/camp
/endmacro
Sub Event_Timer
/if t$p0==CASTNEXTTIMER /varset OKTOCAST 1
/if t$p0==MANATIMER {
/gsay $char(mana,pct)m
/varset MANATIMER 3m
}
/return
Sub ClearBadTargets
/if $target(type)==CORPSE /target clear
/for l0 0 to 5
/if n $target(id)==$group($l0) /target clear
/next l0
/return
Sub Event_HitsYou
/if n $char(hp,pct)<10 /call GetOutOfDodge
/if n $NEXTOUCHTIMER>0 /return
/varset NEXTOUCHTIMER 12s
/tell MASTERNAME Ouch, I'm getting whacked by $target(name,clean)!
/target clear
/return
Sub Event_Fizzle
/varset FIZZLECHECK 1
/return
Sub CastSpell
| $p0: id to cast on
| $p1: spell to cast
| $l0: Was sitting?
| $l1: Real target
/if $char(state)==STUN /return
/varset l0 0
/varset l1 $target(id)
/varset l2 0
:DoCast
/varset OKTOCAST 1
/if n $char(mana,cur)<$int($spell("$p1",mana)+MANABUFFER) /goto :Exit
/if n $l2==0 /gsay Casting $p1 on << $spawn($p0,name,clean) >>
/varset l2 1
/sendkey up up
/sendkey up down
/varset OKTOCAST 0
/varset FIZZLECHECK 0
/target id $p0
/if $char(state)==SIT /varset l0 1
/if n $l0==1 /stand
/cast "$p1"
/varset CASTTIMER $int($spell("$p1",casttime)*10+5)
/if n $l1!=0 /target id $l1
/if n $l1==0 /target clear
/if $target()==TRUE /call ClearBadTargets
/varset l1 $target(id)
:WaitCast
/doevents
/if n $FIZZLECHECK==0 /if n $CASTTIMER>0 /goto :WaitCast
/if n $FIZZLECHECK==0 /goto :Exit
/delay 1
/goto :DoCast
:Exit
/if n $l1==0 /target clear
/if n $l1!=0 /call ClearBadTargets
/if n $l0==1 /sit
/varset CASTNEXTTIMER $int($spell("$p1",recasttime)*10+5)
/return
Code: Select all
/if "$l8"=="Enchanter" /if n $l7<50 /varset l9 1
Code: Select all
/if "$l8"=="Enchanter" {
/if n $l7<50
/varset l9 1
}
}

