General

A single and multi-target rotation that works with any talent combination. This rotation assumes that you can use Vengeful Retreat and Fel Rush at any time with no restriction due to movement.

Specs

DemonHunterHavoc

Included Rotations

AmrDemonHunterHavorPreFight, AmrRacials, AmrAutoAttackDemonHunter

Movement Spells

Felblade, FelRush, Blur, Netherwalk

Enable Off-GCD Checking

No

Bloodlust Early?

No

Bloodlust Late?

No

Target Priority

1

Filter

None

NPC Name

Comment

Learned Values

1

Code Name

MetamorphosisCooldown

Type

Cooldown

Spell Name

Metamorphosis

Effect Name

Switch Name

Switch Off on End

No

Default Value

= SpellCooldownSec(Metamorphosis)

Condition

None

Fight to the Death

No

Description

2

Code Name

EyeBeamCooldown

Type

Cooldown

Spell Name

EyeBeam

Effect Name

Switch Name

Switch Off on End

No

Default Value

= SpellCooldownSec(EyeBeam)

Condition

None

Fight to the Death

No

Description

1

Code Name

Type

None

Spell Name

Effect Name

Switch Name

Switch Off on End

No

Default Value

None

Condition

None

Fight to the Death

No

Description

Parameters

1

Code Name

ChaosBladeWaitTime

Description

When we have CDR items like CoF or Delusions of Grandeur, we need to make sure we don't save Chaos Blades so long that we miss out on a use. This finds how much time is left in the fight that could be spent waiting without missing a use.

if HasTalent(Prepared) or HasTalent(Momentum) and not HasBuff(Momentum)

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

FelRush

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if HasTalent(Momentum) and not HasBuff(Momentum) and CooldownSecRemaining(VengefulRetreat) > BuffDurationSec(Momentum)

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Action List

Spell

Action List

Cooldowns

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

None

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

FuryOfTheIllidari

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if not HasTalent(Momentum) or HasBuff(Momentum)

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

Yes

Save for Execute

No

Save for AoE

Yes

AoE Count

= 2

if

=

temporary variable types

AoE Radius

= 8

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Action List

Spell

Action List

AoE

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if TargetsInRadius(BladeDanceHitAoE) > 1

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Action List

Spell

Action List

SingleTarget

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

None

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

None

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

2On Demand, SingleTarget

Type

On Demand

Code Name

SingleTarget

Pet Code Name

Description

Pre-Fight?

No

Start Time (sec)

None

Start Condition

None

Type

Spell

Spell

FelEruption

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

None

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

DeathSweep

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if HasTalent(FirstBlood)

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

FelRush

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if ChargesRemaining(FelRush) = SpellCharges(FelRush) and CurrentTarget != Krosus and not HasBuff(Momentum)

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

Annihilation

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

None

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

FelBarrage

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if ChargesRemaining(FelBarrage) = SpellCharges(FelBarrage) and (not HasTalent(Momentum) or HasBuff(Momentum))

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

Yes

Save for Execute

No

Save for AoE

Yes

AoE Count

= 2

if

=

temporary variable types

AoE Radius

= 8

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

ThrowGlaive

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if HasTalent(Bloodlet) and SecondsUntilAoe(2,8) > ChargeSecRemaining(ThrowGlaive)

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

No

Save for Execute

No

Save for AoE

No

AoE Count

None

if

=

temporary variable types

AoE Radius

None

if

=

temporary variable types

Estimated Cooldown (sec)

None

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

EyeBeam

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if ((HasTalent(BlindFury) and not HasTalent(Demonic)) or
(HasTalent(Demonic) and (not HasBuff(Metamorphosis) or (HasBuff(Metamorphosis) and PeekSavedValue(MetaSource) = 0)))) and
(not HasTalent(Momentum) or HasBuff(Momentum))

On Condition

None

On Power Threshold

None

if

=

temporary variable types

Off Condition

None

Off Power Threshold

None

if

=

temporary variable types

Once?

No

Repeat?

No

Big Heal Cooldown?

No

Skip Current Target?

No

Cast on Allies?

No

Ally Targets

Injured Filter

Injured

Search Order

Most Injured

Align with Buff

Buff Align Condition

None

Buff Power Estimate

None

if

=

temporary variable types

Interruptable?

No

Interrupt Mode

Immediately

Interrupt Condition

None

Multi-DoT Count

None

if

=

temporary variable types

Multi-HoT Count

None

if

=

temporary variable types

Pet Code Name

Cooldown?

Yes

Save for Execute

No

Save for AoE

Yes

AoE Count

= 2

if

=

temporary variable types

AoE Radius

= 8

if

=

temporary variable types

Estimated Cooldown (sec)

= LearnedValueAverage(EyeBeamCooldown)

if

=

temporary variable types

Suspend on Cast

Suspend Duration (sec)

None

if

=

temporary variable types

Comment

Type

Spell

Spell

Felblade

Action List

Name

Delay (sec)

None

if

=

temporary variable types

Debug Type

None

Debug ID

Trinket Priority

Trinket Blacklist

Condition

if PowerToMax > 50 or (PowerToMax > 30 and not HasTalent(DemonBlades))