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


	AntiTK = false; -- Set to false to allow TK and damaging of NPC, true for no TK. (To damage NPC, this needs to be false)
	
	MouseSense = 0.5;

	CanAim = false; -- Allows player to aim
	CanBolt = false; -- When shooting, if this is enabled, the bolt will move (SCAR-L, ACR, AK Series)
	
	LaserAttached = true;
	LightAttached = true;
	TracerEnabled = true;
	
	SprintSpeed = 22;
--// This section of code waits until all of the necessary RemoteEvents are found in EventFolder.
--// I have to do some weird stuff since people could potentially already have pre-existing
--// things in a folder with the same name, and they may have different class types.
--// I do the useEvents thing and set EventFolder to useEvents so I can have a pseudo folder that
--// the rest of the code can interface with and have the guarantee that the RemoteEvents they want
--// exist with their desired names.



local FFlagFixChatWindowHoverOver = false do
	local ok, value = pcall(function()
		return UserSettings():IsUserFeatureEnabled("UserFixChatWindowHoverOver")
	end)
	if ok then
		FFlagFixChatWindowHoverOver = value
	end
end

local FFlagFixMouseCapture = false do
	local ok, value = pcall(function()
		return UserSettings():IsUserFeatureEnabled("UserFixMouseCapture")
	end)
	if ok then
		FFlagFixMouseCapture = value
	end
end

local FILTER_MESSAGE_TIMEOUT = 60

local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Chat = game:GetService("Chat")
local StarterGui = game:GetService("StarterGui")

local DefaultChatSystemChatEvents = ReplicatedStorage:WaitForChild("DefaultChatSystemChatEvents")
local EventFolder = ReplicatedStorage:WaitForChild("DefaultChatSystemChatEvents")
local clientChatModules = Chat:WaitForChild("ClientChatModules")
local ChatConstants = require(clientChatModules:WaitForChild("ChatConstants"))
local ChatSettings = require(clientChatModules:WaitForChild("ChatSettings"))
local messageCreatorModules = clientChatModules:WaitForChild("MessageCreatorModules")
local MessageCreatorUtil = require(messageCreatorModules:WaitForChild("Util"))

local ChatLocalization = nil
pcall(function() ChatLocalization = require(game:GetService("Chat").ClientChatModules.ChatLocalization) end)
if ChatLocalization == nil then ChatLocalization = {} function ChatLocalization:Get(key,default) return default end end

local numChildrenRemaining = 10 -- #waitChildren returns 0 because it's a dictionary
local waitChildren =
{
	OnNewMessage = "RemoteEvent",
	OnMessageDoneFiltering = "RemoteEvent",
	OnNewSystemMessage = "RemoteEvent",
	OnChannelJoined = "RemoteEvent",
	OnChannelLeft = "RemoteEvent",
	OnMuted = "RemoteEvent",
	OnUnmuted = "RemoteEvent",
	OnMainChannelSet = "RemoteEvent",

	SayMessageRequest = "RemoteEvent",
	GetInitDataRequest = "RemoteFunction",
}
--// F key, Horn


mouse.KeyUp:connect(function(key)
	if key=="f" then 
		veh.Lightbar.middle.Airhorn:Stop()
	end
end)










mouse.KeyDown:connect(function(key)
	if key=="j" then 
		veh.Lightbar.middle.Beep:Play()
veh.Lightbar.RemoteEvent:FireServer(true)
	end
	end)

mouse.KeyDown:connect(function(key)
	if key=="k" then 
		veh.Lightbar.middle.Beep:Play()
		veh.Lightbar.TA.RemoteEvent:FireServer(true)
	end
end)
-- Ring1 ascending


for l = 1,#lifts1 do
	if (lifts1[l].className == "Part") then
	lifts1[l].BodyPosition.position = Vector3.new((lifts1[l].BodyPosition.position.x),(lifts1[l].BodyPosition.position.y+0),(lifts1[l].BodyPosition.position.z))
	end
end
wait(0.1)
for p = 1,#parts1 do
	parts1[p].CanCollide = true
end

wait(1)
--Supercharger


