• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

spellcast.mac help (1 Viewer)

morros

New member
Joined
Jun 8, 2005
RedCents
10¢
|
| SpellCast.inc
|
| Last Modified: 5/14/2004 9:30pm
| This will cast a spell reliably for you...
|
| Usage:
| /call Cast "spellname|itemname|AA#|AAskillname" [item|activate|gem#] [nocheck|dismount|nodismount]
|
| If no dismount or nodismount is provided it defaults to nodismount.
|
| This would essentially: /cast "Death Peace"
| example: /call Cast "Death Peace"
|
| This would essentially: Check for the spell in your spell slots, if not there mem it to spell
| gem slot 7 and then /cast "Death Peace"
| example: /call Cast "Death Peace" gem7
|
| This would essentially: /cast item "White Rope Bridle"
| example: /call Cast "White Rope Bridle" item
|
| This would essentially: /alt activate 169
| example: /call Cast "169" activate
| or...
| example: /call Cast "Divine Arbitration" activate
|
| This would dismount if your target was lost or dies mid-cast, cast Burn and mem it to spell
| slot 3 if it wasn't already memmed:
| example: /call Cast "Burn" gem3 dismount
|
| This would not dismount but would move you back and forth if your target was lost or dies mid-cast, cast Burn and mem
| it to spell slot 3 if it wasn't already memmed:
| example: /call Cast "Burn" gem3 nodismount
|
| 'nocheck' is the default for the "loss of target/target dying" value. If nocheck is specified (Or nothing was specified)
| no target checking will be performed and spellcast.inc should act like the spellcast.inc of the past.
|
| It will return the following values:
| CAST_SUCCESS
| CAST_UNKNOWNSPELL
| CAST_OUTOFMANA
| CAST_OUTOFRANGE
| CAST_CANNOTSEE
| CAST_STUNNED
| CAST_RESISTED
| CAST_TOOK2LONG
| CAST_ABILITYNOTREADY
| CAST_IMMUNESLOW
| CAST_LOSTTARGET
|
| New Vars Modification
| Plazmic's no globals needed version
|
| Oct 09, 2003 - Updated to work with new vars and $char(casting) -gf
| Oct 11, 2003 - switched some logic, removed defines -gf
| Oct 15, 2003 - Item support added by -EqMule
| XXX xx, xxxx - Modified to add automeming of spells. -Goofmester1
| Dec 26, 2003 - fd fail 1 added -m0nk
| Jan 01, 2004 - timeout(5s) added to stop "dead-time" -m0nk
| Jan 01, 2004 - switchd fdfail to a standing check. -m0nk
| Jan 01, 2004 - added silence checking as a stun check -m0nk
| Feb 17, 2004 - added AA activate capabilities -ml2517
| Apr 11, 2004 - Updated for new Parm system -ml2517
| Apr 12, 2004 - Will spit out a different message on immune to slows. -ml2517
| Apr 16, 2004 - Removed /sendkeys and replaced with /keypress. -ml2517
| Apr 17, 2004 - Various code enhancements. -Wassup
| Apr 20, 2004 - Updated all of the /if's to have parenthesis. -ml2517
| Apr 25, 2004 - Updated to new variable system. -ml2517
| Apr 29, 2004 - Fixed Item problem -ml2517
| Apr 29, 2004 - Changed the alt ability to use AltAbilityReady instead of an event. -ml2517
| May 02, 2004 - Added the ability to specify a gem slot to mem spells to. -ml2517
| May 10, 2004 - Updated for new event system.
| May 12, 2004 - Added suggestions for loss of target and stun handling change. -ml2517
| May 13, 2004 - Activate now accepts AA skill by name or number. -ml2517
| May 14, 2004 - Added the nocheck value, it is the default. This bypasses the target checking code. -ml2517
|

#event Fizzle "#*#Your spell fizzles#*#"
#event Interrupt "#*#Your casting has been interrupted#*#"
#event Interrupt "#*#Your spell is interrupted.#*#"
#event Recover "#*#You haven't recovered yet...#*#"
#event Recover "#*#Spell recovery time not yet met.#*#"
#event Resisted "#*#Your 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 Stunned "#*#You *CANNOT* cast spells, you have been silenced!#*#"
#event Standing "#*#You must be standing to cast a spell#*#"
#event Standing "#*#has fallen to the ground.#*#"
#event Collapse "#*#Your gate is too unstable, and collapses.#*#"
#event ImmuneSlow "#*#Your target is immune to changes in its attack speed.#*#"


Sub Cast(SpellName,ItemFlag,DismountFlag)
/declare HaveTarget int local 0
/declare CastBarTime timer local
/declare CastCurrLocY float local 0
/declare CastCurrLocX float local 0
/varset CastCurrLocY ${Me.Y}
/varset CastCurrLocX ${Me.X}
/if (${Target.ID}>0) /varset HaveTarget 1
/if (!${Defined[CastGiveUpTime]}) /declare CastGiveUpTime timer local
/if (!${Defined[ItemFlag]}) /declare ItemFlag string local
/if (!${Defined[DismountFlag]}) {
/declare DismountFlag string local nocheck
/if (${ItemFlag.Find["dismount"]}) /varset DismountFlag ${ItemFlag}
}
/if (!${Me.Standing} && !${Me.Mount.ID}>0) /stand
/if (${Me.Moving}) {
/keypress forward
/keypress back
/delay 8
} else {
/delay 4
}
/if (${ItemFlag.Equal["Item"]} || ${ItemFlag.Equal["Activate"]}) /goto :StartCast

/if (!${Me.Gem["${SpellName}"]}) {
/if (${ItemFlag.Find[gem]}) {
/if (${Int[${ItemFlag.Right[1]}]}>0 && ${Int[${ItemFlag.Right[1]}]}<9) {
/memspell ${ItemFlag.Right[1]} "${SpellName}"
/delay 5s
} else {
/goto :GenericMem
}
} else {
:GenericMem
/memspell 5 "${SpellName}"
/delay 5s
}

}
:StartCast
/varset CastGiveUpTime 5s
:CastNow
/if (${ItemFlag.Equal["Item"]}) {
/call ClearReturnValue
/cast item "${SpellName}"
} else /if (${ItemFlag.Equal["Activate"]}) {
/call ClearReturnValue
/if (!${Me.AltAbilityReady[${SpellName}]}) /return CAST_ABILITYNOTREADY
/alt activate ${AltAbility[${SpellName}].ID}
/varset CastBarTime ${Me.Casting.CastTime}
} else {
/if (!${Me.Gem["${SpellName}"]}) /return CAST_UNKNOWNSPELL
/call ClearReturnValue
/if (!${Me.SpellReady["${SpellName}"]}) {
/if (${CastGiveUpTime}==0) /return CAST_TOOK2LONG
/delay 1
/goto :CastNow
}
/cast "${SpellName}"
/varset CastBarTime ${Math.Calc[${Me.Casting.CastTime}*10]}
}
:WaitCast
/if (${Me.Casting.ID}) {
/if ((!${Target.ID}>0 || ${Target.Type.Equal[CORPSE]}) && !${DismountFlag.Find[nocheck]} && ${HaveTarget}==1) {
/if (${Me.Mount.ID}>0) {
/if (${DismountFlag.Equal[dismount]}) {
/dismount
} else {
/if (!${ItemFlag.Equal["Item"]}) {
/if (${CastBarTime}<7) {
:Interrupt
/keypress FORWARD hold
/delay 6
/keypress FORWARD
/keypress BACK hold
/delay 8
/keypress BACK
} else {
:HoldForSpell
/delay 1
/if (${CastBarTime}<7) /goto :Interrupt
/goto :HoldForSpell
}
} else {
/keypress FORWARD hold
:Forward
/delay 1
/if (${Math.Distance[${CastCurrLocY},${CastCurrLocX}]}<6) /goto :Forward
/keypress FORWARD
/keypress BACK hold
:Backward
/delay 1
/if (${Math.Distance[${CastCurrLocY},${CastCurrLocX}]}>4) /goto :Backward
/keypress BACK
/if (!${Me.Casting.ID}>0) /goto :DuckTime
}
}
}
:DuckTime
/keypress FORWARD
/keypress BACK
/if (!${Me.Ducking}) /keypress DUCK
/delay 1
/if (${Me.Ducking}) /keypress DUCK
/return CAST_LOSTTARGET
}
/delay 1
/goto :WaitCast
}
/delay 1
/doevents Fizzle
/doevents Interrupt
/doevents Interrupt
/doevents Recover
/doevents Standing
/doevents OutOfRange
/doevents OutOfMana
/doevents NoLOS
/doevents Resisted
/doevents ImmuneSlow
/doevents Stunned
/doevents Collapse
/if (${Macro.Return.Equal["CAST_RESTART"]}) /goto :StartCast
/if (!${Macro.Return.Equal["NULL"]}) /return ${Macro.Return}
/return CAST_SUCCESS

Sub ClearReturnValue
/return NULL

Sub Event_Fizzle
/return CAST_RESTART

Sub Event_Interrupt
/return CAST_RESTART

Sub Event_Recover
/delay 5
/return CAST_RESTART

Sub Event_Standing
/stand
/return CAST_RESTART

Sub Event_Collapse
/return CAST_RESTART

Sub Event_OutOfMana
/return CAST_OUTOFMANA

Sub Event_OutOfRange
/return CAST_OUTOFRANGE

Sub Event_NoLOS
/return CAST_CANNOTSEE

Sub Event_Stunned
/delay 2s !${Me.Stunned}
/return CAST_RESTART

Sub Event_Resisted
/return CAST_RESISTED

Sub Event_ImmuneSlow
/return CAST_IMMUNESLOW




ok no how would i go about using this cuz i moded the clericspelltrainer for a ranger

#include spellcast.inc
#event NoComponents "#*#You are missing some required components.#*#"

Sub Main
/call RaiseSkill "Alteration" 200 "light healing"
/call RaiseSkill "Abjuration" 200 "shield of thistles"
/call RaiseSkill "Conjuration" 200 "stinging swarm"
/call RaiseSkill "Evocation" 200 "firefist"
/call RaiseSkill "Divination" 200 "bind sight"
/call RaiseSkill "Channeling" 200 "light healing"
/call RaiseSkill "Meditate" 200 "skin like rock"
/call RaiseSkill "Specialize alteration" 200 "light healing"
/endmacro
/return

Sub RaiseSkill(SkillName,LevelName,SpellName)
/echo - Raising ${SkillName} to ${LevelName} with ${SpellName}
/if (!${Me.Standing}) /stand

:CheckMana
/if (${Me.PctMana}<20) /goto :SitDown

:CheckCursor
/if (${Cursor.ID}) {
/autoinv
/goto :CheckCursor
}
and it said to have spellcast.mac and was just curious on how to use them with one another
 
SpellCast.inc is an include, you use it like a header file for a c/c++ program. Here is the spell trainer that I use. It trains your spell casting in the order that you have your spells in your gem slots. I can't remember where got it so, credit goes to whomever made it. Only mod's I've done to this one is "save as" ... it will even destroy your summoned items if needed. ...

SpellTrainer.mac
Rich (BB code):
#define MaxArcaneSkill 235
#chat tell
#event lang "tells you"

#include SpellCast.inc

Sub Main
   /declare currentSpell
   /declare maxSkill
   /declare skillName
   /declare spellName

   /varset currentSpell 1
   /varset maxSkill ${Math.Calc[${Me.Level}*5+5]}

   /if ( ${maxSkill} > 235 ) /varset maxSkill 235
      /echo maxSkill=${maxSkill}
      /target myself
   :nextSpell
      /if ( ${Bool[${Me.Gem[${currentSpell}]}]} ) {
         /varset skillName ${Me.Gem[${currentSpell}].Skill}
         /echo Training ${skillName} by casting ${Me.Gem[${currentSpell}]}
         /echo Current skill level is ${Me.Skill[${skillName}]}

      :castSpell
         /doevents
         /if ( ${Me.PctMana}<20) {
            /sit on
            /call MedBreak
         }
         /echo ${skillName}(${Me.Skill[${skillName}]})
         /if ( ${Me.Skill[${skillName}]} >= ${maxSkill} ) {

                    /varset currentSpell ${Math.Calc[${currentSpell}+1]}
                    /goto :nextSpell
                }
                /call CheckGM
                /call cast "${Me.Gem[${currentSpell}]}"
            :checkCursor
                /if (${Cursor.ID}) {
                    /destroy
                    /goto :checkCursor
                }
            /goto :castSpell
        }

    /sit
    /call MedBreak
    /camp
/return

Sub CheckGM
    :GMCheck
    /if (${Bool[${Spawn[gm].ID}]}) {
       /echo 'Cast Macro' A GM or Guide has been detected in the zone,  the macro will resume  when the zone is clear of GM/Guides
       /delay 600s
       /goto :GMCheck
    }
/return

Sub Event_Chat
  /echo Got a tell, pausing for 10 minutes
  /delay 600s
/return

Sub Event_Lang
  /echo Got a tell, pausing for 10 minutes
  /delay 600s
/return

Sub MedBreak
    /echo Time to med some.
    /stand
    /sit
    :MedMore
        /delay 2s
        /if (${Me.CurrentMana}<${Me.MaxMana}) /goto :MedMore
/return
 
This is my personal fav:
spell.mac
Rich (BB code):
Sub Main 
  
  /declare Maxskill int outer 
  /declare AlterationSpell outer 
  /declare AbjurationSpell outer 
  /declare EvocationSpell outer 
  /declare DivinationSpell outer 
  /declare ConjurationSpell outer 
  /declare SingSong outer 
  /declare DrumSong outer 
  /declare StringSong outer 
  /declare WindSong outer 
  /declare BrassSong outer 

  /varset Maxskill ${Math.Calc[(${Me.Level}*5)+4]} 
  

  /if (${Me.Class.Name.Equal[Bard]}) /goto :Brdspells 
  /if (${Me.Class.Name.Equal[Beastlord]}) /goto :Bstspells 
  /if (${Me.Class.Name.Equal[Cleric]}) /goto :Clrspells 
  /if (${Me.Class.Name.Equal[Druid]}) /goto :Druspells 
  /if (${Me.Class.Name.Equal[Enchanter]}) /goto :Encspells 
  /if (${Me.Class.Name.Equal[Magician]}) /goto :Magspells 
  /if (${Me.Class.Name.Equal[Necromancer]}) /goto :Necspells 
  /if (${Me.Class.Name.Equal[Paladin]}) /goto :Palspells 
  /if (${Me.Class.Name.Equal[Ranger]}) /goto :Rngspells 
  /if (${Me.Class.Name.Equal[Shadowknight]}) /goto :Skspells 
  /if (${Me.Class.Name.Equal[Shaman]}) /goto :Shmspells 
  /if (${Me.Class.Name.Equal[Wizard]}) /goto :Wizspells 

:Brdspells 
  /varset SingSong Jonthan's Whistling Warsong 
  /varset DrumSong Anthem de Arms 
  /varset StringSong Hymn of Restoration 
  /varset WindSong Tarew`s Aquatic Ayre 
  /varset BrassSong Denon`s Disruptive Discord 
 /if (${Me.Level}<18) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 18. 
    /endmacro 
  } 
