/* * Priest routine for ByteBot by Coconut * Version 1.5 (comments & bug reports - coconut@vanaguide.com) * */ #define FORM_CASTER 0 #define FORM_SHADOW 1 #define SHOW_DEBUG TRUE objectdef oToon inherits oToonBase { variable string oldMessage variable bool useBlessingOfWisdom = TRUE variable bool useDevotionAura = TRUE variable bool useRighteousFury = TRUE variable bool exhaustedRegen = FALSE variable int currentForm = 0 variable int minimumHP = 50 variable int minimumMP = 30 variable int criticalHP = 30 variable int criticalMP = 10 variable int WandAtMobHP = 40 variable int WandAtMP = 30 variable string myDrink = Morning Glory Dew method InitToon() { if ${Me.Level} < 1 { This.useDevotionAura:Set[FALSE] } if ${Me.Buff["Devotion Aura"](exists)} { This.currentForm:Set[FORM_SHADOW] } elseif !${Me.Buff["Devotion Aura"](exists)} { This.currentForm:Set[FORM_CASTER] } } ;Simple Debugging echo member Debug(string debugMessage) { if SHOW_DEBUG == TRUE { This:Echo[${debugMessage}] } } ;Check to see if you have the Buff on you. member GotBuff(string thisBuff) { if ${Me.Buff[${thisBuff}](exists)} { return TRUE } else { return FALSE } } ;Check to see if we need a buff casting. member NeedBuff() { if !${This.GotBuff[Seal of the Crusader]} && ${Spell[Seal of the Crusader](exists)} { return TRUE } elseif ${This.useBlessingOfWisdom} && !${This.GotBuff["Blessing of Wisdom]} && ${Spell["Blessing of Wisdom](exists)} { return TRUE } elseif ${This.useRighteousFury} && !${This.GotBuff["Righteous Fury"]} && ${Spell["Righteous Fury"](exists)} { return TRUE } elseif ${This.useDevotionAura} && !${This.GotBuff["Devotion Aura"]} && ${Spell["Devotion Aura"](exists)} { return TRUE } return FALSE } ;Give us the buffs require. method BuffPulse() { if ${Me.Casting} || ${Me.GlobalCooldown} { return } elseif !${This.GotBuff[Seal of the Crusader]} && ${This.CanCast[Seal of the Crusader]} { This:Debug[Buff Pulse - Casting Seal of the Crusader] This:CastInstantSpell[Seal of the Crusader] } elseif ${This.useBlessingOfWisdom} && !${This.GotBuff["Blessing of Wisdom]} && ${This.CanCast["Blessing of Wisdom]} { This:Debug[Buff Pulse - Casting "Blessing of Wisdom] This:CastInstantSpell["Blessing of Wisdom] } elseif ${This.useRighteousFury} && !${This.GotBuff["Righteous Fury"]} && ${This.CanCast["Righteous Fury"]} { This:Debug[Buff Pulse - Casting "Righteous Fury"] This:CastInstantSpell["Righteous Fury"] } elseif ${This.useDevotionAura} && !${This.GotBuff["Devotion Aura"]} && ${This.CanCast["Devotion Aura"]} { This:Debug[Buff Pulse - Casting "Devotion Aura"] Me.Action["Devotion Aura"]:Use } } member NeedRest() { if ${Me.InCombat} { This.exhaustedRegen:Set[FALSE] FALSE } if ${Me.PctHPs} < ${This.minimumHP} || ${Me.PctMana} < ${This.minimumMP} { return TRUE } if ${Me.PctMana} < 100 && ${Me.Buff[Drink](exists)} { return TRUE } This.exhaustedRegen:Set[FALSE] return FALSE } method RestPulse() { if ${Me.Casting} || ${Me.GlobalCooldown} { return } elseif !${Me.Buff[Renew](exists)} && ${Me.PctHPs} < ${This.minimumHP} { if ${Me.Buff["Devotion Aura"](exists)} { Me.Action["Devotion Aura"]:Use This:Wait[100] } elseif ${This.CanCast[Renew]} && !${This.GotBuff[Renew]} && ${Me.CurrentMana} > ${Spell[Renew].Mana} { This:CastInstantSpell[Renew] } } elseif ${Me.PctMana} < ${This.minimumMP} { if !${Me.Sitting} { This:Sit } elseif !${Me.Buff[Drink](exists)} && !${Me.Action[${This.myDrink}].Cooldown} { Consumable:Drink This:Wait[500] } } } method Routine() { if ${Me.Casting} || ${Me.GlobalCooldown} || !${Me.Target(exists)} && ${Target.Distance} > ${This.MaxCombatDistance} || !${Target(exists)} { return } if !${Me.Attacking} && !${Me.Action[Shoot].AutoRepeat} && ${Target.Distance} < 3 && !${Me.Equip[ranged](exists)} { Me:ToggleAttack } ; Let's check to see if we're in a Critical Situation here. elseif ${Me.PctHPs} < ${This.criticalHP} { if ${Me.Action[Shoot].AutoRepeat} { This:Debug[Stopping Wand - Entered Critical Routine] Me.Action[Shoot]:Use This:Wait[100] } if ${Me.Buff["Devotion Aura"](exists)} { This:Debug[Critical: Removing "Devotion Aura"] Me.Action["Devotion Aura"]:Use This:Wait[300] } elseif (${Me.CurrentMana} < ${Spell[Power Word: Shield].Mana} || ${Me.CurrentMana} < ${Spell[Renew].Mana} || ${Me.CurrentMana} < ${Spell[Flash Heal].Mana}) && ${This.CanCast[Consume Magic]} && !${Spell[Consume Magic].Cooldown} && ${Spell[Consume Magic](exists)} { This:Debug[Critical: Consume Magic] This:CastInstantSpell[Consume Magic] } elseif !${Me.Buff[Power Word: Shield](exists)} && ${Me.CurrentMana} > ${Spell[Powrd Word: Shield].Mana} && ${This.CanCast[Power Word: Shield]} && !${Me.Buff[Weakened Soul](exists)} && ${Spell[Power Word: Shield](exists)} { This:Debug[Critical: Casting Power Word: Shield] This:CastInstantSpell[Power Word: Shield] } elseif !${Me.Buff[Power Word: Shield](exists)} && ${This.CanCast[Psychic Scream]} && ${Me.CurrentMana} > ${Spell[Psychic Scream].Mana} && ${Spell[Psychic Scream](exists)} { This:Debug[Critical: Psychic Scream] This:CastInstantSpell[Psychic Scream] } elseif ${Me.CurrentMana} > ${Spell[Renew].Mana} && ${This.CanCast[Renew]} && !${Me.Buff[Renew](exists)} && ${Spell[Renew](exists)} { This:Debug[Critical: Casting Renew] This:CastInstantSpell[Renew] } elseif ${Me.CurrentMana} > ${Spell[Flash Heal].Mana} && ${This.CanCast[Flash Heal]} && ${Me.Buff[Renew](exists)} && ${Spell[Flash Heal](exists)} { This:Debug[Critical: Casting Flash Heal] This:CastSpell[Flash Heal] This:Wait[100] } elseif ${Me.CurrentMana} > ${Spell[Lesser Heal].Mana} && ${This.CanCast[Lesser Heal]} { This:Debug[Critical: Casting Lesser Heal] This:CastSpell[Lesser Heal] This:Wait[100] } } elseif !${Me.Buff[Power Word: Shield](exists)} && ${This.CanCast[Power Word: Shield]} && !${Me.Buff[Weakened Soul](exists)} && ${Me.CurrentMana} > ${Spell[Power Word: Shield].Mana} && ${Spell[Power Word: Shield](exists)} { if ${Me.Action[Shoot].AutoRepeat} { This:Debug[Stopping Wanding while I cast Power Word: Shield] Me.Action[Shoot]:Use This:Wait[100] } elseif !${Me.Action[Shoot].AutoRepeat} { This:Debug[Casting Power Word: Shield] This:CastInstantSpell[Power Word: Shield] } } elseif ${Me.Buff["Devotion Aura"](exists)} && ${Me.PctHPs} < 80 && ${This.CanCast[Vampiric Embrace]} && !${Target.Buff[Vampiric Embrace](exists)} { if ${Me.Action[Shoot].AutoRepeat} { This:Debug[Stopping Wanding while I cast Vampiric Embrace] Me.Action[Shoot]:Use This:Wait[100] } elseif !${Me.Action[Shoot].AutoRepeat} { This:Debug[Casting Vampiric Embrace] This:CastInstantSpell[Vampiric Embrace] } } elseif ${Me.Buff["Devotion Aura"](exists)} && ${Target.PctHPs} < 50 && ${This.CanCast[Vampiric Touch]} && !${Target.Buff[Vampiric Touch](exists)} { This:Debug[Casting Vampiric Touch] This:CastInstantSpell[Vampiric Touch] } elseif !${Target.Buff[Shadow Word: Pain](exists)} && ${Me.CurrentMana} > ${Spell[Shadow Word: Shield].Mana} && ${This.CanCast[Shadow Word: Pain]} && ${Spell[Shadow Word: Pain](exists)} { if ${Me.Action[Shoot].AutoRepeat} { This:Debug[Stopping Wanding while I cast Shadow Word: Pain] Me.Action[Shoot]:Use This:Wait[100] } elseif !${Me.Action[Shoot].AutoRepeat} { This:Debug[Casting Shadow Word: Pain] This:CastInstantSpell[Shadow Word: Pain] } } elseif ${Me.PctMana} < ${This.WandAtMP} && !${Me.Action[Shoot].AutoRepeat} && ${Me.Equip[ranged](exists)} { This:Debug[Beginning to Wand. Low Mana] Me.Action[Shoot]:Use This:Wait[100] } elseif ${Target.PctHPs} < ${This.WandAtMobHP} && !${Me.Action[Shoot].AutoRepeat} && ${Me.Equip[ranged](exists)} { This:Debug[Beginning to Wand. Mob Low HP] Me.Action[Shoot]:Use This:Wait[100] } elseif ${Me.PctMana} > ${This.WandAtMP} { if ${Target.Distance} > 5 && ${This.CanCast[Mind Flay]} && ${Me.CurrentMana} > ${Spell[Mind Flay].Mana} && ${Spell[Mind Flay](exists)} { This:Debug[Casting Mind Flay - Mob is running away] This:CastSpell[Mind Flay] } elseif ${This.CanCast[Mind Flay]} && !${This.CanCast[Mind Blast]} && ${Me.CurrentMana} > ${Spell[Mind Flay].Mana} && ${Me.Buff[Power Word: Shield](exists)} && ${Target.PctHPs} > 10 && ${Spell[Mind Flay](exists)} { This:Debug[Casting Mind Flay] This:CastSpell[Mind Flay] } elseif ${This.CanCast[Mind Blast]} && ${Me.CurrentMana} > ${Spell[Mind Blast].Mana} && ${Target.PctHPs} > 10 && ${Spell[Mind Blast](exists)} { This:Debug[Casting Mind Blast] This:CastSpell[Mind Blast] } elseif !${Spell[Mind Blast](exists)} && ${Me.CurrentMana} > ${Spell[Smite].Mana} && ${This.CanCast[Smite]} { This:Debug[Casting Smite] This:CastSpell[Smite] } } } method LoadConfig() { This.WandAtMobHP:Set[${This.ToonConfig.FindSetting["WandAtMobHP",30}] This.WandAtMP:Set[${This.ToonConfig.FindSetting["WandAtMP",30}] This.useBlessingOfWisdom:Set[${This.ToonConfig.FindSetting["useBlessingOfWisdom",FALSE}] This.criticalHP:Set[${This.ToonConfig.FindSetting["criticalHP",30}] This.useDevotionAura:Set[${This.ToonConfig.FindSetting["useDevotionAura",TRUE}] This.useRighteousFury:Set[${This.ToonConfig.FindSetting["useRighteousFury",TRUE}] This.MinCombatRange:Set[${This.ToonConfig.FindSetting["MinCombatRange",0]}] This.MaxCombatRange:Set[${This.ToonConfig.FindSetting["MaxCombatRange",30]}] This.RepairPct:Set[${This.ToonConfig.FindSetting["RepairPct",20]}] This.KeepFreeSlots:Set[${This.ToonConfig.FindSetting["KeepFreeSlots",3]}] This.MountDistance:Set[${This.ToonConfig.FindSetting["MountDistance",400]}] This.Loot:Set[${This.ToonConfig.FindSetting["Loot",TRUE]}] This.CorpseCampLimit:Set[${This.ToonConfig.FindSetting["CorpseCampLimit",2]}] This.ExitOnStuck:Set[${This.ToonConfig.FindSetting["ExitOnStuck",0]}] This.PrimaryStat:Set[${This.ToonConfig.FindSetting["PrimaryStat",STAT_SPI]}] This.SecondaryStat:Set[${This.ToonConfig.FindSetting["SecondaryStat",STAT_INT]}] This.AutoEquip:Set[${This.ToonConfig.FindSetting["AutoEquip",FALSE]}] } }