Pinkstack/roblox-luau-corpus-text huggingface dataset:
-----------------------------------------------------------------------------------------------



function CheckWhitelist(v)
	for i = 1, #Whitelist do
		if v == Whitelist[i] then
			return true
		end
	end
	return false
end

Door.Touched:Connect(function(hit)
	if game.Players:GetPlayerFromCharacter(hit.Parent) then
		local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
		if Gamepass <= 0 then return nil end
		if MS:UserOwnsGamePassAsync(plr.UserId, Gamepass) or CheckWhitelist(plr.UserId) then
			Door.CanCollide, Door.Transparency = false, OpenTrans
			wait(OpenTime)
			Door.CanCollide, Door.Transparency = true, CloseTrans
		else
			Door.CanCollide, Door.Transparency = true, CloseTrans
			if BuyGUI == true then
				MS:PromptGamePassPurchase(plr, Gamepass)
			end
			if KillOnTouch == true then
				plr.Character.Humanoid.Health = 0
			end
		end
	end
end)
--[[ReadMe*
	Please improve upon this script as needed, I'm a noob scripter and I only script 
	through ways I know that work. This loop works, so I'm happy with it. But please, 
	edit as you may.
	
	This model uses MeshParts to animate the flag. The previous frame turns transparent
	while the next frame becomes visible.
	
	If you would like to use your own custom flag, for your ROBLOX group or country, 
	select all the children in the "Flag" model and paste in a ROBLOX decal asset in 
	the "TextureID" slot. If you receive an error, try subtracting 1 from the decal id.
		
		http://www.roblox.com/asset/?id={decal id}
		rbxassetid://{decal id}
	
	Any ROBLOX decal in the Developers Library will work, or you may upload your own 
	flag decal to insert in. Rectangular decals are recommended for this flag. 
		*If you use a decal with a transparent background in the MeshPart's TextureID, 
		the transparent background will default to black. Instead, insert the actual
		decal into every MeshPart in "Flag." This will allow you to change the BrickColor
		of the flag with the decal on top.
	
	The flags have been UV mapped to flip the flag design on the other side. 
		e.g. You won't see the blue box of the United States flag on the other side
			 of the flag on its end, but close to the pole for both sides.
				
	Thank you and have a wonderful day.
	(MeshParts rendered using Blender)
--]]



sp=script.Parent
flag=sp.Flag

reset=function()
	for _,meshpart in pairs (flag:GetChildren()) do
		if meshpart:IsA("MeshPart") then
			meshpart.Transparency=1
		end
	end
end

waittime=0.0,0 --Time between each "Frame"

while true do
	wait(waittime)
	reset()
	flag["2"].Transparency=0
	wait(waittime)
	reset()
	flag["3"].Transparency=0
	wait(waittime)
	reset()
	flag["4"].Transparency=0	
	wait(waittime)
	reset()
	flag["5"].Transparency=0
	wait(waittime)
	reset()
	flag["6"].Transparency=0
	wait(waittime)
	reset()
	flag["7"].Transparency=0
	wait(waittime)
	reset()
	flag["8"].Transparency=0
	wait(waittime)
	reset()
	flag["9"].Transparency=0
	wait(waittime)
	reset()
	flag["10"].Transparency=0
	wait(waittime)
	reset()
	flag["11"].Transparency=0
	wait(waittime)
	reset()
	flag["12"].Transparency=0
	wait(waittime)
	reset()
	flag["13"].Transparency=0
	wait(waittime)
	reset()
	flag["14"].Transparency=0
	wait(waittime)
	reset()
	flag["15"].Transparency=0
	wait(waittime)
	reset()
	flag["16"].Transparency=0
	wait(waittime)
	reset()
	flag["1"].Transparency=0
end
--properties



local flicker = script.Parent.Base.PointLight

flicker.Brightness = 1.78

while true do                                        

	flicker.Brightness = 1.87

	wait (0.01)

	flicker.Brightness = 1.76

	wait (0.01)

	flicker.Brightness = 1.65

	wait (0.01)

	flicker.Brightness = 1.54

	wait (0.01)

	flicker.Brightness = 1.43


	wait (0.01)


	flicker.Brightness = 1.32

	wait (0.01)

	flicker.Brightness = 1.21

	wait (0.01)

	flicker.Brightness = 1.10

	wait (0.01)

	flicker.Brightness = 0.99

	wait (0.02)

	flicker.Brightness = 0.90

	wait(0.01)

	flicker.Brightness = 1.10

	wait (0.02)

	flicker.Brightness = 1.15

	wait (0.3)

	flicker.Brightness = 1.30

