@@ -3454,36 +3454,35 @@ void keepers_seething_core( special_effect_t& effect )
34543454 {
34553455 double mult;
34563456 focus_of_ulatek_t ( player_t * p, std::string_view name, const special_effect_t & e )
3457- : stat_buff_t ( p, name, e.trigger() ), mult ( 0 )
3457+ : stat_buff_t ( p, name, e.trigger() ), mult( 0 )
34583458 {
34593459 set_stat_from_effect_type ( A_MOD_RATING , e.driver ()->effectN ( 1 ).average ( e ) );
3460+ set_default_value ( e.driver ()->effectN ( 1 ).average ( e ) );
3461+ add_invalidate ( CACHE_HASTE );
3462+ disable_ticking ( true );
34603463 mult = e.driver ()->effectN ( 2 ).percent ();
34613464 }
34623465
3463- double check_value () const override
3466+ double calc_stat_val ()
34643467 {
3465- double v = stat_buff_t::check_value ();
3466- // Tooltip is only indicator for N stacks before the effect is increased
3468+ double value = default_value;
3469+
3470+ // Stack requirement not in data. basing implementation off tooltip text.
34673471 if ( check () >= 2 )
3468- v *= 1.0 + mult;
3472+ value *= 1.0 + mult;
34693473
3470- return v ;
3474+ return value ;
34713475 }
34723476
3473- double value ( ) override
3477+ void bump ( int s, double v ) override
34743478 {
3475- double v = stat_buff_t::value ();
3476- // Tooltip is only indicator for N stacks before the effect is increased
3477- if ( check () >= 2 )
3478- v *= 1.0 + mult;
3479-
3480- return v;
3479+ for ( auto & s : stats )
3480+ s.amount = calc_stat_val ();
3481+ stat_buff_t::bump ( s, v );
34813482 }
34823483 };
34833484
3484- auto buff = create_buff<focus_of_ulatek_t >( effect.player , " focus_of_ulatek" , effect );
3485-
3486- effect.custom_buff = buff;
3485+ effect.custom_buff = create_buff<focus_of_ulatek_t >( effect.player , " focus_of_ulatek" , effect );
34873486
34883487 new dbc_proc_callback_t ( effect.player , effect );
34893488}
0 commit comments