Simple Kite (bard)
Posted: Wed May 05, 2004 3:41 pm
This is a manual bard kite macro.
this is for skilled kiters only and i take no responabilty in the many many many deaths you will have from running this macro
this is for skilled kiters only and i take no responabilty in the many many many deaths you will have from running this macro
Code: Select all
| - Kite.mac -
| Hacked together by Brick 37 twisting 3 AE dots, 49 Selo's,
| Changed by jcooler to add the extra coolness which cast 4 AE dots and no selo's
| Converted by ******** whom shall remain nameless untill he give me a good name =p
|
| swarm <dot1> <dot2> <dot3> <dot4> <loc x> <loc y> <radius>
|
| Runs around in a cirle while twisting four DOT AEs.
|
| DISCLAIM this is outdated by the PLUGIN but for the rest of
| you still in the stoneage have fun with it
#event MissedNote "You miss a note, bringing your song to a close!"
#event NeedTarget "You must first select a target for this spell!"
#event Slow "you slow down"
#event Exp "You gain "
#event Recovered "You haven't recovered yet..."
#event Notsee "You cannot see"
#event Died "You have entered"
| this needs to be on now -- parameter parsing takes too long
#turbo
Sub Main(p0,p1,p2,p3,p4,p5,p6)
/declare cirx float outer
/declare ciry float outer
/declare cirr float outer
| array of songs
/declare a[4] int outer
| number of songs
/declare nsongs int outer
| current song 1-3
/declare cursong int outer
/declare prevsong int outer
/declare exper float outer
/declare aaexp float outer
/declare health int outer
/declare songtimer timer outer
/declare rangecalc int outer
/declare lastmobid string outer
/varset rangecalc 0
/if (!${Defined[p0]}) {
/echo usage: swarm.mac <DOT> <DOT> <DOT> <selo> <loc x> <loc y> <radius>
/return
}
| check if the location was passed in...
/if (!${Defined[p4]}) {
/varset cirx ${char[y]}
/varset ciry ${char[x]}
/varset cirr 32
} else {
/varset cirx ${p4}
/varset ciry ${p5}
/varset cirr ${p6}
}
/varset nsongs 4
| First song
/varset a[1] ${p0}
/echo Song 1: ${Me.Gem[${p0}]}
/if (${Defined[p1]}) {
/varset a[2] ${p1}
/echo Song 2: ${Me.Gem[${p1}]}
}
/if (${Defined[p2]}) {
/varset a[3] ${p2}
/echo Song 3: ${Me.Gem[${p2}]}
}
/if (${Defined[p3]}) {
/varset a[4] ${p2}
/echo Song 4: ${Me.Gem[${p3}]}
}
| always incremented before starting a new
| song. songs start at 1 so we can make
| cursong = 0 to restart the list
/varset cursong 1
/varset songtimer 64
:Loop
/if (${songtimer}<=0) /call Sing
/call circ ${cirx} ${ciry} ${cirr}
/doevents
/goto :Loop
/return
Sub Sing
/stopsong
/keypress 0
/cast ${cursong}
/if ( ${rangecalc}!=0) /varset rangecalc 0
| /echo casting ${cursong}
/varset prevsong ${cursong}
/varcalc cursong ${cursong} + 1
/varset songtimer 32
/call circ ${cirx} ${ciry} ${cirr}
/doevents
/if (${cursong}>${nsongs}) /varset cursong ${a[1]}
/return
Sub circ
/if (${Me.Speed}<=.2) /keypress Num_Lock
/if (${Math.Distance[${cirx},${ciry}]}<${Math.Calc[${cirr}/2]}) {
/face heading ${Math.Calc[${Heading[${cirx},${ciry}].DegreesCCW}+180]}
} else {
/face heading ${Math.Calc[${Heading[${cirx},${ciry}].DegreesCCW}+${Math.Calc[90*${Math.Calc[${cirr}/${Math.Distance[${cirx},${ciry}]}]}]}]}
}
/return
Sub Event_MissedNote
| restart song
/varset cursong ${prevsong}
/varset songtimer 0
/call circ ${cirx} ${ciry} ${cirr}
/doevents
/return
Sub Event_Recovered
| restart song
/if (${cursong}!=${a[5]}) {
/varset cursong ${prevsong}
}
/varset songtimer 0
/call circ ${cirx} ${ciry} ${cirr}
/doevents
/return
Sub Event_Notsee
/stopsong
/varset cursong ${prevsong}
/varset songtimer 0
/call circ ${cirx} ${ciry} ${cirr}
/doevents
/return
Sub Event_NeedTarget
| get target
/tar npc
/varset lastmobid ${Target[ID]}
/call circ ${cirx} ${ciry} ${cirr}
/doevents
/return
Sub Event_Died
/delay 10
/sit
/delay 10
/end
/return
Sub Event_Exp
/stopsong
/tar npc
/varset cursong ${a[1]}
/varset songtimer 0
/call circ ${cirx} ${ciry} ${cirr}
/doevents
/return
Sub Event_OOR
/varcalc rangecalc ${rangecalc}+1
/if n (${rangecalc}>=10) {
/press esc
/varset rangecalc 0
/tar npc
/call circ ${cirx} ${ciry} ${cirr}
/doevents
}
/return