local Whine_Pitch = 1.3		--max pitch of the whine (not exact so might have to mess with it)
local S_Loudness = 6.2 --volume of the supercharger(s) (not exact volume so you kinda have to experiment with it also)

script:WaitForChild("Whistle")
script:WaitForChild("Whine")
script:WaitForChild("BOV")

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

car.DriveSeat.ChildRemoved:connect(function(child)
	if child.Name=="SeatWeld" 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
	end
end)

if not _Tune.Engine then return end
handler:FireServer("newSound","Whistle",car.DriveSeat,script.Whistle.SoundId,0,script.Whistle.Volume,true)
handler:FireServer("newSound","Whine",car.DriveSeat,script.Whine.SoundId,0,script.Whine.Volume,true)
handler:FireServer("newSound","BOV",car.DriveSeat,script.BOV.SoundId,0,script.BOV.Volume,true)
handler:FireServer("playSound","Whistle")
handler:FireServer("playSound","Whine")
car.DriveSeat:WaitForChild("Whistle")
car.DriveSeat:WaitForChild("Whine")
car.DriveSeat:WaitForChild("BOV")
local ticc = tick()
local _TCount = _Tune.Turbochargers
local _SCount = _Tune.Superchargers

while wait() do
	local psi = (((script.Parent.Values.Boost.Value)/((_Tune.T_Boost*_TCount)+(_Tune.S_Boost*_SCount)))*2)
	local tpsi = (((script.Parent.Values.BoostTurbo.Value)/(_Tune.T_Boost*_TCount))*2)
	local spsi = ((script.Parent.Values.BoostSuper.Value)/(_Tune.S_Boost*_SCount))
	--(script.Parent.Values.RPM.Value/_Tune.Redline)
	local WP,WV,BP,BV,HP,HV = 0,0,0,0,0,0
	
	BOVact = math.floor(tpsi*20)
	if _TCount~=0 then
		WP = (tpsi)
		WV = (tpsi/4)*T_Loudness
		
		BP = (1-(-tpsi/20))*BOV_Pitch
		BV = (((-0.5+((tpsi/2)*BOV_Loudness)))*(1 - script.Parent.Values.Throttle.Value))
	
		if BOVact < BOVact2 then if car.DriveSeat.BOV.IsPaused then if FE then handler:FireServer("playSound","BOV") else car.DriveSeat.BOV:Play() end end end
		if BOVact >= BOVact2 then if FE then handler:FireServer("stopSound","BOV") else car.DriveSeat.BOV:Stop() end end
	else
		WP,WV,BP,BV=0,0,0,0
	end
	if _SCount~=0 then
		HP = (script.Parent.Values.RPM.Value/_Tune.Redline)*Whine_Pitch
		HV = (spsi/4)*S_Loudness
	else
		HP,HV = 0,0
	end

	handler:FireServer("updateSound","Whistle",script.Whistle.SoundId,WP,WV)
	handler:FireServer("updateSound","Whine",script.Whine.SoundId,HP,HV)
	handler:FireServer("updateSound","BOV",script.BOV.SoundId,BP,BV)
	
	if (tick()-ticc) >= 0.1 then
		BOVact2 = math.floor(tpsi*20)
		ticc = tick()
	end
end
-- tu dois assigner la bonne couleur



local plr = script.Parent.Parent.Parent.Parent.Parent.Parent.Name
local normalBorderColor = script.Parent.TextLabel.TextColor.Color

function Click(mouse) 
	if game.Players[plr].TeamColor ~= game.Teams:FindFirstChild(script.Parent.Name).TeamColor then
		game.Players[plr].TeamColor = game.Teams:FindFirstChild(script.Parent.Name).TeamColor

		script.Parent.Border.ImageColor3 = Color3.new(0.333333, 1, 0)
		wait(.25)
		script.Parent.Border.ImageColor3 = normalBorderColor
		wait(.1)
		if script.Parent.Parent.Parent.CanKill == true then
			script.Parent.Parent.Parent.Parent.Parent.Parent.Character.Humanoid.Health = 0
		end
	else
		script.Parent.Border.ImageColor3 = Color3.new(1, 0, 0)
		wait(.25)
		script.Parent.Border.ImageColor3 = normalBorderColor
		wait(.1)
	end
	
