struct scourge_strike_t : public death_knight_attack_t
{
attack_t* scourge_strike_shadow;
struct scourge_strike_shadow_t : public death_knight_attack_t
{
scourge_strike_shadow_t( player_t* player ) : death_knight_attack_t( "scourge_strike_shadow", player, SCHOOL_SHADOW, TREE_UNHOLY )
{
weapon = &( player -> main_hand_weapon );
may_miss = may_parry = may_dodge = false;
may_crit = false;
proc = true;
background = true;
trigger_gcd = 0;
// Only blizzard knows, but for the shadowpart in 3.3 the follwing
// +x% buffs are ADDITIVE (which this flag controls)
// Bone Shield 2%, Desolation 5%, Blood Presence 15%, Black Ice 10%
additive_factors = true;
weapon_multiplier = 0;
base_attack_power_multiplier = 0;
base_dd_min = base_dd_max = 0.1;
}
virtual void target_debuff( int dmg_type )
{
// for each of your diseases on your target, you deal an
// additional 25% of the Physical damage done as Shadow damage.
death_knight_t* p = player -> cast_death_knight();
death_knight_attack_t::target_debuff( dmg_type );
// FIX ME!! How does 4T8 play with SS in 3.3
target_multiplier *= p -> diseases() * 0.12 * ( 1.0 + p -> set_bonus.tier8_4pc_melee() * .2 );
}
};
scourge_strike_t( player_t* player, const std::string& options_str ) :
death_knight_attack_t( "scourge_strike", player, SCHOOL_PHYSICAL, TREE_UNHOLY )
{
death_knight_t* p = player -> cast_death_knight();
check_talent( p -> talents.scourge_strike );
option_t options[] =
{
{ NULL, OPT_UNKNOWN, NULL }
};
parse_options( options, options_str );
weapon = &( p -> main_hand_weapon );
normalize_weapon_speed = true;
static rank_t ranks[] =
{
{ 79, 4, 800, 800, 0, -15 },
{ 73, 3, 653, 653, 0, -15 },
{ 67, 2, 418, 418, 0, -15 },
{ 55, 1, 340, 340, 0, -15 },
{ 0, 0, 0, 0, 0, 0 }
};
init_rank( ranks, 55271 );
scourge_strike_shadow = new scourge_strike_shadow_t( player );
weapon_multiplier = 0.70;
cost_frost = 1;
cost_unholy = 1;
base_crit += p -> talents.subversion * 0.03;
base_crit += p -> talents.vicious_strikes * 0.03;
base_crit_bonus_multiplier *= 1.0 + ( p -> talents.vicious_strikes * 0.15 );
base_multiplier *= 1.0 + ( 0.2 * p -> talents.outbreak / 3.0 );
base_multiplier *= 1.0 + p -> set_bonus.tier10_2pc_melee() * 0.1;
if ( p -> sigils.awareness )
base_dd_adder = 420;
}
void execute()
{
death_knight_attack_t::execute();
if ( result_is_hit() )
{
death_knight_t* p = player -> cast_death_knight();
scourge_strike_shadow -> base_dd_adder = direct_dmg;
scourge_strike_shadow -> execute();
p -> buffs_sigil_virulence -> trigger();
p -> buffs_sigil_hanged_man -> trigger();
if ( p -> talents.dirge )
{
p -> resource_gain( RESOURCE_RUNIC, 2.5 * p -> talents.dirge, p -> gains_dirge );
}
if ( p -> glyphs.scourge_strike )
{
if ( p -> dots_blood_plague -> ticking() )
if ( p -> dots_blood_plague -> action -> added_ticks < 3 )
p -> dots_blood_plague -> action -> extend_duration( 1 );
if ( p -> dots_frost_fever -> ticking() )
if ( p -> dots_frost_fever -> action -> added_ticks < 3 )
p -> dots_frost_fever -> action -> extend_duration( 1 );
}
}
}
};
[свернуть]