Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Ярость и эффекты снижения/избежания урона

Упомянутые в теме пользователи:

Показано с 1 по 12 из 153

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Ветеран форума Аватар для Cthulhu
    Регистрация
    15.01.2012
    Сообщений
    1,004
    Поблагодарил(а)
    326
    Получено благодарностей: 123 (сообщений: 90).
    Репутация: 123
    Из симкрафта, функция для вычисления этого action_t::direct_damage

    Код:
    // action_t::calculate_direct_damage =========================================
    
    double action_t::calculate_direct_damage()
    {
      direct_dmg = resisted_dmg = blocked_dmg = 0;
    
      double base_direct_dmg = sim -> range( base_dd_min, base_dd_max );
    
      if ( base_direct_dmg == 0 ) return 0;
      
      direct_dmg  = base_direct_dmg + base_dd_adder + player_dd_adder + target_dd_adder;
      if ( weapon_multiplier > 0 )
      {
        // x% weapon damage + Y
        // e.g. Obliterate, Shred, Backstab
        direct_dmg += calculate_weapon_damage();
        direct_dmg *= weapon_multiplier;
        
        // OH penalty
        if ( weapon && weapon -> slot == SLOT_OFF_HAND )
          direct_dmg *= 0.5;
      }
      direct_dmg += direct_power_mod * total_power();
      direct_dmg *= total_dd_multiplier();
    
      double init_direct_dmg = direct_dmg;
    
      if ( result == RESULT_GLANCE )
      {
        double delta_skill = ( sim -> target -> level - player -> level ) * 5.0;
    
        if ( delta_skill < 0.0 )
          delta_skill = 0.0;
    
        double max_glance = 1.3 - 0.03 * delta_skill;
    
        if ( max_glance > 0.99 ) 
          max_glance = 0.99;
        else if ( max_glance < 0.2 )
          max_glance = 0.20;
    
        double min_glance = 1.4 - 0.05 * delta_skill;
    
        if ( min_glance > 0.91 )
          min_glance = 0.91;
        else if ( min_glance < 0.01 )
          min_glance = 0.01;
    
        if ( min_glance > max_glance )
        {
          double temp = min_glance;
          min_glance = max_glance;
          max_glance = temp;
        }
    
        direct_dmg *= sim -> range( min_glance, max_glance ); // 0.75 against +3 targets.
      }
      else if ( result == RESULT_CRIT )
      {
        direct_dmg *= 1.0 + total_crit_bonus();
      }
    
      if ( ! binary )
      {
        resisted_dmg = resistance() * direct_dmg;
        direct_dmg -= resisted_dmg;
      }
    
      if ( result == RESULT_BLOCK )
      {
        blocked_dmg = sim -> target -> block_value;
        direct_dmg -= blocked_dmg;
        if ( direct_dmg < 0 ) direct_dmg = 0;
      }
    
      if ( sim -> debug )
      {
        log_t::output( sim, "%s dmg for %s: dd=%.0f i_dd=%.0f b_dd=%.0f mod=%.2f power=%.0f b_mult=%.2f p_mult=%.2f t_mult=%.2f",
                       player -> name(), name(), direct_dmg, init_direct_dmg, base_direct_dmg, direct_power_mod,
                       total_power(), base_multiplier * base_dd_multiplier, player_multiplier, target_multiplier );
      }
    
      return direct_dmg;
    }

  2. 1 пользователь сказал cпасибо Cthulhu за это полезное сообщение:

    ciklopper (05.03.2014)

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 12.05.2013, 00:43
  2. Ответов: 3
    Последнее сообщение: 04.02.2013, 21:33
  3. Не корректное отображение персонажа в ЛК
    от odessa2000 в разделе Корзина
    Ответов: 1
    Последнее сообщение: 11.01.2013, 05:40
  4. Ответов: 0
    Последнее сообщение: 14.11.2012, 13:05

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •