function SWEP:CalculateTrajectory( ) local theta, g, d, v, tr, a, b, x, y, k, v, v2, v4, x2, p, q, n tr = util.TraceLine{ start = self.Owner:EyePos( ), endpos = self.Owner:EyePos( ) + self.Owner:GetAimVector( ) * 8192, filter = self.Owner, mask = MASK_SHOT } a = tr.HitPos b = self.Owner:EyePos( ) a = a - b y = math.abs( a.z ) a.z = 0 d = a:Length( ) g = self:GetGravAccel( ) v = 500 --velocity of entity v2 = v * v v4 = v2 * v2 x = d x2 = x * x k = math.atan( ( ( v2 + ( v4 - g * ( g * x2 + 2 * y * v2 ) ) ^ .5 ) / ( g * x ) ) ) v = math.atan( ( ( v2 - ( v4 - g * ( g * x2 + 2 * y * v2 ) ) ^ .5 ) / ( g * x ) ) ) if math.min( k, v ) == math.huge then --It isn't possible to hit it from here, according to this math self.State = "ASST ERR" self.TargetPos = nil self:EmitSound( self.Sounds.Error, 30 ) return end k = 90 + math.deg( k ) v = 90 + math.deg( v ) p = tr.HitPos:ToScreen( ) q = self.Owner:EyeAngles( ) n = q.p q.p = n - math.min( k, v ) self.LowPitch = q:Forward( ) * v * .5 q.p = n - math.max( k, v ) self.BigPitch = q:Forward( ) * v * .5 self.TargetPos = tr.HitPos self.YCoord = ( self.Owner:GetShootPos( ) + q:Forward( ) * 6 ):ToScreen( ).y self.State = "ASST ON" self:EmitSound( self.Sounds.LockedOn, 30 ) end