@@ -415,6 +415,15 @@ struct divine_storm_second_sunrise_tempest_t : public holy_power_consumer_t<pala
415415 triggers_crusade_stacks = false ;
416416 triggers_righteous_cause = false ;
417417 }
418+ void impact (action_state_t * s) override
419+ {
420+ holy_power_consumer_t::impact ( s );
421+ if ( p ()->sets ->has_set_bonus ( PALADIN_RETRIBUTION, MID1, B4 ) && p ()->talents .expurgation ->ok () )
422+ {
423+ double mult = p ()->sets ->set ( PALADIN_RETRIBUTION, MID1, B4 )->effectN ( 2 ).percent () * base_multiplier;
424+ p ()->trigger_expurgation ( execute_state->target , mult );
425+ }
426+ }
418427};
419428
420429struct divine_storm_tempest_t : public holy_power_consumer_t <paladin_melee_attack_t >
@@ -433,6 +442,15 @@ struct divine_storm_tempest_t : public holy_power_consumer_t<paladin_melee_attac
433442 triggers_crusade_stacks = false ;
434443 triggers_righteous_cause = false ;
435444 }
445+ void impact ( action_state_t * s ) override
446+ {
447+ holy_power_consumer_t::impact ( s );
448+ if ( p ()->sets ->has_set_bonus ( PALADIN_RETRIBUTION, MID1, B4 ) && p ()->talents .expurgation ->ok () )
449+ {
450+ double mult = p ()->sets ->set ( PALADIN_RETRIBUTION, MID1, B4 )->effectN ( 2 ).percent () * base_multiplier;
451+ p ()->trigger_expurgation ( execute_state->target , mult );
452+ }
453+ }
436454};
437455
438456struct divine_storm_second_sunrise_t : public holy_power_consumer_t <paladin_melee_attack_t >
@@ -468,6 +486,15 @@ struct divine_storm_second_sunrise_t : public holy_power_consumer_t<paladin_mele
468486 if ( p ()->talents .tempest_of_the_lightbringer ->ok () )
469487 tempest->schedule_execute ();
470488 }
489+ void impact ( action_state_t * s ) override
490+ {
491+ holy_power_consumer_t::impact ( s );
492+ if ( p ()->sets ->has_set_bonus ( PALADIN_RETRIBUTION, MID1, B4 ) && p ()->talents .expurgation ->ok () )
493+ {
494+ double mult = p ()->sets ->set ( PALADIN_RETRIBUTION, MID1, B4 )->effectN ( 2 ).percent () * base_multiplier;
495+ p ()->trigger_expurgation ( execute_state->target , mult );
496+ }
497+ }
471498};
472499
473500struct divine_storm_t : public holy_power_consumer_t <paladin_melee_attack_t >
@@ -542,30 +569,15 @@ struct divine_storm_t: public holy_power_consumer_t<paladin_melee_attack_t>
542569 if ( p ()->talents .tempest_of_the_lightbringer ->ok () )
543570 tempest->schedule_execute ();
544571
545- bool has_echo = false ;
546-
547572 if ( sunrise_echo && p ()->cooldowns .second_sunrise_icd ->up () )
548573 {
549574 if ( rng ().roll ( p ()->talents .herald_of_the_sun .second_sunrise ->effectN ( 1 ).percent () ) )
550575 {
551576 p ()->cooldowns .second_sunrise_icd ->start ();
552577 // TODO(mserrano): validate the correct delay here
553578 sunrise_echo->start_action_execute_event ( 200_ms );
554- has_echo = true ;
555579 }
556580 }
557- // ToDo Fluttershy: If this ever gets sensible results, move to impact
558- if ( !background && p ()->sets ->has_set_bonus ( PALADIN_RETRIBUTION, MID1, B4 ) && p ()->talents .expurgation ->ok () )
559- {
560- // ToDo Fluttershy: Rewrite to spell data later
561- double mult = .5 ;
562- if ( has_echo )
563- mult *= 2 ;
564- if ( p ()->talents .tempest_of_the_lightbringer ->ok () )
565- mult *= 1.2 ;
566-
567- p ()->trigger_expurgation ( execute_state->target , mult );
568- }
569581 }
570582
571583 void impact ( action_state_t * s ) override
@@ -584,6 +596,11 @@ struct divine_storm_t: public holy_power_consumer_t<paladin_melee_attack_t>
584596 p ()->active .sun_sear ->execute ();
585597 }
586598 }
599+ if ( p ()->sets ->has_set_bonus ( PALADIN_RETRIBUTION, MID1, B4 ) && p ()->talents .expurgation ->ok () )
600+ {
601+ double mult = p ()->sets ->set (PALADIN_RETRIBUTION, MID1, B4)->effectN (2 ).percent () * base_multiplier;
602+ p ()->trigger_expurgation ( execute_state->target , mult );
603+ }
587604 }
588605};
589606
@@ -652,18 +669,6 @@ struct templars_verdict_t : public holy_power_consumer_t<paladin_melee_attack_t>
652669 p ()->resource_gain ( RESOURCE_HOLY_POWER, c, p ()->gains .hp_templars_verdict_refund );
653670 }
654671
655-
656- if ( !background && p ()->sets ->has_set_bonus ( PALADIN_RETRIBUTION, MID1, B4 ) && p ()->talents .expurgation ->ok () )
657- {
658- // ToDo Fluttershy: Rewrite to spell data later
659- double mult = 1.0 ;
660- if ( p ()->buffs .empyrean_legacy ->up () )
661- {
662- mult = p ()->talents .tempest_of_the_lightbringer ->ok () ? 1.6875 : 1.625 ;
663- }
664- p ()->trigger_expurgation ( execute_state->target , mult );
665- }
666-
667672 if ( p ()->buffs .empyrean_legacy ->up () )
668673 {
669674 p ()->active .empyrean_legacy ->schedule_execute ();
@@ -683,6 +688,15 @@ struct templars_verdict_t : public holy_power_consumer_t<paladin_melee_attack_t>
683688 }
684689 }
685690 }
691+ void impact (action_state_t * s) override
692+ {
693+ holy_power_consumer_t::impact (s);
694+ if ( p ()->sets ->has_set_bonus ( PALADIN_RETRIBUTION, MID1, B4 ) && p ()->talents .expurgation ->ok () )
695+ {
696+ double mult = p ()->sets ->set ( PALADIN_RETRIBUTION, MID1, B4 )->effectN ( 1 ).percent () * base_multiplier;
697+ p ()->trigger_expurgation ( execute_state->target , mult );
698+ }
699+ }
686700};
687701
688702// Wake of Ashes (Retribution) ================================================
0 commit comments