/goto :Songreqs 

:Bstspells 
  /varset AlterationSpell Minor Healing 
  /varset AbjurationSpell Inner Fire 
  /varset EvocationSpell Blast of Frost 
  /varset DivinationSpell Flash of Light 
  /varset ConjurationSpell Sicken 
 /if (${Me.Level}<15) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 15. 
    /endmacro 
  } 
/goto :Prereqs 

:Clrspells 
  /varset AlterationSpell Minor Healing 
  /varset AbjurationSpell Courage 
  /varset EvocationSpell Strike 
  /varset DivinationSpell Flash of Light 
  /varset ConjurationSpell Summon Drink 
 /if (${Me.Level}<5) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 5. 
    /endmacro 
  } 
/goto :Prereqs 

:Druspells 
  /varset AlterationSpell Minor Healing 
  /varset AbjurationSpell Skin like Wood 
  /varset EvocationSpell Burst of Flame 
  /varset DivinationSpell See Invisible
  /varset ConjurationSpell Stinging Swarm 
 /if (${Me.Level}<5) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 5. 
    /endmacro 
  } 
/goto :Prereqs 

:Encspells 
  /varset AlterationSpell Strengthen 
  /varset AbjurationSpell Minor Shielding 
  /varset EvocationSpell Chaotic Feedback 
  /varset DivinationSpell True North 
  /varset ConjurationSpell Mesmerize 
 /if (${Me.Level}<8) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 8. 
    /endmacro 
  } 
