// 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
{
internal class Corruption : RotationBase
{
public override string Name
{
get { return "Sorcerer Corruption"; }
}
public override Composite Buffs
{
get
{
return new PrioritySelector(
Spell.Buff("Mark of Power")
);
}
}
public override Composite Cooldowns
{
get
{
return new PrioritySelector(
Spell.Buff("Recklessness", ret => Targeting.ShouldAoeHeal),
Spell.Buff("Consuming Darkness", ret => NeedForce()),
Spell.Buff("Unnatural Preservation", ret => Me.HealthPercent < 50)
);
}
}
public override Composite SingleTarget
{
get
{
return new PrioritySelector(
//Movement
CombatMovement.CloseDistance(Distance.Ranged),
//Rotation INTERRUPTS
Spell.Cast("Jolt", ret => Me.CurrentTarget.IsCasting),
//Rotation PROCS
Spell.Cast("Dark Heal", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.HealthPercent <= 80 && Me.HasBuff("Dark Concentration")),
new Decorator(ret => Me.HasBuff("Force Bending"),
new PrioritySelector(
Spell.Cast("Innervate", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.HealthPercent <= 90),
Spell.Cast("Dark Infusion", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.HealthPercent <= 50)
)),
//Rotation MAIN
Spell.Cast("Dark Heal", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.HealthPercent <= 35),
Spell.Cast("Innervate", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.HealthPercent <= 80),
Spell.Cast("Static Barrier", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.HealthPercent <= 75 && !Me.CurrentTarget.HasDebuff("Deionized")),
Spell.Cast("Resurgence", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.HealthPercent <= 90),
Spell.CastOnGround("Revivification", ret => Me.CurrentTarget.IsFriendly && Me.CurrentTarget.IsStunned)
);
}
}
public override Composite AreaOfEffect
{
get
{
return new PrioritySelector(
//BuffLog.Instance.LogTargetBuffs,
//Cleanse if needed
Spell.Cleanse("Purge")
//Emergency Heal (Insta-cast)
//Spell.Heal("Dark Heal", 80, ret => Me.HasBuff("Dark Concentration")),
//Single Target Healing
//Spell.Heal("Innervate", 80),
//Spell.HoT("Static Barrier", 75, ret => HealTarget != null && !HealTarget.HasDebuff("Deionized")),
//Buff Tank
//Spell.HoT("Static Barrier", on => Tank, 100, ret => Tank != null && Tank.InCombat && !Tank.HasDebuff("Deionized")),
//Use Force Bending
//new Decorator(ret => Me.HasBuff("Force Bending"),
//new PrioritySelector(
//Spell.Heal("Innervate", 90),
//Spell.Heal("Dark Infusion", 50)
//)),
//Build Force Bending
//Spell.HoT("Resurgence", 80),
//Spell.HoT("Resurgence", on => Tank, 100, ret => Tank != null && Tank.InCombat),
//Aoe Heal
//Spell.HealGround("Revivification"),
//Single Target Healing
//Spell.Heal("Dark Heal", 35),
//Spell.Heal("Dark Infusion", 80)
);
}
}
private bool NeedForce()
{
if (Me.ForcePercent <= 20)
return true;
if (Me.HasBuff("Force Surge") && Me.ForcePercent < 80 && !Me.HasBuff("Reverse Corruptions"))
return true;
return false;
}
}
}