INT NearestTeamCHTarget( ) { FLOAT CHDist = 0; FLOAT lastCHDist = 9999; FLOAT AngleX, AngleY; INT iBestTargetCH = -1; for ( INT i = 0; i < 64; i++ ) { if( Game->cg_entities[i].currentValid == 1 && Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].infoValid && Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].clientNum != Game->cg->clientNum && Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].team != TEAM_SPECTATOR ) { if( Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].team != Game->clientInfo[ Game->cg->clientNum ].team ) { GetTag_15( &Game->cg_entities[i], aimSpot ); if( IsVisible( aimSpot ) ) { aimSpot[YAW] += Mom_AimVecX->integer; aimSpot[PITCH] += Mom_AimVecY->integer; aimSpot[ROLL] += Mom_AimVecZ->integer; VectorMA( aimSpot, Game->cg->snap->ping, Game->cg_entities[i].currentState.trDelta, aimSpot ); PingPredict( &Game->cg_entities[i], aimSpot, aimSpot ); GetAngleToOrigin( aimSpot, AngleX, AngleY ); CHDist = sqrt( AngleX*AngleX + AngleY*AngleY ); if ( (CHDist < lastCHDist) ) { lastCHDist = CHDist; iBestTargetCH = i; } } } } } return iBestTargetCH; } VOID DoTeamAim( INT i ) { FLOAT AngleX, AngleY; GetTag_15( &Game->cg_entities[i], aimSpot ); if( i < 0 ) { return; } GetAngleToOrigin( aimSpot, AngleX, AngleY ); *Game->ViewAngleX += AngleX; *Game->ViewAngleY += AngleY; } DoTeamAim( NearestTeamCHTarget );