The script works for me on my system. It should work for you too but it may require some fiddling. Here is why. I don't know how to use #event's. I could learn but I like my system better. The limitation with events is that for each reason a song stps you need a seperate #event. At the high level that could be missed notes, not ready to cast, stun, silence, etc.
Because of that though there are two vars you may need to customize, Delay and WatchNum. What WatchNum does is it sets the time that the script should loop while casting to make sure it is still casting. If not, the script assumes the song was stopped prematurely and it attempts to restart the song. The problem with doing it that way is that if there was no Delay what was happening was it would finish casting, think it had stopped prematurely and recast the spell. It was simply going too fast. So I had to add a delay. The tighter you make WatchNum to the ending of a song, the lower your delay can be. Generally I've found that if I drop WatchNum by 1 I can lower Delay by 2. This is where your mileage may vary though.
Code: Select all
| Twist.mac by Gabriela
| version date - Tuesday January 13 2004 -- 17:03 -05:00
|
| This is a revamp of my first attempt at macroing. Unlike
| some of the other macros it has no detection for player state.
| It works for me though. There are some numbers you _might_
| need to change. For more on that reference the post.
| For now the syntax is:
| /Macro Twist 123
| /Macro Twist 1745
| /Macro Twist STOP
|
| I use the STOP parameter for when I have the macro running and
| I want to mezz something. My Mezz hotkey use to have to include
| /stopsong, endmacro, /attack off, /cast "lullaby of morell".
| Now it is just /macro twist STOP, /cast "lullaby of morell". At
| some point I might add to it to give priority to songs or enable
| hot swapping of songs. Just maybe!
|
| A big thanks to Raebis and dont_know_at_all on IRC for various
| help along the way. I also referenced bits of Raebis's chant
| kiting macro to learn how to do the arrays and for loops.
#turbo 15
Sub Main(Songs)
/zapvars
/declare Song global
/declare SongNum global
/declare SongArray array
/declare Watch timer
/declare WatchNum global
/declare Delay global
/declare SongFor local
/varset Song 1
/if @Songs=="STOP" {
/stopsong
/attack off
/return
}
/if n $strlen(@Songs)>="5" {
/echo WARNING: This Macro has only been tested using four songs. If you want to twist more it will require modification. If you know enough about the scripting language to get it to twist five then you know enough to get rid of this message.
/return
}
/if n $strlen(@Songs)=="4" {
/varset Delay 5
/varset WatchNum 30
/varset SongNum 4
/echo Delay is: @Delay Watch is: @WatchNum
/goto :SongList
}
/varset Delay 7
/varset WatchNum 31
/varset SongNum $strlen(@Songs)
/echo Delay is: @Delay Watch is: @WatchNum
:SongList
/for SongFor 1 to @SongNum
/varset SongArray(@SongFor) $mid($calc(@SongFor-1),1,@Songs)
/echo Song @SongFor: $char(gem,@SongArray(@SongFor))
/next SongFor
:Loop
/if n @Song==@SongNum {
/call Cast @SongArray(@Song)
/varset Song 1
/goto :Loop
}
/call Cast @Song
/varset Song $calc(@Song+1)
/goto :Loop
/return
Sub Cast
:Start
/stopsong
/cast @Param0
/varset Watch @WatchNum
:Check
/delay @Delay
/if n @Watch==0 /goto :End
/if $char(casting)=="FALSE" /goto :Start
/if n @Watch>0 /goto :Check
:End
/return

