SWEP.SmoothedMagnification = 1 function SWEP:CalcView(ply, pos, ang, fov) local rec = (self:GetLastRecoilTime() + self:RecoilDuration()) - CurTime() rec = math.max(rec, 0) rec = rec * (self:GetValue("RecoilKick") + 1) * (self:GetRecoilAmount() / self:GetValue("RecoilMaximum")) ^ 0.75 if !game.SinglePlayer() then rec = rec * 0.5 -- ??????????????? end if rec > 0 then ang.r = ang.r + (math.sin(CurTime() * 70.151) * rec) end local mag = Lerp(self:GetSightAmount() ^ 3, 1, self:GetMagnification()) if self:GetHoldBreathAmount() > 0 then mag = mag * (1 + self:GetHoldBreathAmount() * 0.15) end local diff = math.abs(self.SmoothedMagnification - mag) self.SmoothedMagnification = math.Approach(self.SmoothedMagnification, mag, FrameTime() * diff * (self.SmoothedMagnification > mag and 10 or 5)) fov = fov / self.SmoothedMagnification self.TacRPLastFOV = fov fov = fov - rec return pos, ang, fov end