Roblox/luau_corpus huggingface dataset:
--          if human.Health <= 0 then
--           torso.Velocity = (torso.Position - position).unit * 10;
--           print("Dead");
--          end
          
          print("Took "..(300-(distance-radius)*(300/radius)).." Damage")
         end
        end
--[[ Roblox Services ]]--
local UserInputService = game:GetService("UserInputService")
local PathfindingService = game:GetService("PathfindingService")
local Players = game:GetService("Players")
local DebrisService = game:GetService('Debris')
local StarterGui = game:GetService("StarterGui")
local Workspace = game:GetService("Workspace")
local CollectionService = game:GetService("CollectionService")
local GuiService = game:GetService("GuiService")
--Do the same to copy the TeleporterEffect script to the StarterPlayer and TeleporterNetworking to ReplicatedStorage
local StarterPlayer = game:GetService("StarterPlayer") --Get the StarterPlayer (the method ignores the name of the service)
local TeleEffect = StarterPlayer.StarterPlayerScripts:findFirstChild("TeleporterEffect") --Try to find the TeleporterEffect script
---Place this INSIDE the model. Don't replace the model name or anything.
------------------------------------------------------------------------------------------ 
object = script.Parent 
if (object ~= nil) and (object ~= game.Workspace) then 
model = object 
messageText = "Places" .. model.Name .. "" 

message = Instance.new("Message") 
message.Text = messageText 
backup = model:clone() -- Make the backup 
waitTime = 45 --Time to wait between regenerations 
wait(math.random(0, waitTime)) 
while true do 
wait(waitTime) -- Regen wait time 

message.Parent = game.Workspace 
model:remove() 

wait(1) -- Display regen message for this amount of time 

model = backup:clone() 
model.Parent = game.Workspace 
model:makeJoints() 
message.Parent = nil 
end 
end
--[[
	If a target set was specified by captureDependencies(), this will add the
	given dependency to the target set.
]]

local Package = script.Parent.Parent
local Types = require(Package.Types)
local sharedState = require(Package.Dependencies.sharedState)

local initialisedStack = sharedState.initialisedStack

local function useDependency(dependency: Types.Dependency<any>)
	local dependencySet = sharedState.dependencySet

	if dependencySet ~= nil then
		local initialisedStackSize = sharedState.initialisedStackSize
		if initialisedStackSize > 0 then
			local initialisedSet = initialisedStack[initialisedStackSize]
			if initialisedSet[dependency] ~= nil then
				return
			end
		end
		dependencySet[dependency] = true
	end
end

return useDependency
--[=[
	@param name string
	@param priority number
	@param fn (dt: number) -> ()
	Calls `RunService:BindToRenderStep` and registers a function in the
	trove that will call `RunService:UnbindFromRenderStep` on cleanup.

	```lua
	trove:BindToRenderStep("Test", Enum.RenderPriority.Last.Value, function(dt)
		-- Do something
	end)
	```
]=]
function Trove:BindToRenderStep(name: string, priority: number, fn: (dt: number) -> ())
	if self._cleaning then
		error("Cannot call trove:BindToRenderStep() while cleaning", 2)
	end
	RunService:BindToRenderStep(name, priority, fn)
	self:Add(function()
		RunService:UnbindFromRenderStep(name)
	end)
end
---------------------------------

wait()

local tool = script.Parent
local Tool = tool 
local player = game.Players.LocalPlayer
local char = player.Character
local mouse  = player:GetMouse() 
DB = false
down = false
bv = script.BV:clone()
bg = script.BG:clone()
toggle = false
	lookaround = false

	
	mouse.Button2Down:connect(function()
	lookaround = true
	end)
	mouse.Button2Up:connect(function()
	lookaround = false
	end)
	mouse.Button1Down:connect(function()
	if Tool.Parent ~= char then return end
		if char.Humanoid.Sit == false then
	bv.Parent = char.Head
	bg.Parent = char.Head
		down = true
		char.Humanoid.Sit = false
		
		
	if toggle == false then
		toggle = true
		while down == true do
			wait()
			if down == true and char.Humanoid.Sit == false then
				if lookaround == false then
				bv.velocity = mouse.Hit.lookVector * 16
				else
				bv.velocity = Vector3.new(0,0,0)
				end
					bg.cframe = CFrame.new(char.Torso.Position, char.Torso.Position + mouse.Hit.lookVector) * CFrame.Angles(math.rad(-35), 0, 0 ) 
			
			else
			break
			end
		end
		
	

	elseif toggle == true then
	toggle = false
	
	bg.Parent = nil
		bv.Parent = nil
		bv.velocity = Vector3.new() 
		down = false
		
	end
	
	end	
	
	end)
