Code: Select all
|SpellSub
|Main spell casting sub.
|Used to handle all spell casting. Auto mems spells and handles fizzles.
|Will need to set the DefaultSpellSet var to your default spell set.
|
|Usage /call SpellSub "spellname"
|
Sub SpellSub
/if "@Param0"=="NA" /return
/varset Fail 0
/if n @SitAfterCast==1 /varset SitTimer 1140m
/varset SpellName "@Param0"
|/if n $target(distance)>$spell("@SpellName",range) {
| /if n $spell("@SpellName",range)>0 {
| /varset Fail 1
| /call ChatOut 3 @MasterName "Too far away. "
| /varset CTimer 0
| /return 1
| }
|}
/if $char(state)==SIT {
/stand
}
/varset Remem 0
/if $char(ismoving)!=FALSE {
/sendkey up up
/sendkey up down
/delay 1s
}
:WaitForStop
/doevents
/if n $BreakOut==1 /return
/echo $char(ismoving)
/if $char(ismoving)!=FALSE {
/delay 1s
/goto :WaitForStop
}
/if $char(book,"@SpellName")=="NULL" /varset Fail 1
:MemWait
/doevents
/if n @Fail==1 {
/varset Fail 0
/if n @Remem==1 {
/memspellset @DefaultSpellSet
:loadsploop
/delay 5
/if $char(spellbook)=="TRUE" /goto :loadsploop
}
/if n @SitAfterCast==1 {
/if $char(state)==STAND /sit
}
/return 1
}
/varset SpellSlot $char(gem,"@SpellName")
/if n @SpellSlot<0 {
/delay 1s
/goto :MemWait
}
/if n @SpellSlot==0 {
/memspell 2 "@Param0"
/varset SpellSlot 2
/varset Remem 1
:refreshwait
/doevents
/if n @Fail==1 {
/varset Fail 0
/if n @Remem==1 {
/memspellset @DefaultSpellSet
:loadsploop
/delay 5
/if $char(spellbook)=="TRUE" /goto :loadsploop
}
/if n @SitAfterCast==1 {
/if $char(state)==STAND /sit
}
/return 1
}
/delay 5
/if n $char(gem,"@SpellName")<=0 /goto :refreshwait
}
/varset CastTime "$spell("@SpellName",casttime)"
/varadd CastTime 1
:BeginCast
/varset Fail 0
/varset DoAgain 0
/varset StartCast 0
/call WaitForStart
:TimerLoop
/doevents
/if n @DoAgain==1 /goto :BeginCast
/if n @Fail==1 {
/varset Fail 0
/if n @Remem==1 {
/memspellset @DefaultSpellSet
:loadsploop
/delay 5
/if $char(spellbook)=="TRUE" /goto :loadsploop
}
/if n @SitAfterCast==1 {
/if $char(state)==STAND /sit
}
/return 1
}
/if n @CTimer>0 /goto :TimerLoop
/delay 2
/doevents
/if n @DoAgain==1 /goto :BeginCast
/if n @Remem==1 {
/memspellset default
:loadsploop
/delay 5
/if $char(spellbook)=="TRUE" /goto :loadsploop
}
/return 0 