@@ -2465,24 +2465,34 @@ struct hunter_main_pet_t final : public hunter_main_pet_base_t
24652465namespace actions
24662466{
24672467
2468- static void trigger_beast_cleave ( const action_state_t * s )
2468+ static void trigger_beast_cleave ( const action_state_t * s, const double multiplier )
24692469{
24702470 if ( !s->action ->result_is_hit ( s->result ) )
24712471 return ;
24722472
2473- if ( s->action ->sim ->active_enemies == 1 )
2473+ if ( s->action ->sim ->active_enemies < 2 )
2474+ return ;
2475+
2476+ if ( multiplier <= 0.0 )
24742477 return ;
24752478
24762479 auto p = debug_cast<hunter_pet_t *>( s->action ->player );
24772480
24782481 if ( !p->buffs .beast_cleave ->up () )
24792482 return ;
24802483
2484+ // 2026-08-14: Crit bonuses are not Beast Cleaved across the board.
2485+ auto amount = s->result_total ;
2486+ if ( p->o ()->bugs && s->result == RESULT_CRIT && s->result_crit_bonus > 0 )
2487+ {
2488+ amount /= ( 1.0 + s->result_crit_bonus ) / 2.0 ;
2489+ }
2490+
24812491 // Target multipliers do not replicate to secondary targets
2482- const double target_da_multiplier = ( 1.0 / s->target_da_multiplier );
2483- const double target_pet_multiplier = ( 1.0 / s->target_pet_multiplier );
2492+ amount *= multiplier;
2493+ amount *= ( 1.0 / s->target_da_multiplier );
2494+ amount *= ( 1.0 / s->target_pet_multiplier );
24842495
2485- const double amount = s->result_total * p->buffs .beast_cleave ->check_value () * target_da_multiplier * target_pet_multiplier;
24862496 p->actions .beast_cleave ->execute_on_target ( s->target , amount );
24872497}
24882498
@@ -2967,7 +2977,7 @@ struct pet_melee_t : public hunter_pet_melee_t<hunter_pet_t>
29672977 {
29682978 hunter_pet_melee_t::impact ( s );
29692979
2970- trigger_beast_cleave ( s );
2980+ trigger_beast_cleave ( s, p ()-> buffs . beast_cleave -> default_value );
29712981 }
29722982};
29732983
@@ -3006,7 +3016,7 @@ struct main_pet_base_melee_t : public hunter_pet_melee_t<hunter_main_pet_base_t>
30063016 {
30073017 hunter_pet_melee_t::impact ( s );
30083018
3009- trigger_beast_cleave ( s );
3019+ trigger_beast_cleave ( s, p ()-> hunter_pet_t ::buffs. beast_cleave -> default_value );
30103020
30113021 if ( o ()->buffs .wyverns_cry ->check () )
30123022 o ()->buffs .wyverns_cry ->increment ( 1 , buff_t::DEFAULT_VALUE (), o ()->buffs .wyverns_cry ->remains () );
@@ -3028,7 +3038,7 @@ struct basic_attack_base_t : public hunter_pet_attack_t<hunter_main_pet_t>
30283038 hunter_pet_attack_t::impact ( s );
30293039
30303040 if ( result_is_hit ( s -> result ) )
3031- trigger_beast_cleave ( s );
3041+ trigger_beast_cleave ( s, p ()-> hunter_pet_t ::buffs. beast_cleave -> default_value );
30323042 }
30333043};
30343044
@@ -3168,7 +3178,7 @@ struct bestial_wrath_t : hunter_pet_attack_t<hunter_main_pet_base_t>
31683178 {
31693179 hunter_pet_attack_t::impact ( s );
31703180
3171- trigger_beast_cleave ( s );
3181+ trigger_beast_cleave ( s, p ()-> hunter_pet_t ::buffs. beast_cleave -> default_value );
31723182 }
31733183};
31743184
@@ -3185,22 +3195,9 @@ struct kill_command_wildspeaker_t: public hunter_pet_attack_t<dire_critter_t>
31853195 {
31863196 hunter_pet_attack_t::impact ( s );
31873197
3188- if ( s->action ->result_is_hit ( s->result ) && s->action ->sim ->active_enemies > 1 && o ()->talents .kill_cleave .ok ()
3189- && p ()->hunter_pet_t ::buffs.beast_cleave ->up () )
3198+ if ( o ()->talents .kill_cleave .ok () )
31903199 {
3191- // 2026-07-27: Wildspeaker Kill Command's crit bonus is not Beast Cleaved.
3192- double amount = s->result_total ;
3193- if ( s->result == RESULT_CRIT && s->result_crit_bonus > 0 )
3194- {
3195- amount /= ( 1.0 + s->result_crit_bonus ) / 2.0 ;
3196- }
3197- amount *= o ()->talents .kill_cleave ->effectN ( 1 ).percent ();
3198- // Target multipliers do not replicate to secondary targets
3199- amount *= ( 1.0 / s->target_da_multiplier );
3200- amount *= ( 1.0 / s->target_pet_multiplier );
3201-
3202- // Damage is represented as Beast Cleave
3203- p ()->hunter_pet_t ::actions.beast_cleave ->execute_on_target ( s->target , amount );
3200+ trigger_beast_cleave ( s, o ()->talents .kill_cleave ->effectN ( 1 ).percent () );
32043201 }
32053202 }
32063203
0 commit comments