end 

script.Parent.MouseButton1Click:connect(Click)
--[[

repeat until not script.Parent.Touched:wait():IsDescendantOf(game.Players[script.Parent.Name].Character) 
script.Parent.Throw:Stop()

local vel = script.Parent.Velocity
local trace = Ray.new(script.Parent.Position,vel*10)
local hit,pos = workspace:FindPartOnRay(trace,game.Players[script.Parent.Name].Character)

--]]



if script.Name~="Explode" then
	
if hit~=nil and hit.Anchored and hit.CanCollide and hit.Transparency<1 then

script.Parent.Anchored = true
script.Parent.CFrame = CFrame.new(pos,pos+vel)*CFrame.Angles(math.pi/-2,0,0)
script.Parent.Stick:Play()

wait(10)
for i=0,1,0.02 do
	wait(0.05)
	script.Parent.Transparency = i
end
elseif hit~=nil and hit.Parent~=nil then
	if hit.Parent.className=="Hat" and hit.Parent.Parent:FindFirstChild("Head")~=nil then hit=hit.Parent.Parent.Head end
	if hit.Parent:FindFirstChild("Humanoid")~=nil and hit.Parent.Humanoid.Health>0 then
		hit.Parent.Humanoid:TakeDamage(100)
		local s = script.Parent.Kill
		s.Parent = hit.Parent:FindFirstChild("Head")
		s:Play()
		hit.Velocity = vel.unit*15
		game.Debris:AddItem(s,2)
	end
end
script.Parent:Remove()

else
	local e = Instance.new("Explosion")
	e.Hit:connect(function(part,dist)
		if part.Parent~=nil and part.Parent:FindFirstChild("Humanoid")~=nil then
			if part.Parent.Name~=script.Parent.Name then
				 part.Parent.Humanoid:TakeDamage(100)
			end
		end
	end)
	e.Position = pos
	e.BlastPressure = 100
	e.DestroyJointRadiusPercent = 0
	e.Parent = workspace
	--script.Parent.Parent = nil
	wait()
	script.Parent:Remove()
end
--- Skill


local UIS = game:GetService("UserInputService")
local plr = game.Players.LocalPlayer
local Mouse = plr:GetMouse()
local Debounce = true
Player = game.Players.LocalPlayer

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.C and Debounce == true and Tool.Equip.Value == true and Tool.Active.Value == "None" then
		Debounce = false
		Tool.Active.Value = "FireBarrage"
		wait(0.1)
		Track1 = Player.Character.Humanoid:LoadAnimation(script.Anim01)
		Track1:Play()
		wait(0.15)
		script.Fire:FireServer(plr)
	local hum =  Player.Character.Humanoid
	for i = 1,30 do
		wait()
		hum.CameraOffset = Vector3.new(
			math.random(-1,1),
			math.random(-1,1),
			math.random(-1,1)
		)
	end
	hum.CameraOffset = Vector3.new(0,0,0)
	    wait(0.15)
		Tool.Active.Value = "None"
		wait(2)
		Debounce = true
	end
end)
-- Fire with blacklist


function FastCast:FireWithBlacklist(origin, directionWithMagnitude, velocity, blacklist, cosmeticBulletObject, ignoreWater, bulletAcceleration, tool, clientModule, miscs, replicate, penetrationData)
	assert(getmetatable(self) == FastCast, ERR_NOT_INSTANCE:format("FireWithBlacklist", "FastCast.new()"))
	BaseFireMethod(self, origin, directionWithMagnitude, velocity, cosmeticBulletObject, nil, ignoreWater, bulletAcceleration, tool, clientModule, miscs, replicate, blacklist, false, penetrationData)
end

TargetEvent:Connect(function(dt)
	for i, v in next, Projectiles, nil do
      	if RemoveList[i] then
			RemoveList[i] = nil
        	Projectiles[i] = nil
      	else
        	i.Update(dt)
      	end
	end
end)
--Horsepower Curve


