Sounds like a lot of fun!
Moderator: MacroQuest Developers



Code: Select all
#event Target "Your target is out of range, get closer!"
#event Target "You must first select a target for this spell!"
#event Restart "bashes for"
#event Restart "You slow down."
#event Restart "You miss a note, bringing your song to a close!"
#event Restart "You haven't recovered yet..."
#define CastTimer t0
#define CurSpell v10
Sub Main
/if $p0=="" /call lochere
/if $p0==NULL /call lochere
/varset a(0,1) 1
/varset CurSpell 1
/varset t0 0
:loop
/if n $CastTimer<=0 /call Sing $int($a(0,1))
/call circ $p0 $p1 $p2
/doevents
/goto :loop
/return
Sub Sing
/stopsong
/varset CastTimer 35
/cast $p0
/Call Switch
/doevents
/return
sub circ
/if n $distance($p0,$p1)<($p2/2){
/face heading $calc($heading($p0,$p1)+180)
} else {
/face heading $calc($heading($p0,$p1)+$calc(90*$calc($p2/$distance($p0,$p1))))
}
/return
Sub Target
/tar npc range $calc($char(level)-5) $calc($char(level)+5)
/return
Sub lochere
/call Main $char(y) $char(x) 70
/return
Sub Restart
/varset CastTimer 0
/varset CurSpell 1
/return
Sub Switch
/varadd CurSpell 1
/if $CurSpell==1 {
/varset a(0,1) 1
/return
}
/if $CurSpell==2 {
/varset CurSpell 1
/if n $char(hp,pct)>=90 {
/varset a(0,1) 2
} else {
/varset a(0,1) 3
}}
/return
Code: Select all
#define CastTimer t0
#define CurSpell v10
Sub Main
/varset a(0,1) 1
/varset CurSpell 1
/varset t0 0
:loop
/if n $CastTimer<=0 /call Sing $int($a(0,1))
/goto :loop
/return
Sub Sing
/stopsong
/varset CastTimer 35
/cast $p0
/Call Switch
/return
Sub Switch
/if $CurSpell==1 {
/varset a(0,1) 1
/varset CurSpell 2
}
/if $CurSpell==2 /if n $char(hp,pct)>=90 {
/varset CurSpell 1
/varset a(0,1) 2
}
/if $CurSpell==2 /if n $char(hp,pct)<90 {
/varset CurSpell 1
/varset a(0,1) 3
}
/return


Code: Select all
| solo.mac
| code by whatever BEHEMOTH could patch together from others.
#event MissedNote "You miss a note, bringing your song to a close!"
#event MobDead "You gain experience"
#event Stunned "You cannot cast while stunned"
#event OutOfRange "Your target is out of range, get closer!"
#event NoSpeed "You slow down."
#event NoTarget "You must first select a target for this spell"
#event EXP "You gain experience!!"
#event LOADING "LOADING"
#event stunoff "You are unstunned"
#define CastTimer t7
#define yloc v9
#define xloc v10
#define radius v11
|If you dont specify a loc and radius, it will set to default. you can change this at lochere
Sub Main
/stopsong
/if $p0=="" /call lochere
/if $p0==NULL /call lochere
/varset yloc $p0
/varset xloc $p1
/varset radius $p2
|I wanted to be able to call this because it was giving me an error when i tried to use goto command
Sub speed
|speed song here, in gem#1
:SingLoopSpeed
/if n $CastTimer<=0 /call Sing 1
/call circ $yloc $xloc $radius
/if n $char(hp,pct)>=80 /goto :SingLoopDamage
/if n $char(hp,pct)<80 /goto :SingLoopHeal
/goto :SingLoopSpeed
/return
|damage song here. I use AOE DOT, but you could switch in bellow or chant. gem#2
:SingLoopDamage
/if n $CastTimer<=0 /call Sing 2
/goto :SingLoopSpeed
/goto :SingLoopDamage
|Heal song here. Gem#3
:SingLoopHeal
/if n $CastTimer<=0 /call Sing 3
/goto :SingLoopSpeed
/goto :SingLoopHeal
|hopefully will sing songs correctly...
Sub Sing
:StartSong
/call circ $yloc $xloc $radius
/varset CastTimer 0
/stop
/delay 1
/cast $p0
/varset CastTimer 35
:WaitSing
/call circ $yloc $xloc $radius
/doevents
/if n $CastTimer>0 /goto :WaitSing
/varset CastTimer 0
/return
|this goes back to speed song. dont want to drop that.
Sub Event_MissedNote
/varset CastTimer 0
/Call speed
/return
|this goes back to speed song. dont want to drop that.
Sub Event_Stunned
/varset CastTimer 0
/Call Speed
/return
|targets a closer xp giving mob that you can land spells on. you might want to adjust this.
Sub Event_OutOfRange
/tar npc range $calc($char(level)-6) $calc($char(level)+5)
/return
|this goes back to speed song. dont want to drop that.
Sub Event_NoSpeed
/varset CastTimer 0
/Call Speed
/return
|targets a closer xp giving mob that you can land spells on. you might want to adjust this.
Sub Event_NoTarget
/tar npc range $calc($char(level)-6) $calc($char(level)+5)
/return
|targets a closer xp giving mob that you can land spells on. you might want to adjust this.
Sub Event_EXP
/tar npc range $calc($char(level)-6) $calc($char(level)+5)
/return
Sub Event_stunoff
/stop
/Call Speed
/return
|sets loc to your current loc and the radius to 30. it may be to close some mobs. no drum
Sub lochere
/call Main $char(y) $char(x) 30
/return
|Circ sub stolen from TheColonel
sub circ
/if n $distance($p0,$p1)<($p2/2){
/face heading $calc($heading($p0,$p1)+180)
} else {
/face heading $calc($heading($p0,$p1)+$calc(90*$calc($p2/$distance($p0,$p1))))
}
/return
|Should stop macro and camp if killed
Sub Event_LOADING
/sit
/camp desktop
/end
/return
