// Copyright (C) 2011-2015 Bossland GmbH
// See the file LICENSE for the source code's detailed license
using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;
namespace DefaultCombat.Routines
{
public class InnovativeOrdnance : RotationBase
{
public override string Name
{
get { return "Mercenary Innovative Ordnance"; }
}
public override Composite Buffs
{
get
{
return new PrioritySelector(
Spell.Buff("Combustible Gas Cylinder"),
Spell.Buff("Hunter's Boon")
);
}
}
public override Composite Cooldowns
{
get
{
return new PrioritySelector(
Spell.Buff("Determination", ret => Me.IsStunned),
Spell.Buff("Supercharged Gas", ret => Me.BuffCount("Supercharge") == 10),
Spell.Buff("Thermal Sensor Override", ret => Me.InCombat && Me.CurrentTarget.BossOrGreater()),
Spell.Buff("Vent Heat", ret => Me.ResourcePercent() >= 50),
Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 50),
Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30)
);
}
}
public override Composite SingleTarget
{
get
{
return new LockSelector(
//Movement
CombatMovement.CloseDistance(Distance.Ranged),
new Decorator(ret => Me.ResourcePercent() > 40 && !Buddy.CommonBot.AbilityManager.CanCast("Vent Heat", Me),
new PrioritySelector(
Spell.Cast("Mag Shot", ret => Me.HasBuff("Innovative Particle Accelerator")),
Spell.Cast("Rapid Shots")
)),
//Rotation
Spell.Cast("Disabling Shot",
ret =>
Me.CurrentTarget.IsCasting && Me.CurrentTarget.Distance <= Distance.Melee && !DefaultCombat.MovementDisabled),
new Decorator(
ret =>
!Me.CurrentTarget.HasDebuff("Burning (Incendiary Missile)") || Me.CurrentTarget.DebuffTimeLeft("Burning (Incendiary Missile)") <= 2,
new PrioritySelector(Spell.Cast("Incendiary Missile")))
,
new Decorator(
ret =>
Me.HasBuff("Innovative Particle Accelerator"),
new PrioritySelector(Spell.Cast("Mag Shot")))
,
new Decorator(
ret =>
!Me.CurrentTarget.HasDebuff("Bleeding") || Me.CurrentTarget.DebuffTimeLeft("Bleeding") <= 2,
new PrioritySelector(Spell.Cast("Serrated Shot")))
,
new Decorator(
ret =>
Me.BuffCount("Surging Shots") == 10,
new PrioritySelector(Spell.Cast("Power Shot")))
,
new Decorator(
ret =>
Me.CurrentTarget.HasDebuff("Burning (Incendiary Missile)") &&
Me.CurrentTarget.HasDebuff("Bleeding") &&
!Me.HasBuff("Innovative Particle Accelerator"),
new PrioritySelector(
Spell.Cast("Thermal Detonator"),
Spell.Cast("Electro Net"),
Spell.Cast("Unload"),
Spell.Cast("Missile Blast", ret => Me.HasBuff("Volatile Warhead")),
Spell.Cast("Power Shot")))
);
}
}
public override Composite AreaOfEffect
{
get
{
return new Decorator(ret => Targeting.ShouldAoe,
new PrioritySelector(
Spell.CastOnGround("Death from Above"),
Spell.Cast("Fusion Missle", ret => Me.HasBuff("Thermal Sensor Override")),
Spell.Cast("Explosive Dart"))
);
}
}
}
}