using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;
namespace DefaultCombat.Routines
{
public class CanNotBeDetermined : RotationBase
{
public override string Name
{
get { return "Mercenary Bodyguard"; }
}
public override Composite Buffs
{
get
{
return new PrioritySelector(
Spell.Buff("Combat Support Cylinder"),
Spell.Buff("Hunter's Boon")
);
}
}
public override Composite Cooldowns
{
get
{
return new PrioritySelector(
Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30),
Spell.Buff("Determination", ret => Me.IsStunned),
Spell.Buff("Supercharged Gas", ret => Me.BuffCount("Supercharge") == 10
&& Me.ResourceStat >= 25
&& HealTarget != null && HealTarget.HealthPercent <= 80),
Spell.Buff("Vent Heat", ret => Me.ResourceStat <= 60),
Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 50)
);
}
}
public override Composite SingleTarget
{
get
{
return new PrioritySelector(
//Movement
CombatMovement.CloseDistance(Distance.Ranged),
Spell.Cast("Disabling Shot", ret => Me.CurrentTarget.IsCasting && !Me.CurrentTarget.HasDebuff("Unshakeable")),
Spell.Cast("Unload", ret => Me.ResourceStat <= 20),
//Spell.Cast("Power Shot", ret => Me.ResourceStat <= 20),
Spell.Cast("Rapid Shots")
);
}
}
public override Composite AreaOfEffect
{
get
{
return new PrioritySelector(
Spell.HealGround("Kolto Missile", ret => Targeting.ShouldAoeHeal),
Spell.Heal("Progressive Scan", 90),
Spell.Heal("Healing Scan", 90),
Spell.Heal("Emergency Scan", 85),
//Spell.Heal("Surgical Probe", 80, ret => surgicalProbe()),
Spell.Heal("Kolto Shell", on => Tank, 100, ret => Tank != null && tankKoltoShell()),
//Spell.Heal("Kolto Infusion", 80, ret => Me.BuffCount("Tactical Advantage") >= 2 && Me.EnergyPercent >= 60 && !HealTarget.HasBuff("Kolto Infusion")),
//Spell.Heal("Kolto Injection", 80),
Spell.Cleanse("Cure"),
Spell.Heal("Kolto Shell", 95, ret => targetKoltoShell()),
Spell.Heal("Kolto Shot", 90),
Spell.Heal("Healing Scan", on => Tank, 100, ret => Tank != null && !tankInvigorated()),
Spell.Heal("Rapid Scan", 75)
);
}
}
public static bool tankKoltoShell()
{
if (Targeting.Tank.BuffCount("Kolto Shell") < 2)
return true;
if (Targeting.Tank.BuffTimeLeft("Kolto Shell") < 3)
return true;
return false;
}
public static bool tankInvigorated() //3% Heal Buff
{
if (Targeting.Tank.HasBuff("Invigorated"))
return true;
return false;
}
public static bool targetKoltoShell()
{
if (Targeting.HealTarget.BuffCount("Kolto Shell") < 2)
return true;
if (Targeting.HealTarget.BuffTimeLeft("Kolto Shell") < 3)
return true;
return false;
}
// took out the surgicalProbe code - Bodyguard doesn't really have this mechanic
}
}