Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 44 additions & 52 deletions engine/class_modules/apl/warlock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,93 +41,88 @@ void affliction( player_t* p )
{
action_priority_list_t* default_ = p->get_action_priority_list( "default" );
action_priority_list_t* precombat = p->get_action_priority_list( "precombat" );
action_priority_list_t* aoe = p->get_action_priority_list( "aoe" );
action_priority_list_t* cleave = p->get_action_priority_list( "cleave" );
action_priority_list_t* st = p->get_action_priority_list( "st" );
action_priority_list_t* end_of_fight = p->get_action_priority_list( "end_of_fight" );
action_priority_list_t* items = p->get_action_priority_list( "items" );
action_priority_list_t* ogcd = p->get_action_priority_list( "ogcd" );
action_priority_list_t* variables = p->get_action_priority_list( "variables" );
action_priority_list_t* soul_harvester = p->get_action_priority_list( "soul_harvester" );
action_priority_list_t* hellcaller = p->get_action_priority_list( "hellcaller" );
action_priority_list_t* SH_aoe = p->get_action_priority_list( "SH_aoe" );
action_priority_list_t* SH_st = p->get_action_priority_list( "SH_st" );
action_priority_list_t* SH_cleave = p->get_action_priority_list( "SH_cleave" );
action_priority_list_t* HC_aoe = p->get_action_priority_list( "HC_aoe" );
action_priority_list_t* SH_aoe = p->get_action_priority_list( "SH_aoe" );
action_priority_list_t* HC_st = p->get_action_priority_list( "HC_st" );
action_priority_list_t* HC_cleave = p->get_action_priority_list( "HC_cleave" );
action_priority_list_t* HC_aoe = p->get_action_priority_list( "HC_aoe" );

precombat->add_action( "summon_pet" );
precombat->add_action( "grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled" );
precombat->add_action( "snapshot_stats" );
precombat->add_action( "seed_of_corruption,if=talent.sow_the_seeds&active_enemies>1" );
precombat->add_action( "haunt" );
precombat->add_action( "seed_of_corruption,if=(hero_tree.soul_harvester&active_enemies>1)|active_enemies>2" );
precombat->add_action( "haunt,if=active_enemies<2|(hero_tree.hellcaller&active_enemies<3)" );

default_->add_action( "call_action_list,name=variables" );
default_->add_action( "call_action_list,name=end_of_fight" );
default_->add_action( "call_action_list,name=ogcd" );
default_->add_action( "call_action_list,name=items" );
default_->add_action( "call_action_list,name=aoe,if=active_enemies>2" );
default_->add_action( "call_action_list,name=cleave,if=active_enemies=2" );
default_->add_action( "call_action_list,name=st,if=active_enemies<2" );
default_->add_action( "call_action_list,name=soul_harvester,if=hero_tree.soul_harvester" );
default_->add_action( "call_action_list,name=hellcaller,if=hero_tree.hellcaller" );
default_->add_action( "seed_of_corruption,if=talent.nocturnal_yield&active_enemies>1&buff.nightfall.react&(buff.nightfall.react=buff.nightfall.max_stack|buff.nightfall.remains<execute_time*buff.nightfall.max_stack)" );
default_->add_action( "malefic_grasp,if=pet.darkglare.active&buff.nightfall.react&(buff.nightfall.react=buff.nightfall.max_stack|buff.nightfall.remains<execute_time*buff.nightfall.max_stack)" );
default_->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&buff.nightfall.react&(buff.nightfall.react=buff.nightfall.max_stack|buff.nightfall.remains<execute_time*buff.nightfall.max_stack)" );
default_->add_action( "drain_soul,if=buff.nightfall.react&(buff.nightfall.react=buff.nightfall.max_stack|buff.nightfall.remains<execute_time*buff.nightfall.max_stack)" );
default_->add_action( "shadow_bolt,if=buff.nightfall.react&(buff.nightfall.react=buff.nightfall.max_stack|buff.nightfall.remains<execute_time*buff.nightfall.max_stack)" );
default_->add_action( "malefic_grasp,chain=1,early_chain_if=buff.nightfall.react,if=pet.darkglare.active" );
default_->add_action( "drain_soul,chain=1,early_chain_if=buff.nightfall.react,interrupt_if=tick_time>0.5" );
default_->add_action( "shadow_bolt" );

st->add_action( "call_action_list,name=soul_harvester,if=talent.demonic_soul" );
st->add_action( "call_action_list,name=hellcaller,if=talent.wither" );

cleave->add_action( "call_action_list,name=SH_cleave,if=talent.demonic_soul" );
cleave->add_action( "call_action_list,name=HC_cleave,if=talent.wither" );
soul_harvester->add_action( "call_action_list,name=SH_st,if=active_enemies=1" );
soul_harvester->add_action( "call_action_list,name=SH_cleave,if=active_enemies=2" );
soul_harvester->add_action( "call_action_list,name=SH_aoe,if=active_enemies>2" );

aoe->add_action( "call_action_list,name=SH_aoe,if=talent.demonic_soul" );
aoe->add_action( "call_action_list,name=HC_aoe,if=talent.wither" );
hellcaller->add_action( "call_action_list,name=HC_st,if=active_enemies=1" );
hellcaller->add_action( "call_action_list,name=HC_cleave,if=active_enemies=2" );
hellcaller->add_action( "call_action_list,name=HC_aoe,if=active_enemies>2" );

soul_harvester->add_action( "haunt,if=buff.nightfall.react<2" );
soul_harvester->add_action( "agony,if=!ticking|refreshable" );
soul_harvester->add_action( "corruption,if=!ticking|refreshable" );
soul_harvester->add_action( "summon_darkglare,if=soul_shard<3|cooldown.dark_harvest.remains" );
soul_harvester->add_action( "dark_harvest,if=soul_shard<3&execute_time<(dot.agony.remains<?dot.corruption.remains)&buff.cascading_calamity.remains" );
soul_harvester->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&pet.darkglare.remains<gcd" );
soul_harvester->add_action( "drain_soul,if=buff.nightfall.react>1" );
soul_harvester->add_action( "shadow_bolt,if=buff.nightfall.react>1" );
soul_harvester->add_action( "unstable_affliction,if=pet.darkglare.active|soul_shard>1|(talent.shard_instability&buff.shard_instability.react)|buff.cascading_calamity.remains<gcd.max" );
SH_st->add_action( "haunt,if=buff.nightfall.react<2" );
SH_st->add_action( "agony,if=!ticking|refreshable" );
SH_st->add_action( "corruption,if=!ticking|refreshable" );
SH_st->add_action( "summon_darkglare,if=soul_shard<3|cooldown.dark_harvest.remains" );
SH_st->add_action( "dark_harvest,if=soul_shard<3&execute_time<(dot.agony.remains<?dot.corruption.remains)&buff.cascading_calamity.remains" );
SH_st->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&pet.darkglare.remains<gcd" );
SH_st->add_action( "drain_soul,if=buff.nightfall.react>1" );
SH_st->add_action( "shadow_bolt,if=buff.nightfall.react>1" );
SH_st->add_action( "unstable_affliction,if=pet.darkglare.active|soul_shard>1|(talent.shard_instability&buff.shard_instability.react)|buff.cascading_calamity.remains<gcd.max" );

SH_cleave->add_action( "haunt,if=buff.nightfall.react<2" );
SH_cleave->add_action( "seed_of_corruption,if=!dot.corruption.ticking&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" );
SH_cleave->add_action( "seed_of_corruption,if=(!dot.corruption.ticking|dot.corruption.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" );
SH_cleave->add_action( "dark_harvest" );
SH_cleave->add_action( "agony,if=refreshable" );
SH_cleave->add_action( "summon_darkglare" );
SH_cleave->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&!talent.patient_zero&!talent.sow_the_seeds&buff.nightfall.react>1" );
SH_cleave->add_action( "drain_soul,if=!talent.patient_zero&!talent.sow_the_seeds&buff.nightfall.react>1" );
SH_cleave->add_action( "shadow_bolt,if=!talent.patient_zero&!talent.sow_the_seeds&buff.nightfall.react>1" );
SH_cleave->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&pet.darkglare.remains<gcd" );
SH_cleave->add_action( "unstable_affliction,if=pet.darkglare.active|(!talent.patient_zero&!talent.sow_the_seeds)" );
SH_cleave->add_action( "seed_of_corruption" );

SH_aoe->add_action( "haunt,if=buff.nightfall.react<2" );
SH_aoe->add_action( "seed_of_corruption,if=!dot.corruption.ticking&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" );
SH_aoe->add_action( "seed_of_corruption,if=(!dot.corruption.ticking|dot.corruption.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" );
SH_aoe->add_action( "dark_harvest" );
SH_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<5&remains<5" );
SH_aoe->add_action( "summon_darkglare" );
SH_aoe->add_action( "seed_of_corruption" );
SH_aoe->add_action( "seed_of_corruption,if=talent.sow_the_seeds" );
SH_aoe->add_action( "unstable_affliction,if=!talent.sow_the_seeds" );
SH_aoe->add_action( "agony,target_if=min:remains,if=remains<duration*0.5" );

hellcaller->add_action( "haunt,if=cooldown.haunt.ready" );
hellcaller->add_action( "agony,if=!ticking|refreshable" );
hellcaller->add_action( "wither,if=!ticking|refreshable" );
hellcaller->add_action( "dark_harvest,if=execute_time<(dot.agony.remains<?dot.corruption.remains)" );
hellcaller->add_action( "agony,if=dot.agony.remains<20&cooldown.summon_darkglare.remains<gcd" );
hellcaller->add_action( "summon_darkglare" );
hellcaller->add_action( "malevolence" );
hellcaller->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&pet.darkglare.remains<gcd" );
hellcaller->add_action( "unstable_affliction,if=pet.darkglare.active|buff.malevolence.remains|soul_shard>4|(talent.shard_instability&buff.shard_instability.react)|buff.cascading_calamity.remains<gcd.max" );
hellcaller->add_action( "drain_soul,if=buff.nightfall.react>1" );
hellcaller->add_action( "shadow_bolt,if=buff.nightfall.react>1" );
SH_aoe->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&pet.darkglare.remains<gcd" );

HC_st->add_action( "haunt,if=cooldown.haunt.ready" );
HC_st->add_action( "agony,if=!ticking|refreshable" );
HC_st->add_action( "wither,if=!ticking|refreshable" );
HC_st->add_action( "dark_harvest,if=execute_time<(dot.agony.remains<?dot.corruption.remains)" );
HC_st->add_action( "agony,if=dot.agony.remains<20&cooldown.summon_darkglare.remains<gcd" );
HC_st->add_action( "summon_darkglare" );
HC_st->add_action( "malevolence" );
HC_st->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active&pet.darkglare.remains<gcd" );
HC_st->add_action( "unstable_affliction,if=pet.darkglare.active|buff.malevolence.remains|soul_shard>4|(talent.shard_instability&buff.shard_instability.react)|buff.cascading_calamity.remains<gcd.max" );

HC_cleave->add_action( "haunt,if=cooldown.haunt.ready" );
HC_cleave->add_action( "seed_of_corruption,if=talent.patient_zero&talent.sow_the_seeds&!dot.wither.ticking&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption" );
HC_cleave->add_action( "seed_of_corruption,if=talent.sow_the_seeds&!dot.wither.ticking&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" );
HC_cleave->add_action( "wither,target_if=min:remains,if=remains<5&!(action.seed_of_corruption.in_flight|dot.seed_of_corruption.remains>0)&fight_remains>remains+5" );
HC_cleave->add_action( "agony,if=refreshable" );
HC_cleave->add_action( "dark_harvest" );
Expand All @@ -137,21 +132,18 @@ void affliction( player_t* p )
HC_cleave->add_action( "unstable_affliction,if=(pet.darkglare.active|buff.malevolence.remains|soul_shard>4|buff.shard_instability.react|buff.cascading_calamity.remains<gcd.max)&!talent.patient_zero&!talent.sow_the_seeds" );
HC_cleave->add_action( "seed_of_corruption,if=talent.patient_zero&talent.sow_the_seeds" );
HC_cleave->add_action( "unstable_affliction,if=buff.shard_instability.react|(talent.cascading_calamity&buff.cascading_calamity.remains<gcd.max)" );
HC_cleave->add_action( "drain_soul,if=buff.nightfall.react>1" );
HC_cleave->add_action( "shadow_bolt,if=buff.nightfall.react>1" );

HC_aoe->add_action( "haunt,if=cooldown.haunt.ready" );
HC_aoe->add_action( "seed_of_corruption,if=!dot.wither.ticking&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" );
HC_aoe->add_action( "seed_of_corruption,if=(!dot.wither.ticking|dot.wither.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" );
HC_aoe->add_action( "dark_harvest" );
HC_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<active_enemies&remains<5" );
HC_aoe->add_action( "summon_darkglare" );
HC_aoe->add_action( "malevolence" );
HC_aoe->add_action( "seed_of_corruption" );
HC_aoe->add_action( "seed_of_corruption,if=talent.sow_the_seeds" );
HC_aoe->add_action( "unstable_affliction,if=(pet.darkglare.active|buff.malevolence.remains|soul_shard>4|buff.shard_instability.react|buff.cascading_calamity.remains<gcd.max)&!talent.sow_the_seeds" );
HC_aoe->add_action( "unstable_affliction,if=buff.shard_instability.react" );
HC_aoe->add_action( "agony,target_if=min:remains,if=remains<duration*0.5" );
HC_aoe->add_action( "malefic_grasp,if=talent.malefic_grasp&pet.darkglare.active" );
HC_aoe->add_action( "drain_soul,if=buff.nightfall.react>1" );
HC_aoe->add_action( "shadow_bolt,if=buff.nightfall.react>1" );

end_of_fight->add_action( "unstable_affliction,if=soul_shard&fight_remains<8&(!talent.patient_zero&!talent.sow_the_seeds)" );
end_of_fight->add_action( "drain_soul,if=buff.nightfall.react&fight_remains<5" );
Expand Down
2 changes: 1 addition & 1 deletion profiles/generators/MID1/MID1_Generate_Warlock.simc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ level=90
race=pandaren
role=spell
position=ranged_back
talents=CkQAAAAAAAAAAAAAAAAAAAAAAwMzMzoZhhZmZmlBAAYmZxyMzsMzAAjtlBGwEMDbBG2GAAAmBAAwMDzMjBGmZmZGzgZmZGAwMwA
talents=CkQAAAAAAAAAAAAAAAAAAAAAAwMzMzoZhhZmZmlBAAYmZxyMzsMzAAjllBGwEMDbBG2GAAAmBAAwMDzMjBGmZmZGzgZmZGAwMwA
default_pet=sayaad

head=abyssal_immolators_smoldering_flames,id=250042,bonus_id=13575/1808,enchant_id=7961,gem_id=240983,ilevel=289
Expand Down
Loading