## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/default/demonhunter_havoc.simc ## Up to date with SimC: March 9 2025 - 91f125a actions.precombat+=/variable,name=trinket1_steroids,value=trinket.1.is.improvised_seaforium_pacemaker actions.precombat+=/variable,name=trinket2_steroids,value=trinket.2.is.improvised_seaforium_pacemaker # Blacklist for trinkets to hold trinket cooldowns for Initiative and Necessary Strike line-up outside standard trinket implementation actions.precombat+=/variable,name=trinket1_crit,value=trinket.1.is.mad_queens_mandate|trinket.1.is.junkmaestros_mega_magnet|trinket.1.is.geargrinders_spare_keys|trinket.1.is.ravenous_honey_buzzer|trinket.1.is.grim_codex actions.precombat+=/variable,name=trinket2_crit,value=trinket.2.is.mad_queens_mandate|trinket.2.is.junkmaestros_mega_magnet|trinket.2.is.geargrinders_spare_keys|trinket.2.is.ravenous_honey_buzzer|trinket.2.is.grim_codex actions.precombat+=/variable,name=rg_ds,default=0,op=reset actions.precombat+=/sigil_of_flame actions.precombat+=/immolation_aura actions+=/disrupt ## [Hekili] `retarget_auto_attack` is not implemented. ### Spread Burning Wounds for uptime in multitarget scenarios ## actions+=/retarget_auto_attack,line_cd=1,target_if=min:debuff.burning_wound.remains,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound<(spell_targets>?3) ## actions+=/retarget_auto_attack,line_cd=1,target_if=min:!target.is_boss,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound=(spell_targets>?3) # Fury generated per second actions+=/variable,name=fury_gen,op=set,value=talent.demon_blades*(1%(2.6*attack_haste)*((talent.demonsurge&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10 # Tier 33 tier set check for trinket lineups withs Necessary Sacrifice actions+=/variable,name=tier33_4piece,value=(buff.initiative.up|!talent.initiative)&(buff.necessary_sacrifice.up|!set_bonus.thewarwithin_season_2_4pc) # Double on use trinket holding for using a stat cooldown trinket and an on use damage trinket actions+=/variable,name=double_on_use,value=!equipped.signet_of_the_priory&!equipped.house_of_cards|(trinket.1.is.house_of_cards|trinket.1.is.signet_of_the_priory)&trinket.1.cooldown.remains>20|(trinket.2.is.house_of_cards|trinket.2.is.signet_of_the_priory)&trinket.2.cooldown.remains>20 # Use to determine if we traversed either of the opener lists. actions.ar+=/variable,name=opened,value=false # Separate actionlists for each hero tree actions+=/run_action_list,name=ar,strict=1,if=hero_tree.aldrachi_reaver ## [Syrif] - Fallback for people levelling actions+=/run_action_list,name=fs,strict=1,if=!hero_tree.aldrachi_reaver # Aldrachi Reaver actions.ar=variable,name=rg_inc,op=set,value=buff.rending_strike.down&buff.glaive_flurry.up&cooldown.blade_dance.up&gcd.remains=0|variable.rg_inc&prev_gcd.1.death_sweep ## [Hekili] `pick_up_fragment` is not implemented. ## actions.ar+=/pick_up_fragment,use_off_gcd=1,if=fury<=90 actions.ar+=/variable,name=fel_barrage,op=set,value=talent.fel_barrage&(cooldown.fel_barrage.remains=desired_targets+raid_event.adds.count|raid_event.adds.in90)&(cooldown.metamorphosis.remains|active_enemies>2)|buff.fel_barrage.up)&!(active_enemies=1&!raid_event.adds.exists) actions.ar+=/chaos_strike,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2|active_enemies>2)&time>10 actions.ar+=/annihilation,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2|active_enemies>2) ## [Hekili] Remove `action.reavers_glaive.last_used` check that prevented using Reaver's Glaive after the opener. actions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains3|buff.metamorphosis.remains>2|cooldown.eye_beam.remains<10|fight_remains<10) actions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains<4&(buff.thrill_of_the_fight_damage.up|!prev_gcd.1.death_sweep|!variable.rg_inc)&active_enemies>2|boss&fight_remains<10 actions.ar+=/call_action_list,name=ar_cooldown ## [Hekili] No performance loss in sims changing from Run Action List to Call Action List; checking CDs toggle will help keep cromulent. actions.ar+=/call_action_list,name=ar_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up|cooldown.metamorphosis.up|talent.essence_break&cooldown.essence_break.up) actions.ar+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark|active_dot.reavers_mark>0|debuff.reavers_mark.remains>=2-talent.quickened_sigils) actions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage&raid_event.adds.up actions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&(!talent.fel_barrage|cooldown.fel_barrage.remains>recharge_time)&debuff.essence_break.down&(buff.metamorphosis.down|buff.metamorphosis.remains>5) actions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&raid_event.adds.up&raid_event.adds.remains<15&raid_event.adds.remains>5&debuff.essence_break.down ## [Syrif] - Rework trinket conditions to work with existing metatable structure actions.ar+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3|gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&cooldown.metamorphosis.remains>10)&(!variable.trinket1_steroids&!variable.trinket2_steroids|variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains30)|variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains30))&time>20&(!talent.inertia&buff.unbound_chaos.down|buff.inertia_trigger.down&buff.metamorphosis.down) actions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage|!talent.demon_blades&talent.fel_barrage&(buff.fel_barrage.up|cooldown.fel_barrage.up)&buff.metamorphosis.down actions.ar+=/felblade,if=!talent.inertia&active_enemies=1&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&buff.metamorphosis.down actions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&cooldown.eye_beam.remains<=0.5&(cooldown.metamorphosis.remains&talent.looks_can_kill|active_enemies>1) actions.ar+=/run_action_list,name=ar_meta,if=buff.metamorphosis.up actions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&buff.inertia.down&cooldown.blade_dance.remains<4&(cooldown.eye_beam.remains>5&cooldown.eye_beam.remains>buff.unbound_chaos.remains|cooldown.eye_beam.remains<=gcd.max&cooldown.vengeful_retreat.remains<=gcd.max+1) ## [Hekili] Note that, with procs, you can get back-to-back Immolation Auras here and that's consistent with the sim: https://www.raidbots.com/simbot/report/d2c3niKvdSVyDbQdsaDsrB/simc ## actions.ar+=/immolation_aura,if=time<15&active_enemies=1&talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down actions.ar+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&full_recharge_timefull_recharge_time|active_enemies>desired_targets) actions.ar+=/immolation_aura,if=active_enemies>desired_targets&(active_enemies>=desired_targets+raid_event.adds.count|raid_event.adds.in>full_recharge_time) actions.ar+=/immolation_aura,if=fight_remains<15&cooldown.blade_dance.remains&talent.ragefire ## [Syrif] - Rework trinket conditions to work with existing metatable structure actions.ar+=/eye_beam,if=(cooldown.blade_dance.remains<7|raid_event.adds.up)&(!variable.trinket1_steroids&!variable.trinket2_steroids|variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains30)|variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains30))|boss&fight_remains<10 actions.ar+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*3&buff.rending_strike.down actions.ar+=/chaos_strike,if=buff.rending_strike.up actions.ar+=/sigil_of_flame,if=active_enemies>3|debuff.essence_break.down actions.ar+=/felblade,if=fury.deficit>=40+variable.fury_gen*0.5&!buff.inertia_trigger.up actions.ar+=/glaive_tempest,if=active_enemies>=desired_targets+raid_event.adds.count|raid_event.adds.in>10 actions.ar+=/chaos_strike,if=debuff.essence_break.up actions.ar+=/throw_glaive,if=active_enemies>1&talent.furious_throws&(!talent.screaming_brutality|charges=2|full_recharge_timegcd.max*2|fury>80 actions.ar+=/felblade,if=active_enemies=1&!talent.a_fire_inside&debuff.essence_break.down actions.ar+=/immolation_aura,if=raid_event.adds.in>full_recharge_time|active_enemies>desired_targets&active_enemies>2 actions.ar+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&(!talent.fel_barrage|cooldown.fel_barrage.remains>25|active_enemies=1&!raid_event.adds.exists) actions.ar+=/demons_bite actions.ar+=/throw_glaive,if=buff.unbound_chaos.down&recharge_time8|charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1 actions.ar+=/fel_rush,if=buff.unbound_chaos.down&recharge_time8|charges_fractional>1.01)&active_enemies>1 actions.ar+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100 actions.ar_cooldown+=/metamorphosis,if=(((cooldown.eye_beam.remains>=20|talent.cycle_of_hatred&cooldown.eye_beam.remains>=13)&(!talent.essence_break|debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40|(raid_event.adds.remains>8|!talent.fel_barrage)&active_enemies>2)|!talent.chaotic_transformation|boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3|prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(variable.opened|time>15) actions.ar_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&((prev_gcd.1.death_sweep|prev_gcd.2.death_sweep|prev_gcd.3.death_sweep|buff.metamorphosis.up&buff.metamorphosis.remains40|(raid_event.adds.remains>8|!talent.fel_barrage)&active_enemies>2)|!talent.chaotic_transformation|boss&fight_remains<30)&(buff.inner_demon.down&(buff.rending_strike.down|!talent.restless_hunter|prev_gcd.1.death_sweep)))&(talent.inertia|talent.essence_break)&(variable.opened|time>15) actions.ar_cooldown+=/potion,if=boss&fight_remains<35|(buff.metamorphosis.up|debuff.essence_break.up)&time>10 ## [Hekili] `invoke_external_buff` is not implemented. ## actions.ar_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up|boss&fight_remains<=20 actions.ar_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate|equipped.treacherous_transmitter|equipped.skardyns_grace|equipped.signet_of_the_priory|equipped.junkmaestros_mega_magnet|equipped.geargrinders_spare_keys|equipped.mister_locknstalk|equipped.ravenous_honey_buzzer|equipped.grim_codex actions.ar_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative|buff.initiative.up|time>5)&(buff.metamorphosis.remains>5|buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10|trinket.2.cooldown.remains>10|!trinket.2.has_buff.any)|trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10|trinket.1.cooldown.remains>10|!trinket.1.has_buff.any))&fight_remains>120|boss&fight_remains<10&fight_remainsfight_remains|trinket.2.is.mad_queens_mandate&trinket.2.cooldown.remains>fight_remains)|fight_remains>25 actions.ar_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate|fight_remains>25|trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains|trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains|trinket.1.cooldown.duration<10|trinket.2.cooldown.duration<10)&buff.metamorphosis.up actions.ar_cooldown+=/use_item,name=house_of_cards,if=(cooldown.eye_beam.up|buff.metamorphosis.up)|boss&fight_remains<20 actions.ar_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia|buff.inertia.up)|buff.metamorphosis.up&time>20|boss&fight_remains<20 actions.ar_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=variable.tier33_4piece&variable.double_on_use|fight_remains<20 actions.ar_cooldown+=/use_item,name=geargrinders_spare_keys,if=variable.tier33_4piece&variable.double_on_use|fight_remains<20 actions.ar_cooldown+=/use_item,name=grim_codex,if=variable.tier33_4piece&variable.double_on_use|boss&fight_remains<10 actions.ar_cooldown+=/use_item,name=ravenous_honey_buzzer,if=(variable.tier33_4piece&(buff.inertia.down&(cooldown.essence_break.remains&debuff.essence_break.down|!talent.essence_break))&(trinket.1.is.ravenous_honey_buzzer&(trinket.2.cooldown.duration<10|trinket.2.cooldown.remains>10|!trinket.2.has_buff.any)|trinket.2.is.ravenous_honey_buzzer&(trinket.1.cooldown.duration<10|trinket.1.cooldown.remains>10|!trinket.1.has_buff.any))&fight_remains>120|boss&fight_remains<10&fight_remains15|cooldown.eye_beam.remains<5|boss&fight_remains<20 actions.ar_cooldown+=/use_item,slot=trinket1,if=((cooldown.eye_beam.remains1|buff.metamorphosis.up)&(raid_event.adds.in>trinket.1.cooldown.duration-15|raid_event.adds.remains>8)|!trinket.1.has_buff.any|boss&fight_remains<25)&!trinket.1.is.mister_locknstalk&!variable.trinket1_crit&!trinket.1.is.skardyns_grace&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket|trinket.2.cooldown.remains>20) actions.ar_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.remains1|buff.metamorphosis.up)&(raid_event.adds.in>trinket.2.cooldown.duration-15|raid_event.adds.remains>8)|!trinket.2.has_buff.any|boss&fight_remains<25)&!trinket.2.is.mister_locknstalk&!variable.trinket2_crit&!trinket.2.is.skardyns_grace&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket|trinket.1.cooldown.remains>20) actions.ar_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_enemies>=desired_targets+raid_event.adds.count|raid_event.adds.in>90)&(!talent.reavers_mark|debuff.reavers_mark.up)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5|buff.metamorphosis.down)&(!talent.initiative|buff.initiative.up|time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down|buff.inertia_trigger.down) actions.ar_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark|active_dot.reavers_mark>0|debuff.reavers_mark.remains>=2-talent.quickened_sigils)&cooldown.blade_dance.remains&time>15 actions.ar_fel_barrage+=/variable,name=generator_up,op=set,value=cooldown.felblade.remains1&raid_event.adds.up|raid_event.adds.in>40) actions.ar_fel_barrage+=/essence_break,if=buff.fel_barrage.down&buff.metamorphosis.up actions.ar_fel_barrage+=/death_sweep,if=buff.fel_barrage.down actions.ar_fel_barrage+=/immolation_aura,if=(active_enemies>2|buff.fel_barrage.up)&(cooldown.eye_beam.remains>recharge_time+3) actions.ar_fel_barrage+=/glaive_tempest,if=buff.fel_barrage.down&active_enemies>1 actions.ar_fel_barrage+=/blade_dance,if=buff.fel_barrage.down actions.ar_fel_barrage+=/fel_barrage,if=fury>100&(raid_event.adds.in>90|raid_event.adds.in4&active_enemies>2) actions.ar_fel_barrage+=/felblade,if=buff.inertia_trigger.up&buff.fel_barrage.up actions.ar_fel_barrage+=/sigil_of_flame,if=fury.deficit>40&buff.fel_barrage.up actions.ar_fel_barrage+=/felblade,if=buff.fel_barrage.up&fury.deficit>40 actions.ar_fel_barrage+=/death_sweep,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3|variable.generator_up|fury>80|variable.fury_gen>18) actions.ar_fel_barrage+=/glaive_tempest,if=fury-variable.gcd_drain-30>0&(buff.fel_barrage.remains<3|variable.generator_up|fury>80|variable.fury_gen>18) actions.ar_fel_barrage+=/blade_dance,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3|variable.generator_up|fury>80|variable.fury_gen>18) actions.ar_fel_barrage+=/arcane_torrent,if=fury.deficit>40&buff.fel_barrage.up actions.ar_fel_barrage+=/the_hunt,if=fury>40&(active_enemies>=desired_targets+raid_event.adds.count|raid_event.adds.in>80) actions.ar_fel_barrage+=/annihilation,if=fury-variable.gcd_drain-40>20&(buff.fel_barrage.remains<3|variable.generator_up|fury>80|variable.fury_gen>18) actions.ar_fel_barrage+=/chaos_strike,if=fury-variable.gcd_drain-40>20&(cooldown.fel_barrage.remains&cooldown.fel_barrage.remains<10&fury>100|buff.fel_barrage.up&(buff.fel_barrage.remains*variable.fury_gen-buff.fel_barrage.remains*32)>0) actions.ar_fel_barrage+=/demons_bite actions.ar_meta+=/death_sweep,if=buff.metamorphosis.remains15|cooldown.death_sweep.remains)&(cooldown.metamorphosis.remains&(!talent.essence_break|cooldown.essence_break.remains<=0.6|cooldown.essence_break.remains>10)|cooldown.metamorphosis.up&talent.essence_break&cooldown.essence_break.remains<=0.6&buff.inner_demon.down&cooldown.blade_dance.remains<=gcd.max+0.5|talent.restless_hunter)&cooldown.eye_beam.remains&(!talent.inertia&buff.unbound_chaos.down|buff.inertia_trigger.down) actions.ar_meta+=/felblade,if=talent.inertia&buff.inertia_trigger.up&cooldown.essence_break.remains<=1&cooldown.blade_dance.remains<=gcd.max*2&cooldown.metamorphosis.remains<=gcd.max*3 actions.ar_meta+=/essence_break,if=fury>=30&talent.restless_hunter&cooldown.metamorphosis.up&(talent.inertia&buff.inertia.up|!talent.inertia)&cooldown.blade_dance.remains<=gcd.max actions.ar_meta+=/annihilation,if=buff.metamorphosis.remains2)|(cooldown.blade_dance.remains2)) actions.ar_meta+=/immolation_aura,if=charges=2&active_enemies>1&debuff.essence_break.down actions.ar_meta+=/annihilation,if=buff.inner_demon.up&(cooldown.eye_beam.remainsgcd.max*4&buff.metamorphosis.remains>=gcd.max*2&cooldown.metamorphosis.up&cooldown.death_sweep.remains<=gcd.max&buff.inertia.up actions.ar_meta+=/essence_break,if=fury>20&(cooldown.blade_dance.remains4)|boss&fight_remains<10 actions.ar_meta+=/death_sweep actions.ar_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down actions.ar_meta+=/glaive_tempest,if=debuff.essence_break.down&(cooldown.blade_dance.remains>gcd.max*2|fury>60)&(active_enemies>=desired_targets+raid_event.adds.count|raid_event.adds.in>10) actions.ar_meta+=/sigil_of_flame,if=active_enemies>2&debuff.essence_break.down actions.ar_meta+=/throw_glaive,if=talent.soulscar&talent.furious_throws&active_enemies>1&debuff.essence_break.down&(charges=2|full_recharge_time60|soul_fragments.total>0|buff.metamorphosis.remains<5&cooldown.felblade.up actions.ar_meta+=/annihilation,if=cooldown.blade_dance.remains|fury>60|buff.metamorphosis.remains<5&cooldown.felblade.up actions.ar_meta+=/sigil_of_flame,if=buff.metamorphosis.remains>5&buff.out_of_range.down actions.ar_meta+=/felblade,if=fury.deficit>40&!buff.inertia_trigger.up actions.ar_meta+=/sigil_of_flame,if=debuff.essence_break.down&buff.out_of_range.down actions.ar_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains=desired_targets+raid_event.adds.count|raid_event.adds.in>full_recharge_time) actions.ar_meta+=/annihilation actions.ar_meta+=/fel_rush,if=recharge_time8|charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1 actions.ar_meta+=/demons_bite actions.ar_opener+=/potion actions.ar_opener+=/the_hunt,if=buff.reavers_glaive.down&buff.glaive_flurry.down&buff.rending_strike.down actions.ar_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia|buff.inertia_trigger.down)&buff.inner_demon.down&cooldown.blade_dance.remains&gcd.remains<0.1 actions.ar_opener+=/annihilation,if=buff.rending_strike.up&buff.thrill_of_the_fight_damage.down actions.ar_opener+=/felblade,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies<=2 actions.ar_opener+=/fel_rush,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies>2 actions.ar_opener+=/annihilation,if=talent.inner_demon&buff.inner_demon.up&cooldown.essence_break.up actions.ar_opener+=/essence_break,if=(buff.inertia.up|!talent.inertia)&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max&(!talent.reavers_mark|active_dot.reavers_mark>0|debuff.reavers_mark.remains>=2-talent.quickened_sigils) actions.ar_opener+=/felblade,if=buff.inertia_trigger.up&talent.inertia&talent.restless_hunter&cooldown.essence_break.up&cooldown.metamorphosis.up&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max actions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&active_enemies<=2 actions.ar_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&(cooldown.felblade.remains|active_enemies>2) actions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&buff.metamorphosis.up&cooldown.metamorphosis.remains&debuff.essence_break.down actions.ar_opener+=/the_hunt,if=(buff.metamorphosis.up&hero_tree.aldrachi_reaver&talent.shattered_destiny|!talent.shattered_destiny&hero_tree.aldrachi_reaver|hero_tree.felscarred)&(!talent.initiative|talent.inertia|buff.initiative.up|time>5) actions.ar_opener+=/felblade,if=fury<40&buff.inertia_trigger.down&debuff.essence_break.down actions.ar_opener+=/reavers_glaive,if=debuff.reavers_mark.down&debuff.essence_break.down actions.ar_opener+=/chaos_strike,if=buff.rending_strike.up&active_enemies>2 actions.ar_opener+=/blade_dance,if=buff.glaive_flurry.up&active_enemies>2 actions.ar_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down actions.ar_opener+=/metamorphosis,if=buff.metamorphosis.up&cooldown.blade_dance.remains>gcd.max*2&buff.inner_demon.down&(!talent.restless_hunter|prev_gcd.1.death_sweep)&(cooldown.essence_break.remains|!talent.essence_break) actions.ar_opener+=/sigil_of_spite,if=(!talent.reavers_mark|active_dot.reavers_mark>0|debuff.reavers_mark.up)&(cooldown.eye_beam.remains&cooldown.metamorphosis.remains) actions.ar_opener+=/eye_beam,if=buff.metamorphosis.down|debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains|talent.essence_break&cooldown.essence_break.up) actions.ar_opener+=/essence_break,if=cooldown.blade_dance.remains=30 actions.fs+=/call_action_list,name=fs_cooldown actions.fs+=/call_action_list,name=fs_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up|cooldown.metamorphosis.up|talent.essence_break&cooldown.essence_break.up|buff.demonsurge.stack<3+talent.student_of_suffering+talent.a_fire_inside) actions.fs+=/felblade,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies<=2&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains|hero_tree.aldrachi_reaver) actions.fs+=/fel_rush,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies>3&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains) actions.fs+=/run_action_list,name=fs_meta,if=buff.metamorphosis.up actions.fs+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3|gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&(cooldown.metamorphosis.remains>10|cooldown.blade_dance.remains=18|!talent.student_of_suffering)&(cooldown.metamorphosis.remains>10|hero_tree.aldrachi_reaver)&time>20 actions.fs+=/sigil_of_flame,if=talent.student_of_suffering&cooldown.eye_beam.remains<=gcd.max&(cooldown.essence_break.remains10|cooldown.blade_dance.remains=10|cooldown.metamorphosis.up)&(cooldown.blade_dance.remains<7|raid_event.adds.up)|boss&fight_remains<10 actions.fs+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*4|debuff.essence_break.up actions.fs+=/chaos_strike,if=debuff.essence_break.up actions.fs+=/immolation_aura,if=talent.a_fire_inside&talent.isolated_prey&talent.flamebound&active_enemies=1&cooldown.eye_beam.remains>=gcd.max actions.fs+=/felblade,if=fury.deficit>40+variable.fury_gen*(0.5%gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia&active_enemies=1|!talent.inertia|hero_tree.aldrachi_reaver|cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering&cooldown.sigil_of_flame.remains<=gcd.max) actions.fs+=/chaos_strike,if=cooldown.eye_beam.remains>=gcd.max*4|(fury>=70-30*(talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max|cooldown.sigil_of_flame.up))-buff.chaos_theory.up*20-variable.fury_gen) actions.fs+=/immolation_aura,if=raid_event.adds.in>full_recharge_time&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max|cooldown.sigil_of_flame.up))|active_enemies>desired_targets&active_enemies>2 actions.fs+=/felblade,if=buff.out_of_range.down&buff.inertia_trigger.down&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max|cooldown.sigil_of_flame.up)) actions.fs+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&!talent.student_of_suffering&(!talent.fel_barrage|cooldown.fel_barrage.remains>25|(active_enemies=1&!raid_event.adds.exists)) actions.fs+=/throw_glaive,if=recharge_time8|charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1 actions.fs+=/fel_rush,if=buff.unbound_chaos.down&recharge_time8|charges_fractional>1.01)&active_enemies>1 actions.fs+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100 actions.fs_cooldown+=/metamorphosis,if=((cooldown.eye_beam.remains>=20&(!talent.essence_break|debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40|(raid_event.adds.remains>8|!talent.fel_barrage)&active_enemies>2)|!talent.chaotic_transformation|boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3|prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(hero_tree.aldrachi_reaver|buff.demonsurge_death_sweep.down)&(variable.opened|time>15) actions.fs_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&(buff.metamorphosis.up&cooldown.eye_beam.remains&(!talent.essence_break|debuff.essence_break.up|talent.shattered_destiny|hero_tree.felscarred)&buff.fel_barrage.down&(raid_event.adds.in>40|(raid_event.adds.remains>8|!talent.fel_barrage)&active_enemies>2)|!talent.chaotic_transformation|boss&fight_remains<30)&(buff.inner_demon.down&(!talent.restless_hunter|prev_gcd.1.death_sweep)))&(talent.inertia|talent.essence_break)&(hero_tree.aldrachi_reaver|(buff.demonsurge_death_sweep.down&buff.metamorphosis.up|buff.metamorphosis.remains15) actions.fs_cooldown+=/potion,if=boss&fight_remains<35|buff.metamorphosis.up|debuff.essence_break.up ## [Hekili] `invoke_external_buff` is not implemented. ## actions.fs_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up|boss&fight_remains<=20 actions.fs_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate|equipped.treacherous_transmitter|equipped.skardyns_grace|equipped.signet_of_the_priory|equipped.junkmaestros_mega_magnet|equipped.geargrinders_spare_keys|equipped.mister_locknstalk|equipped.ravenous_honey_buzzer actions.fs_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative|buff.initiative.up|time>5)&(buff.metamorphosis.remains>5|buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10|trinket.2.cooldown.remains>10|!trinket.2.has_buff.any)|trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10|trinket.1.cooldown.remains>10|!trinket.1.has_buff.any))&fight_remains>120|boss&fight_remains<10&fight_remainsfight_remains|trinket.2.is.mad_queens_mandate&trinket.2.cooldown.remains>fight_remains)|fight_remains>25 actions.fs_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate|fight_remains>25|trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains|trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains|trinket.1.cooldown.duration<10|trinket.2.cooldown.duration<10)&buff.metamorphosis.up actions.fs_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia|buff.inertia.up)|(buff.metamorphosis.up&cooldown.essence_break.up|boss&fight_remains<20)&time>20 actions.fs_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=buff.initiative.up actions.fs_cooldown+=/use_item,name=geargrinders_spare_keys,if=buff.initiative.up ## [Hekili] `do_treacherous_transmitter` is not implemented. ## actions.fs_cooldown+=/do_treacherous_transmitter_task,if=cooldown.eye_beam.remains>15|cooldown.eye_beam.remains<5|boss&fight_remains<20 actions.fs_cooldown+=/use_item,slot=trinket1,if=((cooldown.eye_beam.remains1|buff.metamorphosis.up)&(raid_event.adds.in>trinket.1.cooldown.duration-15|raid_event.adds.remains>8)|!trinket.1.has_buff.any|boss&fight_remains<25)&!trinket.1.is.skardyns_grace&!trinket.1.is.mad_queens_mandate&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket|trinket.2.cooldown.remains>20) actions.fs_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.remains1|buff.metamorphosis.up)&(raid_event.adds.in>trinket.2.cooldown.duration-15|raid_event.adds.remains>8)|!trinket.2.has_buff.any|boss&fight_remains<25)&!trinket.2.is.skardyns_grace&!trinket.2.is.mad_queens_mandate&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket|trinket.1.cooldown.remains>20) actions.fs_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_dot.reavers_mark>0|debuff.reavers_mark.up|!talent.reavers_mark)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5|buff.metamorphosis.down)&(!talent.initiative|buff.initiative.up|time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down|buff.inertia_trigger.down)&(hero_tree.aldrachi_reaver|buff.metamorphosis.down)|boss&fight_remains<=30 actions.fs_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&cooldown.blade_dance.remains&(variable.opened|time>15) actions.fs_meta=death_sweep,if=buff.metamorphosis.remains30-gcd.max|cooldown.essence_break.remains<=gcd.max+talent.inertia&(cooldown.vengeful_retreat.remains<=gcd|buff.initiative.up)+gcd.max*(cooldown.eye_beam.remains<=gcd.max))|(!talent.essence_break&(cooldown.eye_beam.remains>=10|cooldown.eye_beam.remains<=gcd.max)))) actions.fs_meta+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(gcd.remains<0.3|talent.inertia&cooldown.eye_beam.remains>gcd.remains&(buff.cycle_of_hatred.stack=2|buff.cycle_of_hatred.stack=3))&(cooldown.metamorphosis.remains&(buff.demonsurge_annihilation.down&buff.demonsurge_death_sweep.down)|talent.restless_hunter&(!hero_tree.felscarred|buff.demonsurge_annihilation.down))&(!talent.inertia&buff.unbound_chaos.down|buff.inertia_trigger.down)&(!talent.essence_break|cooldown.essence_break.remains>18|cooldown.essence_break.remains<=gcd.remains+talent.inertia*1.5&(!talent.student_of_suffering|(buff.student_of_suffering.up|cooldown.sigil_of_flame.remains>5)))&(cooldown.eye_beam.remains>5|cooldown.eye_beam.remains<=gcd.remains|cooldown.eye_beam.up) actions.fs_meta+=/death_sweep,if=hero_tree.felscarred&talent.essence_break&buff.demonsurge_death_sweep.up&(buff.inertia.up&(cooldown.essence_break.remains>buff.inertia.remains|!talent.essence_break)|cooldown.metamorphosis.remains<=5&buff.inertia_trigger.down|buff.inertia.up&buff.demonsurge_abyssal_gaze.up)|talent.inertia&buff.inertia_trigger.down&cooldown.vengeful_retreat.remains>=gcd.max&buff.inertia.down actions.fs_meta+=/annihilation,if=buff.metamorphosis.remains=buff.inertia_trigger.remains&cooldown.blade_dance.remains<=4.5&(cooldown.blade_dance.remains|cooldown.blade_dance.remains<=0.5))|buff.metamorphosis.remains<=5.5+talent.shattered_destiny*2) actions.fs_meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&debuff.essence_break.down&cooldown.metamorphosis.remains&(!hero_tree.felscarred|cooldown.eye_beam.remains)&(active_enemies>2|hero_tree.felscarred)&(cooldown.felblade.remains&cooldown.essence_break.remains<=0.6) actions.fs_meta+=/annihilation,if=buff.inner_demon.up&cooldown.blade_dance.remains&(cooldown.eye_beam.remains20&(cooldown.metamorphosis.remains>10|cooldown.blade_dance.remains=gcd.max*3|!talent.inertia)&buff.out_of_range.remains4)&(!hero_tree.felscarred|active_enemies>1|cooldown.metamorphosis.remains>5&cooldown.eye_beam.remains)&(!buff.cycle_of_hatred.stack=3|buff.initiative.up)|fight_remains<5 actions.fs_meta+=/sigil_of_doom,if=cooldown.blade_dance.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>=20|cooldown.eye_beam.remains<=gcd.max)&(!talent.student_of_suffering|buff.demonsurge_sigil_of_doom.up) actions.fs_meta+=/immolation_aura,if=buff.demonsurge.up&debuff.essence_break.down&buff.demonsurge_consuming_fire.up&cooldown.blade_dance.remains>=gcd.max&cooldown.eye_beam.remains>=gcd.max&fury.deficit>10+variable.fury_gen actions.fs_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down actions.fs_meta+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down&(buff.cycle_of_hatred.stack<4|cooldown.essence_break.remains>=20-gcd.max*talent.student_of_suffering|cooldown.sigil_of_flame.remains&talent.student_of_suffering|cooldown.essence_break.remains<=gcd.max) actions.fs_meta+=/death_sweep,if=cooldown.essence_break.remains>=gcd.max*2+talent.student_of_suffering*gcd.max|debuff.essence_break.up|!talent.essence_break ## [Hekili] `soul_fragments` is not implemented. ## actions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains|fury>60|soul_fragments.total>0|buff.metamorphosis.remains<5 actions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains|fury>60|buff.metamorphosis.remains<5 actions.fs_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains=desired_targets+raid_event.adds.count|raid_event.adds.in>full_recharge_time) actions.fs_meta+=/felblade,if=(buff.out_of_range.down|fury.deficit>40+variable.fury_gen*(0.5%gcd.max))&!buff.inertia_trigger.up actions.fs_meta+=/annihilation actions.fs_meta+=/throw_glaive,if=buff.unbound_chaos.down&recharge_time8|charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1 actions.fs_meta+=/fel_rush,if=recharge_time8|charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1 actions.fs_meta+=/demons_bite actions.fs_opener=potion,if=buff.initiative.up|!talent.initiative actions.fs_opener+=/felblade,if=cooldown.the_hunt.up&!talent.a_fire_inside&fury<40 actions.fs_opener+=/the_hunt,if=talent.inertia|buff.initiative.up|!talent.initiative actions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&active_enemies=1&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down actions.fs_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(cooldown.felblade.remains|active_enemies>1)&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down actions.fs_opener+=/essence_break,if=buff.metamorphosis.up&(!talent.inertia|buff.inertia.up)&buff.inner_demon.down&buff.demonsurge_annihilation.down actions.fs_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia|buff.inertia_trigger.down)&talent.essence_break&buff.inner_demon.down&(buff.initiative.down|gcd.remains<0.1)&cooldown.blade_dance.remains actions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&hero_tree.felscarred&debuff.essence_break.down&talent.essence_break&cooldown.metamorphosis.remains&active_enemies<=2&cooldown.sigil_of_flame.remains actions.fs_opener+=/sigil_of_doom,if=(buff.inner_demon.down|buff.out_of_range.up)&debuff.essence_break.down actions.fs_opener+=/annihilation,if=(buff.inner_demon.up|buff.demonsurge_annihilation.up)&(cooldown.metamorphosis.up|!talent.essence_break&cooldown.blade_dance.remains) actions.fs_opener+=/death_sweep,if=hero_tree.felscarred&buff.demonsurge_death_sweep.up&!talent.restless_hunter actions.fs_opener+=/annihilation,if=hero_tree.felscarred&buff.demonsurge_annihilation.up&(!talent.essence_break|buff.inner_demon.up) actions.fs_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down actions.fs_opener+=/felblade,if=fury<40&debuff.essence_break.down&buff.inertia_trigger.down&cooldown.metamorphosis.up actions.fs_opener+=/metamorphosis,if=buff.metamorphosis.up&buff.inner_demon.down&buff.demonsurge_annihilation.down&cooldown.blade_dance.remains actions.fs_opener+=/eye_beam,if=buff.metamorphosis.down|debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains|talent.essence_break&cooldown.essence_break.up)&(!talent.a_fire_inside|action.immolation_aura.charges=0) actions.fs_opener+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down actions.fs_opener+=/death_sweep actions.fs_opener+=/annihilation actions.fs_opener+=/demons_bite actions.fs_opener+=/variable,name=opened,value=true