// Create the character IfSpawned IfStateIs0 // It's an imported spell in hand KeepAction Else // It's an explosion ring // Set the size of the explosion... GetState tmpargument = tmpargument + ACTIONKA - 1 // KA, KB, or KC based on size DoActionOverride NotAnItem tmpargument = 254 SetContent SetLight tmpx = selfz tmpy = 255 IfXIsMoreThanY tmpx = tmpy tmpargument = tmpx SetFlyHeight tmpargument = 18 SetTime // Spawn some shrapnel GetState tmpx = tmpargument * 20 + 10 // Speed tmpy = 0 // Spacing tmpargument = tmpargument < 10 // Damage... 0-5, 4-9, or 8-13 SpawnPoofSpeedSpacingDamage IfChanged // It's a spell in hand tmpargument = 0 SetState KeepAction // Spell AI... IfStateIs0 // Remove the charge IfTakenOut tmpargument = 0 SetContent SetTargetToWhoeverIsHolding IfTargetIsAPlayer tmpargument = 0 SendMessageNear // Allow it to be used IfUsed SetTargetToWhoeverIsHolding tmpx = selfx tmpy = selfy tmpdistance = selfz tmpargument = 0 SpawnExactParticle GetContent tmpx = tmpargument tmpy = targetmanaflow IfXIsLessThanY tmpy = 2000 // Maximum charge IfXIsLessThanY tmpy = tmpargument tmpx = 8 tmpargument = tmpx CostTargetMana tmpargument = tmpy + tmpx + tmpx SetContent Else // Make the spell fizzle or autocast... tmpargument = 1 SendMessageNear tmpargument = 50 SetReloadTime Else // Exceeded mana flow rate... Lose control tmpargument = 1 SendMessageNear tmpargument = 50 SetReloadTime // Cast the spell Else GetContent tmpx = tmpargument tmpargument = 0 SetContent tmpy = 0 IfXIsMoreThanY tmpx = tmpx - 512 IfXIsMoreThanY // Figure out the charge state, and spawn accordingly tmpturn = tmpx > 9 + 1 // State 1, 2, or 3 for child tmpargument = 2 tmpx = selfx tmpy = selfy tmpdistance = selfz SpawnExactParticleEndSpawn tmpargument = ACTIONZC IfHeldInLeftHand tmpargument = ACTIONZA TargetDoAction IfUsageIsKnown GetState Else tmpargument = 30 tmpdistance = EXPSECRET GiveExperienceToTarget MakeUsageKnown MakeNameKnown // Return to spellbook, Do last! IfDropped tmpargument = 0 SetContent BecomeSpellbook DisaffirmCharacter tmpargument = ACTIONJB DoAction KeepAction Else // Make the explosion ring fade out... IfTimeOut GetContent tmpargument = tmpargument - 14 SetContent SetLight tmpx = tmpargument tmpy = 240 IfXIsEqualToY // Wake those sleepy heads... tmpargument = [WAKE] tmpdistance = [WAKE] OrderSpecialID tmpargument = 255 FlashVariable End