Skip to content

Commit c5f5ca9

Browse files
committed
[Devourer] APL improvements for Cleave
1 parent 2547b67 commit c5f5ca9

2 files changed

Lines changed: 47 additions & 39 deletions

File tree

engine/class_modules/apl/apl_demon_hunter.cpp

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,23 +85,24 @@ void devourer( player_t* p )
8585
precombat->add_action( "snapshot_stats" );
8686
precombat->add_action( "variable,name=trinket_1_mastery,value=trinket.1.has_use_buff&trinket.1.has_buff.mastery" );
8787
precombat->add_action( "variable,name=trinket_2_mastery,value=trinket.2.has_use_buff&trinket.2.has_buff.mastery" );
88-
precombat->add_action( "variable,name=trinket_1_buffs,value=trinket.1.has_buff.intellect|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit|trinket.1.is.mirror_of_fractured_tomorrows|trinket.1.is.signet_of_the_priory" );
89-
precombat->add_action( "variable,name=trinket_2_buffs,value=trinket.2.has_buff.intellect|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit|trinket.2.is.mirror_of_fractured_tomorrows|trinket.2.is.signet_of_the_priory" );
90-
precombat->add_action( "variable,name=weapon_buffs,value=equipped.bestinslots" );
91-
precombat->add_action( "variable,name=weapon_sync,op=setif,value=1,value_else=0.5,condition=equipped.bestinslots" );
92-
precombat->add_action( "variable,name=weapon_stat_value,value=equipped.bestinslots*5142*15" );
93-
precombat->add_action( "variable,name=trinket_1_manual,value=trinket.1.is.belorrelos_the_suncaller|trinket.1.is.nymues_unraveling_spindle|trinket.1.is.spymasters_web" );
94-
precombat->add_action( "variable,name=trinket_2_manual,value=trinket.2.is.belorrelos_the_suncaller|trinket.2.is.nymues_unraveling_spindle|trinket.2.is.spymasters_web" );
88+
precombat->add_action( "variable,name=trinket_1_buffs,value=trinket.1.has_buff.intellect|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit" );
89+
precombat->add_action( "variable,name=trinket_2_buffs,value=trinket.2.has_buff.intellect|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit" );
90+
precombat->add_action( "variable,name=weapon_buffs,value=0" );
91+
precombat->add_action( "variable,name=weapon_sync,op=setif,value=1,value_else=0.5,condition=0" );
92+
precombat->add_action( "variable,name=weapon_stat_value,value=0" );
93+
precombat->add_action( "variable,name=trinket_1_manual,value=0" );
94+
precombat->add_action( "variable,name=trinket_2_manual,value=0" );
9595
precombat->add_action( "variable,name=trinket_1_ogcd_cast,value=0" );
9696
precombat->add_action( "variable,name=trinket_2_ogcd_cast,value=0" );
97-
precombat->add_action( "variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell|trinket.1.is.whispering_incarnate_icon" );
98-
precombat->add_action( "variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell|trinket.2.is.whispering_incarnate_icon" );
97+
precombat->add_action( "variable,name=trinket_1_exclude,value=0" );
98+
precombat->add_action( "variable,name=trinket_2_exclude,value=0" );
9999
precombat->add_action( "variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs|variable.trinket_2_buffs&((trinket.2.proc.any_dps.duration)*trinket.2.proc.any_dps.default_value)>((trinket.1.proc.any_dps.duration)*trinket.1.proc.any_dps.default_value)" );
100100
precombat->add_action( "variable,name=trinket_priority,op=setif,if=variable.weapon_buffs,value=3,value_else=variable.trinket_priority,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs|variable.weapon_stat_value>(((trinket.2.proc.any_dps.duration)*trinket.2.proc.any_dps.default_value)<?((trinket.1.proc.any_dps.duration)*trinket.1.proc.any_dps.default_value))" );
101-
precombat->add_action( "variable,name=trinket_priority,op=set,value=trinket.1.is.signet_of_the_priory+2*trinket.2.is.signet_of_the_priory,if=equipped.signet_of_the_priory&variable.trinket_priority=3" );
102101
precombat->add_action( "variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl" );
103102
precombat->add_action( "variable,name=should_use_star,default=0,value=0,op=reset" );
104103
precombat->add_action( "variable,name=melee_vs,op=set,value=!talent.voidfall&talent.the_hunt&!apex.1" );
104+
precombat->add_action( "variable,name=ray_after_reap,default=0,value=0,op=reset" );
105+
precombat->add_action( "variable,name=wont_overcap_cstar,default=0,value=0,op=reset" );
105106
precombat->add_action( "arcane_torrent" );
106107
precombat->add_action( "consume" );
107108