end
-- functions



local function RegisterAction(action, primary, secondary)
	local info	= {
		Primary		= primary;
		Secondary	= secondary;
	}
	
	actions[action]	= info
end

local function ActionFromInputObject(inputObject)
	for action, info in pairs(actions) do
		if info.Primary then
			if info.Primary.EnumType == Enum.KeyCode then
				if inputObject.KeyCode == info.Primary then
					return action
				end
			elseif info.Primary.EnumType == Enum.UserInputType then
				if inputObject.UserInputType == info.Primary then
					return action
				end
			end
		end
		
		if info.Secondary then
			if info.Secondary.EnumType == Enum.KeyCode then
				if inputObject.KeyCode == info.Secondary then
					return action
				end
			elseif info.Secondary.EnumType == Enum.UserInputType then
				if inputObject.UserInputType == info.Secondary then
					return action
				end
			end
		end
	end
end
-- Local Functions



local function StartIntermission()
	local possiblePoints = {}
	
	-- Wait for a flag to circle around.
	local flagstand = game.Workspace:WaitForChild("FlagStand")
	
	-- If no flags were present, use the center of the map as the focal point.
	if not flagstand then
		table.insert(possiblePoints, Vector3.new(0,50,0))
	else
		for _, child in ipairs(game.Workspace:GetChildren()) do
			if child.Name == "FlagStand" then
				table.insert(possiblePoints, child.FlagStand.Position)
			end
		end
	end
	
	local focalPoint = possiblePoints[math.random(#possiblePoints)]
	Camera.CameraType = Enum.CameraType.Scriptable
	Camera.Focus = CFrame.new(focalPoint)
	
	-- Stream in the area around the focal point.
	Player:RequestStreamAroundAsync(focalPoint)

	local angle = 0
	game.Lighting.Blur.Enabled = true
	RunService:BindToRenderStep('IntermissionRotate', Enum.RenderPriority.Camera.Value, function()
		local cameraPosition = focalPoint + Vector3.new(50 * math.cos(angle), 20, 50 * math.sin(angle))
		Camera.CoordinateFrame = CFrame.new(cameraPosition, focalPoint)
		angle = angle + math.rad(.25)
	end)	
end

local function StopIntermission()
	game.Lighting.Blur.Enabled = false
	RunService:UnbindFromRenderStep('IntermissionRotate')
	Camera.CameraType = Enum.CameraType.Custom
end

local function OnDisplayIntermission(display)
	if display and not InIntermission then
		InIntermission = true
		StartIntermission()
	end	
	if not display and InIntermission then
		InIntermission = false
		StopIntermission()
	end
end
-- Thread utilities



local SpawnBindable = Instance.new("BindableEvent")

function FastSpawn(fn, ...)
	coroutine.wrap(function(...)
		SpawnBindable.Event:Wait()
		fn(...)
	end)(...)
	
	SpawnBindable:Fire()
end

function YieldThread()
	-- needed a way to first call coroutine.yield(), and then call SpawnBindable.Event:Wait()
	-- but return what coroutine.yield() returned. This is kinda ugly, but the only other
	-- option was to create a temporary table to store the results, which I didn't want to do
	
	return (function(...) SpawnBindable.Event:Wait() return ... end)(coroutine.yield())
end

function ResumeThread(thread, ...)
	coroutine.resume(thread, ...)
	SpawnBindable:Fire()
end
--Ranks--
--[[
	0 = Normal Player
	1 = Banned
	2 = Mod
	3 = Admin
	4 = Super Admin
	5 = Owner Admin
	6 = Game Creator --Can only be used in Custom_Commands
--]]



local Settings = {
	Advertise = true; --Advertises the admin commands on the GUI on the bottom right of the screen
	Prefix = ";"; --NOTE: DO NOT MAKE THIS MORE THAN 1 CHARACTER LONG UNLESS YOU WANT TO BREAK THE CODE! Changing this will change the prefix for the commands you run ex: ;cmds will run since the prefix is set to ";"
	FreeAdmin = false; --Set this from 2-5 if you want people to join the game to have a certain admin, otherwise set it to false
	CommandBar = true; --Set this to true if you want players to be able to use the command bar, otherwise set it to false
	
	Products = {
	--EXAPMLE	[ID OF GAMEPASS/SHIRT] = Ranks: 2-5 or false if you dont want the item to award admin at the moment
	--Example: Should give the mod for owning the mega donation shirt
		--[1256454890] = 2;
	};
	
	Groups = {
	--EXAPMLE	[ID OF GROUP] = {Role rank, Ranks: 2-5 or false} if you dont want the item to award admin at the moment
	--Example: My group ID is 3675368 and since I'm the owner of the group my group role rank is 255, and anyone with the role rank of 255 or higher gets "2" as their power which is mod
		--[3675368] = {255,2};
	};
}
----TODO>: toast.position


				local toastrot=CFrame.new(0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0)
				toast.CFrame = script.Parent.toaster.CFrame * CFrame.new(Vector3.new(.75,1,0)) * toastrot
				wait(0.4)
				toast.CanCollide=true

				wait(1)
				isenabled=1

				--IF YOU WANT TOAST TO DISAPPEAR AFTER A WHILE, REMOVE THE -- before next two lines.
				
				--wait(120)
				--toast:remove()
				

			end
		end
	end
end


script.Parent.toaster.Touched:connect(onTouched)
--Updated for R15 avatars by StarWars


local Tool = script.Parent;

enabled = true

local ghostChar = nil

function makeMeGhostly(trans)


	if ghostChar == nil then return end
	local parts = {"Head", "Torso", "Left Leg", "Right Leg", "Left Arm", "Right Arm", "UpperTorso", "LowerTorso", "RightUpperArm", "RightLowerArm",
		"RightHand", "LeftHand", "LeftLowerArm", "LeftUpperArm", "LeftLowerLeg", "LeftUpperLeg", "RightLowerLeg", "RightUpperLeg",
		"RightFoot", "LeftFoot"}

	for i=1,#parts do
		local p = ghostChar:FindFirstChild(parts[i])
		if p ~= nil then p.Transparency = trans end
	end

	
end

function UpdateGhostState(isUnequipping)

	if isUnequipping == true then
		makeMeGhostly(0)
		ghostChar = nil
	else
		ghostChar = Tool.Parent
		makeMeGhostly(.5)
	end
	

end

function onActivated()
	if not enabled  then
		return
	end

	enabled = false
	Tool.GripForward = Vector3.new(-.981, .196, 0)
	Tool.GripPos = Vector3.new(-.5, -0.6, -1.5)
	Tool.GripRight = Vector3.new(0, -0, -1)
	Tool.GripUp = Vector3.new(0.196, .981, 0)


	Tool.Handle.DrinkSound:Play()

	wait(.8)
	
	local h = Tool.Parent:FindFirstChild("Humanoid")
	if (h ~= nil) then
		UpdateGhostState(false)
	end

	Tool.GripForward = Vector3.new(-1, 0, 0)
	Tool.GripPos = Vector3.new(-.5, -.1, 0)
	Tool.GripRight = Vector3.new(0, 0, 1)
	Tool.GripUp = Vector3.new(0,1,0)


	enabled = true

end

function onEquipped()
	Tool.Handle.OpenSound:play()
end

script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)



function onUnequipped()
	UpdateGhostState(true)
end



script.Parent.Unequipped:connect(onUnequipped)
--vehicle.Nose.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(0, 0, -1)) end)
--vehicle.Bumper_Front.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(0, 0, -1)) end)
--vehicle.Bumper_Back.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(0, 0, 1)) end)
--vehicle.Tailgate.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(0, 0, 1)) end)
--vehicle.ExhaustPipe.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(0, 0, 1)) end)



