diff --git a/engine/class_modules/monk/sc_monk.cpp b/engine/class_modules/monk/sc_monk.cpp index 86b0ec5336c..1dd4a7ad122 100644 --- a/engine/class_modules/monk/sc_monk.cpp +++ b/engine/class_modules/monk/sc_monk.cpp @@ -2083,6 +2083,33 @@ struct auto_attack_t : public monk_melee_attack_t first = false; } + void impact( action_state_t *state ) override + { + monk_melee_attack_t::impact( state ); + + if ( !p()->talent.shado_pan.flurry_strikes->ok() || result_is_miss( state->result ) ) + return; + + unsigned flurry_charges = 0; + switch ( monk_melee_attack_t::weapon->group() ) + { + case WEAPON_1H: + flurry_charges = p()->talent.shado_pan.flurry_strikes->effectN( 1 ).base_value(); + break; + case WEAPON_2H: + flurry_charges = p()->talent.shado_pan.flurry_strikes->effectN( 2 ).base_value(); + break; + default: + assert( false ); + } + + if ( state->result == RESULT_CRIT ) + flurry_charges *= 1.0 + p()->talent.shado_pan.one_versus_many->effectN( 1 ).base_value(); + + if ( flurry_charges ) + p()->buff.flurry_charge->trigger( flurry_charges ); + } + timespan_t execute_time() const override { timespan_t time = monk_melee_attack_t::execute_time(); @@ -5519,9 +5546,10 @@ void monk_t::create_buffs() // the override is a little weird, we'll just let this always init buff.shuffle = make_buff( this ); - buff.swift_as_a_coursing_river = make_buff_fallback( talent.brewmaster.swift_as_a_coursing_river->ok(), this, "swift_as_a_coursing_river", - talent.brewmaster.swift_as_a_coursing_river->effectN( 1 ).trigger() ) - ->set_trigger_spell( talent.brewmaster.swift_as_a_coursing_river ); + buff.swift_as_a_coursing_river = + make_buff_fallback( talent.brewmaster.swift_as_a_coursing_river->ok(), this, "swift_as_a_coursing_river", + talent.brewmaster.swift_as_a_coursing_river->effectN( 1 ).trigger() ) + ->set_trigger_spell( talent.brewmaster.swift_as_a_coursing_river ); // Windwalker buff.teachings_of_the_monastery =