/goto :Prereqs 

:Magspells 
  /varset AlterationSpell Renew Elements 
  /varset AbjurationSpell Minor Shielding 
  /varset EvocationSpell Burst of Flame 
  /varset DivinationSpell True North 
  /varset ConjurationSpell Summon Drink 
 /if (${Me.Level}<8) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 8. 
    /endmacro 
  } 
/goto :Prereqs 

:Necspells 
  /varset AlterationSpell Lifetap 
  /varset AbjurationSpell Minor Shielding 
  /varset EvocationSpell Ward Undead 
  /varset DivinationSpell True North 
  /varset ConjurationSpell Disease Cloud 
 /if (${Me.Level}<4) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 4. 
    /endmacro 
  } 
/goto :Prereqs 

:Palspells 
  /varset AlterationSpell Minor Healing 
  /varset AbjurationSpell Courage 
  /varset EvocationSpell Cease 
  /varset DivinationSpell Flash of Light 
  /varset ConjurationSpell Hammer of Wrath 
 /if (${Me.Level}<15) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 15. 
    /endmacro 
  } 
/goto :Prereqs 

:Rngspells 
  /varset AlterationSpell Minor Healing 
  /varset AbjurationSpell Skin like Wood 
  /varset EvocationSpell Flame lick 
  /varset DivinationSpell Camouflage 
  /varset ConjurationSpell Dance of the fireflies 
 /if (${Me.Level}<15) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 15. 
    /endmacro 
  } 
