void CNoSpread::GetSpreadXY( UINT seed, Vector& vec ) { int iSeed = seed & 255; iSeed++; RandomSeed( iSeed ); vec.x = RandomFloat( -0.5, 0.5 ) + RandomFloat( -0.5, 0.5 ); vec.y = RandomFloat( -0.5, 0.5 ) + RandomFloat( -0.5, 0.5 ); vec.z = vec.x * vec.x + vec.y * vec.y; vec *= GetVecSpread( ); // m_flSpread of FX_FireBullets } void CNoSpread::GetSpreadFix( UINT seed, QAngle& vIn, QAngle& vOut ) { Vector forward, right, up, vecDir; Vector view, spread; QAngle dest; AngleVectors( vIn, &forward, &right, &up ); GetSpreadXY( seed, spread ); vecDir.x = forward.x + spread.x * right.x + spread.y * up.x; view.x = 8192.0f * vecDir.x; vecDir.y = forward.y + spread.x * right.y + spread.y * up.y; view.y = 8192.0f * vecDir.y; vecDir.z = forward.z + spread.x * right.z + spread.y * up.z; view.z = 8192.0f * vecDir.z; VectorAngles( view, dest ); vOut.x = vIn.x - dest.x; vOut.y = vIn.y - dest.y; }