--// All global vars will be wiped/replaced except script
--// All guis are autonamed client.Variables.CodeName..gui.Name

return function(data, env)
	if env then
		setfenv(1, env)
	end

	local gui = script.Parent.Parent
	local playergui = service.PlayerGui
	local str = data.Message
	local time = data.Time or 15

	--client.UI.Make("HintHolder")
	local container = client.UI.Get("HintHolder",nil,true)
	if not container then
		local holder = service.New("ScreenGui")
		local hTable = client.UI.Register(holder)
		local frame = service.New("ScrollingFrame", holder)
		client.UI.Prepare(holder)
		hTable.Name = "HintHolder"
		frame.Name = "Frame"
		frame.BackgroundTransparency = 1
		frame.Size = UDim2.new(1, 0, 0,150)
		frame.CanvasSize = UDim2.new(0, 0, 0, 0)
		frame.ChildAdded:Connect(function(c)
			if #frame:GetChildren() == 0 then
				frame.Visible = false
			else
				frame.Visible = true
			end
		end)

		frame.ChildRemoved:Connect(function(c)
			if #frame:GetChildren() == 0 then
				frame.Visible = false
			else
				frame.Visible = true
			end
		end)

		container = hTable
		hTable:Ready()
	end
	container = container.Object.Frame

	--// First things first account for notif :)
	local notif = client.UI.Get("Notif")
	local topbar = client.UI.Get("TopBar")

	container.Position = UDim2.new(0,0,0,((notif and 30) or 0) + ((topbar and 40) or 0) - 35)

	local children = container:GetChildren()

	gui.Position = UDim2.new(0,0,0,-100)
	gui.Frame.msg.Text = str
	local bounds = gui.Frame.msg.TextBounds.X

	task.spawn(function()
		local sound = Instance.new("Sound",service.LocalContainer())
		sound.SoundId = "rbxassetid://255881176"
		sound.Volume = 0.25
		task.wait(0.1)
		sound:Play()
		task.wait(0.8)
		sound:Destroy()
	end)

	local function moveGuis(m,ignore)
		m = m or 0
		local max = #container:GetChildren()
		for i,v in container:GetChildren() do
			if v~=ignore then
				local y = (i+m)*28
				v.Position = UDim2.new(0,0,0,y)
				if i~=max then v.Size = UDim2.new(1,0,0,28) end
			end
		end
	end

	local lom = -1
	moveGuis(-1)
	gui.Parent = container
	if #container:GetChildren()>5 then lom = -2 end
	UDim2.new(0,0,0,(#container:GetChildren()+lom)*28)
	moveGuis(-1)
	--gui:TweenPosition(UDim2.new(0,0,0,(#container:GetChildren()+lom)*28),nil,nil,0.3,true,function() if gui and gui.Parent then moveGuis(-1) end end)

	if #container:GetChildren()>5 then
		local gui = container:GetChildren()[1]
		moveGuis(-2,gui)
		gui:Destroy()
		--gui:TweenPosition(UDim2.new(0,0,0,-100),nil,nil,0.2,true,function() if gui and gui.Parent then gui:Destroy() end end)
	end

	task.wait(data.Time or 5)

	if gui and gui.Parent then
		moveGuis(-2,gui)
		gui:Destroy()
		--gui:TweenPosition(UDim2.new(0,0,0,-100),nil,nil,0.2,true,function() if gui and gui.Parent then gui:Destroy() end end)
	end
end
--[[
	Indicates whether the local player is in range of the `target` object
	Returns: Boolean whether player is in range
]]--
local function inRange()
	local distance = player:DistanceFromCharacter(target.Position)
	return distance > 0 and distance <= MAX_DISTANCE -- Distance should only be 0 when character doesnt exist
end

local function toggleInteraction()
	if ((not (MainFrame.Visible or GameplayUi.Enabled)) and inRange()) then
		show()
	else
		hide()
	end
end

local function interactionCheck()
	if not IS_CONSOLE then
		if ((not (MainFrame.Visible or GameplayUi.Enabled)) and inRange()) then
			InteractionButton.Visible = true
			InteractionBillboardButton.Visible = true
			InteractionArrow.Visible = false
		elseif not inRange() then
			InteractionButton.Visible = false
			InteractionBillboardButton.Visible = false
			InteractionArrow.Visible = true
		end
	end
	
	if MainFrame.Visible and not inRange() then
		hide()
	end
end
-- No clue why the game is putting players in the other room

while wait(0.1) do
	for _,plr in ipairs(game.Players:GetPlayers()) do
		if plr.Character then
			local rootPart = plr.Character:FindFirstChild("HumanoidRootPart")
			if rootPart and rootPart.Position.Z < -17 then
				rootPart.CFrame = workspace.SpawnLocation.CFrame + Vector3.new(0,3,0)
			end
		end
	end
end
-- a: amplitud
-- p: period
local function outElastic(t, b, c, d, a, p)
  if t == 0 then return b end

  t = t / d

  if t == 1 then return b + c end

  if not p then p = d * 0.3 end

  local s

  if not a or a < abs(c) then
    a = c
    s = p / 4
  else
    s = p / (2 * pi) * asin(c/a)
  end

  return a * pow(2, -10 * t) * sin((t * d - s) * (2 * pi) / p) + c + b
end
-- Visualizes an impact. This will not run if FastCast.VisualizeCasts is false.
function DbgVisualizeHit(atCF: CFrame, wasPenetrated: boolean): SphereHandleAdornment?
	if FastCast.VisualizeCasts ~= true then return nil end
	local adornment = Instance.new("SphereHandleAdornment")
	adornment.Adornee = workspace.Terrain
	adornment.CFrame = atCF
	adornment.Radius = 0.4
	adornment.Transparency = 0.25
	adornment.Color3 = (wasPenetrated == false) and Color3.new(0.2, 1, 0.5) or Color3.new(1, 0.2, 0.2)
	adornment.Parent = GetFastCastVisualizationContainer()
	return adornment
end
----------------------------------------------------------------------------------------------------
--------------------=[ OUTROS ]=--------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
	,FastReload = true					--- Automatically operates the bolt on reload if needed
	,SlideLock = false
	,MoveBolt = false
	,BoltLock = false
	,CanBreachDoor = false
	,CanBreak = true					--- Weapon can jam?
	,JamChance = 1000					--- This old piece of brick doesn't work fine >;c
	,IncludeChamberedBullet = true		--- Include the chambered bullet on next reload
	,Chambered = false					--- Start with the gun chambered?
	,LauncherReady = false				--- Start with the GL ready?
	,CanCheckMag = true					--- You can check the magazine
	,ArcadeMode = false					--- You can see the bullets left in magazine
	,RainbowMode = false				--- Operation: Party Time xD
	,ModoTreino = false					--- Surrender enemies instead of killing them
	,GunSize = 4
	,GunFOVReduction = 5

	,BoltExtend = Vector3.new(0, 0, 0.4)
	,SlideExtend = Vector3.new(0, 0, 0.4)
--don't tweak this is for the tart thingy
local CFMS = require(game.ServerScriptService.CFMS)

workspace.TartarusDoor.Controller.Event:Connect(function(v)
	if v == 1 then
		CFMS.TartarusAlarms(1)
	end
end)

workspace.TartarusDoor.Controller.Event:Connect(function(v)
	if v == 2 then
		CFMS.TartarusAlarms(2)
	end
end)
-- Events
ServerSceneFramework.AnchorClientForSceneTransition = Orchestra.Events.SceneControl.AnchorClientForSceneTransition
ServerSceneFramework.LoadCharacterRemoteEvent = Orchestra.Events.SceneControl.LoadCharacter
ServerSceneFramework.FinishedLoadingRemoteEvent = Orchestra.Events.SceneControl.FinishedLoading
ServerSceneFramework.LoadSceneFromListEvent = Orchestra.Events.SceneControl.LoadSceneFromList
ServerSceneFramework.LoadSceneServer = Orchestra.Events.OrchestrationEvents.LoadSceneServer
ServerSceneFramework.Orchestrate = Orchestra.Events.OrchestrationEvents.Orchestrate
ServerSceneFramework.SendSceneConfigForPlayer = Orchestra.Events.OrchestrationEvents.SendSceneConfigForPlayer
ServerSceneFramework.GetCurrentSceneEnvironment = Orchestra.Events.SceneFramework.GetCurrentEnvironment
ServerSceneFramework.GetCurrentServerEnvironmentFromClient =
	Orchestra.Events.SceneFramework.GetCurrentServerEnvironmentFromClient
ServerSceneFramework.IsLoadingScene = Orchestra.Events.SceneFramework.IsLoadingScene
ServerSceneFramework.UnloadSceneClientRemoteEvent = Orchestra.Events.SceneControl.UnloadSceneClientRemoteEvent
ServerSceneFramework.LoadSceneRemoteEvent = Orchestra.Events.SceneControl.LoadScene
-- -- -- -- -- -- --
--DIRECTION SCROLL--
-- -- -- -- -- -- --

This.Parent.Parent.Parent.Parent.Parent:WaitForChild("Direction").Changed:connect(function(val)
    if val == 1 then
			SetDisplay(1,"U0")
    elseif val == -1 then
			SetDisplay(1,"D0")
	else
		SetDisplay(1,"NIL")
    end
end)
--("added")
end
end
end
end
end
end)

script.Parent.ChildRemoved:connect(function(w)
--[[Steering]]
	Tune.SteerInner		= 45		-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 45		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= 1000		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= 1000		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 320		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 1 		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1			-- Mouse steering exponential degree
	
	--Steer Gyro Tuning
	Tune.SteerD			= 1000		-- Steering Dampening
	Tune.SteerMaxTorque	= 50000		-- Steering Force
	Tune.SteerP			= 20000	    -- Steering Aggressiveness
--made by Bertox
--lul

script.Parent.Parent.Parent.Parent.DriveSeat.Changed:connect(function()
	if script.Parent.Parent.Parent.Parent.DriveSeat.Occupant ~= nil then
		script.Parent.Material = Enum.Material.Neon
	elseif script.Parent.Parent.Parent.Parent.DriveSeat.Occupant == nil then
		script.Parent.Material = Enum.Material.SmoothPlastic
	end
end)
--off

script.Parent.Lid.Transparency = 1
wait(1/27)
script.Parent.Lid.Transparency = 0.8
wait(1/27)
script.Parent.Lid.Transparency = 0.6
wait(1/27)
script.Parent.Lid.Transparency = 0.4
wait(1/27)
script.Parent.Lid.Transparency = 0.2
wait(1/27)
script.Parent.Lid.Transparency = 0

end

end)
--[[Weight and CG]]
	Tune.Weight			= 2050		-- 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
----- Variables -----

local hotWater = 1
local coldWater = 1
local waterTemp = nil
local p = script.Parent
--		body.FB.BrickColor = bool and BrickColor.new("Pearl") or BrickColor.new("Black")
		body.FB.Material = bool and "Neon" or "SmoothPlastic"
		body.FB.Light.Enabled = bool
-- Decompiled with the Synapse X Luau decompiler.

return function(p1, p2)
	local v1 = nil;
	local v2 = nil;
	v2, v1 = string.find(p1, p2, 0, true);
	if not v2 or not v1 then
		return;
	end;
	return true, v2, v1 - 1;
end;
-- Roblox User Input Control Modules - each returns a new() constructor function used to create controllers as needed
local Keyboard = require(script:WaitForChild("Keyboard"))
local Gamepad = require(script:WaitForChild("Gamepad"))
local DynamicThumbstick = require(script:WaitForChild("DynamicThumbstick"))

local FFlagUserFlagEnableNewVRSystem do
	local success, result = pcall(function()
		return UserSettings():IsUserFeatureEnabled("UserFlagEnableNewVRSystem")
	end)
	FFlagUserFlagEnableNewVRSystem = success and result
end

local TouchThumbstick = require(script:WaitForChild("TouchThumbstick"))
-- << SETTINGS >>
Settings={
	-- <Prefix>
	Prefix			=";" ;			-- The character used to begin each command
	
	-- <Donor Perks>   **Please keep enabled to help support the development of HD Admin Commands**
	DonorItem 		= true ;
	DonorItemId 	= 10472779 ;
	DonorCommands 	= true ;
	
	-- <Other>
	CmdBar			= true ;		-- Allows admins to execute commands without chatting
	HDIcon			= true ;		-- The HD Icon in the corner of screen (helps to support the development HD Admin Commands)
	FreeAdmin		= false ;		-- Allows everyone in server to have the chosen admin. e.g.' FreeAdmin = "VIP" '. Set to False if not. You can not set to 'Owner'.
	NoticeSound		= 261082034 ;	-- Notification sound ID
	NoticeSoundVol	= 0.5 ;			-- How loud the notification sound is. Must be between 0 and 1.
	ErrorSound		= 138090596 ;	-- Error sound ID
	ErrorSoundVol	= 0.5 ;			-- How loud the error sound is. Must be between 0 and 1.
}																																																											;
---[[ Chat Behaviour Settings ]]
module.WindowDraggable = false
module.WindowResizable = false
module.ShowChannelsBar = _SETTINGS.ShowChannelBar
module.GamepadNavigationEnabled = false
module.ShowUserOwnFilteredMessage = true	--Show a user the filtered version of their message rather than the original.
--[[
		___      _______                _     
	   / _ |____/ ___/ /  ___ ____ ___ (_)__ 
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]
local FE = workspace.FilteringEnabled
local car = script.Parent.Car.Value
local _Tune = require(car["A-Chassis Tune"])
local on = 0

script:WaitForChild("Idle")



if not FE then
	for i,v in pairs(car.DriveSeat:GetChildren()) do
		for _,a in pairs(script:GetChildren()) do
			if v.Name==a.Name then v:Stop() wait() v:Destroy() end
		end
	end
	for i,v in pairs(script:GetChildren()) do
		v.Parent=car.DriveSeat
	end
		car.DriveSeat.Idle:Play()

	
	while wait() do
		local _RPM = script.Parent.Values.RPM.Value
		
		if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
    car.DriveSeat.Idle.Pitch = (car.DriveSeat.Idle.SetPitch.Value - car.DriveSeat.Idle.SetRev.Value*_RPM/_Tune.Redline)*on^2
end
else
	local handler = car.AC6_FE_Sounds
	handler:FireServer("newSound","Idle",car.DriveSeat,script.Idle.SoundId,0,true)
	handler:FireServer("playSound","Idle")

	local pitch=0

	while wait() do
		local _RPM = script.Parent.Values.RPM.Value
		
		if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
		pitch = (script.Idle.SetPitch.Value - script.Idle.SetRev.Value*_RPM/_Tune.Redline)*on^2
		handler:FireServer("updateSound","Idle",script.Idle.SoundId,pitch,script.Idle.Volume)
	end
end
------------------------------------------------

local function ProcessInput(input, processed)
	local userInputType = input.UserInputType
	if userInputType == Enum.UserInputType.Gamepad1 then
		local keycode = input.KeyCode
		if keycode == Enum.KeyCode.Thumbstick2 then
			local pos = input.Position
			panDeltaGamepad = Vector2.new(InputCurve(pos.y), InputCurve(-pos.x))*7
		elseif keycode == Enum.KeyCode.Thumbstick1 then
			local pos = input.Position
			gp_x = InputCurve(pos.x)
			gp_z = InputCurve(-pos.y)
		elseif keycode == Enum.KeyCode.ButtonL2 then
			gp_l1 = input.Position.z
		elseif keycode == Enum.KeyCode.ButtonR2 then
			gp_r1 = input.Position.z
		end
	elseif userInputType == Enum.UserInputType.MouseWheel then
		rate_fov = input.Position.Z
	end
end

UIS.InputChanged:Connect(ProcessInput)
UIS.InputEnded:Connect(ProcessInput)
UIS.InputBegan:Connect(ProcessInput)
-- modules

local module	= {}

function module.Create(self, item)
	local itemModule	= {
		Item		= item;
		Equipped	= false;
		Connections	= {};
	}
	
	-- variables
	
	local animations	= {}
	
	local character	= item.Parent.Parent
	local handle	= item:WaitForChild("Handle")
	local stack		= item:WaitForChild("Stack")
	
	local config	= CONFIG:GetConfig(item)
	
	local canThrow	= true
	
	-- functions
	
	-- module functions
	
	function itemModule.Connect(self)
		local character		= PLAYER.Character
		local humanoid		= character:WaitForChild("Humanoid")
		
		for _, animation in pairs(self.Item:WaitForChild("Animations"):GetChildren()) do
			animations[animation.Name]	= humanoid:LoadAnimation(animation)
		end
	end
	
	function itemModule.Disconnect(self)
		for _, connection in pairs(self.Connections) do
			connection:Disconnect()
		end
		self.Connections	= {}
	end
	
	function itemModule.Equip(self)
		animations.Idle:Play(0.1, 0.7, 1)
		animations.Equip:Play(0, 1, 1)
		
		self.Equipped	= true
	end
	
	function itemModule.Unequip(self)
		for name, animation in pairs(animations) do
			if name ~= "Throw" then
				animation:Stop()
			end
		end
		
		self.Equipped	= false
	end
	
	function itemModule.Activate(self)
		if canThrow and stack.Value > 0 then
			canThrow	= false
			
			local direction		= (MOUSE.WorldPosition - handle.Position).Unit
			local projectileID	= EVENTS.GetProjectileID:Invoke()
			
			if config.AimCorrection then
				direction	= (direction + Vector3.new(0, config.AimCorrection / 100, 0)).Unit
			end
			
			animations.Throw:Play(0, 1, 1)
			EFFECTS:Effect("Throw", item)
			
			wait(0.01)
			
			EVENTS.Projectile:Fire(PLAYER, item, projectileID, handle.Position, direction)
			REMOTES.Throwable:FireServer(item, "Throw", projectileID, handle.Position, direction)
			
			wait(1 / config.ThrowRate)
			canThrow	= true
		end
	end
	
	function itemModule.Deactivate(self)
		
	end
	
	return itemModule
end

return module
--		print("Keyframe : ".. frameName)
		local repeatAnim = stopAllAnimations()
		playAnimation(repeatAnim, 0.0, AnimController)
	end
end
--[[
	Called when ClientStateUpdate is called from the server, updating the currentState to reflect the
	state the server has for the client.
]]
function CameraController.onClientStateUpdated(to)
	if currentState.onStateLeave then
		currentState.onStateLeave(to)
	end

	if to == "postgame" then
		currentState = CameraStates.MENU
	elseif to == "spectating" then
		currentState = CameraStates.SPECTATING
	else
		currentState = {}

		camera.CameraType = Enum.CameraType.Custom

		wait()

		if LocalPlayer.Character then
			camera.CameraSubject = LocalPlayer.Character:FindFirstChild("Humanoid")
		end
	end

	if currentState.onStateEnter then
		currentState.onStateEnter()
	end
end

return CameraController
-- Local private variables and constants
local UNIT_Z = Vector3.new(0,0,1)
local X1_Y0_Z1 = Vector3.new(1,0,1)	--Note: not a unit vector, used for projecting onto XZ plane
local ZERO_VECTOR3 = Vector3.new(0,0,0)
local ZERO_VECTOR2 = Vector2.new(0,0)
local TAU = 2 * math.pi
-- Disconnect all handlers. Since we use a linked list it suffices to clear the
-- reference to the head handler.
function Signal:DisconnectAll()
	self._handlerListHead = false
end

function Signal:Destroy()
	self:DisconnectAll()
	table.clear(self)
end
--------------------------------------------------------------
-- You DO NOT need to add yourself to any of these lists!!! --
--------------------------------------------------------------

local Owners={}					-- Can set SuperAdmins, & use all the commands
local SuperAdmins={}			-- Can set permanent admins, & shutdown the game
local Admins={}					-- Can ban, crash, & set Moderators/VIP
local Mods={}					-- Can kick, mute, & use most commands
local VIP={}					-- Can use nonabusive commands only on self

local Settings={
--//Controller//--
while true do
	task.wait(Configuration.DelayTime.Value)
	
	local RandomSong = Songs[math.random(1, #Songs)]
	
	CurrentSong.SoundId = RandomSong.SoundId
		
	CurrentSong:Play()
	
	task.wait(RandomSong.TimeLength)
end