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
17 changes: 10 additions & 7 deletions engine/class_modules/apl/apl_priest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ void shadow( player_t* p )
precombat->add_action( "variable,name=max_vts,default=12,op=reset" );
precombat->add_action( "variable,name=is_vt_possible,default=0,op=reset" );
precombat->add_action( "arcane_torrent" );
precombat->add_action( "mind_blast,if=set_bonus.mid2_4pc", "Crushing Void from Tentacle Slam is reset on pull, open with Mind Blast instead." );
precombat->add_action( "tentacle_slam" );

default_->add_action( "variable,name=holding_tentacle_slam,op=set,value=raid_event.adds.in<15" );
Expand All @@ -72,7 +73,7 @@ void shadow( player_t* p )
aoe_variables->add_action( "variable,name=holding_tentacle_slam,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4&raid_event.adds.in>15|raid_event.adds.in<10&raid_event.adds.count>(variable.max_vts-active_dot.vampiric_touch),if=variable.holding_tentacle_slam&action.tentacle_slam.enabled&raid_event.adds.exists" );
aoe_variables->add_action( "variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+6*!variable.holding_tentacle_slam)>=variable.max_vts|!variable.is_vt_possible" );

cds->add_action( "potion,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)&(fight_remains>=320|time_to_bloodlust>=320|buff.bloodlust.react)|fight_remains<=30", "TODO: Add holding condition for weird fight times to potion with execute" );
cds->add_action( "potion,if=(((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)&(fight_remains>=320|time_to_bloodlust>=320|buff.bloodlust.react)|fight_remains<=30)", "TODO: Add holding condition for weird fight times to potion with execute" );
cds->add_action( "fireblood,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)|fight_remains<=8" );
cds->add_action( "berserking,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)|fight_remains<=12" );
cds->add_action( "blood_fury,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)|fight_remains<=15" );
Expand All @@ -91,27 +92,29 @@ void shadow( player_t* p )
main->add_action( "variable,name=dots_up,op=set,value=active_dot.vampiric_touch=active_enemies&active_dot.shadow_word_pain>=active_dot.vampiric_touch,if=active_enemies<3" );
main->add_action( "call_action_list,name=cds,if=fight_remains<30|target.time_to_die>15&(!variable.holding_tentacle_slam|active_enemies>2)&variable.dots_up" );
main->add_action( "shadow_word_death,target_if=max:(target.health.pct<=20)*100+dot.shadow_word_madness.ticking,if=(priest.force_devour_matter|target.has_absorb)&talent.devour_matter", "High Priority Shadow Word: Death when Devour Matter is active (target shielded or forced)" );
main->add_action( "shadow_word_madness,target_if=max:target.time_to_die*(dot.shadow_word_madness.remains<=gcd.max|variable.dr_force_prio|!talent.distorted_reality&variable.me_force_prio),if=active_dot.shadow_word_madness<=1&dot.shadow_word_madness.remains<=gcd.max|insanity.deficit<=35|buff.mind_devourer.react|!raid_event.adds.exists&target.time_to_die<=10|buff.entropic_rift.up&action.shadow_word_madness.cost>0", "Do not overcap on insanity" );
main->add_action( "void_volley" );
main->add_action( "shadow_word_madness,target_if=max:target.time_to_die*(dot.shadow_word_madness.remains<=gcd.max|variable.dr_force_prio|!talent.distorted_reality&variable.me_force_prio),if=active_dot.shadow_word_madness<=1&dot.shadow_word_madness.remains<=gcd.max|insanity.deficit<=35&(cooldown.voidform.remains>25|target.time_to_die<25|active_enemies>1|insanity.deficit<=5)|buff.mind_devourer.react|!raid_event.adds.exists&target.time_to_die<=10|buff.entropic_rift.up&(cooldown.voidform.remains>=75|!talent.ancient_madness)|buff.voidform.up", "Do not overcap on insanity, but hold it for Voidform on a single long-lived target" );
main->add_action( "void_blast,target_if=max:(dot.shadow_word_madness.remains*1000+target.time_to_die)", "Blast more burst :wicked:" );
main->add_action( "tentacle_slam,target_if=min:dot.vampiric_touch.remains,if=dot.vampiric_touch.refreshable|cooldown.tentacle_slam.full_recharge_time<=gcd.max*2", "Use Tentacle Slam to prevent capping charges or to refresh Vampiric Touch" );
main->add_action( "tentacle_slam,target_if=min:dot.vampiric_touch.remains,if=dot.vampiric_touch.refreshable&(!in_flight|active_dot.vampiric_touch+6<active_enemies)|cooldown.tentacle_slam.full_recharge_time<=gcd.max*2", "Use Tentacle Slam to prevent capping charges or to refresh Vampiric Touch" );
main->add_action( "void_torrent,target_if=max:(dot.shadow_word_madness.remains*1000+target.time_to_die),if=!variable.holding_tentacle_slam&variable.dots_up", "Use Void Torrent if it will get near full Mastery Value" );
main->add_action( "shadow_word_pain,target_if=max:(refreshable*100000+target.time_to_die+dot.vampiric_touch.ticking*10000),if=talent.invoked_nightmare&refreshable&target.time_to_die>12&dot.vampiric_touch.ticking", "Put out Shadow Word: Pain on enemies that will live at least 12s as a filler when talented into Invoked Nightmare." );
main->add_action( "shadow_word_pain,target_if=max:(refreshable*100000+target.time_to_die+dot.vampiric_touch.ticking*10000),if=talent.invoked_nightmare&refreshable&target.time_to_die>12&(dot.vampiric_touch.ticking|action.tentacle_slam.in_flight)", "Put out Shadow Word: Pain on enemies that will live at least 12s as a filler when talented into Invoked Nightmare." );
main->add_action( "void_volley,if=cooldown.voidform.up" );
main->add_action( "mind_blast,target_if=max:dot.shadow_word_madness.remains,if=(!buff.mind_devourer.react|!talent.mind_devourer)", "Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption" );
main->add_action( "mind_flay_insanity,target_if=max:dot.shadow_word_madness.remains", "MFI is a good button" );
main->add_action( "mind_flay_insanity,target_if=max:dot.shadow_word_madness.remains" );
main->add_action( "tentacle_slam,target_if=min:dot.vampiric_touch.remains,if=(talent.void_apparitions|talent.maddening_tentacles)&(raid_event.adds.in>30|raid_event.adds.in>5&cooldown.tentacle_slam.full_recharge_time<=gcd.max*2)", "Use Tentacle Slam for Void Apparitions or Maddening Tentacles value, holding for adds if needed" );
main->add_action( "vampiric_touch,target_if=max:(refreshable*10000+target.time_to_die)*(dot.vampiric_touch.ticking|!variable.dots_up),if=refreshable&target.time_to_die>12&(dot.vampiric_touch.ticking|!variable.dots_up)&(variable.max_vts>0|active_enemies=1)&(action.tentacle_slam.usable_in>=dot.vampiric_touch.remains|variable.holding_tentacle_slam|!action.tentacle_slam.enabled)", "Put out Vampiric Touch on enemies that will live at least 12s and Tentacle Slam is not available soon" );
main->add_action( "call_action_list,name=heal_for_tof,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&talent.halo", "Healing spell action list for proccing Twist of Fate. Set priest.twist_of_fate_heal_rppm=<rppm> to make this be used." );
main->add_action( "vampiric_touch,target_if=max:(refreshable*10000+target.time_to_die),if=refreshable&target.time_to_die>12", "Put out Vampiric Touch on enemies that will live at least 12s as a filler action." );
main->add_action( "shadow_word_death,target_if=min:target.health.pct,if=(pet.mindbender.active|pet.voidwraith.active|pet.shadowfiend.active)&talent.inescapable_torment|target.health.pct<(20+15*talent.deathspeaker)&talent.shadowfiend&talent.idol_of_yshaarj" );
main->add_action( "shadow_word_death,target_if=min:target.health.pct,if=(target.health.pct<(20+15*talent.deathspeaker))" );
main->add_action( "mind_flay,target_if=max:dot.shadow_word_madness.remains,chain=1,interrupt_immediate=1,interrupt_if=ticks>=3,interrupt_global=1" );
main->add_action( "void_volley,if=!talent.resonant_energy|cooldown.voidform.remains<60|buff.voidform.up|buff.resonant_energy_damage.up|buff.crushing_void.stack>=4|fight_remains<45", "Bank Void Volley charges for the Resonant Energy window, dumping once Voidform is within a Halo cycle, in Voidform, or if charges would overcap" );
main->add_action( "mind_flay,target_if=max:dot.shadow_word_madness.remains,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2,interrupt_global=1" );
main->add_action( "tentacle_slam,if=raid_event.adds.in>20", "Use Tentacle Slam while moving as a low-priority action when adds will not spawn in 20 seconds." );
main->add_action( "shadow_word_death,target_if=target.health.pct<20", "Use Shadow Word: Death while moving as a low-priority action in execute" );
main->add_action( "shadow_word_death,target_if=max:dot.shadow_word_madness.remains", "Use Shadow Word: Death while moving as a low-priority action" );
main->add_action( "shadow_word_pain,target_if=min:remains", "Use Shadow Word: Pain while moving as a low-priority action" );