@@ -111,16 +112,17 @@ void devourer( player_t* p )
111112
default_->add_action( "voidblade,if=buff.void_metamorphosis_stack.at_max_stacks&talent.devourers_bite&talent.voidsurge" );
112113
default_->add_action( "the_hunt,if=buff.void_metamorphosis_stack.at_max_stacks&talent.devourers_bite&talent.voidsurge" );
113114
default_->add_action( "metamorphosis,if=buff.eradicate.up|!talent.eradicate|active_enemies=1|talent.voidfall" );
114-
default_->add_action( "call_action_list,name=reaps,if=talent.moment_of_craving&action.reap.souls_consumed>=4&buff.metamorphosis.up&!talent.voidfall&cooldown.void_ray.remains<=gcd.max&((buff.collapsing_star_stacking.stack+action.reap.souls_consumed)<=buff.collapsing_star_stacking.max_stack|!variable.should_use_star)", "Do not overcap Moment of Craving" );
115-
default_->add_action( "void_ray" );
115+
default_->add_action( "call_action_list,name=reaps,if=talent.moment_of_craving&action.reap.souls_consumed>=4&buff.metamorphosis.up&!talent.voidfall&cooldown.void_ray.remains<=gcd.max&variable.wont_overcap_cstar", "Do not overcap Moment of Craving" );
116+
default_->add_action( "void_ray,if=!buff.eradicate.up|active_enemies=1" );
116117
default_->add_action( "pierce_the_veil,if=buff.moment_of_craving.up&variable.should_use_star&buff.collapsing_star_stacking.stack>=30&talent.devourers_bite" );
117118
default_->add_action( "collapsing_star,if=variable.should_use_star" );
118-
default_->add_action( "call_action_list,name=reaps,if=buff.eradicate.up&active_enemies>1", "Eradichad" );
119+
default_->add_action( "call_action_list,name=reaps,if=buff.eradicate.up&active_enemies>1&action.reap.souls_consumed>=4+6*buff.moment_of_craving.up", "Maximum Eradicate damage" );
119120
default_->add_action( "call_action_list,name=melee_combo" );
120-
default_->add_action( "call_action_list,name=reaps,if=buff.voidfall_spending.stack>=3&prev_gcd.1.void_ray|buff.voidfall_spending.react>=3", "Annihilator wants to play the game too" );
121-
default_->add_action( "call_action_list,name=reaps,if=buff.metamorphosis.up&variable.should_use_star&(buff.collapsing_star_stacking.stack+action.reap.souls_consumed>=30&buff.collapsing_star_stacking.stack+action.reap.souls_consumed<=40)", "Star Accelerator" );
122-
default_->add_action( "call_action_list,name=reaps,if=!buff.metamorphosis.up&(fury+4*action.reap.souls_consumed+10*talent.scythes_embrace)>=100", "Beam Accelerator" );
123-
default_->add_action( "call_action_list,name=reaps,if=!talent.voidfall&(buff.metamorphosis.up|buff.moment_of_craving.up|!talent.moment_of_craving&action.reap.souls_consumed>=4)", "Just reap bro one time bro pls bro" );
121+
default_->add_action( "call_action_list,name=reaps,if=!buff.metamorphosis.up&buff.moment_of_craving.up&talent.voidfall&(buff.voidfall_building.react<2|variable.ray_after_reap)", "Voidfall Accelerator" );
122+
default_->add_action( "call_action_list,name=reaps,if=buff.voidfall_spending.stack>=3&prev_gcd.1.void_ray|buff.voidfall_spending.react>=3", "Annihilator Reap" );
123+
default_->add_action( "call_action_list,name=reaps,if=buff.metamorphosis.up&variable.should_use_star&(buff.collapsing_star_stacking.stack+action.reap.souls_consumed)>=30&variable.wont_overcap_cstar&void_metamorphosis_base_drain_ps>35", "Star Accelerator later into Meta" );
124+
default_->add_action( "call_action_list,name=reaps,if=talent.voidsurge&active_enemies=1&!buff.metamorphosis.up&variable.ray_after_reap", "Beam Accelerator in ST for Scarred" );
125+
default_->add_action( "call_action_list,name=reaps,if=!talent.voidfall&(buff.metamorphosis.up&(active_enemies=1|buff.eradicate.up|!talent.eradicate)|buff.moment_of_craving.up|!talent.moment_of_craving&action.reap.souls_consumed>=4)&variable.wont_overcap_cstar" );
124126
default_->add_action( "soul_immolation,if=active_dot.soul_immolation=0&!buff.metamorphosis.up" );
125127
default_->add_action( "devour" );
126128
default_->add_action( "consume" );
@@ -136,6 +138,8 @@ void devourer( player_t* p )
136138
illicit_doping->add_action( "use_item,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|trinket.1.is.spymasters_web|trinket.1.cooldown.duration=0)&(!variable.trinket_2_ogcd_cast)" );
137139

