rendered paste body/*
_____ __ .__
/ _ \ ________ ___________ _____/ |_| |__
/ /_\ \\___ // __ \_ __ \/ _ \ __\ | \
/ | \/ /\ ___/| | \( <_> ) | | Y \
\____|__ /_____ \\___ >__| \____/|__| |___| /
\/ \/ \/ \/
Present's to you 'Paladin Routine 1.00 for bbot'
**** Changes ****
*** 1.00 ***
- Started the Routine
*/
objectdef oToon inherits oToonBase
{
variable string Version = "1.00"
variable int MinMana = 100
variable int MaxMana = 100
variable int MinBattleHeal = 40
variable int MinHealth = 45
variable int MaxHealth = 100
variable int MinSealMana = 45
variable int LevelBelow = 4
variable int LevelAbove = 2
variable int Interrupt = 1
variable string InterruptSpell = "Hammer of Justice"
variable int MountDistance = 400
variable int RepairPct = 30
variable int CorpseCampLimit = 3
variable int PoisonCounter = 0
variable string Aura = "Devotion Aura"
variable int JudgeTime = ${LavishScript.RunningTime}
variable string Blessing = "Blessing of Wisdom"
variable int PureMelee = 40
variable int BuffNum = 0
member NeedBuff()
{
if !${Me.Buff[${This.Aura}](exists)} && ${Spell[${This.Aura}](exists)}
{
return TRUE
}
elseif !${Me.Buff[${This.Blessing}](exists)} && ${Spell[${This.Blessing}](exists)}
{
return TRUE
}
elseif !${Me.Buff["Righteous Fury"](exists)} && ${Spell["Righteous Fury"](exists)}
{
return TRUE
}
return FALSE
}
method BuffPulse()
{
if !${Me.Buff[${This.Aura}](exists)} && ${Spell[${This.Aura}](exists)}
{
Cast "${This.Aura}"
}
elseif !${Me.Buff[${This.Blessing}](exists)} && ${Spell[${This.Blessing}](exists)}
{
Cast "${This.Blessing}"
}
elseif !${Me.Buff["Righteous Fury"](exists)} && ${Spell["Righteous Fury"](exists)}
{
Cast "Righteous Fury"
}
}
member NeedRest()
{
if ${Me.PctMana} == 100 && ${Me.PctHPs} == 100
{
return FALSE
This:Echo["1"]
}
elseif ${Me.PctHPs} > ${This.MaxHealth} && ${Me.PctMana} > ${This.MaxMana}
{
return FALSE
}
elseif ${Me.PctHPs} < ${This.MinHealth}
{
return TRUE
}
elseif ${Me.PctMana} < ${This.MinMana}
{
return TRUE
}
return FALSE
}
method RestPulse()
{
if !${Me.Buff[Food](exists)} && ${Me.PctHPs} < ${This.MinHealth} && ${Consumable.GotFood} && !${Me.Buff["Eat"](exists)} && !${Me.Casting}
{
This:Echo["[Rest] Trying To Eat"]
Consumable:Eat
}
elseif !${Me.Buff[Water](exists)} && ${Me.PctMana} < ${This.MinMana} && ${Consumable.GotDrink} && !${Me.Buff["Drink"](exists)} && !${Me.Casting}
{
This:Echo["[Rest] Trying To Drink"]
Consumable:Drink
}
elseif ${Me.PctHPs}<${This.MinHealth} && !${Me.Casting} && ${Me.CurrentMana}>${Spell["Holy Light"].Mana} && ${Spell[Holy Light](exists)}
{
if !${Me.Buff[Water](exists)} && ${Me.Sitting}
{
wowpress SITORSTAND
}
This:Echo["[Rest] Casting Holy Light"]
Cast "Holy Light"
}
}
;Check for poisons/curses
member NeedCure()
{
BuffNum:Inc
if ${BuffNum} > 56 || !${Me.Buff[${BuffNum}](exists)}
{
BuffNum:Set[1]
if ${PoisonCounter}
{
return TRUE
}
}
if ${Me.Buff[${BuffNum}].Harmful}
{
if ${Me.Buff[${BuffNum}].DispelType.Equal[Magic]} && ${Spell[Cleanse](exists)}
{
return TRUE
}
elseif ${Me.Buff[${BuffNum}].DispelType.Equal[Disease]} && {${Spell[Cleanse](exists)}
{
return TRUE
}
elseif ${Me.Buff[${BuffNum}].DispelType.Equal[Poison]} && ${Spell[Cleanse](exists)}
{
PoisonCounter:Inc
return TRUE
}
}
return FALSE
}
;Cure stuff
method CurePulse()
{
if ${Me.Buff[${BuffNum}].DispelType.Equal[Magic]} && ${Me.Action[Cleanse].Usable}
{
This:CastInstantSpell[Cleanse]
}
elseif ${Me.Buff[${BuffNum}].DispelType.Equal[Disease]} && ${Me.Action[Disease].Usable}
{
This:CastInstantSpell[Cleanse]
}
elseif ${PoisonCounter}
{
if ${PoisonCounter} == 1 && ${Me.Action[Cleanse].Usable}
{
Target ${Me.GUID}
This:CastInstantSpell[Cleanse]
}
PoisonCounter:Set[0]
}
}
member NeedHealing()
{
if ${Me.PctHPs}<${This.MinBattleHeal}
{
return TRUE
}
return FALSE
}
method HealingPulse()
{
if ${Me.PctHPs}<${This.MinBattleHeal} && !${Me.Casting} && ${Me.PctHPs} < 100 && ${Me.CurrentMana}>${Spell[Holy Light].Mana} && ${Spell[Holy Light](exists)}
{
This:Echo["[Heal] Casting Holy Light"]
Cast "Holy Light"
}
elseif ${Spell[Flash of Light](exists)}
{
if ${Me.PctHPs}<${This.MinBattleHeal} && !${Me.Casting} && ${Me.PctHPs} < 100 && ${Me.CurrentMana}>${Spell[Flash of Light].Mana} && ${Me.CurrentMana}<${Spell[Holy Light].Mana}
{
This:Echo["[Heal] Casting Flash of Light"]
Cast "Flash of Light"
}
}
elseif ${Me.PctHPs} > 90
{
This:Echo["[Heal] Interrupted Healing"]
WoWScript SpellStopCasting()
}
}
member NeedInterrupt()
{
if ${WoWScript[UnitCastingInfo("playertarget")].NotEqual[NULL]} && ${Spell[Arcane Torrent](exists)} && !${Spell[Arcane Torrent].Cooldown} && ${This.Interrupt} == 1
{
return TRUE
}
elseif ${WoWScript[UnitCastingInfo("playertarget")].NotEqual[NULL]} && !${Spell[${This.InterruptSpell}].Cooldown} && ${This.Interrupt} == 1
{
return TRUE
}
return FALSE
}
method InterruptPulse()
{
if ${WoWScript[UnitCastingInfo("playertarget")].NotEqual[NULL]} && ${Spell[Arcane Torrent](exists)} && !${Spell[Arcane Torrent].Cooldown} && ${This.Interrupt} == 1
{
This:Echo["[Interupt] Casting Arcane Torrent!!"]
Cast "Arcane Torrent"
}
elseif ${WoWScript[UnitCastingInfo("playertarget")].NotEqual[NULL]} && !${Spell[${This.InterruptSpell}].Cooldown} && ${This.Interrupt} == 1
{
This:Echo["[Interupt] Casting ${This.InterruptSpell}!!"]
Cast "${This.InterruptSpell}"
}
}
member NeedSealOfCrusader()
{
{
if ${Spell["Seal of the Crusader"](exists)} && !${Me.Buff["Seal of the Crusader"](exists)} && !${Me.Buff["Seal of Righteousness"](exists)} && !${Target.Buff["Judgement of the Crusader"](exists)}
{
return TRUE
}
}
return FALSE
}
method SealOfCrusaderPulse()
{
This:Echo["[Seals] Casting Seal of the Crusader."]
This:CastInstantSpell["Seal of the Crusader"]
}
member NeedJudgement()
{
if ${Spell["Judgement"](exists)} && ${Me.Buff["Seal of the Crusader"](exists)} && ${JudgeTime} < ${LavishScript.RunningTime}
{
return TRUE
}
return FALSE
}
method JudgementPulse()
{
This:Echo["[Seals] Casting Judgement."]
Cast "Judgement"
}
member NeedSealofRighteousness()
{
if ${Spell["Seal of Righteousness"](exists)} && !${Me.Buff["Seal of the Crusader"](exists)} && !${Me.Buff["Seal of Righteousness"](exists)}
{
return TRUE
}
return FALSE
}
method SealofRighteousnessPulse()
{
This:Echo["[Seals] Casting Seal of Righteousness"]
Cast "Seal of Righteousness"
}
method Routine()
{
if ${This.NeedHealing}
{
This:SetStatus["HEALING"]
This:HealingPulse
}
elseif ${This.NeedCure}
{
This:SetStatus["CURE"]
This:CurePulse
}
elseif ${This.NeedBuff}
{
This:SetStatus["BUFF"]
This:BuffPulse
}
elseif !${Me.Attacking} && ${Target.Distance} < 6 && !${Me.Casting}
{
This:SetStatus["MELEE"]
WoWScript AttackTarget()
}
if ${This.JudgeTime} < ${LavishScript.RunningTime}
{
if ${This.NeedSealOfCrusader}
{
This:SetStatus["SEAL"]
This:SealOfCrusaderPulse
}
elseif ${This.NeedJudgement}
{
This:SetStatus["SEAL"]
This:JudgementPulse
}
elseif ${This.NeedSealofRighteousness}
{
This:SetStatus["SEAL"]
This:SealofRighteousnessPulse
}
JudgeTime:Set[${LavishScript.RunningTime} + 1000]
}
elseif ${This.NeedInterrupt}
{
This:SetStatus["INTERRUPT"]
This:InterruptPulse
}
}
/*----CONFIG----*/
method ToonGUIChange(string Action)
{
switch ${Action}
{
/** Buff Settings **/
/** Battle Settings **/
case Interrupt
if ${UIElement[cmbInterrupt@Battle@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.Interrupt:Set[${UIElement[cmbInterrupt@Battle@Pages@ToonGUI].SelectedItem.Value}]
}
break
case minbattleheal
if ${UIElement[cmbbattleheal@Battle@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.MinBattleHeal:Set[${UIElement[cmbbattleheal@Battle@Pages@ToonGUI].SelectedItem.Value}]
}
break
case PureMelee
if ${UIElement[cmbPureMelee@Battle@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.PureMelee:Set[${UIElement[cmbPureMelee@Battle@Pages@ToonGUI].SelectedItem.Value}]
}
break
/** Generic **/
case RepairPct
if ${UIElement[cmbRepairPct@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.RepairPct:Set[${UIElement[cmbRepairPct@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case MountDistance
if ${UIElement[cmbMountDistance@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.MountDistance:Set[${UIElement[cmbMountDistance@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case minmana
if ${UIElement[cmbMinMana@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.MinMana:Set[${UIElement[cmbMinMana@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case maxmana
if ${UIElement[cmbMaxMana@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.MaxMana:Set[${UIElement[cmbMaxMana@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case minhealth
if ${UIElement[cmbMinHealth@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.MinHealth:Set[${UIElement[cmbMinHealth@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case maxhealth
if ${UIElement[cmbMaxHealth@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.MaxHealth:Set[${UIElement[cmbMaxHealth@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case levelbelow
if ${UIElement[cmbLevelBelow@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.LevelBelow:Set[${UIElement[cmbLevelBelow@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case levelabove
if ${UIElement[cmbLevelAbove@Generic@Pages@ToonGUI].SelectedItem.Value(exists)}
{
This.LevelAbove:Set[${UIElement[cmbLevelAbove@Generic@Pages@ToonGUI].SelectedItem.Value}]
}
break
case defaultgeneric
break
}
}
/*
* Config
*/
method LoadConfig()
{
This.Interrupt:Set[${This.ToonConfig.FindSetting["Interrupt",0]}]
This.MountDistance:Set[${This.ToonConfig.FindSetting["MountDistance",400]}]
This.RepairPct:Set[${This.ToonConfig.FindSetting["RepairPct",30]}]
This.CorpseCampLimit:Set[${This.ToonConfig.FindSetting["CorpseCampLimit",3]}]
This.SpamSpell:Set[${This.ToonConfig.FindSetting["SpamSpell","Frost Shock"]}]
This.MinBattleHeal:Set[${This.ToonConfig.FindSetting["MinBattleHeal",50]}]
This.PureMelee:Set[${This.ToonConfig.FindSetting["PureMelee",60]}]
This.MinMana:Set[${This.ToonConfig.FindSetting["MinMana",90]}]
This.MaxMana:Set[${This.ToonConfig.FindSetting["MaxMana",95]}]
This.MinHealth:Set[${This.ToonConfig.FindSetting["MinHealth",50]}]
This.MaxHealth:Set[${This.ToonConfig.FindSetting["MaxHealth",95]}]
This.LevelBelow:Set[${This.ToonConfig.FindSetting["LevelBelow",4]}]
This.LevelAbove:Set[${This.ToonConfig.FindSetting["LevelAbove",2]}]
This:Echo["Loaded Config!"]
}
method SaveConfig()
{
This.ToonConfig.FindSetting["Interrupt"]:Set[${This.Interrupt}]
This.ToonConfig.FindSetting["MountDistance"]:Set[${This.MountDistance}]
This.ToonConfig.FindSetting["RepairPct"]:Set[${This.RepairPct}]
This.ToonConfig.FindSetting["CorpseCampLimit"]:Set[${This.CorpseCampLimit}]
This.ToonConfig.FindSetting["SpamSpell"]:Set[${This.SpamSpell}]
This.ToonConfig.FindSetting["PureMelee"]:Set[${This.PureMelee}]
This.ToonConfig.FindSetting["MinBattleHeal"]:Set[${This.MinBattleHeal}]
This.ToonConfig.FindSetting["MinMana"]:Set[${This.MinMana}]
This.ToonConfig.FindSetting["MaxMana"]:Set[${This.MaxMana}]
This.ToonConfig.FindSetting["MinHealth"]:Set[${This.MinHealth}]
This.ToonConfig.FindSetting["MaxHealth"]:Set[${This.MaxHealth}]
This.ToonConfig.FindSetting["LevelBelow"]:Set[${This.LevelBelow}]
This.ToonConfig.FindSetting["LevelAbove"]:Set[${This.LevelAbove}]
This:Echo["Saved Config!"]
}
/*
*
*/
method InitPaladinGui(string tab)
{
variable int i = 1
/** Buffs **/
/** Battle **/
for (i:Set[1] ; ${i}<=${UIElement[cmbInterrupt@Battle@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.Interrupt} == ${UIElement[cmbInterrupt@Battle@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbInterrupt@Battle@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbMinBattleHeal@Battle@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.MinBattleHeal} == ${UIElement[cmbMinBattleHeal@Battle@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbMinBattleHeal@Battle@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbPureMelee@Battle@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.PureMelee} == ${UIElement[cmbPureMelee@Battle@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbPureMelee@Battle@Pages@ToonGUI]:SelectItem[${i}]
}
}
/** Generic **/
for (i:Set[1] ; ${i}<=${UIElement[cmbRepairPct@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.RepairPct} == ${UIElement[cmbRepairPct@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbRepairPct@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbMountDistance@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.MountDistance} == ${UIElement[cmbMountDistance@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbMountDistance@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbMinMana@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.MinMana} == ${UIElement[cmbMinMana@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbMinMana@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbMaxMana@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.MaxMana} == ${UIElement[cmbMaxMana@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbMaxMana@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbMinHealth@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.MinHealth} == ${UIElement[cmbMinHealth@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbMinHealth@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbMaxHealth@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.MaxHealth} == ${UIElement[cmbMaxHealth@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbMaxHealth@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbLevelBelow@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.LevelBelow} == ${UIElement[cmbLevelBelow@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbLevelBelow@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
for (i:Set[1] ; ${i}<=${UIElement[cmbLevelAbove@Generic@Pages@ToonGUI].Items} ; i:Inc)
{
if ${This.LevelAbove} == ${UIElement[cmbLevelAbove@Generic@Pages@ToonGUI].Item[${i}].Value}
{
UIElement[cmbLevelAbove@Generic@Pages@ToonGUI]:SelectItem[${i}]
}
}
}
method InitToon()
{
LavishScript:RegisterEvent[TOON_GUI_CHANGE]
Event[TOON_GUI_CHANGE]:AttachAtom[${This.ObjectName}:ToonGUIChange]
This:InitPaladinGui[spells]
This:Echo["Azeroth's Paladin Routine ${Version}"]
}
method Shutdown()
{
This:SaveConfig
LavishSettings["Class"]:Export["etc/class.xml"]
Event[UI_ERROR_MESSAGE]:DetachAtom[${This.ObjectName}:ErrorMessage]
Event[TOON_GUI_VISIBLE]:Unregister
/* b7731 */
Event[TOON_GUI_CHANGE]:DetachAtom[${This.ObjectName}:ToonGUIChange]
Event[TOON_GUI_CHANGE]:Unregister
/* b7731 */
ui -unload "class/${Me.Class}.xml"
}
method Echo(string Text)
{
if ${UIElement[ConsoleGUI](exists)}
{
UIElement[Console@Console@Pages@ToonGUI]:Echo["${Time.Time24} ${Text.Escape}"]
}
else
{
echo "${Time.Time24} ${Text}"
}
}
method SetStatus(string Text)
{
UIElement[Status@Console@Pages@ToonGUI]:SetText[${Text.Escape}]
}
}