/goto :Prereqs 

:Skspells 
  /varset AlterationSpell Lifetap 
  /varset AbjurationSpell Numb the dead 
  /varset EvocationSpell Ward Undead 
  /varset DivinationSpell Sense the Dead 
  /varset ConjurationSpell Disease Cloud 
 /if (${Me.Level}<22) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 22. 
    /endmacro 
  } 
/goto :Prereqs 

:Shmspells 
  /varset AlterationSpell Minor Healing 
  /varset AbjurationSpell Inner Fire 
  /varset EvocationSpell Burst of Flame 
  /varset DivinationSpell Flash of Light 
  /varset ConjurationSpell Tainted Breath 
 /if (${Me.Level}<9) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 9. 
    /endmacro 
  } 
/goto :Prereqs 

:Wizspells 12 
  /varset AlterationSpell Fade 
  /varset AbjurationSpell Minor Shielding 
  /varset EvocationSpell Shock of Frost 
  /varset DivinationSpell True North 
  /varset ConjurationSpell Halo of Light 
  /if (${Me.Level}<12) { 
    /echo This macro won't function correctly until your ${Me.Class} is level 12. 
    /endmacro 
  } 
/goto :Prereqs 
:Songreqs 
 /if (${Bool[${Me.Book[${SingSong}]}]}==FALSE) { 
    /echo You don't have ${SingSong}.  
    /echo Please check the songs listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${DrumSong}]}]}==FALSE) { 
    /echo You don't have ${DrumSong}.  
    /echo Please check the songs listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${StringSong}]}]}==FALSE) { 
    /echo You don't have ${StringSong}.  
    /echo Please check the songs listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${WindSong}]}]}==FALSE) { 
    /echo You don't have ${WindSong}.  
    /echo Please check the songs listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${BrassSong}]}]}==FALSE) { 
    /echo You don't have ${BrassSong}.  
    /echo Please check the songs listed in the macro for what you need. 
    /endmacro 
  } 