138140
math_for_wizards->add_action( "variable,name=should_use_star,op=set,value=(active_enemies>1|apex.1|buff.dark_matter.up|talent.star_fragments)&!variable.melee_vs,if=talent.collapsing_star" );
141+
math_for_wizards->add_action( "variable,name=wont_overcap_cstar,op=set,value=(buff.collapsing_star_stacking.stack+action.reap.souls_consumed)<=buff.collapsing_star_stacking.max_stack|!variable.should_use_star" );
142+
math_for_wizards->add_action( "variable,name=ray_after_reap,op=set,value=fury+4*action.reap.souls_consumed+10*talent.scythes_embrace>=100" );
139143

140144
melee_combo->add_action( "vengeful_retreat,if=buff.voidstep.up&(buff.collapsing_star_stacking.stack<30|cooldown.voidblade.up|cooldown.predators_wake.up|buff.collapsing_star_stacking.stack<=38)", "Use Voidsteps on CD - Do not use Voidstep if you need to be stationary for Collapsing Star afterwards." );
141145
melee_combo->add_action( "hungering_slash,if=active_enemies>1" );

engine/class_modules/apl/demon_hunter/devourer.simc

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
actions.precombat=snapshot_stats
22
actions.precombat+=/variable,name=trinket_1_mastery,value=trinket.1.has_use_buff&trinket.1.has_buff.mastery
33
actions.precombat+=/variable,name=trinket_2_mastery,value=trinket.2.has_use_buff&trinket.2.has_buff.mastery
4-
actions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_buff.intellect|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit|trinket.1.is.mirror_of_fractured_tomorrows|trinket.1.is.signet_of_the_priory
5-
actions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_buff.intellect|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit|trinket.2.is.mirror_of_fractured_tomorrows|trinket.2.is.signet_of_the_priory
6-
actions.precombat+=/variable,name=weapon_buffs,value=equipped.bestinslots
7-
actions.precombat+=/variable,name=weapon_sync,op=setif,value=1,value_else=0.5,condition=equipped.bestinslots
8-
actions.precombat+=/variable,name=weapon_stat_value,value=equipped.bestinslots*5142*15
9-
actions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.belorrelos_the_suncaller|trinket.1.is.nymues_unraveling_spindle|trinket.1.is.spymasters_web
10-
actions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.belorrelos_the_suncaller|trinket.2.is.nymues_unraveling_spindle|trinket.2.is.spymasters_web
4+
actions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_buff.intellect|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit
5+
actions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_buff.intellect|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit
6+
actions.precombat+=/variable,name=weapon_buffs,value=0
7+
actions.precombat+=/variable,name=weapon_sync,op=setif,value=1,value_else=0.5,condition=0
8+
actions.precombat+=/variable,name=weapon_stat_value,value=0
9+
actions.precombat+=/variable,name=trinket_1_manual,value=0
10+
actions.precombat+=/variable,name=trinket_2_manual,value=0
1111
actions.precombat+=/variable,name=trinket_1_ogcd_cast,value=0
1212
actions.precombat+=/variable,name=trinket_2_ogcd_cast,value=0
13-
actions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell|trinket.1.is.whispering_incarnate_icon
14-
actions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell|trinket.2.is.whispering_incarnate_icon
13+
actions.precombat+=/variable,name=trinket_1_exclude,value=0
14+
actions.precombat+=/variable,name=trinket_2_exclude,value=0
1515
actions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs|variable.trinket_2_buffs&((trinket.2.proc.any_dps.duration)*trinket.2.proc.any_dps.default_value)>((trinket.1.proc.any_dps.duration)*trinket.1.proc.any_dps.default_value)
1616
actions.precombat+=/variable,name=trinket_priority,op=setif,if=variable.weapon_buffs,value=3,value_else=variable.trinket_priority,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs|variable.weapon_stat_value>(((trinket.2.proc.any_dps.duration)*trinket.2.proc.any_dps.default_value)<?((trinket.1.proc.any_dps.duration)*trinket.1.proc.any_dps.default_value))
17-
actions.precombat+=/variable,name=trinket_priority,op=set,value=trinket.1.is.signet_of_the_priory+2*trinket.2.is.signet_of_the_priory,if=equipped.signet_of_the_priory&variable.trinket_priority=3
1817
actions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl
1918
actions.precombat+=/variable,name=should_use_star,default=0,value=0,op=reset
2019
actions.precombat+=/variable,name=melee_vs,op=set,value=!talent.voidfall&talent.the_hunt&!apex.1
20+
actions.precombat+=/variable,name=ray_after_reap,default=0,value=0,op=reset
21+
actions.precombat+=/variable,name=wont_overcap_cstar,default=0,value=0,op=reset
2122
actions.precombat+=/arcane_torrent
2223
actions.precombat+=/consume
2324