trinkets->add_action( "use_item,name=galactic_gladiators_badge_of_ferocity,if=(buff.voidform.up|buff.power_infusion.remains>=10|(talent.voidform&cooldown.voidform.remains>10))|fight_remains<20" );
trinkets->add_action( "use_item,name=hex_lords_dooming_idol,if=buff.power_infusion.up&buff.hex_lords_doom.stack>5|fight_remains<=30" );
trinkets->add_action( "use_items,if=(buff.voidform.up|buff.power_infusion.remains>=10|equipped.neural_synapse_enhancer&buff.entropic_rift.up)|fight_remains<20" );
}
//shadow_apl_end
Expand Down
5 changes: 2 additions & 3 deletions engine/class_modules/priest/sc_priest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ struct expiation_t final : public priest_spell_t
void impact( action_state_t* s ) override
{
priest_td_t& td = get_td( s->target );
dot_t* dot = td.dots.shadow_word_pain;
dot_t* dot = td.dots.shadow_word_pain;

auto dot_damage = priest().tick_damage_over_time( consume_time, dot );
if ( dot_damage > 0 )
Expand Down Expand Up @@ -902,7 +902,7 @@ struct void_blast_disc_t final : public smite_base_t
void execute() override
{
smite_base_t::execute();

p().extend_entropic_rift();
}
};
Expand Down Expand Up @@ -2170,7 +2170,6 @@ struct void_shield_t final : public priest_absorb_t

