member CastSpellGUID(string GUID, string spellname) { If ${Spell[${spellname}](exists)} && !${Spell[${spellname}].Cooldown} && ${GUID.NotEqual[NULL]} && ${This.EnsureMana[${spellname}]} { /* Add here a test for instant Spell */ /* Test and check mate */ if !${Spell[${spellname}].Mana} { Move -stop } if (${Target(exists)} && ${Target.GUID.NotEqual[${GUID}]}) || !${Target(exists)} { Target ${GUID} } if ${GUID.NotEqual[${Me.GUID}]} { Navigator:FaceXYZ[${Unit[${GUID}].X},${Unit[${GUID}].Y},${Unit[${GUID}].Z}] } Spell[${spellname}]:Cast return TRUE } return FALSE } member NeedBuff(string GUID, string spellname) { If !${Object[${GUID}].Buff[${spellname}](exists)} { return TRUE } return FALSE } member EnsureBuff(string GUID, string spellname) { If ${This.NeedBuff[${GUID},${spellname}]} { return ${This.CastSpellGUID[${GUID}, ${spellname}]} } return FALSE } member EnsureMana(string spellname) { if ${Spell[${spellname}](exists)} && !${Spell[${spellname}].Mana} { return TRUE } if ${Me.Class.Equal[Rogue]} { if ${Spell[${spellname}](exists)} && ${Me.CurrentEnergy} >= ${Spell[${spellname}].Mana} { return TRUE } } elseif ${Me.Class.Equal[Rogue]} || (${Me.Class.Equal[Druid]} && ${Me.Buff[Form](exists)}) { if ${Spell[${spellname}](exists)} && ${Me.CurrentRage} >= ${Math.Calc[${Spell[${spellname}].Mana} / 1000]} { return TRUE } } else { if ${Spell[${spellname}](exists)} && ${Me.CurrentMana} >= ${Spell[${spellname}].Mana} { return TRUE } } return FALSE } member HasAction(string spellname) { if ${Me.Action[${spellname}](exists)} && ${Me.Action[${spellname}].Usable} { return TRUE } return FALSE } member EnsureActionAutoRepeat(string GUID, string spellname) { if ${This.HasAction[${spellname}]} && !${Me.Action[${spellname}].AutoRepeat} { return ${This.CastSpellGUID[${GUID},${spellname}]} } return FALSE }