void Resolver()
{
if (!Variables.RageResolver)
return;
for (int i = 1; i <= g_GlobalVars->maxClients; i++)
{
C_BasePlayer* player = C_BasePlayer::GetPlayerByIndex(i);
if (!player || !player->IsAlive() || player->IsDormant())
continue;
if (player == g_LocalPlayer)
return;
if (!Variables.RageResolveAll && g_LocalPlayer->m_iTeamNum())
return;
//This is actually right, but scanning the real player yaw may take much time, so just let it do this (need to create an different options)
auto feet_yaw = player->GetPlayerAnimState()->m_flCurrentFeetYaw;
auto body_max_rotation = 58.f;
if (feet_yaw <= 58)
{
if (-58 > feet_yaw)
player->m_angEyeAngles().yaw = body_max_rotation + player->m_angEyeAngles().yaw;
}
else
{
player->m_angEyeAngles().yaw = body_max_rotation - player->m_angEyeAngles().yaw;
}
if (player->GetAnimOverlay(6)->m_flPlaybackRate > 0.1)
{
for (int resolve_delta = 58.f; resolve_delta < -58.f; resolve_delta = resolve_delta - 20.f)
{
player->m_angEyeAngles().yaw = resolve_delta;
}
}
float_t new_yaw = player->m_flLowerBodyYawTarget();
new_yaw = Math::ClampYaw(new_yaw);
player->m_angEyeAngles().yaw = new_yaw;
continue;
}
}