local fgc_h=_Tune.Horsepower/100
local fgc_n=_Tune.PeakRPM/1000
local fgc_a=_Tune.PeakSharpness
local fgc_c=_Tune.CurveMult

local function FGC(x)
	x=x/1000
	return (((-(x-fgc_n)^2)*math.min(fgc_h/(fgc_n^2),fgc_c^(fgc_n/fgc_h)))+fgc_h)*(x-((x^fgc_a)/((fgc_a*fgc_n)^(fgc_a-1))))
end
local PeakFGC = FGC(_Tune.PeakRPM)
--local DisableBackpack = script:WaitForChild("DisableBackpack")


if Services.Players:GetPlayerFromCharacter(Character) and Services.Players:GetPlayerFromCharacter(Character):FindFirstChild("PlayerGui") then
	TrackOrb.Parent = Services.Players:GetPlayerFromCharacter(Character):FindFirstChild("PlayerGui")
	TrackOrb.Disabled = false
	
	--DisableBackpack.Parent = Services.Players:GetPlayerFromCharacter(Character):FindFirstChild("PlayerGui")
	--DisableBackpack.Disabled = false
end

local UnequipLoop

UnequipLoop = Character.ChildAdded:Connect(function(child)
	if child:IsA("Tool") and Services.Players:GetPlayerFromCharacter(Character) and Services.Players:GetPlayerFromCharacter(Character):FindFirstChild("Backpack") then
		--Humanoid:UnequipTools()
		Services.RunService.Stepped:Wait() --Wait at least 1 frame or that warning will occur
		child.Parent = Services.Players:GetPlayerFromCharacter(Character):FindFirstChild("Backpack")
	end
end)

local floor = math.floor
for i=0,floor(60*(Properties.TravelTime)),1 do
	local Precentage = (i/(60*Properties.TravelTime))*100
	for t=1,#LightBallAnimations,1 do
		Bezier.Quadratic(Precentage,LightBallAnimations[t].Start,LightBallAnimations[t].Control,LightBallAnimations[t].End,LightBallAnimations[t].Object,"CFrame")
	end
	Services.RunService.Heartbeat:Wait()
end

for t=1,#LightBallAnimations,1 do
	if LightBallAnimations[t].Object then
		if LightBallAnimations[t].Object:FindFirstChildOfClass("ParticleEmitter") then
			LightBallAnimations[t].Object:FindFirstChildOfClass("ParticleEmitter").Enabled = false
		end
		LightBallAnimations[t].Object.Size = Vector3.new(1,1,1)*0
		LightBallAnimations[t].Object.Transparency = 1
		Services.Debris:AddItem(LightBallAnimations[t].Object,2)
	end
end
--[=[
	Fires a ScriptSignal object with the arguments passed.

	```lua
	ScriptSignal:Connect(function(text)
		print(text)
	end)

	ScriptSignal:Fire("Some Text...")

	-- "Some Text..." is printed twice
	```

	@param ... any
	@ignore
]=]


function ScriptSignal:Fire(...: any)
	local node: ScriptConnectionNode? = self._head
	while node ~= nil do
		if node._connection ~= nil then
			if FreeThread == nil then
				task.spawn(CreateFreeThread)
			end

			task.spawn(
				FreeThread :: thread,
				node._handler, ...
			)
		end

		node = node._next
	end
end
--once someone talks to the shopkeeper, the GUI will be cloned to the player, and this script will be cloned to the GUI and then enabled to load all the items



shop = game.ServerStorage:findFirstChild(script.Parent.Name)
gui = script.Parent.CenterFrame.Shop

gui.Header.Text = script.Parent.Name

items = shop:GetChildren()

xv = 0
yv = 0

for i,v in pairs(items) do
	if v.className == "Model" then
		local button = gui.Items.BaseButton:clone() --make new button for each item
		button.Parent = gui.Items
		button.Name = v.Name
		button.Image = "http://www.roblox.com/asset/?id="..v.DecalID.Value
		button.Position = UDim2.new(0, xv*80, 0, yv*80)
		xv = xv + 1
		if xv == 4 then
			xv = 0
			yv = yv + 1
		end
		local desc = v.ItemDesc:clone() --place the item desc into the button
		desc.Parent = button
		local cost = v.ItemCost:clone()
		cost.Parent = button
		button.Visible = true
	end
