Pinkstack/roblox-luau-corpus-text huggingface dataset:
-- Used to set the Notification Modal's text and behavior when actions are selected


local function getText(
	state: UserActions.State,
	action: UserActions.Action,
	setNotificationText: ((string) -> ())?
): string?
	-- Prevents notifications from being shown for opening submenus
	if action.actions then
		return
	end

	-- Handles selection of default subactions
	if action.isDefault and action.parent then
		for _, activeAction in ipairs(state.activeActions) do
			if activeAction.parent and activeAction.parent.name == action.parent.name then
				if callback then
					callback()
					callback = nil
				end

				return activeAction.name .. ": Off"
			end
		end
		return
	end

	-- Handles when notifications for poses are shown
	if action.parent and action.parent.name == UserActions.actions.pose.name then
		local player = Players.LocalPlayer
		local character = if player then player.Character else nil
		local humanoid = if character then character:FindFirstChildOfClass("Humanoid") else nil

		if humanoid then
			if humanoid.MoveDirection ~= Vector3.zero or isJumping(humanoid) then
				-- Prevents notification from being shown while player is moving
				-- and attempting to select a pose
				return
			else
				if callback then
					callback()
					callback = nil
				end

				callback = Emotes.onNextMove(humanoid, function()
					-- Shows the notification modal when player moves after
					-- selecting a pose
					if setNotificationText then
						setNotificationText(action.name .. ": Off")
					end
				end)
			end
		end
	end

	return action.name .. ": " .. if UserActions.isActionActive(state, action) then "On" else "Off"
end

return getText
-- // Connections


playersService.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(character)
        
        local rootPart = character:WaitForChild("HumanoidRootPart")
        
        local humanoid = character:WaitForChild("Humanoid")
        local oldHealth = humanoid.Health
        
        local particlesClone = bloodParticles:Clone()
        particlesClone.Parent = rootPart
        
        humanoid.HealthChanged:Connect(function(health)
            if health < oldHealth then
                
                oldHealth = health
                
                spawn(function()
                    for i = 1, blood_parts_per_hit do
                        
                        local raycastOrigin = rootPart.Position + Vector3.new(math.random(-20, 20) / 10, 0, math.random(-20, 20) / 10)
                        local raycastDirection = Vector3.new(0, -8, 0)
                        
                        local raycastResult = raycast(character, raycastOrigin, raycastDirection)
                        
                        if raycastResult then
                            particlesClone:Emit(2)
                            
                            delay(0.5, function()
                                local newBlood = createBlood(raycastResult.Position)
                                expandBlood(newBlood)
                                
                                delay(blood_destroy_delay, function()
                                    deleteBlood(newBlood)
                                end)
                            end)
                        end
                        
                        wait(math.random(0.5, 2) / 10)
                    end
                end)
            else
                oldHealth = health
            end
        end)
        
    end)
end)
-- создание трассы


local rnd=Random.new()

