Pinkstack/roblox-luau-corpus-text huggingface dataset:
--- Basic node interacting with the octree
-- @classmod OctreeNode


local OctreeRegionUtils = require(script.Parent.OctreeRegionUtils)

local OctreeNode = {}
OctreeNode.ClassName = "OctreeNode"
OctreeNode.__index = OctreeNode

function OctreeNode.new(octree, object)
	local self = setmetatable({}, OctreeNode)

	self._octree = octree or error("No octree")
	self._object = object or error("No object")

	self._currentLowestRegion = nil
	self._position = nil

	return self
end

function OctreeNode:KNearestNeighborsSearch(k, radius)
	return self._octree:KNearestNeighborsSearch(self._position, k, radius)
end

function OctreeNode:GetObject()
	return self._object
end

function OctreeNode:RadiusSearch(radius)
	return self._octree:RadiusSearch(self._position, radius)
end

function OctreeNode:GetPosition()
	return self._position
end

function OctreeNode:GetRawPosition()
	return self._px, self._py, self._pz
end

function OctreeNode:SetPosition(position)
	if self._position == position then
		return
	end

	local px, py, pz = position.x, position.y, position.z

	self._px = px
	self._py = py
	self._pz = pz
	self._position = position

	if self._currentLowestRegion then
		if OctreeRegionUtils.inRegionBounds(self._currentLowestRegion, px, py, pz) then
			return
		end
	end

	local newLowestRegion = self._octree:GetOrCreateLowestSubRegion(px, py, pz)

	-- Sanity check for debugging
	-- if not OctreeRegionUtils.inRegionBounds(newLowestRegion, px, py, pz) then
	-- 	error("[OctreeNode.SetPosition] newLowestRegion is not in region bounds!")
	-- end

	if self._currentLowestRegion then
		OctreeRegionUtils.moveNode(self._currentLowestRegion, newLowestRegion, self)
	else
		OctreeRegionUtils.addNode(newLowestRegion, self)
	end

	self._currentLowestRegion = newLowestRegion
end

function OctreeNode:Destroy()
	if self._currentLowestRegion then
		OctreeRegionUtils.removeNode(self._currentLowestRegion, self)
	end
end

return OctreeNode
--// All global vars will be wiped/replaced except script



return function(data, env)
	if env then
		setfenv(1, env)
	end
	
	local playergui = service.PlayerGui
	local localplayer = service.Players.LocalPlayer
	local scr = client.UI.Prepare(script.Parent.Parent)
	local main = scr.Main
	local t1 = main.Title
	local t2 = main.Message
	local msg = data.Message
	local color = data.Color
	--[[
	local found = client.UI.Get("Output")
	if found then
		for i,v in pairs(found) do
			local p = v.Object
			if p and p.Parent then
				p.Main.Position = UDim2.new(0, 0, 0.35, p.Main.Position.Y.Offset+50)
			end
		end
	end--]]

	t2.Text = msg
	t2.Font = "Arial"
	--t2.Position = UDim2.new(0, 0, 0.35, 0)
	gTable.Ready()
	wait(5)
	gTable.Destroy()
end
---------------------------------


local force = Instance.new("BodyForce")
force.Parent = torso
f = force
Tool.Parent.Humanoid.WalkSpeed = 0
wait(0.01)
elseif ison == 0 then
if arms then
sh[1].Part1 = arms[1]
sh[2].Part1 = arms[2]
f.Parent = nil
arms[2].Name = "Right Leg"
arms[1].Name = "Left Leg"
welds[1].Parent = nil
welds[2].Parent = nil
Tool.Parent.Humanoid.WalkSpeed = 16
end
end
--local PlaceId = 12095647369


local Players = game:GetService("Players")
local DeathEvent = game.ReplicatedStorage.DeathEvent

script.Parent.MouseButton1Click:Connect(function()
	--game:GetService("TeleportService"):Teleport(game.PlaceId)
	Players.LocalPlayer.Character:WaitForChild("Humanoid").Health = 0
	
	DeathEvent:FireServer()
	
	print("1")
end)
--[=[
	Merges two arrays; array2 will be added to array1- this means that the indexes of array1 will be the same.
	
	```lua
	local FirstArray = {"A", "B", "C", "D"}
	local SecondArray = {"E", "F", "G", "H"}
	
	print(TableKit.MergeArrays(FirstArray, SecondArray)) -- prints {"A", "B", "C", D", "E", "F", "G", "H"}
	```

	@within TableKit
	@param array1 table
	@param array2 table
	@return table
]=]


