for (int i = 0; i < trace_data.num_update; i++)
{
update_value_t* modulate_values = reinterpret_cast<update_value_t* const>(reinterpret_cast<std::uintptr_t>(trace_data.pointer_update_value) + i * sizeof(update_value_t));
game_trace_t game_trace;
g_interfaces->m_trace->init_trace_info(&game_trace);
g_interfaces->m_trace->get_trace_info(&trace_data, &game_trace, 0.0f, reinterpret_cast<void*>(reinterpret_cast<std::uintptr_t>(trace_data.arr.data()) + sizeof(trace_array_element_t) * (modulate_values->m_handle_index & ENT_ENTRY_MASK)));
if (game_trace.m_hit_entity && game_trace.m_hit_entity->is_player_pawn())
{
if (pen_data.m_damage < 1.f)
continue;
scale_damage(game_trace.get_hit_group(), game_trace.m_hit_entity, weapon_data, pen_data.m_damage);
pen_data.m_hitbox = game_trace.get_hitbox_id();
pen_data.m_penetrated = i == 0;
if (is_taser && pen_data.m_penetrated)
break;
return true;
}
if (handle_bullet_penetration(&trace_data, &handle_bullet_data, modulate_values, g_ctx->m_local_pawn->m_team_num()))
break;
pen_data.m_damage = handle_bullet_data.m_damage;
}