Circle Jerk
Posted: Sun May 09, 2004 8:57 pm
Yes this is the Bard Chantkite Macro that runs around in a predefined circle and kills stuff.....
| - circle.mac - By Pi
|
|
| ********************************************************** |
| ***** This Bard Macro Chant Kites Mobs in a **** |
| ***** defined radius running in a circular pattern **** |
| ********************************************************** |
| ***** I Borrowed stuff from all over **** |
| ***** So don't whine too much **** |
| ********************************************************** |
| usage: circle.mac <Target Y,Target X,Radius,Songlist,Selos>
| Example -- circle.mac ${Target.X} ${Target.Y} 70 4567 3
| ********************************************************** |
| ********************************************************** |
#event NeedTarget "You must first select a target for this spell!"
#event MissedNote "You miss a note, bringing your song to a close!"
#event Stun "You are unstunned"
#event Oor "target is out of range"
Sub Main(int RubberY,int RubberX,int CirRadius,CombatGems,Selo)
/declare CirX int outer
/declare CirY int outer
/declare CirR int outer
/declare Songtimer timer outer
/declare Selosong int outer
/declare Selotimer timer outer
/declare Cursong int outer
/declare Prevsong int outer
/declare Nsongs int outer
/declare Songs[10] int outer
/declare TwistI int outer
/declare NCombatSongs int outer
/declare CombatSongList string outer
/declare angstimer timer outer
/declare Angstsong int outer
/declare Healsong int outer
/declare Notarget int outer
/declare MobMaxLevel int outer
/declare MobMinLevel int outer
/declare MobMaxRange int outer
/varset CirX ${RubberY}
/varset CirY ${RubberX}
/varset CirR ${CirRadius}
/varset Selotimer 0
/varset Songtimer 0
/varset angstimer 240
/varset Cursong 1
/varset Notarget 0
/varset CombatSongList ${CombatGems}
/varset NCombatSongs ${Int[${String[${CombatGems}].Length}]}
|This sets your Selo Gem number
/varset Selosong ${Selo}
| ********************************************************** |
| ***** These Variables are specific to your Character ***** |
| ********************************************************** |
|This sets your Angst Gem number
/varset Angstsong 8
|This is your Healsong
/varset Healsong 2
| This is the Maximum and Minimum Mob Levels as well as Max Distance
/varset MobMaxLevel 65
/varset MobMinLevel 59
/varset MobMaxRange 200
| ********************************************************** |
| ********************************************************** |
/if (!${Defined[CirRadius]}) {
/echo usage: circle.mac <Target Y,Target X,Radius,Songlist,Selos>
/echo Example -- circle.mac 600 -900 70 4567 3
/return
}
/if (${Defined[CombatGems]}) {
/for TwistI 1 to ${NCombatSongs}
/varset Songs[${TwistI}] ${String["${CombatSongList}"].Mid[${TwistI},1]}
/echo Song ${TwistI} is ${Songs[${TwistI}]}
/next TwistI
}
/echo Number of Songs ${NCombatSongs}
/echo Song List ${CombatGems}
/echo Radius ${CirR}
/echo Y ${CirY}
/echo X ${CirX}
:loop
/if (${Me.PctHPs}<75) {
/varset Songs[1] ${Healsong}
}
/if (${Me.PctHPs}>95) {
/varset Songs[1] ${String["${CombatSongList}"].Mid[1,1]}
}
/call Circ
/doevents
/if (${Selotimer}<=0) {
/call Singselo
}
/if (${Songtimer}<=0) {
/call Sing
}
/if (${angstimer}<=0) {
/call Angst
}
| *** This Checks for Selos Duration in Buff Slot 1
/if (${Me.Buff[1].Duration}<=6) {
/echo Need Selos Badly!
/call SeloBuff
}
/goto :loop
/return
Sub SeloBuff
/declare ThisTimer timer local
/varset ThisTimer 33
/stopsong
/cast ${Selosong}
:SeloBuffLoop
/call Circ
/if (${ThisTimer}>0) {
/goto :SeloBuffLoop
}
/return
Sub Circ
/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*${CirR}/${Math.Distance[${CirX},${CirY}]}]}]}
}
/return
Sub Sing
/stopsong
/varset Prevsong ${Cursong}
/echo Casting gem ${Songs[${Cursong}]}
/cast ${Songs[${Cursong}]}
/varset Songtimer 33
/varcalc Cursong ${Cursong}+1
/if (${Cursong}>${NCombatSongs}) {
/varset Cursong 1
}
/call Circ
/doevents
/return
Sub Singselo
/stopsong
/echo Casting SELO"S!!!!
/cast ${Selosong}
/varset Songtimer 33
/varset Selotimer 1300
/return
Sub Angst
/stopsong
/varset Cursong ${Prevsong}
/echo Casting Angst!!!!
/cast ${Angstsong}
/varset Songtimer 33
/varset angstimer 1300
/return
Sub Event_NeedTarget
| get target
/tar npc radius ${MobMaxRange} range ${MobMinLevel} ${MobMaxLevel}
/call Circ
/doevents
/return
Sub Event_MissedNote
| restart song
/varset Cursong ${Prevsong}
/varset Songtimer 0
/call Circ
/doevents
/return
Sub Event_Stun
/sendkey up up
/delay 3
/sendkey up down
/varset Selotimer 0
/return
Sub Event_Oor
/varcalc Notarget ${Notarget}+1
/if (${Notarget}>9) {
/tar npc radius ${MobMaxRange} range ${MobMinLevel} ${MobMaxLevel}
/varset Notarget 0
}
/varset Songtimer 0
/call Circ
/doevents
/return