@@ -3287,6 +3287,8 @@ struct army_ghoul_pet_t final : public base_ghoul_pet_t
3287
3287
: base_ghoul_pet_t( owner, name, true )
3288
3288
{
3289
3289
affected_by_commander_of_the_dead = true;
3290
+ if( name == "apoc_ghoul" && owner->bugs )
3291
+ affected_by_commander_of_the_dead = false;
3290
3292
decomposition_can_extend = true;
3291
3293
tww1_4pc_proc = true;
3292
3294
affected_by_grave_mastery = true;
@@ -4952,7 +4954,8 @@ struct death_knight_action_t : public parse_action_effects_t<Base>
4952
4954
4953
4955
struct
4954
4956
{
4955
- bool mastery_dreadblade_crit_bonus;
4957
+ bool mastery_dreadblade_crit_bonus_5;
4958
+ bool mastery_dreadblade_crit_bonus_7;
4956
4959
} affected_by;
4957
4960
4958
4961
death_knight_action_t( std::string_view n, death_knight_t* p, const spell_data_t* s = spell_data_t::nil() )
@@ -5019,7 +5022,10 @@ struct death_knight_action_t : public parse_action_effects_t<Base>
5019
5022
}
5020
5023
}
5021
5024
5022
- affected_by.mastery_dreadblade_crit_bonus = p->mastery.dreadblade->ok() && this->data().affected_by( p->mastery.dreadblade->effectN( 5 ) );
5025
+ affected_by.mastery_dreadblade_crit_bonus_5 =
5026
+ p->mastery.dreadblade->ok() && this->data().affected_by( p->mastery.dreadblade->effectN( 5 ) );
5027
+ affected_by.mastery_dreadblade_crit_bonus_7 =
5028
+ p->mastery.dreadblade->ok() && this->data().affected_by( p->mastery.dreadblade->effectN( 7 ) );
5023
5029
}
5024
5030
5025
5031
std::string full_name() const
@@ -5073,9 +5079,13 @@ struct death_knight_action_t : public parse_action_effects_t<Base>
5073
5079
{
5074
5080
auto cd = action_base_t::composite_crit_damage_bonus_multiplier();
5075
5081
5076
- if ( p()->mastery.dreadblade->ok() && affected_by.mastery_dreadblade_crit_bonus )
5082
+ if ( p()->mastery.dreadblade->ok() && affected_by.mastery_dreadblade_crit_bonus_5 )
5077
5083
cd *= 1.0 + p()->mastery.dreadblade->effectN( 5 ).percent() +
5078
- ( p()->mastery.dreadblade->effectN( 5 ).sp_coeff() * p()->composite_mastery() / 100 );
5084
+ ( p()->mastery.dreadblade->effectN( 5 ).sp_coeff() * p()->cache.mastery_value() );
5085
+
5086
+ if ( p()->mastery.dreadblade->ok() && affected_by.mastery_dreadblade_crit_bonus_7 )
5087
+ cd *= 1.0 + p()->mastery.dreadblade->effectN( 7 ).percent() +
5088
+ ( p()->mastery.dreadblade->effectN( 7 ).sp_coeff() * p()->cache.mastery_value() );
5079
5089
5080
5090
return cd;
5081
5091
}
@@ -6964,7 +6974,7 @@ struct reapers_mark_explosion_t final : public death_knight_spell_t
6964
6974
mod( 0.0 ),
6965
6975
grim_reaper_max( 0 ),
6966
6976
grim_reaper_threshold( 0 ),
6967
- exterminate_stacks( p->talent.deathbringer.exterminate->effectN( 3 ).base_value() )
6977
+ exterminate_stacks( as<int>( p->talent.deathbringer.exterminate->effectN( 3 ).base_value() ) )
6968
6978
{
6969
6979
background = true;
6970
6980
cooldown->duration = 0_ms;
@@ -7279,7 +7289,7 @@ struct dark_transformation_t : public death_knight_spell_t
7279
7289
if ( p()->talent.unholy.unholy_pact.ok() )
7280
7290
p()->buffs.unholy_pact->trigger();
7281
7291
7282
- if ( p()->talent.unholy.commander_of_the_dead.ok() && !p()->bugs )
7292
+ if ( p()->talent.unholy.commander_of_the_dead.ok() )
7283
7293
p()->buffs.commander_of_the_dead->trigger();
7284
7294
7285
7295
if ( p()->talent.unholy.unholy_blight.ok() )
@@ -7431,7 +7441,7 @@ struct army_of_the_dead_t final : public death_knight_summon_spell_t
7431
7441
harmful = false;
7432
7442
target = p;
7433
7443
p->pets.army_ghouls.set_creation_event_callback( pets::parent_pet_action_fn( this ) );
7434
- if ( p->talent.unholy.magus_of_the_dead.ok() && !p->talent.unholy.raise_abomination.ok() )
7444
+ if ( p->talent.unholy.magus_of_the_dead.ok() && !p->talent.unholy.raise_abomination.ok() && !p->talent.unholy.legion_of_souls.ok() )
7435
7445
{
7436
7446
p->pets.army_magus.set_creation_event_callback( pets::parent_pet_action_fn( this ) );
7437
7447
}
@@ -11451,6 +11461,11 @@ struct legion_of_souls_t : public death_knight_spell_t
11451
11461
{
11452
11462
rider_duration = p->spell.apocalypse_now_data->duration();
11453
11463
}
11464
+
11465
+ if ( p->talent.unholy.magus_of_the_dead.ok() )
11466
+ {
11467
+ p->pets.army_magus.set_creation_event_callback( pets::parent_pet_action_fn( this ) );
11468
+ }
11454
11469
}
11455
11470
11456
11471
void execute() override
@@ -11469,6 +11484,7 @@ struct legion_of_souls_t : public death_knight_spell_t
11469
11484
}
11470
11485
11471
11486
p()->buffs.death_and_decay->trigger();
11487
+ p()->pets.army_magus.spawn();
11472
11488
}
11473
11489
11474
11490
void last_tick( dot_t* d ) override
@@ -16179,7 +16195,7 @@ void death_knight_action_t<Base>::apply_action_effects()
16179
16195
parse_effects( p()->buffs.plaguebringer, p()->talent.unholy.plaguebringer );
16180
16196
parse_effects( p()->buffs.commander_of_the_dead, p()->talent.unholy.commander_of_the_dead );
16181
16197
// Dont parse effect 5 and 6 due to the way this effect works. Manually handled where necessaray.
16182
- parse_effects( p()->mastery.dreadblade, effect_mask_t( true ).disable( 5, 6 ) );
16198
+ parse_effects( p()->mastery.dreadblade, effect_mask_t( true ).disable( 5, 6, 7 ) );
16183
16199
parse_effects( p()->buffs.winning_streak_unholy, [ & ]( double v ) {
16184
16200
v *= 0.1; // Divides by 10 in spell data
16185
16201
if ( p()->buffs.dark_transformation->check() )
0 commit comments