void execute() override
{

if ( priest().talents.discipline.borrowed_time.enabled() )
{
priest().buffs.borrowed_time->trigger();
Expand Down
2 changes: 1 addition & 1 deletion engine/class_modules/priest/sc_priest.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ struct priest_t final : public player_t
propagate_const<buff_t*> holy_ray;
propagate_const<buff_t*> greater_smite;
propagate_const<buff_t*> master_the_darkness;
propagate_const<buff_t*> dark_transference; // MID2 4pc 1307795
propagate_const<buff_t*> dark_transference; // MID2 4pc 1307795
// Holy
propagate_const<buff_t*> apotheosis;
propagate_const<buff_t*> empyreal_blaze;
Expand Down
12 changes: 5 additions & 7 deletions engine/class_modules/priest/sc_priest_discipline.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ struct pain_suppression_t final : public priest_spell_t
buff_t* create_debuff( player_t* t ) override
{
return priest_spell_t::create_debuff( t )
->set_default_value_from_effect_type( A_MOD_DAMAGE_PERCENT_TAKEN )
->set_cooldown( 0_ms ); // Let the ability handle the CD
->set_default_value_from_effect_type( A_MOD_DAMAGE_PERCENT_TAKEN )
->set_cooldown( 0_ms ); // Let the ability handle the CD
}

void execute() override
Expand Down Expand Up @@ -276,7 +276,6 @@ struct penance_base_t : public priest_spell_t
return d;
}


double composite_atonement_multiplier( action_state_t* s ) override
{
double mul = priest_spell_t::composite_atonement_multiplier( s );
Expand Down Expand Up @@ -629,8 +628,7 @@ struct ultimate_penitence_t : public priest_spell_t

public:
ultimate_penitence_t( priest_t& p, util::string_view options_str )
: priest_spell_t( "ultimate_penitence", p, p.talents.discipline.ultimate_penitence ),
nested_action( nullptr )
: priest_spell_t( "ultimate_penitence", p, p.talents.discipline.ultimate_penitence ), nested_action( nullptr )
{
add_option( opt_string( "nested_action", nested_action_name ) );
parse_options( options_str );
Expand Down Expand Up @@ -807,8 +805,8 @@ void priest_t::init_spells_discipline()

// General Spells
specs.penance = find_spell( 47540 );
specs.penance_channel = find_spell( 47758 ); // Channel spell, triggered by 47540, executes 47666 every tick
specs.penance_tick = find_spell( 47666 ); // Not triggered from 47540, only 47758
specs.penance_channel = find_spell( 47758 ); // Channel spell, triggered by 47540, executes 47666 every tick
specs.penance_tick = find_spell( 47666 ); // Not triggered from 47540, only 47758

specs.plea = find_spell( 200829 );

Expand Down
4 changes: 2 additions & 2 deletions engine/class_modules/priest/sc_priest_holy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -453,8 +453,8 @@ struct guardian_spirit_t final : public priest_spell_t
buff_t* create_debuff( player_t* t ) override
{
auto gs_buff = priest_spell_t::create_debuff( t )
->set_default_value_from_effect_type( A_MOD_HEALING_RECEIVED_PCT )
->set_cooldown( 0_ms ); // Let the ability handle the CD
->set_default_value_from_effect_type( A_MOD_HEALING_RECEIVED_PCT )
->set_cooldown( 0_ms ); // Let the ability handle the CD

t->assessor_out_damage.add( assessor::LOG - 1, [ gs_buff, t ]( auto, action_state_t* s ) {
auto max_hp = t->resources.max[ RESOURCE_HEALTH ];
Expand Down
Loading
Loading