// ==========================================================================
// Gargoyle
// ==========================================================================
struct gargoyle_pet_t : public pet_t
{
struct gargoyle_strike_t : public spell_t
{
gargoyle_strike_t( player_t* player ) :
spell_t( "gargoyle_strike", player, RESOURCE_NONE, SCHOOL_NATURE )
{
// FIX ME!
// Resist (can be partial)? Scaling?
background = true;
repeating = true;
may_crit = false;
base_dd_min = 130;
base_dd_max = 150;
base_spell_power_multiplier = 0;
base_attack_power_multiplier = 1;
direct_power_mod = 0.40;
base_execute_time = 2.0;
}
};
gargoyle_strike_t* gargoyle_strike;
double haste_snapshot, power_snapshot;
gargoyle_pet_t( sim_t* sim, player_t* owner ) :
pet_t( sim, owner, "gargoyle", true ), gargoyle_strike( 0 ), haste_snapshot( 1.0 ),
power_snapshot( 0.0 )
{
}
virtual void init_base()
{
// FIX ME!
attribute_base[ ATTR_STRENGTH ] = 0;
attribute_base[ ATTR_AGILITY ] = 0;
attribute_base[ ATTR_STAMINA ] = 0;
attribute_base[ ATTR_INTELLECT ] = 0;
attribute_base[ ATTR_SPIRIT ] = 0;
gargoyle_strike = new gargoyle_strike_t( this );
}
virtual double composite_spell_haste() SC_CONST { return haste_snapshot; }
virtual double composite_attack_power() SC_CONST { return power_snapshot; }
virtual void summon( double duration=0 )
{
pet_t::summon( duration );
// Haste etc. are taken at the time of summoning
death_knight_t* o = owner -> cast_death_knight();
haste_snapshot = o -> composite_attack_haste();
power_snapshot = o -> composite_attack_power() * o -> composite_attack_power_multiplier();
gargoyle_strike -> schedule_execute(); // Kick-off repeating attack
}
};
[свернуть]