/goto :Bardsongprep 
:Prereqs 


  

  /if (${Bool[${Me.Book[${AlterationSpell}]}]}==FALSE) { 
    /echo You don't have ${AlterationSpell}.  
    /echo Please check the spells listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${AbjurationSpell}]}]}==FALSE) { 
    /echo You don't have ${AbjurationSpell}.  
    /echo Please check the spells listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${EvocationSpell}]}]}==FALSE) { 
    /echo You don't have ${EvocationSpell}.  
    /echo Please check the spells listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${DivinationSpell}]}]}==FALSE) { 
    /echo You don't have ${DivinationSpell}.  
    /echo Please check the spells listed in the macro for what you need. 
    /endmacro 
  } 

  /if (${Bool[${Me.Book[${ConjurationSpell}]}]}==FALSE) { 
    /echo You don't have ${ConjurationSpell}.  
    /echo Please check the spells listed in the macro for what you need. 
    /endmacro 
  } 
      
  /if (${Me.Class.Name.Equal[Magician]}) /goto :Getpet 
  /if (${Me.Class.Name.Equal[Shadowknight]}) /goto :Getpet 
  /if (${Me.Class.Name.Equal[Necromancer]}) /goto :Getpet 
  
/goto :Castingprep 

:Getpet 
  /notify CastSpellWnd CSPW_Spell5 rightmouseup  
  /if (${Me.Class.Name.Equal[Magician]}) { 
    /call Cast "Elementalkin: Water" gem6 
  } Else { 
    /call Cast "Leering Corpse" gem6 
  } 
  /goto :Castingprep 
:Bardsongprep 
  /mem 1 "${SingSong}" 
  /delay 5s 
  /mem 2 "${DrumSong}" 
  /delay 5s 
  /mem 3 "${StringSong}" 
  /delay 5s 
  /mem 4 "${WindSong}" 
  /delay 5s 
  /mem 5 "${BrassSong}" 
  /delay 5s 
  /goto :Singing 

:Singing 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Skill[Sing]}>${MaxSkill}) /goto :Percussion 
  /if (${Me.SpellReady[${SingSong}]})   /Cast "${SingSong}" 
  /goto :Singing 

:Percussion 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Skill[Percussion Instruments]}>${MaxSkill}) /goto :Stringed 
  /if (${Me.SpellReady[${DrumSong}]})   /Cast "${DrumSong}" 
  /goto :Percussion 

:Stringed 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Skill[Stringed Instruments]}>${MaxSkill}) /goto :Wind 
  /if (${Me.SpellReady[${StringSong}]})   /Cast "${StringSong}" 
  /goto :Stringed 

:Wind 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Skill[Wind Instruments]}>${MaxSkill}) /goto :Wind 
  /if (${Me.SpellReady[${WindSong}]})   /Cast "${WindSong}" 
  /goto :Wind 

:Brass 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Skill[Brass Instruments]}>${MaxSkill}) { 
    /echo Skills are all at max! 
    /endmacro 
  } 
  /if (${Me.SpellReady[${BrassSong}]})   /Cast "${BrassSong}" 
  /goto :Brass 