end

script.Parent.CenterFrame:TweenPosition(UDim2.new(.5,0,.5,0), "Out", "Quad", .2, true)
--]]




function getHumanoid(model)
	for _, v in pairs(model:GetChildren()) do
		if v:IsA'Humanoid' then
			return v
		end
	end
end


local zombie = script.Parent
local human = getHumanoid(zombie)
local hroot = zombie.HumanoidRootPart
local zspeed = hroot.Velocity.magnitude


local pfs = game:GetService("PathfindingService")

function GetPlayerNames()
	local players = game:GetService('Players'):GetChildren()
	local name = nil
	for _, v in pairs(players) do
		if v:IsA'Player' then
			name = tostring(v.Name)
		end
	end
	return name
end

spawn(function()
	while wait() do
	end
end)

function GetPlayersBodyParts(t)
	local torso = t
	if torso then
		local figure = torso.Parent
		for _, v in pairs(figure:GetChildren()) do
			if v:IsA'Part' then
				return v.Name
			end
		end
	else
		return "HumanoidRootPart"
	end
end

function GetTorso(part)
	local chars = game.Workspace:GetChildren()
	local torso = nil
	for _, v in pairs(chars) do
		if v:IsA'Model' and v ~= script.Parent and v.Name == GetPlayerNames() then
			local charRoot = v:FindFirstChild'HumanoidRootPart'
			if (charRoot.Position - part).magnitude < SearchDistance then
				torso = charRoot
			end
		end
	end
	return torso
end

for _, zambieparts in pairs(zombie:GetChildren()) do
	if zambieparts:IsA'Part' then
		zambieparts.Touched:connect(function(p)
			if p.Parent.Name == GetPlayerNames() and p.Parent.Name ~= zombie.Name then -- damage
				local enemy = p.Parent
				local enemyhuman = getHumanoid(enemy)
				enemyhuman:TakeDamage(ZombieDamage)
			end
		end)
	end
end
-- поведение


local MaxInc = 60	-- дальность блуждания
local Figure = script.Parent
local Humanoid = waitForChild(Figure, "Humanoid")
local Torso = waitForChild(Figure, "Head") 

while true do	-- бесконечно
	wait(math.random(1,5))	-- пауза от 1 до 5 секунд
	local target = findNearestTorso(Torso.Position)	-- поиск гуманоида
	if target ~= nil then	-- если результат не пустой, то двигаемся к нему
		Humanoid:MoveTo(target.Position, target)	-- отправляем нас к нему
		-- script.Parent.humanoid.MoveToFinished:Wait() -- пауза, пока он не дойдёт до нужной точки?
		--[[
			А в этой статье как расчитать правильный путь, а не тупо идти по прямой
			https://developer.roblox.com/en-us/articles/Pathfinding
		--]]
	end
	if target == nil then	-- цели нет, блуждаем...		
		if math.random(1, 7) == 1 then
			Humanoid.Jump = true	-- подпрыгнуть?
		end	
		-- отправиться в путь
		Humanoid:MoveTo(Torso.Position + Vector3.new(math.random(-MaxInc, MaxInc), 0, math.random(-MaxInc, MaxInc)))
	end
end
-- PUT IN SERVERSCRIPTSERVICE



local Players = game:GetService("Players")

Players.PlayerAdded:connect(function(player)
	if player.MembershipType == Enum.MembershipType.Premium then --Here, the script will find players with the Premium membership type.
		player.CharacterAdded:connect(function(char)
			local humanoid = char:findFirstChild("Humanoid") --If the player has Premium, it will need to be a Humanoid.
			if humanoid then --If the player is Humanoid...they will get special benefits in-game!
				humanoid.MaxHealth = 250 --The player will have a higher health bar. The health is 250, but you are free to change it.
				humanoid.Health = humanoid.MaxHealth
				humanoid.WalkSpeed = 32 --The player will have faster walkspeed. Feel free to change this too.
				humanoid.JumpPower = 50 --The player will be able to jump very high. You can also change this.
			end
			
		end)
	end
	
	
end)
-- Connects a function to an event such that it fires asynchronously


