local C=workspace.FilteringEnabled local P=script.Parent.Car.Value local o=P:WaitForChild("\065\067\054\095\070\069\095\083\111\117\110\100\115")local T=require(P["\065-\067\104\097\115\115\105\115 \084\117\110\101"])local I=0 local t=0 local G=.13 local W=.4 local w=0 local b=0 local c=0 local m=0 local j=0 script:WaitForChild("\082\101\118")script.Parent.Values.Gear.Changed:connect(function()t=1 if script.Parent.Values.RPM.Value>5000 then j=.2 end end)for C,P in pairs(P.DriveSeat:GetChildren())do for C,o in pairs(script:GetChildren())do if P.Name==o.Name then P:Stop()wait()P:Destroy()end end end o:FireServer("\110\101\119\083\111\117\110\100","\082\101\118",P.DriveSeat,script.Rev.SoundId,0,script.Rev.Volume,true)o:FireServer("\112\108\097\121\083\111\117\110\100","\082\101\118")P.DriveSeat:WaitForChild("\082\101\118")while wait()do t=math.max(0,t-.1)local Y=script.Parent.Values.RPM.Value if script.Parent.Values.Throttle.Value<=T.IdleThrottle/100 then c=math.max(.3,c-.2)w=math.max(0,w-.05)b=1 else c=math.min(1,c+.1)w=1 b=0 end j=math.min(1,j+.2)if script.Parent.Values.RPM.Value>T.Redline-T.RevBounce/4 and script.Parent.Values.Throttle.Value>T.IdleThrottle/100 then m=.5 else m=1 end if not script.Parent.IsOn.Value then I=math.max(I-.015,0)else I=1 end local y=((2*c)*j)*m+(((W*b)*w)*(1-c))*math.sin(tick()*50)local Z=math.max((script.Rev.SetPitch.Value+(script.Rev.SetRev.Value*Y)/T.Redline)*I^2+(G*t)*math.sin(80*tick()),script.Rev.SetPitch.Value)if C then if(script.Parent:FindFirstChild("\068\114\105\118\101\077\111\100\101")).Value~="\067\111\109\102\111\114\116"then o:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\082\101\118",script.Rev.SoundId,Z,y)else o:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\082\101\118",script.Rev.SoundId,Z/1.2,y/1.2)end else if(script.Parent:FindFirstChild("\068\114\105\118\101\077\111\100\101")).Value~="\067\111\109\102\111\114\116"then P.DriveSeat.Rev.Volume=y P.DriveSeat.Rev.Pitch=Z else P.DriveSeat.Rev.Volume=y/1.75 P.DriveSeat.Rev.Pitch=Z/1.5 end end end

local FE = workspace.FilteringEnabled
local car = script.Parent.Car.Value
local handler = car:WaitForChild("AC6_FE_Sounds")
local _Tune = require(car["A-Chassis Tune"])
local on = 0
local mult=0
local det=.13
local trm=.4
local trmmult=0
local trmon=0
local throt=0
local redline=0
local shift=0

script:WaitForChild("Rev")

script.Parent.Values.Gear.Changed:connect(function()
	mult=1
	if script.Parent.Values.RPM.Value>5000 then
		shift=.2
	end
end)

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

handler:FireServer("newSound","Rev",car.DriveSeat,script.Rev.SoundId,0,script.Rev.Volume,true)
handler:FireServer("playSound","Rev")
car.DriveSeat:WaitForChild("Rev")

while wait() do
	mult=math.max(0,mult-.1)
	local _RPM = script.Parent.Values.RPM.Value
	
	if script.Parent.Values.Throttle.Value <= _Tune.IdleThrottle/100 then
		throt = math.max(.3,throt-.2)
		trmmult = math.max(0,trmmult-.05)
		trmon = 1		
	else
		throt = math.min(1,throt+.1)
		trmmult = 1
		trmon = 0		
	end	
	shift = math.min(1,shift+.2)	
	if script.Parent.Values.RPM.Value > _Tune.Redline-_Tune.RevBounce/4 and script.Parent.Values.Throttle.Value > _Tune.IdleThrottle/100 then
		redline=.5
	else
		redline=1
	end
	if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
	local Volume = (2*throt*shift*redline)+(trm*trmon*trmmult*(1-throt)*math.sin(tick()*50))
	local Pitch = math.max((((script.Rev.SetPitch.Value + script.Rev.SetRev.Value*_RPM/_Tune.Redline))*on^2)+(det*mult*math.sin(80*tick())),script.Rev.SetPitch.Value)
	if FE then
		if script.Parent:FindFirstChild("DriveMode").Value ~= "Comfort" then
		 	handler:FireServer("updateSound","Rev",script.Rev.SoundId,Pitch,Volume)
		else
			handler:FireServer("updateSound","Rev",script.Rev.SoundId,Pitch/1.2,Volume/1.2)
		end
	else
		if script.Parent:FindFirstChild("DriveMode").Value ~= "Comfort" then
			car.DriveSeat.Rev.Volume = Volume
			car.DriveSeat.Rev.Pitch = Pitch
		else
			car.DriveSeat.Rev.Volume = Volume/1.75
			car.DriveSeat.Rev.Pitch = Pitch	/1.5	
		end
	end
end