function TableKit.MergeArrays<a, b>(a: { unknown }, b: { unknown }): a & b
	local result = table.clone(a)
	table.move(b, 1, #b, #result + 1, result)
	return result
end
-- << INFO >>


info.m1.Text = "Welcome back, "..main.player.Name.."!"
info.Take.MouseButton1Down:Connect(function()
	main.marketplaceService:PromptPurchase(main.player, 857927023)
end)
function module:UpdateProfileIcon()
	info.PlayerImage.Image = cf:GetUserImage(main.player.UserId)
end
function module:UpdateRankName()
	info.m2RankName.Text = "'".. cf:GetRankName(main.pdata.Rank).."'"
end
--[[

	LEMBRANDO QUE esse module não está 100% pronto para usar, pois
	você caso as funções sejam chamadas várias vezes, ele irá bugar.
	Faça alguma forma de evitar isso, pois a ideia do module é apenas
	de dar as base das funções que envolvem uma parte mais "complexa"!

]]



local module = {}

local TweenService = game:GetService("TweenService")

local Sufixes = {'K','M','B','T','qd','Qn','sx','Sp','O','N','de','Ud','DD','tdD','qdD','QnD','sxD','SpD','OcD','NvD','Vgn','UVg','DVg','TVg','qtV','QnV','SeV','SPG','OVG','NVG','TGN','UTG','DTG','tsTG','qtTG','QnTG','ssTG','SpTG','OcTG','NoAG','UnAG','DuAG','TeAG','QdAG','QnAG','SxAG','SpAG','OcAG','NvAG','CT'}
local digitsProgression = 3

local defaultInfo = {
	Duration = .7,
	EasingStyle = Enum.EasingStyle.Exponential,
	EasingDirection = Enum.EasingDirection.Out
}

function module.formatNumber(number)
	
	local digits = math.floor(math.log10(math.abs(number)))
	
	local level = math.floor(digits/digitsProgression)
	
	if level >= 1 then
		level = math.clamp(level, 1, #Sufixes)
		
		local sufix = Sufixes[level]
		local divNumber = number / (10^digits)
		return string.format("%.2f %s", divNumber, sufix)
	end
	return string.format("%.2f", number)
end

function module.updateNumber(Label, oldValue, newValue, Info)
	Info = typeof(Info) == table and Info or defaultInfo
	
	local diference = newValue - oldValue
	local startTick = tick() 
	local endTick = startTick + Info.Duration
	repeat
		local currentTick = tick()
		local tickRatio = (currentTick-startTick)/(endTick-startTick)
		local tweenMultiplier = TweenService:GetValue(tickRatio, Info.EasingStyle, Info.EasingDirection)
		
		local nextNumber = oldValue + diference*tweenMultiplier
		Label.Text = module.formatNumber(nextNumber)
		
		task.wait()
	until tick() >= endTick
	Label.Text = module.formatNumber(newValue)
end

return module
--[[ The Module ]]

--
local VRBaseCamera = require(script.Parent:WaitForChild("VRBaseCamera"))
local VRCamera = setmetatable({}, VRBaseCamera)
VRCamera.__index = VRCamera

function VRCamera.new()
	local self = setmetatable(VRBaseCamera.new(), VRCamera)

	self.lastUpdate = tick()
	self:Reset()

	return self
end

function VRCamera:Reset()
	self.needsReset = true
	self.needsBlackout = true
	self.motionDetTime = 0.0
	self.blackOutTimer = 0
	self.lastCameraResetPosition = nil
	self.stepRotateTimeout = 0.0
	self.cameraOffsetRotation = 0
	self.cameraOffsetRotationDiscrete = 0
end

function VRCamera:Update(timeDelta)
	local camera = workspace.CurrentCamera
	local newCameraCFrame = camera.CFrame
	local newCameraFocus = camera.Focus

	local player = PlayersService.LocalPlayer
	local humanoid = self:GetHumanoid()
	local cameraSubject = camera.CameraSubject

	if self.lastUpdate == nil or timeDelta > 1 then
		self.lastCameraTransform = nil
	end

	-- update fullscreen effects
	self:UpdateFadeFromBlack(timeDelta)
	self:UpdateEdgeBlur(player, timeDelta)

	local lastSubjPos = self.lastSubjectPosition
	local subjectPosition: Vector3 = self:GetSubjectPosition()
	-- transition from another camera or from spawn
	if self.needsBlackout then 
		self:StartFadeFromBlack()

		local dt = math.clamp(timeDelta, 0.0001, 0.1)
		self.blackOutTimer += dt
		if self.blackOutTimer > CAMERA_BLACKOUT_TIME and game:IsLoaded() then
			self.needsBlackout = false
			self.needsReset = true
		end
	end

	if subjectPosition and player and camera then
		newCameraFocus = self:GetVRFocus(subjectPosition, timeDelta)

		if self:IsInFirstPerson() then
			-- update camera CFrame
			newCameraCFrame, newCameraFocus = self:UpdateFirstPersonTransform(
				timeDelta,newCameraCFrame, newCameraFocus, lastSubjPos, subjectPosition)
		else -- 3rd person
			-- update camera CFrame
			newCameraCFrame, newCameraFocus = self:UpdateThirdPersonTransform(
				timeDelta, newCameraCFrame, newCameraFocus, lastSubjPos, subjectPosition)
		end

		self.lastCameraTransform = newCameraCFrame
		self.lastCameraFocus = newCameraFocus
	end

	self.lastUpdate = tick()
	return newCameraCFrame, newCameraFocus
end
--------------------------------------------------------------------------------
--                           Fast Signal-like class                           --
-- This is a Signal class that is implemented in the most performant way      --
-- possible, sacrificing correctness. The event handlers will be called       --
-- directly, so it is not safe to yield in them, and it is also not safe to   --
-- connect new handlers in the middle of a handler (though it is still safe   --
-- for a handler to specifically disconnect itself)                           -- 
--------------------------------------------------------------------------------



local Signal = {}
Signal.__index = Signal

local Connection = {}
Connection.__index = Connection

function Connection.new(signal, handler)
	return setmetatable({
		_handler = handler,
		_signal = signal,
	}, Connection)
end

function Connection:Disconnect()
	self._signal[self] = nil
end

function Signal.new()
	return setmetatable({}, Signal)
end

function Signal:Connect(fn)
	local connection = Connection.new(self, fn)
	self[connection] = true
	return connection
end

function Signal:DisconnectAll()
	table.clear(self)
end

function Signal:Fire(...)
	if next(self) then
		for handler, _ in pairs(self) do
			handler._handler(...)
		end
	end
end

function Signal:Wait()
	local waitingCoroutine = coroutine.running()
	local cn;
	cn = self:Connect(function(...)
		cn:Disconnect()
		task.spawn(waitingCoroutine, ...)
	end)
	return coroutine.yield()
end

function Signal:Once(fn)
	local cn;
	cn = self:Connect(function(...)
		cn:Disconnect()
		fn(...)
	end)
	return cn
end

return Signal
--[[Functions]]

--
function getRaycastIgnoreList()
	local ignoreList = {};

	for _, v in next, workspace:GetDescendants() do
		if v:IsA("BasePart") and not v.CanCollide or v:FindFirstChildOfClass("Humanoid") then
			table.insert(ignoreList, v);
		end
	end
	raycastParams.FilterDescendantsInstances = ignoreList;

	workspace.DescendantAdded:Connect(function(desc)
		if desc:IsA("BasePart") and not desc.CanCollide or desc:FindFirstChildOfClass("Humanoid") then
			table.insert(ignoreList, desc);
			raycastParams.FilterDescendantsInstances = ignoreList;
		end
	end)
end
getRaycastIgnoreList();

function detectNoclip() : boolean --Returns true if there is a part between the player's current position and last recorded position
	local origin : Vector3 = lastValidCF.Position;
	local hrpPos : Vector3 = hrp.Position;
	local dist : number = (origin - hrpPos).Magnitude;

	local direction : Vector3 = (hrpPos - origin).Unit * dist;

	return workspace:Raycast(origin, direction, raycastParams) ~= nil;
end

function onDescAddedToChar(desc)
	if desc:IsA("BodyVelocity") then
		table.insert(velocityModifiers, desc);
	end
end
char.DescendantAdded:Connect(onDescAddedToChar);

function computeVelocityModifiers() : number --Returns the magnitude of all body velocities acting on the player
	local moddedVelocity = 0;

	for i, v in next, velocityModifiers do
		if v and v:IsDescendantOf(char) then
			moddedVelocity += v.Velocity.Magnitude;
		else
			table.remove(velocityModifiers, i);
		end
	end

	return moddedVelocity;
end

function detectSpeed() : boolean
	local vel : Vector3 = hrp.AssemblyLinearVelocity;
	local horizontalVel : Vector2 = Vector2.new(vel.X, vel.Z);
	local speed : number = horizontalVel.Magnitude;

	local maxAcceptableSpeed = hum.WalkSpeed + 5 + computeVelocityModifiers();
	return speed > maxAcceptableSpeed;
end

function main()
	local isNoclipping = detectNoclip();
	local isSpeeding = detectSpeed();

	--print(isNoclipping, isSpeeding);

	if isNoclipping or isSpeeding then
		hrp.AssemblyLinearVelocity = Vector3.new();
		char:SetPrimaryPartCFrame(lastValidCF * CFrame.new(0, 2 + hum.HipHeight, 0)); 
		--In my tests without this offset, the script would place anyone caught by this in the floor and infinitely
		--flag them for no-clipping.
	else
		lastValidCF = hrp.CFrame;
	end

	task.wait(0.1);
end

while true do
	main();
end
--[[
	Package link auto-generated by Rotriever
]]


local PackageIndex = script.Parent.Parent.Parent._Index

local Package = require(PackageIndex["JestReporters"]["JestReporters"])

export type BaseReporter = Package.BaseReporter
export type DefaultReporter = Package.DefaultReporter
export type SummaryReporter = Package.SummaryReporter
export type VerboseReporter = Package.VerboseReporter
export type Context = Package.Context
export type Reporter = Package.Reporter
export type ReporterOnStartOptions = Package.ReporterOnStartOptions
export type SummaryOptions = Package.SummaryOptions
export type Test = Package.Test


return Package
--[=[
	Cleans up all objects in the trove. This is
	similar to calling `Remove` on each object
	within the trove.
]=]


function Trove:Clean()
	for _,obj in ipairs(self._objects) do
		self:_cleanupObject(obj[1], obj[2])
	end
	table.clear(self._objects)
end


function Trove:_cleanupObject(object, cleanupMethod)
	if cleanupMethod == FN_MARKER then
		object()
	else
		object[cleanupMethod](object)
	end
end
--[[Engine]]


	--Torque Curve
	Tune.Horsepower		= 350		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 800		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 6300		--		Use sliders to manipulate values
	Tune.Redline		= 6700		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5250
	Tune.PeakSharpness	= 7.5
	Tune.CurveMult		= 0.195
	
	--Incline Compensation
	Tune.InclineComp	= 1.7			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)
--[=[
	Returns a list of alive Brios only

	@param brios {Brio<T>}
	@return {Brio<T>}
]=]


function BrioUtils.aliveOnly(brios)
	local alive = {}
	for _, brio in pairs(brios) do
		if not brio:IsDead() then
			table.insert(alive, brio)
		end
	end
	return alive
end
-- Events


ClientSceneFramework.LoadSceneRemoteEvent = Orchestra.Events.SceneControl.LoadScene
ClientSceneFramework.AnchorClientForSceneTransition = Orchestra.Events.SceneControl.AnchorClientForSceneTransition
ClientSceneFramework.UnloadSceneClientRemoteEvent = Orchestra.Events.SceneControl.UnloadSceneClientRemoteEvent
ClientSceneFramework.GetCurrentSceneEnvironment = Orchestra.Events.SceneFramework.GetCurrentEnvironment
--[[
	Create a TestSession related to the given TestPlan.

	The resulting TestResults object will be linked to this TestPlan.
]]


function TestSession.new(plan)
	local self = {
		results = TestResults.new(plan),
		nodeStack = {},
		contextStack = {},
		expectationContextStack = {},
		hasFocusNodes = false,
	}

	setmetatable(self, TestSession)

	return self
end
-- lunge and hold


			
local plr = game.Players:GetPlayerFromCharacter(target)

_G.SD[plr.UserId].Data.stats.health = _G.SD[plr.UserId].Data.stats.health - 99
			
			
if _G.SD[plr.UserId].Data.stats.health < 1 then
	plr.Character:BreakJoints()
end
			
shark.Head.SharkEat:Play()

local emitter = game.ReplicatedStorage.Particles.Teeth:Clone()
emitter.Parent = shark.Head
emitter.EmissionDirection = Enum.NormalId.Top
wait()
emitter:Emit(1)
holdOrder = tick()
holdDuration = 2
end

end
end -- end of MakeAMove()
MakeAMove()


local scanSurroundings = coroutine.wrap(function()
while true do
stance = "wander"
local surroundingParts = workspace:FindPartsInRegion3WithIgnoreList(Region3.new(
shark.PrimaryPart.Position+Vector3.new(-60,-3,-60),
shark.PrimaryPart.Position+Vector3.new(60,10,60)),
shark:GetChildren())
for _,v in next,surroundingParts do
if v.Parent:FindFirstChild("Humanoid") and v.Parent.Humanoid.Health > 0 and _G.SD[target.UserId].Data.stats.health > 0 then
-- Contructors



function ViewportWindow.new(surfaceGUI)
	local self = setmetatable({}, ViewportWindow)
	
	self.SurfaceGUI = surfaceGUI
	self.Camera = Instance.new("Camera", surfaceGUI)
	self.ViewportFrame = VPF:Clone()
	self.ViewportFrame.Name = "WorldFrame"
	self.ViewportFrame.ZIndex = 2
	self.ViewportFrame.LightDirection = -LIGHTING:GetSunDirection()
	self.ViewportFrame.Ambient = LIGHTING.Ambient
	self.ViewportFrame.LightColor = Color3.new(0, 0, 0)
	self.ViewportFrame.CurrentCamera = self.Camera
	self.ViewportFrame.Parent = surfaceGUI
	
	self.SkyboxFrame = VPF:Clone()
	self.SkyboxFrame.Name = "SkyboxFrame"
	self.SkyboxFrame.ZIndex = 1
	self.SkyboxFrame.LightDirection = -LIGHTING:GetSunDirection()
	self.SkyboxFrame.Ambient = LIGHTING.Ambient
	self.SkyboxFrame.LightColor = Color3.new(0, 0, 0)
	self.SkyboxFrame.CurrentCamera = self.Camera
	self.SkyboxFrame.Parent = surfaceGUI
	
	return self
end

function ViewportWindow.fromPart(part, normalId, parent)
	local surfaceGUI = Instance.new("SurfaceGui")
	surfaceGUI.Face = normalId
	surfaceGUI.CanvasSize = Vector2.new(1024, 1024)
	surfaceGUI.SizingMode = Enum.SurfaceGuiSizingMode.FixedSize
	surfaceGUI.Adornee = part
	surfaceGUI.ClipsDescendants = true
	surfaceGUI.Parent = parent
	
	return ViewportWindow.new(surfaceGUI)
end
-- Create component


local Component = Cheer.CreateComponent('BTTooltip', View);

local Connections = {};

function Component.Start()

	-- Hide the view
	View.Visible = false;

	-- Show the tooltip on hover
	Connections.ShowOnEnter = Support.AddGuiInputListener(View.Parent, 'Began', 'MouseMovement', true, Component.Show);
	Connections.HideOnLeave = Support.AddGuiInputListener(View.Parent, 'Ended', 'MouseMovement', true, Component.Hide);

	-- Clear connections when the component is removed
	Component.OnRemove:connect(ClearConnections);

	-- Return component for chaining
	return Component;

end;

function Component.Show()
	View.Visible = true;
end;

function Component.Hide()
	View.Visible = false;
end;

function ClearConnections()
	-- Clears out temporary connections

	for ConnectionKey, Connection in pairs(Connections) do
		Connection:disconnect();
		Connections[ConnectionKey] = nil;
	end;

end;

return Component.Start();
------------------------------------------------------------



function ClickDecimal()
	onSecond()
		if (onSec == true and input2Dec == false) then
			input2 = input2.."."
			input2Dec = true
			disp = disp.."."
			script.Parent.Display.Text = disp
		end
		if (onSec == false and input1Dec == false) then
			input1 = input1.."."
			input1Dec = true
			disp = disp.."."
			script.Parent.Display.Text = disp
		end
end

script.Parent.ClDec.MouseButton1Down:connect (ClickDecimal)

function Click0()
	onSecond()
		if (onSec == true) then
			input2 = input2.."0"
		end
		if (onSec == false) then
			input1 = input1.."0"
		end
		disp = disp.."0"
		script.Parent.Display.Text = disp
end

script.Parent.Cl0.MouseButton1Down:connect(Click0)

function Click1()
	onSecond()
		if (onSec == true) then
			input2 = input2.."1"
		end
		if (onSec == false) then
			input1 = input1.."1"
		end
		disp = disp.."1"
		script.Parent.Display.Text = disp
end

script.Parent.Cl1.MouseButton1Down:connect(Click1)

function Click2()
	onSecond()
		if (onSec == true) then
			input2 = input2.."2"
		end
		if (onSec == false) then
			input1 = input1.."2"
		end
		disp = disp.."2"
		script.Parent.Display.Text = disp
end

script.Parent.Cl2.MouseButton1Down:connect(Click2)

function Click3()
	onSecond()
		if (onSec == true) then
			input2 = input2.."3"
		end
		if (onSec == false) then
			input1 = input1.."3"
		end
		disp = disp.."3"
		script.Parent.Display.Text = disp
end

script.Parent.Cl3.MouseButton1Down:connect(Click3)

function Click4()
	onSecond()
		if (onSec == true) then
			input2 = input2.."4"
		end
		if (onSec == false) then
			input1 = input1.."4"
		end
		disp = disp.."4"
		script.Parent.Display.Text = disp
end

script.Parent.Cl4.MouseButton1Down:connect(Click4)

function Click5()
	onSecond()
		if (onSec == true) then
			input2 = input2.."5"
		end
		if (onSec == false) then
			input1 = input1.."5"
		end
		disp = disp.."5"
		script.Parent.Display.Text = disp
end

script.Parent.Cl5.MouseButton1Down:connect(Click5)

function Click6()
	onSecond()
		if (onSec == true) then
			input2 = input2.."6"
		end
		if (onSec == false) then
			input1 = input1.."6"
		end
		disp = disp.."6"
		script.Parent.Display.Text = disp
end

script.Parent.Cl6.MouseButton1Down:connect(Click6)

function Click7()
	onSecond()
		if (onSec == true) then
			input2 = input2.."7"
		end
		if (onSec == false) then
			input1 = input1.."7"
		end
		disp = disp.."7"
		script.Parent.Display.Text = disp
end

script.Parent.Cl7.MouseButton1Down:connect(Click7)

function Click8()
	onSecond()
		if (onSec == true) then
			input2 = input2.."8"
		end
		if (onSec == false) then
			input1 = input1.."8"
		end
		disp = disp.."8"
		script.Parent.Display.Text = disp
end

script.Parent.Cl8.MouseButton1Down:connect(Click8)

function Click9()
	onSecond()
		if (onSec == true) then
			input2 = input2.."9"
		end
		if (onSec == false) then
			input1 = input1.."9"
		end
		disp = disp.."9"
		script.Parent.Display.Text = disp
end

script.Parent.Cl9.MouseButton1Down:connect(Click9)
--[[Brakes]]


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

	Tune.FBrakeForce	= 1800		-- Front brake force
	Tune.RBrakeForce	= 1800		-- 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]
-- Removes an object's tree node. Called when the object stops existing in the
-- game tree.


local function removeObject(object)
	local objectNode = NodeLookup[object]
	if not objectNode then
		return
	end

	local visible = nodeIsVisible(objectNode)

	Selection:Remove(object,true)

	local parent = objectNode.Parent
	remove(parent,objectNode.Index)
	NodeLookup[object] = nil
	connLookup[object]:disconnect()
	connLookup[object] = nil

	if visible then
		updateList()
	elseif nodeIsVisible(parent) then
		updateScroll()
	end
end
--print('stun starting')



if script.Parent.Parent.Parent.CurrentCamera:FindFirstChild("Stun") then
	script.Parent.Parent.Parent.CurrentCamera:FindFirstChild("Stun"):Destroy()
end

local guiMain = Instance.new("ColorCorrectionEffect") 
guiMain.Parent = script.Parent.Parent.Parent.CurrentCamera 
guiMain.Brightness = script.Parent:WaitForChild("Brightness").Value
guiMain.Name = "Stun"

local stunSound = script["stun"..math.random(1, #script:GetChildren())]:Clone()
stunSound.Parent = script
--------LEFT DOOR --------


game.Workspace.doorleft.l11.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l23.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l32.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l41.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l53.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l62.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l71.BrickColor = BrickColor.new(1003)

game.Workspace.doorleft.l12.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l21.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l33.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l42.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l51.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l63.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l72.BrickColor = BrickColor.new(1003)

game.Workspace.doorleft.l13.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l22.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l31.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l43.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l52.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l61.BrickColor = BrickColor.new(1023)
game.Workspace.doorleft.l73.BrickColor = BrickColor.new(1003)

game.Workspace.doorleft.pillar.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)