rendered paste bodyobjectdef oToon inherits oToonBase
{
/*
* Public var
*/
variable int MinCombatRange = 3
variable int MaxCombatRange = 29
variable int RepairPct = 10
variable int MinMana = 70
variable int MinHealth = 70
member NeedBuff()
{
if !${Me.Buff[Arcane Intellect](exists)} && ${Me.Action[Arcane Intellect].Usable} || !${Me.Buff[Frost Armor](exists)} && ${Me.Action[Frost Armor].Usable}) && !${Me.Action[Ice Armor].Usable} || !${Me.Buff[Ice Armor](exists)} && ${Me.Action[Ice Armor].Usable})
{
return TRUE
}
return FALSE
}
method BuffPulse()
{
;Int
if ${Me.Action[Arcane Intellect].Usable} && ${Me.Buff[Arcane Intellect].Duration}<60
{
This:CastInstantSpell[Arcane Intellect]
}
;Frost/Ice Armor
elseif ${Me.Action[Frost Armor].Usable} && ${Me.Buff[Frost Armor].Duration}<60 && !${Me.Action[Ice Armor].Usable}
{
This:CastInstantSpell[Frost Armor]
}
elseif ${Me.Action[Ice Armor].Usable} && ${Me.Buff[Ice Arnir].Duration}<60
{
This:CastInstantSpell[Ice Armor]
}
}
member NeedRest()
{
if ${Me.PctHPs} < ${This.MinHealth} || ${Me.Buff[Food](exists)} && ${Me.PctHPs}<95
{
return TRUE
}
if ${Me.PctMana} < ${This.MinMana} || ${Me.Buff[Drink](exists)} && ${Me.PctMana}<95
{
return TRUE
}
return FALSE
}
method RestPulse()
{
if !${Me.Sitting}
{
This:Sit
return
}
if ${Me.PctHPs} < ${This.MinHealth} && !${Me.Buff[Food](exists)} && ${Consumable.GotFood}
{
Consumable:Eat
return
}
if ${Me.PctMana} < ${This.MinMana} && !${Me.Buff[Drink](exists)} && ${Consumable.GotDrink}
{
Consumable:Drink
return
}
}
method Routine()
{
if !${Me.Attacking}
{
WoWScript AttackTarget()
}
if ${Me.Action[Fireball].Usable} && ${Target.PctHPs}>10
{
This:CastSpell[Fireball]
}
}
member NeedPull()
{
if !${Me.InCombat} && ${Me.Action[Fireball].Usable} && ${Me.Target(exists)} && !${Me.Target.Dead}
{
return TRUE
}
return FALSE
}
method PullPulse()
{
if !${Me.Casting} && ${Me.Action[Wrath].Usable} && ${Me.GlobalCooldown}==0
{
This:CastSpell[Fireball]
}
}
/*
* Attack
*/
member AttackState()
{
if !${This.DoneWaiting}
{
return TOON_WAIT
}
if ${WoWScript[SpellIsTargeting()]}
{
return TOON_SPELLTARGET
}
if ${Me.Casting}
{
return TOON_CASTING
}
if ${Math.Abs[${Me.Heading}-${Me.HeadingTo[${Target.X},${Target.Y}]}]} > 15 && ${Target.Distance} < ${This.MaxCombatRange} && !${Mapper.CollisionTest[${Me.X},${Me.Y},${Me.Z},${Target.X},${Target.Y},${Target.Z}]}
{
return TOON_NEEDFACE
}
if ${ISXWoW.Facing}
{
return TOON_FACING
}
if ${Target.Dead}
{
return TOON_CLEARTARGET
}
if ${Target.Distance} > ${This.MaxCombatRange}
{
return TOON_ENGAGE
}
if ${Target.Distance} < ${This.MinCombatRange}
{
return TOON_BACKUP
}
if ${Target.Distance} > ${This.MinCombatRange} && ${Target.Distance} < ${This.MaxCombatRange} && ${Movement.Moving}
{
return TOON_STOPMOVE
}
if !${Me.Attacking}
{
return TOON_ATTACK
}
return TOON_ATTACK
}
method AttackPulse()
{
This.CurrentState:Set[${This.AttackState}]
switch ${This.CurrentState}
{
case TOON_CASTING
Navigator:FaceXYZ[${Target.X},${Target.Y},${Target.Z}]
break
case TOON_NEEDFACE
Navigator:FaceXYZ[${Target.X},${Target.Y},${Target.Z}]
break
case TOON_FACING
break
case TOON_BACKUP
break
case TOON_SPELLTARGET
SpellTarget ${Target.GUID}
break
case TOON_ENGAGE
if !${Navigator.MovingToObject[${Target.GUID}]}
{
Navigator:MoveTo[${Target.X}, ${Target.Y}, ${Target.Z}]
}
break
case TOON_PULL
This:Pull
break
case TOON_ATTACK
This:Routine
break
case TOON_STOPMOVE
Navigator:ResetDestination
move -stop
break
case TOON_CLEARTARGET
WoWScript ClearTarget()
break
case TOON_WAIT
break
}
}
member TargetPriority(string GUID, int BasePriority)
{
variable objectref Data
variable int Priority
Data:Set[${GUID}]
Priority:Set[${BasePriority}]
if ${Me.Target.GUID.Equal[${GUID}]}
{
Priority:Dec[15]
}
if ${Data.Aggro} || ${Environment.ImTheTarget[${GUID}]}
{
Priority:Dec[40]
}
switch ${Data.ReactionLevel}
{
case 3
Priority:Dec[20]
break
case 4
Priority:Inc[20]
break
}
Priority:Inc[${Data.Distance}]
Priority:Dec[${Math.Calc[100-${Data.PctHPs}]}]
return ${Priority}
}
}
atom(script) runchecks(string eventid , text, Message)
{
if ${Message.Find["${Me.Target}"]}&&${Message.Find["attempts to run away"]}
{
This:Echo["We make runing flag true now kk"]
declare Running bool global TRUE
}
}