local IsA = game.IsA
local ClearAllChildren = game.ClearAllChildren
local IsAncestorOf = game.IsAncestorOf
local WaitForChild = game.WaitForChild
local FindFirstChildOfClass = game.FindFirstChildOfClass
local GetPropertyChangedSignal = game.GetPropertyChangedSignal
local GetChildren = game.GetChildren
local GetDescendants = game.GetDescendants
local Clone = game.Clone
local Destroy = game.Destroy
local Wait, Connect, Disconnect = (function()
	local A = game.Changed
	local B = A.Connect
	local C = B(A, function()end)
	local D = C.Disconnect
	D(C)
	return A.Wait, B, D
end)()
--"don't edit below", i won't help you if you mess it up even though it's really simple


while wait() do
	if (vl.Throttle.Value < 0.1 and vl.RPM.Value > 0 and vl.Velocity.Value.Magnitude < max and (math.abs(vl.Gear.Value) > 0)) and (vl.Brake.Value == 0) and (vl.PBrake.Value == false) then
		car.DriveSeat.Roll.MaxForce = Vector3.new(strength,0,strength)
	else
		car.DriveSeat.Roll.MaxForce = Vector3.new(0,0,0)
	end
	car.DriveSeat.Roll.Velocity = car.DriveSeat.CFrame.lookVector*(max*(math.min(vl.Gear.Value,1)))
end
--WeldRec(P.Parent.Lights)



for _,v in pairs(weldedParts) do
	if v:IsA("BasePart") then
		v.Anchored = false
	end
end

script.Parent.Keyscreen.Fob.Value = script.Parent
script.Parent.Filter.Parent = script.Parent.Parent:FindFirstChildOfClass("Model")
wait()
script.Parent.Parent = workspace
wait()
script:Destroy()
--Turbo Gauge GUI--



local fix = 0


script.Parent.Parent.Values.RPM.Changed:connect(function()
	
	script.Parent.BAnalog.Visible = BoostGaugeVisible
	script.Parent.Background.Visible = BoostGaugeVisible
	script.Parent.DontTouch.Visible = BoostGaugeVisible
	script.Parent.Num.Visible = BoostGaugeVisible
	
	
	local turbo = ((totalPSI/2)*WasteGatePressure)
	local turbo2 = WasteGatePressure
	
	fix =  -turbo2 + turbo*2
	
	script.Parent.BAnalog.Rotation= 110 + (totalPSI/2)*220
	
	
script.Parent.Num.N1.TextLabel.Text = (math.floor(WasteGatePressure*(4/4)))*TurboCount
script.Parent.Num.N2.TextLabel.Text = (math.floor(WasteGatePressure*(3/4)))*TurboCount
script.Parent.Num.N3.TextLabel.Text = (math.floor(WasteGatePressure*(2/4)))*TurboCount
script.Parent.Num.N4.TextLabel.Text = (math.floor(WasteGatePressure*(1/4)))*TurboCount
script.Parent.Num.N5.TextLabel.Text = 0
script.Parent.Num.N6.TextLabel.Text = -5


end)
--Show a specific page


function module:ShowSpecificPage(pageName, subPageName)
	for a,b in pairs(pages:GetChildren()) do
		if b.Name == pageName then
			if currentPage == b then
				b.Visible = true
			else
				tweenPages(UDim2.new(-1,0,0,0), b, true)
			end
			local subPages = subPageOrders[b.Name]
			if subPages then
				local oldPos
				local newPos
				for i,v in pairs(subPages) do
					local subPage = b[v]
					if subPage.Name == subPageName then
						newPos = i
					elseif subPage.Position.X.Scale == 0 then
						oldPos = i
					end
				end
				--
				if oldPos == nil then
					for i = 1, #subPages do
						if i ~= newPos then
							oldPos = i
						end
					end
				end
				--
				if pageName == "Admin" and currentPage.Name == "Admin" then
					spawn(function() main:GetModule("PageAdmin"):UpdatePages() end)
				end
				module:OpenMainFrame()
				if b:FindFirstChild("NavigateButtons") then
					navigateNewPage(b, oldPos, newPos, "Left", true)
				end
			end
		else
			b.Visible = false	
		end
	end