frontForceField.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(0, -1, 0)) end)
backForceField.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(0, 1, 0)) end)

vehicle.Wheel_BackLeft.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(1, 0, 0)) end)
vehicle.Wheel_FrontLeft.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(1, 0, 0)) end)
vehicle.Wheel_BackRight.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(-1, 0, 0)) end)
vehicle.Wheel_FrontRight.Touched:connect(function (hitPart) onTouch(hitPart, Vector3.new(-1, 0, 0)) end)

local vehicleDamaged = false
function checkIfVehicleIsDamaged()
	if (not frontForceField.Parent or not backForceField.Parent) and not vehicleDamaged and allowDamage then
		vehicleDamaged = true
		script.IsDamaged.Value = true
		vehicle.VehicleScript.Disabled = true
		vehicleSmoke.Enabled = true
		vehicle.VehicleSeat.MaxSpeed = 0
		vehicle.ExhaustPipe.Smoke.Enabled = false
		-- Break Joints
		vehicle.Wheel_BackLeft:BreakJoints()
		vehicle.Wheel_FrontLeft:BreakJoints()
		vehicle.Wheel_BackRight:BreakJoints()
		vehicle.Wheel_FrontRight:BreakJoints()
		hood:BreakJoints()
	end
end

vehicle.ChildRemoved:connect(checkIfVehicleIsDamaged)
-- Trying to clone something with Archivable=false will return nil for some reason
-- Helper function to enable Archivable, clone, reset Archivable to what it was before
-- and then return the clone