local function Rebuild()	-- пересоздание мира
	for i=0, PartWorld - 1 do
		local index = rnd:NextInteger(1,#models)	-- случайная моделька  
		local model = models[index]:Clone()			-- берём клон
		local posit = CFrame.new(0,0,-180*i)		-- расчёт позиции
		model:SetPrimaryPartCFrame(posit)			-- размещение
		model.Parent = game.Workspace.GameZone		-- привязка к пространству
	end
end
-- double rd_dbl_be(string src, int s)
-- @src - Source binary string
-- @s - Start index of big endian double


local function rd_dbl_be(src, s)
	local f1, f2, f3, f4, f5, f6, f7, f8 = src:byte(s, s + 7) -- same
	return rd_dbl_basic(f8, f7, f6, f5, f4, f3, f2, f1)
end
-- all configurations can be found in the "configurations" model



local configs = script.Parent.Parent.Configurations

script.Parent.Touched:connect(function(hit) -- this is the main function that is called whenever the fire is touched
	if hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid") and hit.Parent.Humanoid.Health > 0 then -- if we have a player or an AI then	
		if configs.CanKill.Value == true and configs.CanCatchFire.Value == true then -- if the fire sets players alight and gives them damamge then
			local fire = script.Parent.Parent.FirePart.Fire:Clone() -- gatting some fire
			fire.Parent = hit -- putting the fire in the part of the person that touched the fire
			fire.Size = configs.FireSize.Value
			for i = 1, configs.FireDuration.Value do -- this deals with giving damamge to the player
				if hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid") and hit.Parent.Humanoid.Health > 0 then
					hit.Parent.Humanoid.Health = hit.Parent.Humanoid.Health - 1 -- reduce health
					wait(configs.HarmSpeed.Value) -- this is the time between giving damamge to the player	
				end
			end
			if fire and hit then -- removing unneeded fire
				fire:Destroy()
			end			
		elseif configs.CanKill.Value == true then -- else if we can only kill
			hit.Parent:BreakJoints() -- kill instantly
		elseif configs.CanCatchFire.Value == true then -- else if we can only set alight
			local fire = script.Parent.Parent.FirePart.Fire:Clone() -- getting some fire
			fire.Parent = hit -- making its parent the part that touched the fire
			fire.Size = configs.FireSize.Value
			wait(configs.FireDuration.Value) -- waiting before removing fire
			fire:Destroy() -- removing fire
		end
	end
end)
-- free faces


	["Smile"] = {
		free  = true,
		id = "rbxassetid://144080495",
		legacy = true,
		image = "https://www.roblox.com/asset-thumbnail/image?assetId=144080495&width=420&height=420&format=png"
	},
	["Cunning"] = {
		free  = true,
		id = "rbxassetid://21635489",
		legacy = true,
		image = "https://www.roblox.com/asset-thumbnail/image?assetId=21635489&width=420&height=420&format=png"
	},
	["Laughing"] = {
		free  = true,
		id = "rbxassetid://26424652",
		legacy = true,
		image = "https://www.roblox.com/asset-thumbnail/image?assetId=26424652&width=420&height=420&format=png"
	},
	["Chill"] = {
		free  = true,
		id = "rbxassetid://7074749",
		legacy = true,
		image = "https://www.roblox.com/asset-thumbnail/image?assetId=7074749&width=420&height=420&format=png"
	},
	["Unamused"] = {
		free  = true,
		id = "rbxassetid://20418518",
		legacy = true,
		image = "https://www.roblox.com/asset-thumbnail/image?assetId=20418518&width=420&height=420&format=png"
	},
	["Freckles"] = {
		free  = true,
		id = "rbxassetid://12145059",
		legacy = true,
		image = "https://www.roblox.com/asset-thumbnail/image?assetId=12145059&width=420&height=420&format=png"
	},
	["Beardy"] = {
		free  = true,
		id = "rbxassetid://110287880",
		legacy = true,
		image = "https://www.roblox.com/asset-thumbnail/image?assetId=110287880&width=420&height=420&format=png"
	},
}

return module
--/Recoil Modification


module.camRecoil = {
	RecoilUp 		= .9
	,RecoilTilt 	= 1
	,RecoilLeft 	= 1.05
	,RecoilRight 	= 1.05
}

module.gunRecoil = {
	RecoilUp 		= .9
	,RecoilTilt 	= 1
	,RecoilLeft 	= 1.1
	,RecoilRight 	= 1.1
}

module.AimRecoilReduction = 1
module.AimSpreadReduction = 1

module.MinRecoilPower 			= 1
module.MaxRecoilPower 			= 1
module.RecoilPowerStepAmount 	= 1

module.MinSpread 				= 1
module.MaxSpread 				= 1					
module.AimInaccuracyStepAmount 	= 1
module.AimInaccuracyDecrease 	= 1
module.WalkMult 				= 1

module.MuzzleVelocityMod	 	= 1

