void resolver::animlayer_resolver()
{
if (!g_ctx.local()->is_alive())
return;
if (!player->is_player())
return;
float move_delta;
float static_desync = 58.f;
float low_desync = 30.f;
float random_desync = math::random_float(-58, 58);
int move_side;
player_t* e;
auto animstate = e->get_animation_state();
float speed = player->m_vecVelocity().Length2D();
if (player->m_fFlags() & FL_ONGROUND)
{
if (speed > 0.1f && (player_record->layers[6].m_flWeight * 1000.0f) == (player_record->layers[6].m_flWeight * 1000.0f))
{
if (player_record->layers[3].m_flWeight == 0.f && player_record->layers[3].m_flCycle == 0.f && player_record->layers[6].m_flWeight == 0.f)
{
auto move_delta = math::AngleDiff(player->m_angEyeAngles().y, original_goal_feet_yaw);
move_side = (2 * (move_delta <= 0.0f) - 1) > 0.0f ? -1 : 1;
math::normalize_yaw(player->m_angEyeAngles().y + move_side ? 58.f : -58.f);
}
else if (!(player_record->layers[12].m_flWeight * 10000.0f))
{
if (player_record->layers[6].m_flWeight * 10000.0f == int(player_record->layers[6].m_flWeight * 10000.0f))
{
float delta_eye = abs(resolver_layers[0][6].m_flPlaybackRate - player_record->layers[6].m_flPlaybackRate);
float delta_negative = abs(resolver_layers[1][6].m_flPlaybackRate - player_record->layers[6].m_flPlaybackRate);
float delta_positive = abs(resolver_layers[2][6].m_flPlaybackRate - player_record->layers[6].m_flPlaybackRate);
if ((delta_eye * 10000.0f) != (delta_negative * 10000.0f)) {
if (move_delta <= delta_eye)
move_delta = delta_eye;
else if (move_delta > delta_eye)
move_delta = delta_negative;
else
move_delta = delta_positive;
if (!(move_delta * 1000.0f) || (delta_eye * 10000.0f) != (delta_negative * 10000.0f)) {
if (move_delta == delta_negative) {
move_side = -1;
}
else if (move_delta == delta_positive) {
move_side = 1;
}
}
}
}
}
if (g_ctx.globals.missed_shots[player->EntIndex()] > 1)
{
switch (g_ctx.globals.missed_shots[player->EntIndex()] % 5)
{
case 0:
animstate->m_flGoalFeetYaw = math::normalize_yaw(move_side ? player->m_angEyeAngles().y + static_desync : player->m_angEyeAngles().y - static_desync);
break;
case 1:
animstate->m_flGoalFeetYaw = math::normalize_yaw(move_side ? player->m_angEyeAngles().y + low_desync : player->m_angEyeAngles().y - low_desync);
break;
//--Тут 3 рандома-и-они-нужны-на-всякий-случай--\\
case 2:
animstate->m_flGoalFeetYaw = math::normalize_yaw(move_side ? player->m_angEyeAngles().y + random_desync : player->m_angEyeAngles().y - random_desync);
break;
case 3:
animstate->m_flGoalFeetYaw = math::normalize_yaw(move_side ? player->m_angEyeAngles().y + random_desync : player->m_angEyeAngles().y - random_desync);
break;
case 4:
animstate->m_flGoalFeetYaw = math::normalize_yaw(move_side ? player->m_angEyeAngles().y + random_desync : player->m_angEyeAngles().y - random_desync);
break;
//----------------------------------------------\\
}
}
}
}
}