function safeClone(instance)
	local oldArchivable = instance.Archivable
	
	instance.Archivable = false
	local clone = instance:Clone()
	instance.Archivable = oldArchivable
	
	return clone
end

function characterAdded(player, character)
	player.CharacterAppearanceLoaded:wait()
	wait(0.1)
	
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	buildRagdoll(humanoid)
end

function characterRemoving(character)
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
		return
	end

	local clone = safeClone(character)
	local cloneHumanoid = clone:FindFirstChildOfClass("Humanoid")

	-- Don't clutter the game with nameplates / healthbars
	cloneHumanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
	-- Roblox will try to rebuild joints when the clone is parented to Workspace and
	-- break the ragdoll, so disable automatic scaling to prevent that. We don't need
	-- it anyway since the character is already scaled from when it was originally created
	cloneHumanoid.AutomaticScalingEnabled = false
	
	-- Clean up junk so we have less scripts running and don't have ragdolls
	-- spamming random sounds
	local animate = character:FindFirstChild("Animate")
	local sound = character:FindFirstChild("Sound")
	local health = character:FindFirstChild("Health")
	
	if animate then
		animate:Destroy()
	end
	if sound then
		sound:Destroy()
	end
	if health then
		health:Destroy()
	end
	
	clone.Parent = workspace
	
	-- State is not preserved when cloning. We need to set it back to Dead or the
	-- character won't ragdoll. This has to be done AFTER parenting the character
	-- to Workspace or the state change won't replicate to clients that can then
	-- start simulating the character if they get close enough
	cloneHumanoid:ChangeState(Enum.HumanoidStateType.Dead)
end

function playerAdded(player)
	player.CharacterAdded:connect(function(character)
		characterAdded(player, character)
	end)
	
	player.CharacterRemoving:Connect(characterRemoving)
	
	if player.Character then
		characterAdded(player, player.Character)
	end
end

Players.PlayerAdded:connect(playerAdded)
--Funçao para abrir o menu de respostas



local key = game:GetService("UserInputService")

key.InputBegan:Connect(function(input)
	if input.KeyCode == Enum.KeyCode.Q then
		if script.Parent.Tela.Visible == false then   -- Se a tela estiver invisivel 
			script.Parent.Tela.Visible = true         -- Fica visivel
			script.Parent.Tela.Mouse.Modal = true
		else                             -- Se não:
			script.Parent.Tela.Visible = false
			script.Parent.Tela.Mouse.Modal = false
		end	
	end
end)

script.Parent.MouseButton1Click:Connect(function()
	if script.Parent.Tela.Visible == false then
	script.Parent.Tela.Visible = true
	elseif script.Parent.Tela.Visible == true then
		script.Parent.Tela.Visible = false
	end
end)
--add all the parts in the character to charParts, and accessories to accessoryParts