end
module:ShowSpecificPage("Home")
-- Events


Conductor.SeekEvent = Orchestra.Events.ClientEvents.Seek
Conductor.SeekSceneServer = Orchestra.Events.OrchestrationEvents.SeekSceneServer
Conductor.Orchestrate = Orchestra.Events.OrchestrationEvents.Orchestrate
Conductor.SendSceneConfigForPlayer = Orchestra.Events.OrchestrationEvents.SendSceneConfigForPlayer
Conductor.PauseEvent = Orchestra.Events.ClientEvents.Pause

local hasBeenCalled = false
return function(stubs)
	if hasBeenCalled then
		error("Conductor has already been called")
		return
	end

	-- Used for testing only
	if stubs then
		for i, v in pairs(stubs) do
			Conductor[i] = v
		end
	end

	-- Seek Event: Seek from the UI when user has permissions
	Conductor.handleSeekEvent = Conductor.SeekEventModule
	Conductor.SeekEvent.OnServerEvent:Connect(Conductor.handleSeekEvent)

	-- Seek Scene Server: Seek programmatically from a server script
	Conductor.handleSeekSceneServer = Conductor.SeekSceneServerModule
	Conductor.SeekSceneServer.Event:Connect(Conductor.handleSeekSceneServer)

	-- Creates a new media controller, if necessary, and orchestrates
	Conductor.handleOrchestration = Conductor.OrchestrateModule()
	Conductor.Orchestrate.Event:Connect(Conductor.handleOrchestration)

	-- Sends over the current scene's config for a player to orchestrate client side
	Conductor.handleSendSceneConfigForPlayer = Conductor.SendSceneConfigForPlayerModule()
	Conductor.SendSceneConfigForPlayer.Event:Connect(Conductor.handleSendSceneConfigForPlayer)

	-- Pause Event: Pause from the UI when user has permissions
	Conductor.handlePauseEvent = Conductor.PauseEventModule
	Conductor.PauseEvent.OnServerEvent:Connect(Conductor.handlePauseEvent)

	hasBeenCalled = true
	script:SetAttribute(enums.Attribute.FrameworkReady, true)

	return Conductor
end
--------------------------------------------------------------------------



local _WHEELTUNE = {
																		--[[	
			SS6 Presets
	[Eco]		
		WearSpeed = 1,
		TargetFriction = .7,
		MinFriction = .1,
	[Road]		
		WearSpeed = 2,
		TargetFriction = .7,
		MinFriction = .1,
	[Sport]		
		WearSpeed = 3,
		TargetFriction = .79,
		MinFriction = .1,											]]

	TireWearOn 		= true	,
	
	--Friction and Wear
	FWearSpeed		= .1	,
	FTargetFriction	= .7	,
	FMinFriction 	= .1	,
	
	RWearSpeed		= .4	,
	RTargetFriction	= .7	,
	RMinFriction	= .1	,
	
	--Tire Slip
	TCSOffRatio		= 1/3	,
	WheelLockRatio	= 1/2	,	--SS6 Default = 1/4
	WheelspinRatio	= 1/1.1	,	--SS6 Default = 1/1.2
	
	--Wheel Properties
	FFrictionWeight	= 1		,	--SS6 Default = 1
	RFrictionWeight	= 1		,	--SS6 Default = 1
	FLgcyFrWeight	= 10	,
	RLgcyFrWeight	= 10	,
	
	FElasticity		= .5		,	--SS6 Default = .5
	RElasticity		= .5		,	--SS6 Default = .5
	FLgcyElasticity	= 0		,
	RLgcyElasticity	= 0		,
	
	FElastWeight	= 1		,	--SS6 Default = 1
	RElastWeight	= 1		,	--SS6 Default = 1
	FLgcyElWeight	= 10	,
	RLgcyElWeight	= 10	,
	
	--Wear Regen
	RegenSpeed		= 0		--SS6 Default = 3.6
}