Page 1 of 1

spellcast.mac not included anymore?

Posted: Thu Apr 17, 2003 4:02 am
by Clawed
Probably some of the code doesn't work anymore, but I'd like to see spellcast.mac still included in the release package (CVS). Spent a long time searching on these forums for it, then did a local search on my hard drive and found 11 copies of it. :shock: Heh, but anyway, would be nice to see this included in CVS. Maybe with edits.

Or was it never included with the release? Hmm, I forget.

Spellcast.mac

Posted: Thu Apr 17, 2003 4:16 am
by grimjack
This is the one I had. I think it was included in the last source zip.

Code: Select all

|** SpellCast.mac 
 ** This will cast a spell reliably for you...
 ** Usage:
 ** /call Cast "spellname"
 ** It will return the following values:
 ** CAST_SUCCESS
 ** CAST_UNKNOWNSPELL
 ** CAST_OUTOFMANA
 ** CAST_OUTOFRANGE
 ** CAST_CANNOTSEE
 ** CAST_STUNNED
 ** CAST_RESISTED
 **|

#event Fizzle "Your spell fizzles!"
#event Interrupt "Your spell is interrupted."
#event Recover "You haven't recovered yet..."
#event Resisted "You target resisted the"
#event OutOfMana "Insufficient Mana to cast this spell!"
#event OutOfRange "Your target is out of range, get closer!"
#event NoLOS "You cannot see your target."
#event Stunned "You cannot cast while stunned"
#event Standing "You must be standing to cast a spell"
#event Collapse "Your gate is too unstable, and collapses."

#define CastStatus v59
#define CastTimer t7

#define CAST_SUCCESS 0
#define CAST_UNKNOWNSPELL 1
#define CAST_RESTART 2
#define CAST_OUTOFMANA 3
#define CAST_OUTOFRANGE 4
#define CAST_CANNOTSEE 5
#define CAST_STUNNED 6
#define CAST_RESISTED 7

Sub Cast
  /if n $char(gem,"$p0")==0 /return CAST_UNKNOWNSPELL
  :StartCast
  /if n $char(gem,"$p0")<0 /call WaitForRefresh "$p0"
  /cast "$p0"
  /varset CastTimer $int($spell("$p0",casttime)*10+$spell("$p0",recoverytime)*10)
  /varset CastStatus CAST_SUCCESS
  :WaitCast
     /doevents Fizzle
     /doevents Interrupt
     /doevents Recover
     /doevents Standing
     /doevents OutOfRange
     /doevents OutOfMana
     /doevents NoLOS
     /doevents Resisted
     /if n $CastStatus==CAST_RESTART /goto :StartCast
     /if n $CastStatus>CAST_RESTART /return $CastStatus
  /if n $CastTimer>0 /goto :WaitCast
  /varset CastTimer 0
/return CAST_SUCCESS

Sub WaitForRefresh
   :LoopWaitForRefresh
      /delay 0
   /if n $char(gem,"$p0")<0 /goto :LoopWaitForRefresh
/return

Sub Event_Fizzle 
   /varset CastStatus CAST_RESTART 
/return

Sub Event_Interrupt
   /varset CastStatus CAST_RESTART 
/return

Sub Event_Recover
   /varset CastStatus CAST_RESTART 
   /delay 5
/return

Sub Event_Standing
   /varset CastStatus CAST_RESTART
   /stand
/return

Sub Event_Collapse
   /varset CastStatus CAST_RESTART
/return

Sub Event_OutOfMana
   /varset CastStatus CAST_OUTOFMANA
/return

Sub Event_OutOfRange
   /varset CastStatus CAST_OUTOFRANGE
/return

Sub Event_NoLOS
   /varset CastStatus CAST_CANNOTSEE
/return

Sub Event_Stunned
   /varset CastStatus CAST_STUNNED
/return

Sub Event_Resisted
   /varset CastStatus CAST_RESISTED
/return
Thanks

Posted: Thu Apr 17, 2003 9:15 am
by Clawed
Then I tried using the Cast subroutine, and it crashed the client. I'm assuming several of the $char() attributes aren't working as intended, whether that be due to a struct error or a code error.

Posted: Thu Apr 17, 2003 6:51 pm
by Droken
NT