return module
--[=[
	Cancels this promise, preventing the promise from resolving or rejecting. Does not do anything if the promise is already settled.

	Cancellations will propagate upwards and downwards through chained promises.

	Promises will only be cancelled if all of their consumers are also cancelled. This is to say that if you call `andThen` twice on the same promise, and you cancel only one of the child promises, it will not cancel the parent promise until the other child promise is also cancelled.

	```lua
		promise:cancel()
	```
]=]


function Promise.prototype:cancel()
	if self._status ~= Promise.Status.Started then
		return
	end

	self._status = Promise.Status.Cancelled

	if self._cancellationHook then
		self._cancellationHook()
	end

	if self._parent then
		self._parent:_consumerCancelled(self)
	end

	for child in pairs(self._consumers) do
		child:cancel()
	end

	self:_finalize()
end
--Light off


	src.Strobe.Value.Value = 1
	src.Strobe1.Value.Value = 1
	src.Speaker.Siren:Play()
	light.Value = false
	else
	src.Strobe.Value.Value = 0
	src.Strobe1.Value.Value = 0
	src.Speaker.Siren:Stop()
	light.Value = true
	return
	end
end
end)
src.Parent.ChildRemoved:connect(function(child)
	if child.Name=="SeatWeld" then 
		src:Stop()
		script.Parent:Destroy()
	end
end)
-------------------------------
--Functions
-------------------------------



function CreateMotor()
	PARENTMODEL.Motors.MotorBlock1.Anchored = false
	
	local motor = Instance.new("Motor")
	motor.Parent = PARENTMODEL.Motors
	motor.Part0, motor.Part1, motor.MaxVelocity = PARENTMODEL.Motors.MotorBlock0, PARENTMODEL.Motors.MotorBlock1, 0.01
end


function WeldToObject(group, obj)
	for _, v in pairs(group) do
		local weld = Instance.new("WeldConstraint")
		weld.Parent, weld.Name = v, "Weld"
		weld.Part0, weld.Part1 = v, obj
		v.Anchored = false
	end
end

function MoveGate()
	if OPEN == false then
		PARENTMODEL.Motors.Motor.DesiredAngle, OPEN = math.rad(-OPENINGANGLE), true
		
	else
		PARENTMODEL.Motors.Motor.DesiredAngle, OPEN = 0, false
	end

end
-- 	getfenv(moduleFunction).require = _requireOverride
-- 	getfenv(moduleFunction).delay = fakeTimers.delayOverride
-- 	getfenv(moduleFunction).tick = fakeTimers.tickOverride
-- 	getfenv(moduleFunction).DateTime = fakeTimers.dateTimeOverride
-- 	getfenv(moduleFunction).os = fakeTimers.osOverride
-- 	moduleResult = moduleFunction()
--[[**
	Cleans up whatever `Object` was set to this namespace by the 3rd parameter of `:Add()`.
	@param [t:any] Index The index you want to remove.
	@returns [t:Janitor] The same janitor, for chaining reasons.
**--]]


function Janitor.__index:Remove(Index)
	local This = self[IndicesReference]

	if This then
		local Object = This[Index]

		if Object then
			local MethodName = self[Object]

			if MethodName then
				if MethodName == true then
					Object()
				else
					local ObjectMethod = Object[MethodName]
					if ObjectMethod then
						ObjectMethod(Object)
					end
				end

				self[Object] = nil
			end

			This[Index] = nil
		end
	end

	return self
end
--colbert was way too lazy to make his own this time.


Tool = script.Parent;
local arms = nil
local torso = nil
local welds = {}