@@ -27,22 +28,23 @@ actions+=/void_ray,if=talent.eradicate&active_enemies>1&!buff.eradicate.up&talen
2728
actions+=/voidblade,if=buff.void_metamorphosis_stack.at_max_stacks&talent.devourers_bite&talent.voidsurge
2829
actions+=/the_hunt,if=buff.void_metamorphosis_stack.at_max_stacks&talent.devourers_bite&talent.voidsurge
2930
actions+=/metamorphosis,if=buff.eradicate.up|!talent.eradicate|active_enemies=1|talent.voidfall
30-
# Do not overcap Moment of Craving
31-
actions+=/call_action_list,name=reaps,if=talent.moment_of_craving&action.reap.souls_consumed>=4&buff.metamorphosis.up&!talent.voidfall&cooldown.void_ray.remains<=gcd.max&((buff.collapsing_star_stacking.stack+action.reap.souls_consumed)<=buff.collapsing_star_stacking.max_stack|!variable.should_use_star)
32-
actions+=/void_ray
31+
# Do not overcap Moment of Craving
32+
actions+=/call_action_list,name=reaps,if=talent.moment_of_craving&action.reap.souls_consumed>=4&buff.metamorphosis.up&!talent.voidfall&cooldown.void_ray.remains<=gcd.max&variable.wont_overcap_cstar
33+
actions+=/void_ray,if=!buff.eradicate.up|active_enemies=1
3334
actions+=/pierce_the_veil,if=buff.moment_of_craving.up&variable.should_use_star&buff.collapsing_star_stacking.stack>=30&talent.devourers_bite
3435
actions+=/collapsing_star,if=variable.should_use_star
35-
# Eradichad
36-
actions+=/call_action_list,name=reaps,if=buff.eradicate.up&active_enemies>1
36+
# Maximum Eradicate damage
37+
actions+=/call_action_list,name=reaps,if=buff.eradicate.up&active_enemies>1&action.reap.souls_consumed>=4+6*buff.moment_of_craving.up
3738
actions+=/call_action_list,name=melee_combo
38-
# Annihilator wants to play the game too
39+
# Voidfall Accelerator
40+
actions+=/call_action_list,name=reaps,if=!buff.metamorphosis.up&buff.moment_of_craving.up&talent.voidfall&(buff.voidfall_building.react<2|variable.ray_after_reap)
41+
# Annihilator Reap
3942
actions+=/call_action_list,name=reaps,if=buff.voidfall_spending.stack>=3&prev_gcd.1.void_ray|buff.voidfall_spending.react>=3
40-
# Star Accelerator
41-
actions+=/call_action_list,name=reaps,if=buff.metamorphosis.up&variable.should_use_star&(buff.collapsing_star_stacking.stack+action.reap.souls_consumed>=30&buff.collapsing_star_stacking.stack+action.reap.souls_consumed<=40)
42-
# Beam Accelerator
43-
actions+=/call_action_list,name=reaps,if=!buff.metamorphosis.up&(fury+4*action.reap.souls_consumed+10*talent.scythes_embrace)>=100
44-
# Just reap bro one time bro pls bro
45-
actions+=/call_action_list,name=reaps,if=!talent.voidfall&(buff.metamorphosis.up|buff.moment_of_craving.up|!talent.moment_of_craving&action.reap.souls_consumed>=4)
43+
# Star Accelerator later into Meta
44+
actions+=/call_action_list,name=reaps,if=buff.metamorphosis.up&variable.should_use_star&(buff.collapsing_star_stacking.stack+action.reap.souls_consumed)>=30&variable.wont_overcap_cstar&void_metamorphosis_base_drain_ps>35
45+
# Beam Accelerator in ST for Scarred
46+
actions+=/call_action_list,name=reaps,if=talent.voidsurge&active_enemies=1&!buff.metamorphosis.up&variable.ray_after_reap
47+
actions+=/call_action_list,name=reaps,if=!talent.voidfall&(buff.metamorphosis.up&(active_enemies=1|buff.eradicate.up|!talent.eradicate)|buff.moment_of_craving.up|!talent.moment_of_craving&action.reap.souls_consumed>=4)&variable.wont_overcap_cstar
4648
actions+=/soul_immolation,if=active_dot.soul_immolation=0&!buff.metamorphosis.up
4749
actions+=/devour
4850
actions+=/consume
@@ -58,6 +60,8 @@ actions.illicit_doping+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&!va
5860
actions.illicit_doping+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|trinket.1.is.spymasters_web|trinket.1.cooldown.duration=0)&(!variable.trinket_2_ogcd_cast)
5961

6062
actions.math_for_wizards=variable,name=should_use_star,op=set,value=(active_enemies>1|apex.1|buff.dark_matter.up|talent.star_fragments)&!variable.melee_vs,if=talent.collapsing_star
63+
actions.math_for_wizards+=/variable,name=wont_overcap_cstar,op=set,value=(buff.collapsing_star_stacking.stack+action.reap.souls_consumed)<=buff.collapsing_star_stacking.max_stack|!variable.should_use_star
64+
actions.math_for_wizards+=/variable,name=ray_after_reap,op=set,value=fury+4*action.reap.souls_consumed+10*talent.scythes_embrace>=100
6165

6266
# Use Voidsteps on CD - Do not use Voidstep if you need to be stationary for Collapsing Star afterwards.
6367
actions.melee_combo=vengeful_retreat,if=buff.voidstep.up&(buff.collapsing_star_stacking.stack<30|cooldown.voidblade.up|cooldown.predators_wake.up|buff.collapsing_star_stacking.stack<=38)

0 commit comments

Comments
 (0)