double action_t::calculate_tick_damage() { tick_dmg = resisted_dmg = blocked_dmg = 0; if ( base_td == 0 ) base_td = base_td_init; if ( base_td == 0 ) return 0; tick_dmg = base_td + total_power() * tick_power_mod; tick_dmg *= total_td_multiplier(); double init_tick_dmg = tick_dmg; if ( result == RESULT_CRIT ) { tick_dmg *= 1.0 + total_crit_bonus(); } if ( ! binary ) { resisted_dmg = resistance() * tick_dmg; tick_dmg -= resisted_dmg; } if ( sim -> debug ) { log_t::output( sim, "%s dmg for %s: td=%.0f i_td=%.0f b_td=%.0f mod=%.2f power=%.0f b_mult=%.2f p_mult=%.2f t_mult=%.2f", player -> name(), name(), tick_dmg, init_tick_dmg, base_td, tick_power_mod, total_power(), base_multiplier * base_td_multiplier, player_multiplier, target_multiplier ); } return tick_dmg; }
double heal_t::calculate_tick_damage() { double dmg = 0; if ( base_td == 0 ) base_td = base_td_init; if ( base_td == 0 && tick_power_mod == 0 ) return 0; dmg = floor( base_td + 0.5 ) + total_power() * tick_power_mod; dmg *= total_td_multiplier(); double init_tick_dmg = dmg; if ( result == RESULT_CRIT ) { dmg *= 1.0 + total_crit_bonus(); } if ( ! sim -> average_range ) dmg = floor( dmg + sim -> real() ); if ( sim -> debug ) { log_t::output( sim, "%s heal for %s: td=%.0f i_td=%.0f b_td=%.0f mod=%.2f power=%.0f b_mult=%.2f p_mult=%.2f t_mult=%.2f", player -> name(), name(), tick_dmg, init_tick_dmg, base_td, tick_power_mod, total_power(), base_multiplier * base_td_multiplier, player_multiplier, target_multiplier ); } return dmg; }