:Castingprep 
  
  /memspell 1 "${AlterationSpell}" 
  /delay 5s 
  /memspell 2 "${AbjurationSpell}" 
  /delay 5s 
  /memspell 3 "${EvocationSpell}" 
  /delay 5s 
  /memspell 4 "${DivinationSpell}" 
  /delay 5s 
  /memspell 5 "${ConjurationSpell}" 
  /delay 5s 
  /goto :Alteration 


:Manacheck 
  /if (${Me.CurrentMana}>100) { 
    /goto :Alteration 
  } Else { 
    /goto :Medup 
  }  

:Medup 
  /if (${Me.Sitting}) { 
  } Else { 
    /sit 
  } 
  /if (${Me.CurrentMana}==${Me.MaxMana}) /goto :Manacheck 
  /goto :Medup 



:Alteration 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Class.Name.Equal[Magician]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Shadowknight]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Necromancer]}) /target ${Me.Pet}  
  /if (${Me.Skill[Alteration]}>${MaxSkill}) /goto :Abjuration 
  /if (${Me.SpellReady[${AlterationSpell}]})   /Cast "${AlterationSpell}" 
  /goto :Manacheck 

:Abjuration 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Class.Name.Equal[Magician]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Shadowknight]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Necromancer]}) /target ${Me.Pet} 
  /if (${Me.Skill[Abjuration]}>${Maxskill}) /goto :Evocation 
  /if (${Me.SpellReady[${AbjurationSpell}]})   /Cast "${AbjurationSpell}" 
  /goto :Manacheck 

:Evocation 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Class.Name.Equal[Magician]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Shadowknight]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Necromancer]}) /target ${Me.Pet} 
  /if (${Me.Skill[Evocation]}>${Maxskill}) /goto :Divination 
  /if (${Me.SpellReady[${EvocationSpell}]})   /Cast "${EvocationSpell}" 
  /goto :Manacheck 
    
:Divination 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Class.Name.Equal[Magician]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Shadowknight]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Necromancer]}) /target ${Me.Pet} 
  /if (${Me.Skill[Divination]}>${Maxskill}) /goto :Conjuration 
  /if (${Me.SpellReady[${DivinationSpell}]})   /Cast "${DivinationSpell}" 
  /goto :Manacheck 

:Conjuration 
  /if (${Me.Sitting}) /sit off 
  /targ ${Me} 
  /if (${Me.Class.Name.Equal[Magician]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Shadowknight]}) /target ${Me.Pet} 
  /if (${Me.Class.Name.Equal[Necromancer]}) /target ${Me.Pet} 
  /if (${Me.Skill[Conjuration]}>${Maxskill}) { 
    /echo All spellcasting skills are at max! 
    /endmacro 
  } 
  /if (${Me.Class.Name.Equal[Ranger]}) { 
    /if (${Time.Night}) { 
    } Else { 
      /echo It's daytime and you can't summon globes now. 
      /echo Try again when it's nighttime, 
      /echo or get level 30 and use stinging swarm as your conjuration spell. 
      /endmacro 
    } 
  } 
  /if (${Me.SpellReady[${ConjurationSpell}]}) { 
    /Cast "${ConjurationSpell}" 
    /delay 1s 
  } 
  /if (${Cursor.Name.Find[Halo of Light]}) /destroy 
  /if (${Cursor.Name.Find[Globe of Water]}) /destroy 
  /if (${Cursor.Name.Find[Firefly Globe]}) /destroy 
  /if (${Cursor.Name.Find[Hammer of Wrath]}) /destroy 
  
  /goto :Manacheck 
  
/Endmacro
 
spellcast.mac help

Users who are viewing this thread

Back
Top