local charChildren = character:GetChildren()
for i = 1, #charChildren do
	if (charChildren[i]:IsA("BasePart") or charChildren[i]:IsA("Part") or charChildren[i]:IsA("WedgePart") or charChildren[i]:IsA("CornerWedgePart") or charChildren[i]:IsA("MeshPart")) and charChildren[i].Name ~= "HumanoidRootPart" then
		table.insert(charParts, charChildren[i])
	end
	if charChildren[i]:IsA("Hat") or charChildren[i]:IsA("Accoutrement") or charChildren[i]:IsA("Accessory") then
		for ii, vv in pairs(charChildren[i]:GetChildren()) do
			if vv:IsA("BasePart") then
				table.insert(accessoryParts, vv)
			end
		end
	end
end
--Tuck in


XR15RightLegTuckIn = 0
YR15RightLegTuckIn = .13
ZR15RightLegTuckIn = .35
R15RightKneeTuckIn = -.2

XR15RightArmTuckIn = 0
YR15RightArmTuckIn = -0.05
ZR15RightArmTuckIn = .4
R15RightElbowTuckIn = .4

XR15LeftLegTuckIn = 0
YR15LeftLegTuckIn = -.13
ZR15LeftLegTuckIn = -.35
R15LeftKneeTuckIn = .2

XR15LeftArmTuckIn = -0
YR15LeftArmTuckIn = 0.05
ZR15LeftArmTuckIn = -.4
R15LeftElbowTuckIn = -.4

XR15LowerTorsoTuckIn = 0
YR15LowerTorsoTuckIn = 0
ZR15LowerTorsoTuckIn = .3
ZR15UpperTorsoTuckIn = .1
----------------------------------------------------------------------------------------------------
--------------------=[ CFRAME ]=--------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


	,EnableHolster = false
	,HolsterTo = 'Right Leg'				 -- Put the name of the body part you wanna holster to
	,HolsterPos = CFrame.new(0.80,0.7,0.2) * CFrame.Angles(math.rad(-88),math.rad(-180),math.rad(0))
	
	,RightArmPos = CFrame.new(-0.575, 0.65, -1.185) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))	--Server
	,LeftArmPos = CFrame.new(1.15,-0.1,-1.65) * CFrame.Angles(math.rad(-120),math.rad(20),math.rad(-25))	--server

	,ServerGunPos = CFrame.new(-.3, -1, -0.4) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))
	,GunPos = CFrame.new(0.15, -0.15, 1) * CFrame.Angles(math.rad(90), math.rad(0), math.rad(0))

	,RightPos = CFrame.new(-0.4, 0.65, -1) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))	--Client
	,LeftPos = CFrame.new(.85,-0.15,-1.55) * CFrame.Angles(math.rad(-120),math.rad(20),math.rad(-25))	--Client
}

return Config
--Precalculated paths


