Hope you like it.
Code: Select all
|spells.mac - 26 November 2004
|
| spells.mac - 03 July 2004 19:15 EST
| Written by Chill, based on trainspell.mac by Fuergrissa, popup event and GMCheck from Fabolous1
| usage: /mac spells [camp]
| notes: change targets to exit early
| Macro requires that you have your practice spells memmed, I suggest making a practice spellset.
|
|additional notes: You may now specify which spell gems to cycle through with GemNumberMin and
| GemNumberMax variables.
| You may also comment and uncomment the specialization variables according to your specialization.
| This will keep you casting spells that you normally wouldn't in order to increase your
| Specialization.
#Define ArcaneMax 235
#include spellcast.inc
#event SkillUp "You have become better at #1#! (#2#)"
#event OOM "Insufficient Mana to cast this spell!"
Sub Main
/declare ArcaneLevel int outer
/declare SpellName string outer
/declare GemNumber int outer 0
/declare Trained int outer
/declare GemNumberMin int outer
/declare GemNumberMax int outer
/declare SkillSpecialization string outer
/declare SkillSpecializationBase string outer
/varcalc ArcaneLevel ${Me.Level}*5+5
/if (${ArcaneLevel}>ArcaneMax) /varset ArcaneLevel ArcaneMax
/echo Your Current Spell Cap is ${ArcaneLevel}
|The following variables set which spell gems are looped through. Please set accordingly.
/varset GemNumberMin 1
/varset GemNumberMax 5
|The following variable groups set which specialization can go above 50 for wizards.
/varset SkillSpecialization "Specialize Evocation"
/varset SkillSpecializationBase "Evocation"
| /varset SkillSpecialization "Specialize Alteration"
| /varset SkillSpecializationBase "Alteration"
| /varset SkillSpecialization "Specialize Abjuration"
| /varset SkillSpecializationBase "Abjuration"
| /varset SkillSpecialization "Specialize Conjuration"
| /varset SkillSpecializationBase "Conjuration"
| /varset SkillSpecialization "Specialize Divination"
| /varset SkillSpecializationBase "Divination"
/target myself
:TrainingLoop
/varset Trained 0
/call GMCheck
/for GemNumber ${GemNumberMin} to ${GemNumberMax}
/if (${Me.PctMana}<20) /call Med 90
/if (${Target.ID}!=${Me.ID}) /endmacro
/varset SpellName ${Me.Gem[${GemNumber}]}
/if (${Me.Skill[${Spell[${SpellName}].Skill}]}==${ArcaneLevel}) {
/if (${Skill[${Spell[${SpellName}].Skill}].ID} == ${Skill[${SkillSpecializationBase}].ID}) {
/if (${Me.Skill[${SkillSpecialization}]} == ${ArcaneLevel} && ${Me.Skill[${SkillSpecialization}]} != 0) {
/echo You cannot Increase ${SkillSpecilizationBase} or ${SkillSpecialization} anymore.
} else {
/echo Casting ${SpellName} from GemSlot ${GemNumber} of Type ${Spell[${SpellName}].Skill} (${Me.Skill[${Spell[${SpellName}].Skill}]})
/call cast "${SpellName}"
/varcalc Trained ${Trained}+1
}
} else {
/echo You cannot Increase ${Spell[${SpellName}].Skill} anymore.
}
} else /if (${SpellName.NotEqual[NULL]}) {
/echo Casting ${SpellName} from GemSlot ${GemNumber} of Type ${Spell[${SpellName}].Skill} (${Me.Skill[${Spell[${SpellName}].Skill}]})
/call cast "${SpellName}"
/varcalc Trained ${Trained}+1
}
/doevents
/next GemNumber
/if (${Trained}>0) /goto :TrainingLoop
:Finished
/if (${Me.Mount.ID}) /dismount
/if (!${Me.Sitting}) /sit
/if (${Param0.Equal[camp]}) {
/echo Medding to full then Ending.
/if (${Me.PctMana}<95) /call Med 95
/camp desktop
}
/endmacro
Sub Med(int medmana)
/echo Medding from ${Me.PctMana}% to ${medmana}% mana.
:Med
/if (${Target.ID}!=${Me.ID}) /endmacro
/if (!${Me.Sitting} && !${Me.Mount.ID}) /sit
/delay 1
/if (${Me.PctMana} < ${medmana}) /goto :Med
/return
Sub Event_OOM
/call Med 90
/doevents OOM flush
/return
Sub Event_SkillUp(string text,string skill_name,int skill_level)
/popup ${skill_level} ${skill_name}!
/return
Sub GMCheck
/if (${Spawn[gm].ID}) {
/beep
/popup GM Spawn!
/beep
/echo GM has entered the zone, zoning in 5 seconds!
/delay 5s
/keypress forward
/keypress back
/if (${Me.Mount.ID}) /dismount
/if (!${Me.Sitting}) /sit
/camp desktop
/endmacro
}
/return