function Equip(mouse)
wait(0.01)
arms = {Tool.Parent:FindFirstChild("Left Arm"), Tool.Parent:FindFirstChild("Right Arm")}
torso = Tool.Parent:FindFirstChild("Torso")
if arms ~= nil and torso ~= nil then
local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
if sh ~= nil then
local yes = true
if yes then
yes = false
sh[1].Part1 = nil
sh[2].Part1 = nil
local weld1 = Instance.new("Weld")
weld1.Part0 = torso
weld1.Parent = torso
weld1.Part1 = arms[1]
weld1.C1 = CFrame.new(0.8,0.5,0.4)*CFrame.Angles(math.rad(270),math.rad(40),0)
welds[1] = weld1
local weld2 = Instance.new("Weld")
weld2.Part0 = torso
weld2.Parent = torso
weld2.Part1 = arms[2]
weld2.C1 = CFrame.new(-1.2,0.5,0.4)*CFrame.Angles(math.rad(270),math.rad(-5),0)
welds[2] = weld2
end
else
print("sh")
end
else
print("arms")
end
end

function Unequip(mouse)
if arms ~= nil and torso ~= nil then
local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
if sh ~= nil then
local yes = true
if yes then
yes = false
sh[1].Part1 = arms[1]
sh[2].Part1 = arms[2]
welds[1].Parent = nil
welds[2].Parent = nil
end
else
print("sh")
end
else
print("arms")
end
end
Tool.Equipped:connect(Equip)
Tool.Unequipped:connect(Unequip)
--[[[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			= 3			,	-- Controller steering L-deadzone (0 - 100%)
		ControlRDZone			= 3			,	-- Controller steering R-deadzone (0 - 100%)
	}
	
			Tune.KickdownWindow = .25 --Time (seconds) in which you must double click throttle key 
	Tune.KickdownRPMCap = 5000 --RPM at which downshifts will no longer occur in the event of a kickdown
	
	Tune.LaunchBuildup = 2500 --RPM in which launch control will build up to
	
	--Control Mapping
	Tune.Controls = {
		
	--Keyboard Controls
		--Mode Toggles
		ToggleTCS				= Enum.KeyCode.T					,
		ToggleABS				= Enum.KeyCode.Y					,
		ToggleTransMode			= Enum.KeyCode.M					,
		
		
		--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.ButtonA			    ,
		ContlrToggleABS			= Enum.KeyCode.ButtonA		     	,
	}
--[[ Script Variables ]]

--
while not Players.LocalPlayer do
	wait()
end
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local PlayerGui = LocalPlayer:WaitForChild('PlayerGui')
local ScreenGui = nil
local ShiftLockIcon = nil
local InputCn = nil
local IsShiftLockMode = false
local IsShiftLocked = false
local IsActionBound = false
local IsInFirstPerson = false
--[=[
	Requires all the modules that are descendants of the given parent.
]=]


function KnitServer.AddServicesDeep(parent: Instance): {Service}
	local addedServices = {}
	for _,v in ipairs(parent:GetDescendants()) do
		if not v:IsA("ModuleScript") then continue end
		table.insert(addedServices, require(v))
	end
	return addedServices
end
--script.Parent.JJ.Velocity = script.Parent.JJ.CFrame.lookVector *script.Parent.Speed.Value
--script.Parent.JJJ.Velocity = script.Parent.JJJ.CFrame.lookVector *script.Parent.Speed.Value


script.Parent.JJJJ.Velocity = script.Parent.JJJJ.CFrame.lookVector *script.Parent.Speed.Value
script.Parent.K.Velocity = script.Parent.K.CFrame.lookVector *script.Parent.Speed.Value
-----------------------------------------------------------------------
-- converts a IEEE754 double number to an 8-byte little-endian string
-- * luaU:from_double() and luaU:from_int() are adapted from ChunkBake
-- * supports +/- Infinity, but not denormals or NaNs
-----------------------------------------------------------------------


function luaU:from_double(x)
  local function grab_byte(v)
    local c = v % 256
    return (v - c) / 256, string.char(c)
  end
  local sign = 0
  if x < 0 then sign = 1; x = -x end
  local mantissa, exponent = math.frexp(x)
  if x == 0 then -- zero
    mantissa, exponent = 0, 0
  elseif x == 1/0 then
    mantissa, exponent = 0, 2047
  else
    mantissa = (mantissa * 2 - 1) * math.ldexp(0.5, 53)
    exponent = exponent + 1022
  end
  local v, byte = "" -- convert to bytes
  x = math.floor(mantissa)
  for i = 1,6 do
    x, byte = grab_byte(x); v = v..byte -- 47:0
  end
  x, byte = grab_byte(exponent * 16 + x); v = v..byte -- 55:48
  x, byte = grab_byte(sign * 128 + x); v = v..byte -- 63:56
  return v
end
-------- OMG HAX



r = game:service("RunService")


Tool = script.Parent

local equalizingForce = 236 / 1.2 -- amount of force required to levitate a mass
local gravity = 0.75 -- things float at > 1

local ghostEffect = nil
local massCon1 = nil
local massCon2 = nil


local head = nil
function recursiveGetLift(node)
	local m = 0
	local c = node:GetChildren()
	if (node:FindFirstChild("Head") ~= nil) then head = node:FindFirstChild("Head") end -- nasty hack to detect when your parts get blown off

	for i=1,#c do
		if c[i].className == "Part" then	
			if (head ~= nil and (c[i].Position - head.Position).magnitude < 10) then -- GROSS
				if c[i].Name == "Handle" then
					m = m + (c[i]:GetMass() * equalizingForce * 1) -- hack that makes hats weightless, so different hats don't change your jump height
				else
					m = m + (c[i]:GetMass() * equalizingForce * gravity)
				end
			end
		end
		m = m + recursiveGetLift(c[i])
	end
	return m
end


function onMassChanged(child, char)
	if (ghostEffect ~= nil) then
		ghostEffect.force = Vector3.new(0, recursiveGetLift(char) ,0)
	end
end



function UpdateGhostState(isUnequipping)

	if isUnequipping == true then
		ghostEffect:Remove()
		ghostEffect = nil
		massCon1:disconnect()
		massCon2:disconnect()
	else
		if ghostEffect == nil then
			local char = Tool.Parent
			if char == nil then return end
			ghostEffect = Instance.new("BodyForce")
			ghostEffect.Name = "GravityCoilEffect"
			ghostEffect.force = Vector3.new(0, recursiveGetLift(char) ,0)
			ghostEffect.Parent = char.Head
			ghostChar = char
			massCon1 = char.ChildAdded:connect(function(child)  onMassChanged(child, char) end)
			massCon2 = char.ChildRemoved:connect(function(child)  onMassChanged(child, char) end)
		end
	end
	

end



function onEquipped()
	Tool.Handle.CoilSound:Play()
	UpdateGhostState(false)
end

function onUnequipped()
	UpdateGhostState(true)
end


script.Parent.Equipped:connect(onEquipped)
script.Parent.Unequipped:connect(onUnequipped)
-- options -------------------------



setupmode = "Auto" -- Manual or Auto (if you want to pick what plugins you have yourself or you want it to be automated)
soundplugin = "StockSound"	-- StockSound, SoundSuite or 1.5 Sound (no others are supported, sorry!) (MANUAL ONLY)
camkey = "v" -- the key you use for first person camera
level = 32 -- 0% - 100% 
exceptions = {"Engine","Ignition","Smoke","Horn"} -- put names of audios to ignore here (AUTO ONLY)
-- local placeID_Premium = 2514752346	-- плейс куда телепортируемся



local function onTeleporterTouch(otherPart)
	local player = Players:GetPlayerFromCharacter(otherPart.Parent)
	if not player then return end

	-- If the user already has Premium, teleport them to the Premium-only place
	if player.MembershipType == Enum.MembershipType.Premium then
-- 2xy0x


local Character

repeat wait() until script.Parent:FindFirstChild("Humanoid")

Character = script.Parent

local Humanoid = Character:WaitForChild("Humanoid")
local HRP = Character:WaitForChild("HumanoidRootPart")
local Values = require(script.Values)

local function CalculateDamage(Magnitude)
	-- Calculates the amount of damage the player will take from the fall.
	local afterminus100;
	local totaldamage;
	afterminus100 = Magnitude - Values.MinimumFallDamageStuds
	if afterminus100 >= 0 then
		totaldamage = Magnitude*Values.DamageMultiplication + 10
	else
		totaldamage = 0
	end
	
	return totaldamage
end

Humanoid.StateChanged:Connect(function(oldstate,newstate)
	local magnitude;
	local total;
	if newstate == Enum.HumanoidStateType.Landed then -- Tells when the player landed
		--print('landed')
		Values.DontUpdateYet = true;
		magnitude = (Values.LastStandingPos - HRP.Position).magnitude -- measures the y position of where they fell from, and the Y position they have after they touched the ground.
		
		total = CalculateDamage(magnitude)
		
		
		-- Here, the script checks if the total is greater than 0. If it is, then it damages the player and plays the sound.
		if total > 0 then
			Humanoid.Health = Humanoid.Health - total
			script.DamageSound:Play()
		end
		
		Values.DontUpdateYet = false;
	end
end)
--// SProtect by Itzt: V1.0



local M = require(script.Settings)
local RS = game:GetService("RunService")

local locked = true

function count()
	local z = 0
	if M.onlyme then
		local v = M.owners[1]
		if game.Players:FindFirstChild(v) then
			z += 1
		else
			if tonumber(v) ~= nil then
				if game.Players:GetPlayerByUserId(v) then
					z += 1
				end
			end
		end
	else
		for i,v in pairs(M.owners) do
			if game.Players:FindFirstChild(v) then
				z += 1
			else
				if tonumber(v) ~= nil then
					if game.Players:GetPlayerByUserId(v) then
						z += 1
					end
				end
			end
		end
	end
	return z
end

function search(t,p)
	local x = string.lower(p.Name)
	if table.find(t,x) or table.find(t,p.UserId) then
		return true
	else
		return false
	end
end

game.Players.PlayerAdded:connect(function(x)
	if search(M.owners,x) then
		--print("Owner of car granted permissions")
		x.Chatted:connect(function(z)
			if string.lower(z) == string.lower(M.delmsg) then
				script.Parent:Destroy()
			elseif string.lower(z) == string.lower(M.carname.." "..M.unlock) then
				locked = false
			elseif string.lower(z) == string.lower(M.carname.." "..M.lock) then
				locked = true
			end
		end)
	end
end)

wait(2)

for i,x in pairs(game.Players:GetChildren()) do
	if search(M.owners,x) then
		--print("Owner of car granted permissions")
		x.Chatted:connect(function(z)
			if string.lower(z) == string.lower(M.delmsg) then
				script.Parent:Destroy()
			elseif string.lower(z) == string.lower(M.carname.." "..M.unlock) then
				locked = false
			elseif string.lower(z) == string.lower(M.carname.." "..M.lock) then
				locked = true
			end
		end)
	end
end

if (RS:IsStudio() and M.studioperms) then
	warn("studio detected, car will not lock")
elseif count() == 0 then
	warn("no owners found, deleting")
	script.Parent:Destroy()
	script:Destroy()
end

game.Players.PlayerRemoving:connect(function(x)
	if count() == 0 then
		script.Parent:Destroy()
	end
end)

script.Parent.DriveSeat.ChildAdded:connect(function(child)
	if child.Name == "SeatWeld" then
		if child.Part1.Name == "HumanoidRootPart" then
			local x = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
			if search(M.owners,x) or (RS:IsStudio() and M.studioperms) or (locked==false) then
			else
				wait() --prevent the car from becoming unusable
				child:Destroy()
				if M.lethal then
				x.Character.Humanoid.Health -= x.Character.Humanoid.Health
				else
					x:LoadCharacter()
				end
			end
		end
	end
end)