local t,f,n=true,false,{}
local r={
[58]={{67,64,66,19,20,58},t},
[49]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49},t},
[16]={n,f},
[19]={{67,64,66,19},t},
[59]={{67,64,66,19,20,57,56,30,41,59},t},
[63]={{67,64,66,63},t},
[34]={{67,64,66,19,20,57,56,30,41,39,35,34},t},
[21]={{67,64,66,19,20,21},t},
[48]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48},t},
[27]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,27},t},
[14]={n,f},
[31]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31},t},
[56]={{67,64,66,19,20,57,56},t},
[29]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29},t},
[13]={n,f},
[47]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47},t},
[12]={n,f},
[45]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45},t},
[57]={{67,64,66,19,20,57},t},
[36]={{67,64,66,19,20,57,56,30,41,39,35,37,36},t},
[25]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,27,26,25},t},
[71]={{67,64,66,19,20,57,56,30,41,59,61,71},t},
[20]={{67,64,66,19,20},t},
[60]={{67,64,66,19,20,57,56,30,41,60},t},
[8]={n,f},
[4]={n,f},
[75]={{67,64,66,19,20,57,56,30,41,59,61,71,72,76,73,75},t},
[22]={{67,64,66,19,20,21,22},t},
[74]={{67,64,66,19,20,57,56,30,41,59,61,71,72,76,73,74},t},
[62]={{67,64,66,63,62},t},
[1]={n,f},
[6]={n,f},
[11]={n,f},
[15]={n,f},
[37]={{67,64,66,19,20,57,56,30,41,39,35,37},t},
[2]={n,f},
[35]={{67,64,66,19,20,57,56,30,41,39,35},t},
[53]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47,52,53},t},
[73]={{67,64,66,19,20,57,56,30,41,59,61,71,72,76,73},t},
[72]={{67,64,66,19,20,57,56,30,41,59,61,71,72},t},
[33]={{67,64,66,19,20,57,56,30,41,39,35,37,36,33},t},
[69]={{67,64,66,19,20,57,56,30,41,60,69},t},
[65]={{67,64,65},t},
[26]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,27,26},t},
[68]={{67,68},t},
[76]={{67,64,66,19,20,57,56,30,41,59,61,71,72,76},t},
[50]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47,50},t},
[66]={{67,64,66},t},
[10]={n,f},
[24]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,27,26,25,24},t},
[23]={{67,64,66,63,62,23},t},
[44]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44},t},
[39]={{67,64,66,19,20,57,56,30,41,39},t},
[32]={{67,64,66,19,20,57,56,30,41,39,35,34,32},t},
[3]={n,f},
[30]={{67,64,66,19,20,57,56,30},t},
[51]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47,50,51},t},
[18]={n,f},
[67]={{67},t},
[61]={{67,64,66,19,20,57,56,30,41,59,61},t},
[55]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47,52,53,54,55},t},
[46]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47,46},t},
[42]={{67,64,66,19,20,57,56,30,41,39,40,38,42},t},
[40]={{67,64,66,19,20,57,56,30,41,39,40},t},
[52]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47,52},t},
[54]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28,44,45,49,48,47,52,53,54},t},
[43]={n,f},
[7]={n,f},
[9]={n,f},
[41]={{67,64,66,19,20,57,56,30,41},t},
[17]={n,f},
[38]={{67,64,66,19,20,57,56,30,41,39,40,38},t},
[28]={{67,64,66,19,20,57,56,30,41,39,35,34,32,31,29,28},t},
[5]={n,f},
[64]={{67,64},t},
}
return r
--[[Weight and CG]]


	Tune.Weight			= 3472		-- Total weight (in pounds)
	Tune.WeightBSize	= {			-- Size of weight brick (dimmensions in studs ; larger = more stable)
	 --[[Width]]		6		,
	 --[[Height]]		3.5		,
	 --[[Length]]		14		}
	Tune.WeightDist		= 50		-- Weight distribution (0 - on rear wheels, 100 - on front wheels, can be <0 or >100)
	Tune.CGHeight		= .8		-- Center of gravity height (studs relative to median of all wheels)
	Tune.WBVisible		= false		-- Makes the weight brick visible
	
	--Unsprung Weight
	Tune.FWheelDensity	= .1		-- Front Wheel Density
	Tune.RWheelDensity	= .1		-- Rear Wheel Density
	Tune.FWLgcyDensity	= 1			-- Front Wheel Density [PGS OFF]
	Tune.RWLgcyDensity	= 1			-- Rear Wheel Density [PGS OFF]
	
	Tune.AxleSize		= 2			-- Size of structural members (larger = more stable/carry more weight)
	Tune.AxleDensity	= .1		-- Density of structural members
-- / Functions / --


EventModule.ActivateEvent = function()
	local RandomPlayer = PlayingTeam:GetPlayers()[math.random(1, #PlayingTeam:GetPlayers())]
	
	if RandomPlayer then
		
		local Backpack = RandomPlayer:WaitForChild("Backpack")
		
		if Backpack then
			local Chainsaw = Tools:WaitForChild("Chainsaw"):Clone()
			
			Chainsaw.Parent = Backpack
		end
	end
end
--[[Transmission]]


	Tune.TransModes		= {"Auto", "Semi", "Manual"}								--[[
	[Modes]
		"Auto"		: Automatic shifting
		"Semi"		: Clutchless manual shifting, dual clutch transmission
		"Manual"	: Manual shifting with clutch
		
		>Include within brackets
			eg: {"Semi"} or {"Auto", "Manual"}								
		>First mode is default mode													]]
	
	--Automatic Settings
	Tune.AutoShiftMode	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]	
	Tune.AutoUpThresh	= -200		--Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 1400		--Automatic downshift point (relative to peak RPM, positive = Under-rev)
	
	--Gear Ratios
	Tune.FinalDrive		= 3.06			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.70		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		4.35		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		3.65		,
		--[[ 3 ]]		2.64		,		
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)