local n=1.8 local P=1.3 script:WaitForChild("\087\104\105\115\116\108\101")script:WaitForChild("\087\104\105\110\101")script:WaitForChild("\066\079\086")for n,P in pairs(car.DriveSeat:GetChildren())do for n,x in pairs(script:GetChildren())do if P.Name==x.Name then P:Stop()wait()P:Destroy()end end end car.DriveSeat.ChildRemoved:connect(function(n)if n.Name=="\083\101\097\116\087\101\108\100"then for n,P in pairs(car.DriveSeat:GetChildren())do for n,x in pairs(script:GetChildren())do if P.Name==x.Name then P:Stop()wait()P:Destroy()end end end end end)if not _Tune.Engine then return end handler:FireServer("\110\101\119\083\111\117\110\100","\087\104\105\115\116\108\101",car.DriveSeat,script.Whistle.SoundId,0,script.Whistle.Volume,true)handler:FireServer("\110\101\119\083\111\117\110\100","\087\104\105\110\101",car.DriveSeat,script.Whine.SoundId,0,script.Whine.Volume,true)handler:FireServer("\110\101\119\083\111\117\110\100","\066\079\086",car.DriveSeat,script.BOV.SoundId,0,script.BOV.Volume,true)handler:FireServer("\112\108\097\121\083\111\117\110\100","\087\104\105\115\116\108\101")handler:FireServer("\112\108\097\121\083\111\117\110\100","\087\104\105\110\101")car.DriveSeat:WaitForChild("\087\104\105\115\116\108\101")car.DriveSeat:WaitForChild("\087\104\105\110\101")car.DriveSeat:WaitForChild("\066\079\086")local x=tick()local r=_Tune.Turbochargers local N=_Tune.Superchargers while wait()do local l=(script.Parent.Values.Boost.Value/(_Tune.T_Boost*r+_Tune.S_Boost*N))*2 local e=(script.Parent.Values.BoostTurbo.Value/(_Tune.T_Boost*r))*2 local z=script.Parent.Values.BoostSuper.Value/(_Tune.S_Boost*N)local h,t,p,T,X,u=0,0,0,0,0,0 BOVact=math.floor(e*20)if r~=0 then h=e t=(e/4)*T_Loudness p=(1-(-e/20))*BOV_Pitch T=(-0.5+(e/2)*BOV_Loudness)*(1-script.Parent.Values.Throttle.Value)if BOVact<BOVact2 then if car.DriveSeat.BOV.IsPaused then if FE then handler:FireServer("\112\108\097\121\083\111\117\110\100","\066\079\086")else car.DriveSeat.BOV:Play()end end end if BOVact>=BOVact2 then if FE then handler:FireServer("\115\116\111\112\083\111\117\110\100","\066\079\086")else car.DriveSeat.BOV:Stop()end end else h,t,p,T=0,0,0,0 end if N~=0 then X=(script.Parent.Values.RPM.Value/_Tune.Redline)*n u=(z/4)*P else X,u=0,0 end handler:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\087\104\105\115\116\108\101",script.Whistle.SoundId,h,t)handler:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\087\104\105\110\101",script.Whine.SoundId,X,u)handler:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\066\079\086",script.BOV.SoundId,p,T)if tick()-x>=.1 then BOVact2=math.floor(e*20)x=tick()end end

local Whine_Pitch = 1.8		--max pitch of the whine (not exact so might have to mess with it)
local S_Loudness = 1.3 --volume of the supercharger(s) (not exact volume so you kinda have to experiment with it also)

script:WaitForChild("Whistle")
script:WaitForChild("Whine")
script:WaitForChild("BOV")

for i,v in pairs(car.DriveSeat:GetChildren()) do
	for _,a in pairs(script:GetChildren()) do
		if v.Name==a.Name then v:Stop() wait() v:Destroy() end
	end
end

car.DriveSeat.ChildRemoved:connect(function(child)
	if child.Name=="SeatWeld" then
		for i,v in pairs(car.DriveSeat:GetChildren()) do
			for _,a in pairs(script:GetChildren()) do
				if v.Name==a.Name then v:Stop() wait() v:Destroy() end
			end
		end
	end
end)

if not _Tune.Engine then return end
handler:FireServer("newSound","Whistle",car.DriveSeat,script.Whistle.SoundId,0,script.Whistle.Volume,true)
handler:FireServer("newSound","Whine",car.DriveSeat,script.Whine.SoundId,0,script.Whine.Volume,true)
handler:FireServer("newSound","BOV",car.DriveSeat,script.BOV.SoundId,0,script.BOV.Volume,true)
handler:FireServer("playSound","Whistle")
handler:FireServer("playSound","Whine")
car.DriveSeat:WaitForChild("Whistle")
car.DriveSeat:WaitForChild("Whine")
car.DriveSeat:WaitForChild("BOV")
local ticc = tick()
local _TCount = _Tune.Turbochargers
local _SCount = _Tune.Superchargers

while wait() do
	local psi = (((script.Parent.Values.Boost.Value)/((_Tune.T_Boost*_TCount)+(_Tune.S_Boost*_SCount)))*2)
	local tpsi = (((script.Parent.Values.BoostTurbo.Value)/(_Tune.T_Boost*_TCount))*2)
	local spsi = ((script.Parent.Values.BoostSuper.Value)/(_Tune.S_Boost*_SCount))
	--(script.Parent.Values.RPM.Value/_Tune.Redline)
	local WP,WV,BP,BV,HP,HV = 0,0,0,0,0,0
	
	BOVact = math.floor(tpsi*20)
	if _TCount~=0 then
		WP = (tpsi)
		WV = (tpsi/4)*T_Loudness
		
		BP = (1-(-tpsi/20))*BOV_Pitch
		BV = (((-0.5+((tpsi/2)*BOV_Loudness)))*(1 - script.Parent.Values.Throttle.Value))
	
		if BOVact < BOVact2 then if car.DriveSeat.BOV.IsPaused then if FE then handler:FireServer("playSound","BOV") else car.DriveSeat.BOV:Play() end end end
		if BOVact >= BOVact2 then if FE then handler:FireServer("stopSound","BOV") else car.DriveSeat.BOV:Stop() end end
	else
		WP,WV,BP,BV=0,0,0,0
	end
	if _SCount~=0 then
		HP = (script.Parent.Values.RPM.Value/_Tune.Redline)*Whine_Pitch
		HV = (spsi/4)*S_Loudness
	else
		HP,HV = 0,0
	end

	handler:FireServer("updateSound","Whistle",script.Whistle.SoundId,WP,WV)
	handler:FireServer("updateSound","Whine",script.Whine.SoundId,HP,HV)
	handler:FireServer("updateSound","BOV",script.BOV.SoundId,BP,BV)
	
	if (tick()-ticc) >= 0.1 then
		BOVact2 = math.floor(tpsi*20)
		ticc = tick()
	end
end
